-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
Behavior of the program
npm run build:arm32 fails with an ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
Expected behavior
The build should succeed.
To Reproduce
- clone the FreeTube repo
git checkout v0.13.1-betanpm inpm run build:arm32
Screenshots
[...]
renderer (webpack 5.37.0) compiled successfully in 55112 ms
> [email protected] build-release:arm32
> node _scripts/build.js arm32
• electron-builder version=22.10.5 os=5.10.17-v7l+
• electron-rebuild not required if you use electron-builder, please consider to remove excess dependency from devDependencies
To ensure your native dependencies are always matched electron version, simply add script `"postinstall": "electron-builder install-app-deps" to your `package.json`
• writing effective config file=build/builder-effective-config.yaml
• rebuilding native dependencies [email protected] platform=linux arch=armv7l
• packaging platform=linux arch=armv7l electron=12.0.7 appOutDir=build/linux-armv7l-unpacked
• Unpacking electron zip zipPath=undefined
• building target=zip arch=armv7l file=build/freetube-0.13.1-armv7l.zip
• building target=AppImage arch=armv7l file=build/FreeTube-0.13.1-armv7l.AppImage
• building target=deb arch=armv7l file=build/freetube_0.13.1_armv7l.deb
⨯ cannot execute cause=exit status 1
errorOut=/home/nw/.cache/electron-builder/fpm/fpm-1.9.3-2.3.1-linux-x86/lib/ruby/bin/ruby: line 6: /home/nw/.cache/electron-builder/fpm/fpm-1.9.3-2.3.1-linux-x86/lib/ruby/bin.real/ruby: cannot execute binary file: Exec format error
/home/nw/.cache/electron-builder/fpm/fpm-1.9.3-2.3.1-linux-x86/lib/ruby/bin/ruby: line 6: /home/nw/.cache/electron-builder/fpm/fpm-1.9.3-2.3.1-linux-x86/lib/ruby/bin.real/ruby: Success
command=/home/nw/.cache/electron-builder/fpm/fpm-1.9.3-2.3.1-linux-x86/fpm -s dir --force -t deb -d libgtk-3-0 -d libnotify4 -d libnss3 -d libxss1 -d libxtst6 -d xdg-utils -d libatspi2.0-0 -d libuuid1 -d libsecret-1-0 --deb-compression xz --architecture armhf --name freetube --after-install /tmp/t-JkETVm/2-after-install --after-remove /tmp/t-JkETVm/5-after-remove --description '
A private YouTube client' --version 0.13.1 --package /home/nw/FreeTube/build/freetube_0.13.1_armv7l.deb --maintainer 'PrestonN <[email protected]>' --url 'https://github.com/FreeTubeApp/FreeTube#readme' --vendor 'PrestonN <[email protected]>' --license AGPL-3.0-or-later /home/nw/FreeTube/build/linux-armv7l-unpacked/=/opt/FreeTube /home/nw/FreeTube/_icons/icon.svg=/usr/share/icons/hicolor/scalable/apps/freetube.svg /tmp/t-JkETVm/8-FreeTube.desktop=/usr/share/applications/freetube.desktop
workingDir=
ExecError: /home/nw/FreeTube/node_modules/app-builder-bin/linux/arm/app-builder exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
at ChildProcess.<anonymous> (/home/nw/FreeTube/node_modules/builder-util/src/util.ts:243:14)
at Object.onceWrapper (events.js:422:26)
at ChildProcess.emit (events.js:315:20)
at maybeClose (internal/child_process.js:1048:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5) {
exitCode: 2,
alreadyLogged: true,
code: 'ERR_ELECTRON_BUILDER_CANNOT_EXECUTE'
}
OS: Raspbian
OS Version: Linux raspberrypi 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/Linux
FreeTube version: v0.13.1-beta (had the same problem with v0.12.x)
Installation Method: npm 7.15.0
Additional context
I could not find much about ERR_ELECTRON_BUILDER_CANNOT_EXECUTE other than it's just that the electron-builder remote service is not available any more.
However, that is supposedly used only for cross-compilation, which is not the case.
In the logs above, the cannot execute binary file: Exec format error suggests that it may be a problem with electron-builder itself; when I try to actually cross compile from my x86_64 ubuntu, I get:
[...]
renderer (webpack 5.37.0) compiled successfully in 12132 ms
> [email protected] build-release:arm32
> node _scripts/build.js arm32
• electron-builder version=22.10.5 os=5.11.0-7614-generic
• electron-rebuild not required if you use electron-builder, please consider to remove excess dependency from devDependencies
To ensure your native dependencies are always matched electron version, simply add script `"postinstall": "electron-builder install-app-deps" to your `package.json`
• writing effective config file=build/builder-effective-config.yaml
• rebuilding native dependencies [email protected] platform=linux arch=armv7l
• packaging platform=linux arch=armv7l electron=12.0.7 appOutDir=build/linux-armv7l-unpacked
• Unpacking electron zip zipPath=undefined
• building target=zip arch=armv7l file=build/freetube-0.13.1-armv7l.zip
• building target=AppImage arch=armv7l file=build/FreeTube-0.13.1-armv7l.AppImage
• building target=deb arch=armv7l file=build/freetube_0.13.1_armv7l.deb
• building target=apk arch=armv7l file=build/freetube-0.13.1-armv7l.apk
• building target=rpm arch=armv7l file=build/freetube-0.13.1.armv7l.rpm
• building target=pacman arch=armv7l file=build/freetube-0.13.1-armv7l.pacman
⨯ cannot execute cause=exit status 1
out={:timestamp=>"2021-05-30T09:58:49.878440+0200", :message=>"Process failed: /bin/bash failed (exit code 127). Full command was:[\"/bin/bash\", \"-c\", \"LANG=C bsdtar -czf .MTREE --format=mtree --options='!all,use-set,type,uid,gid,mode,time,size,md5,sha256,link' .PKGINFO .INSTALL usr opt\"]", :level=>:error}
command=/home/nw/.cache/electron-builder/fpm/fpm-1.9.3-2.3.1-linux-x86_64/fpm -s dir --force -t pacman -d c-ares -d ffmpeg -d gtk3 -d http-parser -d libevent -d libvpx -d libxslt -d libxss -d minizip -d nss -d re2 -d snappy -d libnotify -d libappindicator-gtk3 --pacman-compression xz --architecture armv7l --name freetube --after-install /tmp/t-76xxDb/6-after-install --after-remove /tmp/t-76xxDb/7-after-remove --description '
A private YouTube client' --version 0.13.1 --package /home/nw/FreeTube/build/freetube-0.13.1-armv7l.pacman --maintainer 'PrestonN <[email protected]>' --url 'https://github.com/FreeTubeApp/FreeTube#readme' --vendor 'PrestonN <[email protected]>' --license AGPL-3.0-or-later /home/nw/FreeTube/build/linux-armv7l-unpacked/=/opt/FreeTube /home/nw/FreeTube/_icons/icon.svg=/usr/share/icons/hicolor/scalable/apps/freetube.svg /tmp/t-76xxDb/b-FreeTube.desktop=/usr/share/applications/freetube.desktop
workingDir=
ExecError: /home/nw/FreeTube/node_modules/app-builder-bin/linux/x64/app-builder exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
at ChildProcess.<anonymous> (/home/nw/FreeTube/node_modules/builder-util/src/util.ts:243:14)
at Object.onceWrapper (events.js:421:26)
at ChildProcess.emit (events.js:314:20)
at maybeClose (internal/child_process.js:1047:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) {
exitCode: 2,
alreadyLogged: true,
code: 'ERR_ELECTRON_BUILDER_CANNOT_EXECUTE'
}
i.e., the build fails even if .cache/electron-builder/fpm/fpm-1.9.3-2.3.1-linux-x86/lib/ruby/bin.real/ruby is executed on the correct architecture.