LN-Zap / zap-desktop

Zap Wallet - Cross platform Lightning Network wallet focused on user experience and ease of use ⚡️
MIT License
1.28k stars 215 forks source link

Update failed on PI #760

Closed ZapUser77 closed 5 years ago

ZapUser77 commented 5 years ago

Description

I managed to get zap working on PI. When I updated to LND 5.0, ZAP causes LND to crash. Decided to attempt to update ZAP: Git pull yarn ⚠ 2 problems (0 errors, 2 warnings) Error: /usr/bin/node exited with code 1 zap-desktop@0.2.2-beta~build-dll: zap-desktop@0.2.2-beta Output: yarn install v1.7.0 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

Error output: (node:1717) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead. warning " > react-icons@2.2.5" has unmet peer dependency "react@^0.14.0 || ^15.0.0". warning " > react-icons@2.2.5" has unmet peer dependency "react-dom@^0.14.0 || ^15.0.0". warning "react-icons > react-icon-base@2.0.7" has unmet peer dependency "react@". warning "react-icons > react-icon-base@2.0.7" has unmet peer dependency "react-dom@". warning "react-icons > react-icon-base@2.0.7" has unmet peer dependency "prop-types@*". error /home/pi/source/zap-desktop/app/node_modules/grpc: Command failed. Exit code: 6 Command: node-pre-gyp install --fallback-to-build --library=static_library Arguments: Directory: /home/pi/source/zap-desktop/app/node_modules/grpc Output: node-pre-gyp info it worked if it ends with ok node-pre-gyp info using node-pre-gyp@0.10.0 node-pre-gyp info using node@10.4.1 | linux | arm node-pre-gyp http GET https://node-precompiled-binaries.grpc.io/grpc/v1.14.1/electron-v2.0-linux-arm-glibc.tar.gz node-pre-gyp ERR! Completion callback never invoked! node-pre-gyp ERR! System Linux 4.14.30-v7+ node-pre-gyp ERR! command "/usr/bin/node" "/home/pi/source/zap-desktop/app/node_modules/grpc/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build" "--library=static_library" node-pre-gyp ERR! cwd /home/pi/source/zap-desktop/app/node_modules/grpc node-pre-gyp ERR! node -v v10.4.1 node-pre-gyp ERR! node-pre-gyp -v v0.10.0 node-pre-gyp ERR! This is a bug in node-pre-gyp. node-pre-gyp ERR! Try to update node-pre-gyp and file an issue if it does not help: node-pre-gyp ERR! https://github.com/mapbox/node-pre-gyp/issues

at ChildProcess.childProcess.once.code (/home/pi/source/zap-desktop/node_modules/builder-util/src/util.ts:254:14)
at Object.onceWrapper (events.js:273:13)
at ChildProcess.emit (events.js:182:13)
at maybeClose (internal/child_process.js:961:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:248:5)

From previous event: at installOrRebuild (/home/pi/source/zap-desktop/node_modules/app-builder-lib/out/util/yarn.js:68:17) at /home/pi/source/zap-desktop/node_modules/electron-builder/src/cli/install-app-deps.ts:56:9 at Generator.next () From previous event: at installAppDeps (/home/pi/source/zap-desktop/node_modules/electron-builder/out/cli/install-app-deps.js:174:17) at then (/home/pi/source/zap-desktop/node_modules/electron-builder/src/cli/cli.ts:42:48) at runCallback (timers.js:696:18) at tryOnImmediate (timers.js:667:5) at processImmediate (timers.js:649:5) From previous event: at Object.args [as handler] (/home/pi/source/zap-desktop/node_modules/electron-builder/src/cli/cli.ts:42:48) at Object.runCommand (/home/pi/source/zap-desktop/node_modules/electron-builder/node_modules/yargs/lib/command.js:237:44) at Object.parseArgs [as _parseArgs] (/home/pi/source/zap-desktop/node_modules/electron-builder/node_modules/yargs/yargs.js:1059:30) at Object.get [as argv] (/home/pi/source/zap-desktop/node_modules/electron-builder/node_modules/yargs/yargs.js:1000:21) at Object. (/home/pi/source/zap-desktop/node_modules/electron-builder/src/cli/cli.ts:25:28) at Module._compile (internal/modules/cjs/loader.js:702:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10) at Module.load (internal/modules/cjs/loader.js:612:32) at tryModuleLoad (internal/modules/cjs/loader.js:551:12) at Function.Module._load (internal/modules/cjs/loader.js:543:3) at Function.Module.runMain (internal/modules/cjs/loader.js:744:10) at startup (internal/bootstrap/node.js:238:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)

It was a nightmare getting the dependencies to install correctly last time... was hoping to not have further dependency problems. :(

ZapUser77 commented 5 years ago

And just for fun: sudo apt-get install libnotify4 Reading package lists... Done Building dependency tree
Reading state information... Done libnotify4 is already the newest version (0.7.7-2). libnotify4 set to manually installed. The following packages were automatically installed and are no longer required: libdb5.3++ libminiupnpc10 libuv1 minissdpd Use 'sudo apt autoremove' to remove them. 0 upgraded, 0 newly installed, 0 to remove and 199 not upgraded.

nicolasnoble commented 5 years ago

I'm guessing this is the architecture mismatch.

@mrfelton I've dug a little bit, and the prepackage you've published is kind of miscreated. The architecture and its dependencies says arm7l, but it really should read armhf. The files in there actually are armhf.

ZapUser77 commented 5 years ago

Ya, from what I can gather, you're correct. Even though /arch results in "Arm7l", trying to install the "arm7l" prepackage says my system is "Armhf".

mrfelton commented 5 years ago

Thanks for testing @ZapUser77 .

I've never used a Raspberry Pi or any ARM device, so this would be hard for me to debug blind! However, I do have a RaspiBlitz on it's way to me though - so I'll get this working once I have that in my hands :)

I've dug a little bit, and the prepackage you've published is kind of miscreated. The architecture and its dependencies says arm7l, but it really should read armhf. The files in there actually are armhf.

@nicolasnoble The electron package was built using electron-builder with the arch set to armv7l (see https://www.electron.build/cli.html)

Bundled up with that is the lnd-linux-armv7-v0.5.1-beta binary from https://github.com/lightningnetwork/lnd/releases It was unclear to me exactly which of the lnd binaries I should be using for this as there is no armv7l lnd binary - armv7 was the closest match.

So, I'm not sure which files specifically within the electron bundle are for armhf or where that is coming from since neither electron or lnd mention armhf anywhere.

nicolasnoble commented 5 years ago

I wouldn't be shocked if electron-builder was just wrong here.

ZapUser77 commented 5 years ago

This looks like the same issue with packages: https://github.com/DavidEGrayson/minimu9-ahrs/issues/5

And the very last reply in this is exactly the same problem: https://github.com/electron-userland/electron-builder/issues/1230

ZapUser77 commented 5 years ago

The really strange part is... all the dependencies are already installed...

nicolasnoble commented 5 years ago

arm7l and armhf are fundamentally different and incompatible architecture. While the CPU can run both, once the kernel starts in one mode, it can't switch to the other on the fly (unlike a 64 bits intel kernel that can run 32 bits binaries).

So an arm7l package that contains armhf binaries is fundamentally flawed, and has no chance to work. It'll require libraries of the wrong architecture for the running kernel anyway. This is a square peg with a round hole situation.

Looking at the various issues you've linked, it seems to me the electron story on arm is fundamentally broken at the moment.

ZapUser77 commented 5 years ago

Tried installing the latest version: Did a yarn clean -> Yarn No errors, and it even detects the system correctly now: arch =arm7l

I get the following when I run NPM run start: 0 info it worked if it ends with ok 1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'start' ] 2 info using npm@6.1.0 3 info using node@v10.4.1 4 verbose run-script [ 'prestart', 'start', 'poststart' ] 5 info lifecycle zap-desktop@0.3.3-beta~prestart: zap-desktop@0.3.3-beta 6 verbose lifecycle zap-desktop@0.3.3-beta~prestart: unsafe-perm in lifecycle true 7 verbose lifecycle zap-desktop@0.3.3-beta~prestart: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/pi/source/zap-desktop/node_modules/.bin:/usr/local/go/bin:/bin:/usr/lib/go-1.10/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/home/pi/go/bin 8 verbose lifecycle zap-desktop@0.3.3-beta~prestart: CWD: /home/pi/source/zap-desktop 9 silly lifecycle zap-desktop@0.3.3-beta~prestart: Args: [ '-c', 'npm run build' ] 10 silly lifecycle zap-desktop@0.3.3-beta~prestart: Returned: code: 0 signal: null 11 info lifecycle zap-desktop@0.3.3-beta~start: zap-desktop@0.3.3-beta 12 verbose lifecycle zap-desktop@0.3.3-beta~start: unsafe-perm in lifecycle true 13 verbose lifecycle zap-desktop@0.3.3-beta~start: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/pi/source/zap-desktop/node_modules/.bin:/usr/local/go/bin:/bin:/usr/lib/go-1.10/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/home/pi/go/bin 14 verbose lifecycle zap-desktop@0.3.3-beta~start: CWD: /home/pi/source/zap-desktop 15 silly lifecycle zap-desktop@0.3.3-beta~start: Args: [ '-c', 'cross-env NODE_ENV=production electron ./app' ] 16 silly lifecycle zap-desktop@0.3.3-beta~start: Returned: code: 1 signal: null 17 info lifecycle zap-desktop@0.3.3-beta~start: Failed to exec start script 18 verbose stack Error: zap-desktop@0.3.3-beta start: cross-env NODE_ENV=production electron ./app 18 verbose stack Exit status 1 18 verbose stack at EventEmitter. (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:304:16) 18 verbose stack at EventEmitter.emit (events.js:182:13) 18 verbose stack at ChildProcess. (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14) 18 verbose stack at ChildProcess.emit (events.js:182:13) 18 verbose stack at maybeClose (internal/child_process.js:961:16) 18 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:5) 19 verbose pkgid zap-desktop@0.3.3-beta 20 verbose cwd /home/pi/source/zap-desktop 21 verbose Linux 4.14.30-v7+ 22 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "start" 23 verbose node v10.4.1 24 verbose npm v6.1.0 25 error code ELIFECYCLE 26 error errno 1 27 error zap-desktop@0.3.3-beta start: cross-env NODE_ENV=production electron ./app 27 error Exit status 1 28 error Failed at the zap-desktop@0.3.3-beta start script. 28 error This is probably not a problem with npm. There is likely additional logging output above. 29 verbose exit [ 1, true ]

The console output mentions Glibc_2.27 not found, but required for electron.

And it looks like Debian isn't stable with anything higher than Glibc 2.24: https://tracker.debian.org/pkg/glibc

ZapUser77 commented 5 years ago

Yep, electron 4.0 is incompatible with RPI: https://github.com/electron/electron/issues/16205

ZapUser77 commented 5 years ago

So... I did a: npm install electron@3.0.10 (From within the zap-desktop directory)

And changed the dependency in package.json of Electron-updater to 3.2.3. Ran Yarn. Installed without any errors NPM start It runs, but very slowly. Hopefully, it'll go to normal speeds after a bit.

So, it looks like everything is finally working properly on a RPI.