leenjewel / openssl_for_ios_and_android

OpenSSL Library for iOS and Android
921 stars 318 forks source link

Suggested refactor of android build script #2

Closed davidshen84 closed 7 years ago

davidshen84 commented 7 years ago

I made the following updates for android related build script.

leenjewel commented 7 years ago

Thank you for your job 👍

leenjewel commented 7 years ago

@davidshen84

Did you test your commit ?

build-openssl4android.sh and build-curl4android.sh not work on my computer

My Env:

MacBook Pro (Retina, 15-inch, Late 2013)

android-ndk-r13b

Xcode 8.2

davidshen84 commented 7 years ago

Yes, it works here. What's the error?

On Thu, Jan 5, 2017, 17:05 leenjewel notifications@github.com wrote:

@davidshen84 https://github.com/davidshen84

Did you test your commit ?

build-openssl4android.sh and build-curl4android.sh not work on my computer

My Env:

MacBook Pro (Retina, 15-inch, Late 2013)

android-ndk-r13b

Xcode 8.2

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/leenjewel/openssl_for_ios_and_android/pull/2#issuecomment-270595841, or mute the thread https://github.com/notifications/unsubscribe-auth/AAEAzUUCax_ablQaRE_N7gVGC42S_Hu0ks5rPLJPgaJpZM4LbSCL .

leenjewel commented 7 years ago

@davidshen84

For example

You change build-openssl4android.sh

ARCHS=("android" "android-armv7" "android64-arm64" "android-x86" "android-x86_64" "mips" "mips64")

but openssl Configure not support these archs, If you run

openssl/Configure -h

You could see archs like

pick os/compiler from:
BS2000-OSD BSD-generic32 BSD-generic64 BSD-ia64 BSD-sparc64 BSD-sparcv8
BSD-x86 BSD-x86-elf BSD-x86_64 Cygwin Cygwin-i386 Cygwin-i486 Cygwin-i586
Cygwin-i686 Cygwin-x86 Cygwin-x86_64 DJGPP MPE/iX-gcc OS390-Unix QNX6
QNX6-i386 UEFI UWIN VC-CE VC-WIN32 VC-WIN64A VC-WIN64A-masm VC-WIN64I aix-cc
aix-gcc aix64-cc aix64-gcc android android-armeabi android-mips android-x86
android64 android64-aarch64 bsdi-elf-gcc cc darwin-i386-cc darwin-ppc-cc
darwin64-debug-test-64-clang darwin64-ppc-cc darwin64-x86_64-cc dist gcc
haiku-x86 haiku-x86_64 hpux-ia64-cc hpux-ia64-gcc hpux-parisc-cc
hpux-parisc-gcc hpux-parisc1_1-cc hpux-parisc1_1-gcc hpux64-ia64-cc
hpux64-ia64-gcc hpux64-parisc2-cc hpux64-parisc2-gcc hurd-x86 ios-cross
ios64-cross iphoneos-cross irix-mips3-cc irix-mips3-gcc irix64-mips4-cc
irix64-mips4-gcc linux-aarch64 linux-alpha-gcc linux-aout linux-arm64ilp32
linux-armv4 linux-c64xplus linux-elf linux-generic32 linux-generic64
linux-ia64 linux-mips32 linux-mips64 linux-ppc linux-ppc64 linux-ppc64le
linux-sparcv8 linux-sparcv9 linux-x32 linux-x86_64 linux-x86_64-clang
linux32-s390x linux64-mips64 linux64-s390x linux64-sparcv9 mingw mingw64
nextstep nextstep3.3 purify qnx4 sco5-cc sco5-gcc solaris-sparcv7-cc
solaris-sparcv7-gcc solaris-sparcv8-cc solaris-sparcv8-gcc solaris-sparcv9-cc
solaris-sparcv9-gcc solaris-x86-gcc solaris64-sparcv9-cc solaris64-sparcv9-gcc
solaris64-x86_64-cc solaris64-x86_64-gcc tru64-alpha-cc tru64-alpha-gcc
uClinux-dist uClinux-dist64 unixware-2.0 unixware-2.1 unixware-7
unixware-7-gcc vms-alpha vms-alpha-p32 vms-alpha-p64 vms-ia64 vms-ia64-p32
vms-ia64-p64 vos-gcc vxworks-mips vxworks-ppc405 vxworks-ppc60x vxworks-ppc750
vxworks-ppc750-debug vxworks-ppc860 vxworks-ppcgen vxworks-simlinux debug
debug-erbridge debug-linux-ia32-aes debug-linux-pentium debug-linux-ppro
debug-test-64-clang
leenjewel commented 7 years ago

@davidshen84

另外环境变量在我这似乎会相互污染。。。。

如果我一个一个架构的去编译似乎没什么问题,比如

./build-curl4android.sh  android-x86
./build-curl4android.sh  mips
......

但是如果我直接

./build-curl4android.sh

执行到一半,编译了几个架构的包之后就挂了,然后看报错会发现 TOOL 这个变量的值乱了,比如明明在编译 mips 架构的时候,TOOL 的值还是刚刚编译 x86_64 时候的值。

davidshen84 commented 7 years ago

For the ARCHS value, I remember I saw a conflict when I try to merge your HEAD into my, and I blindly accepted yours, cause I never changed it. And the build failed here as well. I will fix it.

For the TOOL value, I saw you use export a lot. I guess the environment will get polluted at some point. But it does not bother me for now. Are you sure you did not have similar issue before? My refactor did not change the original code flow or logic, simply moving code around.

leenjewel commented 7 years ago

@davidshen84

openssl 和 curl 我重新 build 了一遍,总结一下目前的三个问题

1、ARCHS 那个设置的值是 openssl 不支持的,这个我已经改回原来的了,一会儿提交

2、单独一个一个 arch 来 build 的没问题的,但是直接用脚本里的循环构建的话就会失败,另外,我这是 zshell (zsh) 是不是这个原因?

3、protobuf 的那个构建脚本我这边报错,没办法成功构建,报错如下

make  all-recursive
make[1]: Entering directory `/Users/leenjewel/workspaces/openssl_for_ios_and_android/tools/protobuf-3.1.0'
Making all in .
make[2]: Entering directory `/Users/leenjewel/workspaces/openssl_for_ios_and_android/tools/protobuf-3.1.0'
make[2]: Nothing to be done for `all-am'.
make[2]: Leaving directory `/Users/leenjewel/workspaces/openssl_for_ios_and_android/tools/protobuf-3.1.0'
Making all in src
make[2]: Entering directory `/Users/leenjewel/workspaces/openssl_for_ios_and_android/tools/protobuf-3.1.0/src'
/usr/local/bin/protoc -I. --cpp_out=. google/protobuf/any_test.proto google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto google/protobuf/map_lite_unittest.proto google/protobuf/map_proto2_unittest.proto google/protobuf/map_unittest.proto google/protobuf/unittest_arena.proto google/protobuf/unittest_custom_options.proto google/protobuf/unittest_drop_unknown_fields.proto google/protobuf/unittest_embed_optimize_for.proto google/protobuf/unittest_empty.proto google/protobuf/unittest_enormous_descriptor.proto google/protobuf/unittest_import_lite.proto google/protobuf/unittest_import.proto google/protobuf/unittest_import_public_lite.proto google/protobuf/unittest_import_public.proto google/protobuf/unittest_lite_imports_nonlite.proto google/protobuf/unittest_lite.proto google/protobuf/unittest_mset.proto google/protobuf/unittest_mset_wire_format.proto google/protobuf/unittest_no_arena_lite.proto google/protobuf/unittest_no_arena_import.proto google/protobuf/unittest_no_arena.proto google/protobuf/unittest_no_field_presence.proto google/protobuf/unittest_no_generic_services.proto google/protobuf/unittest_optimize_for.proto google/protobuf/unittest_preserve_unknown_enum2.proto google/protobuf/unittest_preserve_unknown_enum.proto google/protobuf/unittest.proto google/protobuf/unittest_proto3_arena.proto google/protobuf/unittest_proto3_arena_lite.proto google/protobuf/unittest_proto3_lite.proto google/protobuf/unittest_well_known_types.proto google/protobuf/util/internal/testdata/anys.proto google/protobuf/util/internal/testdata/books.proto google/protobuf/util/internal/testdata/default_value.proto google/protobuf/util/internal/testdata/default_value_test.proto google/protobuf/util/internal/testdata/field_mask.proto google/protobuf/util/internal/testdata/maps.proto google/protobuf/util/internal/testdata/oneofs.proto google/protobuf/util/internal/testdata/proto3.proto google/protobuf/util/internal/testdata/struct.proto google/protobuf/util/internal/testdata/timestamp_duration.proto google/protobuf/util/internal/testdata/wrappers.proto google/protobuf/util/json_format_proto3.proto google/protobuf/util/message_differencer_unittest.proto google/protobuf/compiler/cpp/cpp_test_large_enum_value.proto
google/protobuf/any_test.proto:31:10: Unrecognized syntax identifier "proto3".  This parser only recognizes "proto2".
make[2]: *** [unittest_proto_middleman] Error 1
make[2]: Leaving directory `/Users/leenjewel/workspaces/openssl_for_ios_and_android/tools/protobuf-3.1.0/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/Users/leenjewel/workspaces/openssl_for_ios_and_android/tools/protobuf-3.1.0'
make: *** [all] Error 2

这个你再看看

实在不好意思,英文确实不怎么行,中文回复了,再次对你做的表示感谢~合作愉快!

davidshen84 commented 7 years ago
  1. Let's we don't have conflict this time :)
  2. I use zsh too. I am testing the build script.
  3. Please install protobuf on your OS first. I should put it in the README.
leenjewel commented 7 years ago

@davidshen84

3、I have install protobuf on my OS

My zsh output:

➜  openssl_for_ios_and_android git:(master) ✗ protoc --version
libprotoc 3.1.0
➜  openssl_for_ios_and_android git:(master) ✗
davidshen84 commented 7 years ago

For batch build not working, I think it is my fault :( I set ANDROID_API=16, but I did not test it. It is failed because for 64 bit archs, the minimum should be 21

For the protobuf one...I don't think I have seen a before. I will try to reproduce it.

Thanks!

leenjewel commented 7 years ago

Nice!wait for your commit request, Have a good day!