dicej / android-libcore64

fork of https://android.googlesource.com/platform/libcore to make it 64-bit safe
2 stars 5 forks source link

The new libcore is patched for Windows and OS X #11

Closed bigfatbrowncat closed 10 years ago

bigfatbrowncat commented 10 years ago

I'm happy to inform you that the patching is done :) Now the new Android class path version seems to work along with Avian on Windows 7, OS X and Linux. There could be bugs (just as always), but we did some basic testing and nothing critical is found.

But unfortunately this pull request contains only a part (the major part) of the changes. We had to make some changes in two other repositories. One of them is Avian itself (pull request https://github.com/ReadyTalk/avian/pull/343). And the other one is the new conscrypt repo. The changes are made in my fork as a part of avian-pack. The conscrypt repo itself is here: https://github.com/bigfatbrowncat/avian-pack.android.external.conscrypt

You may fork this repo as well as you forked libcore. If it's not a good idea, please, let us know.

By the way: the current version of avian-pack builds with all the correct versions of the repositories (you can see them in my GitHub account. Their names start with "avian-pack.")

dicej commented 10 years ago

Thanks for working on this! I also have a fork of conscrypt, since I had to fix a bug which affected https://github.com/TooTallNate/Java-WebSocket: https://github.com/dicej/android-conscrypt.

@joshuawarner32 and I need to do an Avian 1.1 release before we merge the Android changes. After that, I'll pull in everything for Avian, libcore, and conscrypt.

bigfatbrowncat commented 10 years ago

Thank you for your reply! I've made a pull request https://github.com/dicej/android-conscrypt/pull/1

Could you please estimate when will Avian 1.1 be released. Is it planned soon?

dicej commented 10 years ago

Yeah, I'm planning to work on it this weekend and release it soon after that.

bigfatbrowncat commented 10 years ago

And what about my bug: https://github.com/ReadyTalk/avian/issues/342 ? Is it postponed too?

It looks quite simple and harmless for someone who knows Avian core

dicej commented 10 years ago

Does this fix it? https://github.com/dicej/avian/commit/ffb0f9b345f419a0d2be2a3ccc376e4d7e2c0884.

bigfatbrowncat commented 10 years ago

Haha :) I was thinking about this solution. Yes, that should be satisfactory in the case, but we should realize that the problem of such an incompatibility in Thread class would be a problem...

Would you pull this solution?

dicej commented 10 years ago

I can't pull that commit into master, because it's based on the Android upgrade and will cause a conflict in the master code. It could be backported, but I don't have an easy way to test it with the old Android library right now. If you are able to test it easily, feel free to submit a pull request against the master branch, and I'll try to get it into 1.1. Otherwise, you'll need to wait until after 1.1 when we pull everything else in.

bigfatbrowncat commented 10 years ago

Ok, nothing urgent. I'll be waiting. Thank you.

bigfatbrowncat commented 10 years ago

Where is this file? I don't see it in the pull request.

I have made a mistake. This file is a part of libnativehelper now (with the original toStringArray.h and toStringArray.cpp). I forgot to tell you that. You should clone libnativehelper too. Please, take it from my repo: https://github.com/bigfatbrowncat/avian-pack.android.libnativehelper

It is the original repo with one commit by @JustAMan.

The file is necessary to make libcore work on Windows

bigfatbrowncat commented 10 years ago

So what about libnativehelper? What should I do with it?

dicej commented 10 years ago

I think we should just make avian-pack the main, official repository. Then we can simplify Avian's README.md so it just says to use that instead of checking out everything by hand. I was trying to use it myself on Friday, but I don't have much experience with git submodules. How do I clone all the submodules after I've cloned avian-pack? Can I just run make to build it?

bigfatbrowncat commented 10 years ago

I'll prepare avian-pack for publishing and then give you all the instructions.

dicej commented 10 years ago

Did you run into anything like this?

build/windows-x86_64-android/AsynchronousCloseMonitor.o: In function `ScopedPthreadMutexLock::ScopedPthreadMutexLock(void**)':
/cygdrive/e/avian/../android/libcore/include/ScopedPthreadMutexLock.h:28: undefined reference to `pthread_mutex_lock'
build/windows-x86_64-android/AsynchronousCloseMonitor.o: In function `ScopedPthreadMutexLock::~ScopedPthreadMutexLock()':
/cygdrive/e/avian/../android/libcore/include/ScopedPthreadMutexLock.h:32: undefined reference to `pthread_mutex_unlock'
build/windows-x86_64-android/org_conscrypt_NativeCrypto.o: In function `locking_function':
/cygdrive/e/avian/build/windows-x86_64-android/android-src/org_conscrypt_NativeCrypto.cpp:1798: undefined reference to `pthread_mutex_lock'
/cygdrive/e/avian/build/windows-x86_64-android/android-src/org_conscrypt_NativeCrypto.cpp:1800: undefined reference to `pthread_mutex_unlock'
build/windows-x86_64-android/org_conscrypt_NativeCrypto.o: In function `id_function':
/cygdrive/e/avian/build/windows-x86_64-android/android-src/org_conscrypt_NativeCrypto.cpp:1805: undefined reference to `pthread_self'
build/windows-x86_64-android/org_conscrypt_NativeCrypto.o: In function `THREAD_setup()':
/cygdrive/e/avian/build/windows-x86_64-android/android-src/org_conscrypt_NativeCrypto.cpp:1815: undefined reference to `pthread_mutex_init'
JustAMan commented 10 years ago

Hi there, From the logs you've posted it seems you're running stuff under Cygwin. We didn't check Avian under Cygwin, we always worked under MinGW+MSYS, that might explain what you're seeing. 06 окт. 2014 г. 20:41 пользователь "Joel Dice" notifications@github.com написал:

Did you run into anything like this?

build/windows-x86_64-android/AsynchronousCloseMonitor.o: In function ScopedPthreadMutexLock::ScopedPthreadMutexLock(void**)': /cygdrive/e/avian/../android/libcore/include/ScopedPthreadMutexLock.h:28: undefined reference topthread_mutex_lock' build/windows-x86_64-android/AsynchronousCloseMonitor.o: In function ScopedPthreadMutexLock::~ScopedPthreadMutexLock()': /cygdrive/e/avian/../android/libcore/include/ScopedPthreadMutexLock.h:32: undefined reference topthread_mutex_unlock' build/windows-x86_64-android/org_conscrypt_NativeCrypto.o: In function locking_function': /cygdrive/e/avian/build/windows-x86_64-android/android-src/org_conscrypt_NativeCrypto.cpp:1798: undefined reference topthread_mutex_lock' /cygdrive/e/avian/build/windows-x86_64-android/android-src/org_conscrypt_NativeCrypto.cpp:1800: undefined reference to pthread_mutex_unlock' build/windows-x86_64-android/org_conscrypt_NativeCrypto.o: In functionid_function': /cygdrive/e/avian/build/windows-x86_64-android/android-src/org_conscrypt_NativeCrypto.cpp:1805: undefined reference to pthread_self' build/windows-x86_64-android/org_conscrypt_NativeCrypto.o: In functionTHREAD_setup()': /cygdrive/e/avian/build/windows-x86_64-android/android-src/org_conscrypt_NativeCrypto.cpp:1815: undefined reference to `pthread_mutex_init'

— Reply to this email directly or view it on GitHub https://github.com/dicej/android-libcore64/pull/11#issuecomment-58047051 .

dicej commented 10 years ago

Right, I am using Cygwin, but I'm building using the MinGW-w64 toolchain, not the native Cygwin toolchain. I don't see any support for Windows threading in org_conscrypt_NativeCrypto.cpp, so I don't see how it could be built and linked with any Windows toolchain. Are you building that file or skipping it?

bigfatbrowncat commented 10 years ago

I don't see any support for Windows threading

Indeed. We use mingw with pthread library inside. I made a tutorial about how to build the project on Windows. Look at the toolchain there: http://bigfatbrowncat.github.io/cross-building/

x86_64-4.9.1-release-posix-seh-rt_v3-rev0.7z

The word "posix" here points to the included Windows version of pthread.