pkg icon indicating copy to clipboard operation
pkg copied to clipboard

PKG build package for or on Android

Open ronaldsbtcbit opened this issue 3 years ago • 3 comments

What version of pkg are you using?

5.8.0

What version of Node.js are you using?

v17.9.0

What operating system are you using?

Android 8.0

What CPU architecture are you using?

arm64

What Node versions, OSs and CPU architectures are you building for?

node-v14.20.0-android-arm64

Describe the Bug

Failed to build node from source: `ld.lld: error: undefined symbol: OPENSSL_sk_new_null

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(ca_main) referenced by ld-temp.o lto.tmp:(ca_main) referenced 51 more times

ld.lld: error: undefined symbol: OPENSSL_sk_push

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(ca_main) referenced by ld-temp.o lto.tmp:(ca_main) referenced 59 more times

ld.lld: error: undefined symbol: ASN1_ITEM_lookup

referenced by ld-temp.o lto.tmp:(asn1parse_main)

ld.lld: error: undefined symbol: BIO_printf

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced 1443 more times

ld.lld: error: undefined symbol: BIO_puts

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(ca_main) referenced by ld-temp.o lto.tmp:(ca_main) referenced 186 more times

ld.lld: error: undefined symbol: ASN1_ITEM_get

referenced by ld-temp.o lto.tmp:(asn1parse_main)

ld.lld: error: undefined symbol: BIO_free

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced 108 more times

ld.lld: error: undefined symbol: ERR_print_errors

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced 261 more times

ld.lld: error: undefined symbol: BUF_MEM_free

referenced by ld-temp.o lto.tmp:(asn1parse_main)

ld.lld: error: undefined symbol: CRYPTO_free

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(ca_main) referenced 262 more times

ld.lld: error: undefined symbol: ASN1_TYPE_free

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(do_generate) referenced 2 more times

ld.lld: error: undefined symbol: OPENSSL_sk_free

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(ca_main) referenced by ld-temp.o lto.tmp:(ciphers_main) referenced 34 more times

ld.lld: error: undefined symbol: OBJ_create_objects

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(ca_main) referenced by ld-temp.o lto.tmp:(req_main) referenced 1 more times

ld.lld: error: undefined symbol: BUF_MEM_new

referenced by ld-temp.o lto.tmp:(asn1parse_main)

ld.lld: error: undefined symbol: PEM_read_bio

referenced by ld-temp.o lto.tmp:(asn1parse_main)

ld.lld: error: undefined symbol: BUF_MEM_grow

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(do_generate)

ld.lld: error: undefined symbol: BIO_f_base64

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(enc_main) referenced by ld-temp.o lto.tmp:(ocsp_main) referenced 1 more times

ld.lld: error: undefined symbol: BIO_new

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(dgst_main) referenced by ld-temp.o lto.tmp:(dgst_main) referenced 28 more times

ld.lld: error: undefined symbol: BIO_push

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(dgst_main) referenced by ld-temp.o lto.tmp:(enc_main) referenced 19 more times

ld.lld: error: undefined symbol: BIO_read

referenced by ld-temp.o lto.tmp:(asn1parse_main) referenced by ld-temp.o lto.tmp:(dgst_main) referenced by ld-temp.o lto.tmp:(do_fp) referenced 21 more times

ld.lld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors) clang-14: error: linker command failed with exit code 1 (use -v to see invocation) make[1]: *** [deps/openssl/openssl-cli.target.mk:226: /data/data/com.termux/files/usr/tmp/pkg.4c7d02692a8aa134fb3fbf5c/node/out/Release/openssl-cli] Error 1 make: *** [Makefile:109: node] Error 2 strip: '/data/data/com.termux/files/usr/tmp/pkg.4c7d02692a8aa134fb3fbf5c/node/out/Release/node': No such file

Error! Error: ENOENT: no such file or directory, open '/data/data/com.termux/files/usr/tmp/pkg.4c7d02692a8aa134fb3fbf5c/node/out/Release/node'`

Expected Behavior

Build package without errors

To Reproduce

  • install termux on android 8.0 version with arm64 architecture
  • install python and node (pkg add node python)
  • move ~/../usr/bin/pkg elsewhere
  • run npm -g install pkg
  • run MAKE_JOB_COUNT=1 pkg -t node-v14.20.0-android-arm64 -o ./server ./{any-js-source}.js --debug --compress Brotli`

ronaldsbtcbit avatar Jul 20 '22 13:07 ronaldsbtcbit

any workaround welcome , because it does not support installed node version (node 17) , so I had to define older one. Building from docker drops with other error:

> Error! Error: spawnSync make ENOENT at Object.spawnSync (internal/child_process.js:1067:20) at spawnSync (child_process.js:602:24) at /usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:148:51 at step (/usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:33:23) at Object.next (/usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:14:53) at /usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:8:71 at new Promise (<anonymous>) at __awaiter (/usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:4:12) at spawn (/usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:145:12) at /usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/build.js:306:60

maybe there is a case to feed prebuilt node without checking in pkg defined location ?

ronaldsbtcbit avatar Jul 20 '22 13:07 ronaldsbtcbit

Building from balenalib/armv7hf-alpine-node node 14 `> Applying patches

Error! Error: spawnSync patch ENOENT at Object.spawnSync (node:internal/child_process:1109:20) at spawnSync (node:child_process:803:24) at /usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:148:51 at step (/usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:33:23) at Object.next (/usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:14:53) at /usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:8:71 at new Promise () at __awaiter (/usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:4:12) at spawn (/usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:145:12) at /usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/build.js:221:60 `

Building from balenalib/armv7hf-alpine-node node 18 > Error! Error: spawnSync patch ENOENT at Object.spawnSync (node:internal/child_process:1109:20) at spawnSync (node:child_process:803:24) at /usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:148:51 at step (/usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:33:23) at Object.next (/usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:14:53) at /usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:8:71 at new Promise (<anonymous>) at __awaiter (/usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:4:12) at spawn (/usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/utils.js:145:12) at /usr/local/lib/node_modules/pkg/node_modules/pkg-fetch/lib-es5/build.js:221:60

ARM v8 qemu not found at all

ronaldsbtcbit avatar Jul 21 '22 06:07 ronaldsbtcbit

suggesting workaround:

you could install ubuntu 20.04 on termux(from fdroid) using Andronix(from playstore). then apt install node and npm then npm install pkg. Do this all on the ubuntu environment in termux (aka after u ./start-ubuntu20.sh in the home directory of termux). Bear in mind that the node version in the ubuntu repo is kinda outdated, apt install nodejs in ubuntu environment got me node10. or u could just curl the links of newer repositories https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04.

After that, pkg your app with nodeversion-linux-arm64 target

KringeKactus avatar Aug 16 '22 16:08 KringeKactus

This issue is stale because it has been open 90 days with no activity. Remove the stale label or comment or this will be closed in 5 days. To ignore this issue entirely you can add the no-stale label

github-actions[bot] avatar Nov 15 '22 00:11 github-actions[bot]

This issue is now closed due to inactivity, you can of course reopen or reference this issue if you see fit.

github-actions[bot] avatar Nov 20 '22 00:11 github-actions[bot]