Open gounthar opened 2 years ago
@gounthar ,
I recently built a 3.6.1
without issue on a Raspberry Pi4, using the Dockerfile Dockerfile-debian-armhf
, is this your case?
Regards.
Thank you @denis99999 .
My Raspberry Pi 3B+
are running Armbian, so 64 bits.
I'm building on an Orange Pi Zero, so a true 32 bits arm machine.
Did you build from master, or from the 3.6.1
source file release?
When I switch to the 3.6.1
release source files, I get another error:
Processing triggers for libc-bin (2.24-11+deb9u4) ...
--- Building app
+ cd /tmp/build
+ export PATH=/tmp/build/node_modules/.bin:/app/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ sed -i -e /phantomjs/d package.json
+ npm config set unsafe-perm true
+ npm install -g npm
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
/usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
+ npm@8.5.3
added 149 packages, removed 418 packages and updated 58 packages in 85.128s
+ echo npm cache clean --force
+ su stf -s /bin/bash
npm does not support Node.js v9.9.0
You should probably upgrade to a newer version of node as we
can't make any promises that npm will work with this version.
You can find the latest version at https://nodejs.org/
/usr/local/lib/node_modules/npm/lib/npm.js:32
#unloaded = false
^
SyntaxError: Invalid or unexpected token
at new Script (vm.js:51:7)
at createScript (vm.js:136:10)
at Object.runInThisContext (vm.js:197:10)
at Module._compile (module.js:613:28)
at Object.Module._extensions..js (module.js:660:10)
at Module.load (module.js:561:32)
at tryModuleLoad (module.js:501:12)
at Function.Module._load (module.js:493:3)
at Module.require (module.js:593:17)
at require (internal/module.js:11:18)
The command '/bin/sh -c export DEBIAN_FRONTEND=noninteractive && echo '--- Updating repositories' && apt-get update && echo '--- Building node' && apt-get -y install wget python build-essential cmake && cd /tmp && wget --progress=dot:mega https://nodejs.org/dist/v9.9.0/node-v9.9.0-linux-armv7l.tar.xz && tar -xJf node-v*.tar.xz --strip-components 1 -C /usr/local && rm node-v*.tar.xz && useradd --system --create-home --shell /usr/sbin/nologin stf && su stf -s /bin/bash -c '/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js install' && apt-get -y install --no-install-recommends libzmq3-dev libprotobuf-dev git graphicsmagick yasm && echo '--- Building app' && mkdir -p /app && chown -R stf:stf /tmp/build && set -x && cd /tmp/build && export PATH=$PWD/node_modules/.bin:$PATH && sed -i'' -e '/phantomjs/d' package.json && npm config set unsafe-perm true && npm install -g npm && echo 'npm cache clean --force' | su stf -s /bin/bash && echo 'npm install --no-optional --loglevel http' | su stf -s /bin/bash && echo '--- Assembling app' && echo 'npm pack' | su stf -s /bin/bash && tar xzf devicefarmer-stf-*.tgz --strip-components 1 -C /app && echo '/tmp/build/node_modules/.bin/bower cache clean' | su stf -s /bin/bash && echo 'npm prune --production' | su stf -s /bin/bash && mv node_modules /app && chown -R root:root /app && echo '--- Cleaning up' && echo 'npm cache clean --force' | su stf -s /bin/bash && rm -rf ~/.node-gyp && apt-get -y purge wget python build-essential && apt-get -y clean && apt-get -y autoremove && rm -rf /var/cache/apt/* /var/lib/apt/lists/* && cd /app && rm -rf /tmp/*' returned a non-zero code: 1
@gounthar ,
I just built from master and it works well, I recommend using a Raspberry Pi4 for the build because it's much more powerful, it only takes a few minutes to build the docker image, on my side I use a Raspbian lite OS
on my Pi whether for construction or production and everything is very stable, but it's true slightly more expensive than a Pi Zero, even if this cost is ridiculous compared to the purchase of mobiles that you have to connect to it, with the advantage that the Pi4 has 32 USB channels against only 8 for a Pi3.
Regards.
@denis99999 what is the command you're using? Any parameter? What are your kernel and Docker versions?
I'm using Docker version 20.10.5+dfsg1, build 55c4c88
on a Debian 11 bullseye running 5.10.60 armv7l
kernel.
@gounthar ,
Docker version: 20.10.12 build e91ed57
Kernel: 5.10.63-v7l+
under RaspiOS Buster
updated
Command line for STF: docker build -f Dockerfile-debian-armhf -t stf-armv7l:latest .
Hi @denis99999 I'm running DeviceFarmer from the main branch on a few servers, but I'm having issues building it on Raspberry PI 4. Have you tried this lately or are you aware of any issues? Below is the issue I'm experiencing. I appriciete you can point me in any direction.
Model : Raspberry Pi 4 Model B Rev 1.1 Hardware : BCM2835
@raspberrypi:~/stf $ uname -a Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
@raspberrypi:~/stf $ cat cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 11 (bullseye)" NAME="Debian GNU/Linux" VERSION_ID="11" VERSION="11 (bullseye)"
@raspberrypi:~/stf $ docker -v Docker version 24.0.6, build ed223bc
raspberrypi:~/stf $ sudo docker build -f Dockerfile-debian-armhf -t stf-armv7l:latest .
[+] Building 567.4s (8/8) FINISHED docker:default => [internal] load .dockerignore 0.1s => => transferring context: 182B 0.0s => [internal] load build definition from Dockerfile-debian-armhf 0.1s => => transferring dockerfile: 2.42kB 0.0s => [internal] load metadata for docker.io/arm32v7/debian:buster-slim 1.5s => [internal] load build context 1.1s => => transferring context: 11.14MB 0.9s => [1/4] FROM docker.io/arm32v7/debian:buster-slim@sha256:6a596f170ded1466 17.7sb => => resolve docker.io/arm32v7/debian:buster-slim@sha256:6a596f170ded1466e 0.0sb => => sha256:6a596f170ded1466e2a2b6cbd3630605a36fc9d6a0ac042c1a 529B / 529B 0.0sB => => sha256:d8a196cd840523d75c771d5b697ae4ae72bb560ba0244a 1.48kB / 1.48kB 0.0s8 => => sha256:7e54f06c680feaf82a31a34e7453d765f332f671cfe 22.80MB / 22.80MB 13.6s8 => => extracting sha256:7e54f06c680feaf82a31a34e7453d765f332f671cfecacb622c 3.6s1 => [2/4] WORKDIR /app 3.0s => [3/4] COPY . /tmp/build/ 1.3s => ERROR [4/4] RUN export DEBIAN_FRONTEND=noninteractive && echo '--- 543.3ss ...
ERROR: failed to solve: process "/bin/sh -c export DEBIAN_FRONTEND=noninteractive & & echo '--- Updating repositories' && apt-get update && echo '--- Build ing node' && apt-get -y install wget python3 build-essential cmake && cd /t mp && wget --progress=dot:mega https://nodejs.org/dist/v17.9.0/node-v17.9 .0-linux-armv7l.tar.xz && tar -xJf node-v.tar.xz --strip-components 1 -C /usr/ local && rm node-v.tar.xz && useradd --system --create-home -- shell /usr/sbin/nologin stf && su stf -s /bin/bash -c '/usr/local/lib/nod e_modules/npm/node_modules/node-gyp/bin/node-gyp.js install' && apt-get -y inst all --no-install-recommends libzmq3-dev libprotobuf-dev git graphicsmagick yasm && echo '--- Building app' && mkdir -p /app && chown -R stf:stf /tmp/build && set -x && cd /tmp/build && export PATH=$PWD/node_modules/.bin:$PATH && sed -i'' -e '/phantomjs/d' package.json && echo 'npm install --python=\ "/usr/bin/python3\" --no-optional --loglevel http' | su stf -s /bin/bash && ech o '--- Assembling app' && echo 'npm pack' | su stf -s /bin/bash && tar xzf devicefarmer-stf-.tgz --strip-components 1 -C /app && echo '/tmp/build/node_mo dules/.bin/bower cache clean' | su stf -s /bin/bash && echo 'npm prune --produc tion' | su stf -s /bin/bash && mv node_modules /app && chown -R root:root / app && echo '--- Cleaning up' && echo 'npm cache clean --force' | su stf -s /bin/bash && rm -rf ~/.node-gyp && apt-get -y purge wget python3 build-ess ential && apt-get -y clean && apt-get -y autoremove && rm -rf /var/cach e/apt/ /var/lib/apt/lists/ && cd /app && rm -rf /tmp/" did not complete successfully: exit code: 1
@chiquilindebachinar , I didn't try with a RaspiOS bullseye, but using a Buster on Raspberry Pi4 it works well, let me some time to investigate about that!
Thanks @denis99999 . I was able to build the STF image with Buster, but now Im getting other errors with ADB and Rethinkdb images. I will spend some time analyzing the issues and will share here the outcome.
@chiquilindebachinar , I successed to build a docker image of STF using raspberry PI OS Lite (64 bits) based on Debian Bullseye, so the same of yours! Are you behind a proxy ?
Hi @denis99999 I tried using Pi OS Lite (64 bits) based on Debian Bullseye, and now I'm able to build STF. I'm not behind a proxy, so maybe it was a timeout or something related to the other Pi OS. Now, I have an issue with the ADB container which keeps restarting. Have you encountered this issue? It seems there is a compatibility issue with the Raspberry Pi's architecture.
First, I built the STF image, and then I updated the docker-compose to use it.
@raspberrypi:~/stf $docker build -t stf-arm:latest -f Dockerfile-stf-debian9-armhf .
raspberrypi:~/stf $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 92eaae1aac71 stf-armv7l:latest "stf local --adb-hos…" 5 minutes ago Up 5 minutes 0.0.0.0:7100->7100/tcp, 0.0.0.0:7110->7110/tcp, 0.0.0.0:7400-7500->7400-7500/tcp stf 66287380fc1e devicefarmer/adb:latest "/sbin/tini -- adb -…" 47 minutes ago Restarting (1) 23 seconds ago adb fea1b3ee8c5f rethinkdb:2.4.2 "rethinkdb --bind al…" 2 hours ago Up 31 minutes 8080/tcp, 28015/tcp, 29015/tcp
@raspberrypi:~/stf $ docker logs adb standard_init_linux.go:219: exec user process caused: exec format error standard_init_linux.go:219: exec user process caused: exec format error standard_init_linux.go:219: exec user process caused: exec format error standard_init_linux.go:219: exec user process caused: exec format error
@raspberrypi:~/stf $ cat docker-compose.yaml version: "3"
services: rethinkdb: container_name: rethinkdb image: rethinkdb:2.4.2 restart: unless-stopped volumes:
"rethinkdb-data:/data" command: "rethinkdb --bind all --cache-size 2048"
adb: container_name: adb image: devicefarmer/adb:latest restart: unless-stopped volumes:
stf: container_name: stf image: stf-armv7l:latest ports:
volumes: rethinkdb-data: {}
@raspberrypi:~ $ uname -a Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
@raspberrypi:~ $ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 11 (bullseye)" NAME="Debian GNU/Linux" VERSION_ID="11" VERSION="11 (bullseye)" VERSION_CODENAME=bullseye ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"
Maybe not relevant, but I tried using gounthar/docker-adb:docker-adb-aarch64 image, and it's working okay. @raspberrypi:~ $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES df4e5fa1c93d gounthar/docker-adb:docker-adb-aarch64 "/sbin/tini -- adb -…" 9 minutes ago Up 3 minutes 5037/tcp adb 92eaae1aac71 stf-armv7l:latest "stf local --adb-hos…" 53 minutes ago Up 3 minutes 0.0.0.0:7100->7100/tcp, 0.0.0.0:7110->7110/tcp, 0.0.0.0:7400-7500->7400-7500/tcp stf fea1b3ee8c5f rethinkdb:2.4.2 "rethinkdb --bind al…" 3 hours ago Up 3 minutes 8080/tcp, 28015/tcp, 29015/tcp rethinkdb
@chiquilindebachinar , what rethinkdb image do you use ? Or how did you build it (Dockerfile) ? I mean your rethinkdb database is running on Raspberry Pi4 64 bits also ?
At least partially fixed by https://github.com/DeviceFarmer/stf/pull/712.
@chiquilindebachinar, @denis99999, just to share my experience with similar issues:
I am using stf on a Raspberry Pi 4 with Fedora. In my case, it was much easier to install adb on the host system from a standard Fedora repository.
RethinkDB is trickier, but I was able to package it for Fedora: https://github.com/im-0/fedora-rpm.rethinkdb. Though I do not recommend this if you do not have any experience in creating new packages for your preferred Linux distro, just modifying someone else's Dockerfile might be easier =).
@im-0 , there is no problem for building an ARM 32/64 bit binaries of rethinkDB as docker images, but I meet an issue on running such images on the latest Raspberry PI OS (Bullseye Kernel version 6.1, 32 or 64 bit, Aarch64 architecture), see #7126 for details
@denis99999 I see armv7l
in your log. It is a 32-bit ARM ISA.
Have you verified that your rethinkdb binary is actually 64-bit?
Also, try to build RethinkDB natively, without docker. It should be relatively easy as it does not have that many dependencies. As I said, I use natively built aarch64 RethinkDB running on aarch64 Linux and everything works just fine.
@im-0 , I closed the rethinkdb ticket, it works well now with 64-bit rethinkdb binaries (my docker installation on Raspberry Pi OS was not adequate)
Do you see errors or warnings in the
stf local
output? If so, please paste them or the full log here.Does the armhf docker image still works for you in the CI? I tried to build it on an armv7 machine and got this error:
Am I the only one?
Thanks.