From f50edc4e22d352affe54ef38ff0977f00c51d161 Mon Sep 17 00:00:00 2001 From: Kibo Hikari Date: Mon, 22 Jul 2019 17:06:37 +0000 Subject: [PATCH 1/9] [armhf] define kernel headers properly 3.x was the only available headers in jessie FIXME: update to buster Signed-off-by: Kibo Hikari --- armhf.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armhf.dockerfile b/armhf.dockerfile index d2f51ec..ef581fb 100644 --- a/armhf.dockerfile +++ b/armhf.dockerfile @@ -2,6 +2,6 @@ FROM balenalib/armv7hf-debian-node:10.15-jessie-build RUN ["cross-build-start"] -RUN apt-get update && apt-get -y install build-essential linux-headers-generic gcc g++ ccache git make +RUN apt-get update && apt-get -y install build-essential linux-headers-3.16.0-9-all-armhf linux-headers-3.16.0-9-common gcc g++ ccache git make RUN ["cross-build-end"] From 32e554888cc3107bb19578b02cb3a8d8ef90f522 Mon Sep 17 00:00:00 2001 From: Capuccino Date: Tue, 23 Jul 2019 02:52:24 +0800 Subject: [PATCH 2/9] [aarch64] fix kernel packages Signed-off-by: Capuccino --- aarch64.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aarch64.dockerfile b/aarch64.dockerfile index 6f53ee0..52ef3d9 100644 --- a/aarch64.dockerfile +++ b/aarch64.dockerfile @@ -2,6 +2,6 @@ FROM balenalib/aarch64-debian-node:10.15-jessie-build RUN ["cross-build-start"] -RUN apt-get update && apt-get -y install build-essential linux-headers-generic gcc g++ ccache git make +RUN apt-get update && apt-get -y install build-essential linux-headers-3.16.0-6-all-arm64 linux-headers-3.16.0-6-common gcc g++ ccache git make RUN ["cross-build-end"] From 16d6b5c8d1bb27024aff19d582fade4eb32bf0a2 Mon Sep 17 00:00:00 2001 From: Capuccino Date: Tue, 23 Jul 2019 10:40:59 +0800 Subject: [PATCH 3/9] [scripts] wrap cross-bild commands around exec Signed-off-by: Capuccino --- scripts/docker_build.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/docker_build.sh b/scripts/docker_build.sh index 6227c55..6d07978 100755 --- a/scripts/docker_build.sh +++ b/scripts/docker_build.sh @@ -18,15 +18,15 @@ function docker_build() { docker exec $containerID mkdir /src function exec() { - docker exec $containerID bash -c "$@" + # HACK: cross-build-start and cross-build end is needed to be wrapped around commands. + # This is inevitably the only way to perform cross-targeting in-Docker. + docker exec $containerID bash -c "cross-build-start; $@; cross-build-end" } docker cp ../. $containerID:/src - exec "cross-build-start" exec "$PREBUILD_COMMAND/src/lib/node/build.sh" exec "cd /src && npm rebuild" exec "cd /src && npm test" - exec "cross-build-end" docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME ;; *) From 1fa07d95eaf71e5be033668255eaf6d66a3baa0b Mon Sep 17 00:00:00 2001 From: Kibo Hikari Date: Fri, 2 Aug 2019 18:33:22 +0800 Subject: [PATCH 4/9] style: convert indents to tabs Signed-off-by: Kibo Hikari --- scripts/docker_build.sh | 54 ++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/scripts/docker_build.sh b/scripts/docker_build.sh index 6d07978..06c51b2 100755 --- a/scripts/docker_build.sh +++ b/scripts/docker_build.sh @@ -13,38 +13,38 @@ source ./vars.sh function docker_build() { case "$IMAGE" in *armv7hf* | armv7hf | aarch64 | *aarch64*) - containerID=$(docker create -it -v $HOME/$CACHE_DIR:/ccache $IMAGE) - docker start $containerID - docker exec $containerID mkdir /src + containerID=$(docker create -it -v $HOME/$CACHE_DIR:/ccache $IMAGE) + docker start $containerID + docker exec $containerID mkdir /src - function exec() { - # HACK: cross-build-start and cross-build end is needed to be wrapped around commands. - # This is inevitably the only way to perform cross-targeting in-Docker. - docker exec $containerID bash -c "cross-build-start; $@; cross-build-end" - } + function exec() { + # HACK: cross-build-start and cross-build end is needed to be wrapped around commands. + # This is inevitably the only way to perform cross-targeting in-Docker. + docker exec $containerID bash -c "cross-build-start; $@; cross-build-end" + } - docker cp ../. $containerID:/src - exec "$PREBUILD_COMMAND/src/lib/node/build.sh" - exec "cd /src && npm rebuild" - exec "cd /src && npm test" - docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME - ;; + docker cp ../. $containerID:/src + exec "$PREBUILD_COMMAND/src/lib/node/build.sh" + exec "cd /src && npm rebuild" + exec "cd /src && npm test" + docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME + ;; *) - containerID=$(docker create -it -v $HOME/$CACHE_DIR:/ccache $IMAGE) - docker start $containerID - docker exec $containerID mkdir /src + containerID=$(docker create -it -v $HOME/$CACHE_DIR:/ccache $IMAGE) + docker start $containerID + docker exec $containerID mkdir /src - function exec() { - docker exec $containerID bash -c "$@" - } + function exec() { + docker exec $containerID bash -c "$@" + } - docker cp ../. $containerID:/src - exec "$PREBUILD_COMMAND/src/lib/node/build.sh" - exec "cd /src && npm rebuild" - exec "cd /src && npm test" - docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME - ;; - esac + docker cp ../. $containerID:/src + exec "$PREBUILD_COMMAND/src/lib/node/build.sh" + exec "cd /src && npm rebuild" + exec "cd /src && npm test" + docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME + ;; + esac } if [[ "$TARGET" == "alpine" ]]; then From 99d8f9dfc52fc52e50825517ca1911196aecbb68 Mon Sep 17 00:00:00 2001 From: Ayane Satomi Date: Mon, 14 Oct 2019 22:20:30 +0800 Subject: [PATCH 5/9] ci: use Travis multiarch Signed-off-by: Ayane Satomi --- .travis.yml | 17 ++++++----------- aarch64-alpine.dockerfile | 7 ------- aarch64.dockerfile | 7 ------- armhf-alpine.dockerfile | 7 ------- armhf.dockerfile | 7 ------- 5 files changed, 6 insertions(+), 39 deletions(-) delete mode 100644 aarch64-alpine.dockerfile delete mode 100644 aarch64.dockerfile delete mode 100644 armhf-alpine.dockerfile delete mode 100644 armhf.dockerfile diff --git a/.travis.yml b/.travis.yml index 3f4c8f7..2acd0d1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,21 +16,16 @@ before_install: matrix: include: - os: linux + arch: + - arm64 + - amd64 env: - TARGET="alpine" - os: linux - env: - - TARGET="armv7hf-alpine" - - os: linux - env: - - TARGET="aarch64-alpine" - - os: linux - env: - - TARGET="aarch64" - - os: linux - env: - - TARGET="armv7hf" - os: linux + arch: + - arm64 + - amd64 env: - TARGET="centos" - os: osx diff --git a/aarch64-alpine.dockerfile b/aarch64-alpine.dockerfile deleted file mode 100644 index 8e76637..0000000 --- a/aarch64-alpine.dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM balenalib/aarch64-alpine-node:10.15-edge-build - -RUN ["cross-build-start"] - -RUN apk add --no-cache --no-progress bash gcc g++ ccache git make python linux-headers - -RUN ["cross-build-end"] diff --git a/aarch64.dockerfile b/aarch64.dockerfile deleted file mode 100644 index 52ef3d9..0000000 --- a/aarch64.dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM balenalib/aarch64-debian-node:10.15-jessie-build - -RUN ["cross-build-start"] - -RUN apt-get update && apt-get -y install build-essential linux-headers-3.16.0-6-all-arm64 linux-headers-3.16.0-6-common gcc g++ ccache git make - -RUN ["cross-build-end"] diff --git a/armhf-alpine.dockerfile b/armhf-alpine.dockerfile deleted file mode 100644 index 25bb72f..0000000 --- a/armhf-alpine.dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM balenalib/armv7hf-alpine-node:10.15-edge-build - -RUN ["cross-build-start"] - -RUN apk add --no-cache --no-progress bash gcc g++ ccache git make python linux-headers - -RUN ["cross-build-end"] diff --git a/armhf.dockerfile b/armhf.dockerfile deleted file mode 100644 index ef581fb..0000000 --- a/armhf.dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM balenalib/armv7hf-debian-node:10.15-jessie-build - -RUN ["cross-build-start"] - -RUN apt-get update && apt-get -y install build-essential linux-headers-3.16.0-9-all-armhf linux-headers-3.16.0-9-common gcc g++ ccache git make - -RUN ["cross-build-end"] From 6937db4a102e3a5d839973964a7d906794ad33ac Mon Sep 17 00:00:00 2001 From: Ayane Satomi Date: Mon, 14 Oct 2019 22:21:58 +0800 Subject: [PATCH 6/9] ci: remove stray os key Signed-off-by: Ayane Satomi --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2acd0d1..3f5ec2e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,6 @@ matrix: - amd64 env: - TARGET="alpine" - - os: linux - os: linux arch: - arm64 From 8d7615bd823ad74abbfccee9cf1ebd1829d66350 Mon Sep 17 00:00:00 2001 From: Ayane Satomi Date: Mon, 14 Oct 2019 22:26:05 +0800 Subject: [PATCH 7/9] ci: split ARM and AMD64 workers as seperate pipelines Signed-off-by: Ayane Satomi --- .travis.yml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3f5ec2e..8f89016 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,15 +16,19 @@ before_install: matrix: include: - os: linux - arch: - - arm64 - - amd64 + arch: amd64 env: - TARGET="alpine" - os: linux - arch: - - arm64 - - amd64 + arch: arm64 + env: + - TARGET="alpine" + - os: linux + arch: amd64 + env: + - TARGET="centos" + - os: linux + arch: arm64 env: - TARGET="centos" - os: osx From fe84d2786beb495328a333c5079a61d0a8d05a3b Mon Sep 17 00:00:00 2001 From: Ayane Satomi Date: Mon, 14 Oct 2019 22:51:32 +0800 Subject: [PATCH 8/9] ci: revert script from 84bc1b888e258f475e1390a381228bfce18ba806 and add dynamic-arch naming Signed-off-by: Ayane Satomi --- scripts/docker_build.sh | 62 ++++++----------------------------------- 1 file changed, 9 insertions(+), 53 deletions(-) diff --git a/scripts/docker_build.sh b/scripts/docker_build.sh index 06c51b2..c4fe21d 100755 --- a/scripts/docker_build.sh +++ b/scripts/docker_build.sh @@ -5,31 +5,14 @@ set -eoux pipefail cd "$(dirname "$0")" source ./vars.sh +ARCH=$(uname -m) + # Variables to be set: # $CACHE_DIR # $IMAGE # $PREBUILD_COMMAND # $BINARY_NAME function docker_build() { - case "$IMAGE" in - *armv7hf* | armv7hf | aarch64 | *aarch64*) - containerID=$(docker create -it -v $HOME/$CACHE_DIR:/ccache $IMAGE) - docker start $containerID - docker exec $containerID mkdir /src - - function exec() { - # HACK: cross-build-start and cross-build end is needed to be wrapped around commands. - # This is inevitably the only way to perform cross-targeting in-Docker. - docker exec $containerID bash -c "cross-build-start; $@; cross-build-end" - } - - docker cp ../. $containerID:/src - exec "$PREBUILD_COMMAND/src/lib/node/build.sh" - exec "cd /src && npm rebuild" - exec "cd /src && npm test" - docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME - ;; - *) containerID=$(docker create -it -v $HOME/$CACHE_DIR:/ccache $IMAGE) docker start $containerID docker exec $containerID mkdir /src @@ -38,50 +21,23 @@ function docker_build() { docker exec $containerID bash -c "$@" } - docker cp ../. $containerID:/src - exec "$PREBUILD_COMMAND/src/lib/node/build.sh" - exec "cd /src && npm rebuild" - exec "cd /src && npm test" - docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME - ;; - esac + docker cp ../. $containerID:/src + exec "$PREBUILD_COMMAND/src/lib/node/build.sh" + exec "cd /src && npm rebuild" + exec "cd /src && npm test" + docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME } if [[ "$TARGET" == "alpine" ]]; then CACHE_DIR=".ccache-alpine" IMAGE="codercom/nbin-alpine" PREBUILD_COMMAND="" - BINARY_NAME="node-${NODE_VERSION}-alpine-x64" - docker_build -elif [[ "$TARGET" == "aarch64-alpine" ]]; then - CACHE_DIR=".ccache-alpine" - IMAGE="codercom/nbin-alpine-aarch64-alpine" - PREBUILD_COMMAND="" - BINARY_NAME="node-${NODE_VERSION}-alpine-aarch64" - docker_build -elif [[ "$TARGET" == "armv7hf-alpine" ]]; then - CACHE_DIR=".ccache-alpine" - IMAGE="codercom/nbin-alpine-armv7hf-alpine" - PREBUILD_COMMAND="" - BINARY_NAME="node-${NODE_VERSION}-alpine-armv7hf" - docker_build -elif [[ "$TARGET" == "aarch64" ]]; then - CACHE_DIR=".ccache-aarch64" - IMAGE="codercom/nbin-aarch64" - PREBUILD_COMMAND="" - BINARY_NAME="node-${NODE_VERSION}-aarch64" - docker_build -elif [[ "$TARGET" == "armv7hf" ]]; then - CACHE_DIR=".ccache-armv7hf" - IMAGE="codercom/nbin-armv7hf" - PREBUILD_COMMAND="" - BINARY_NAME="node-${NODE_VERSION}-armv7hf" + BINARY_NAME="node-${NODE_VERSION}-${ARCH}" docker_build else CACHE_DIR=".ccache-centos" IMAGE="codercom/nbin-centos" PREBUILD_COMMAND="source /opt/rh/devtoolset-6/enable &&" - BINARY_NAME="node-${NODE_VERSION}-linux-x64" + BINARY_NAME="node-${NODE_VERSION}-${ARCH}" docker_build fi - From 4083fac516b6f51f2f9ab6e45a7bc3fdc7a96f09 Mon Sep 17 00:00:00 2001 From: sr229 Date: Thu, 7 Nov 2019 02:34:18 +0100 Subject: [PATCH 9/9] ci: refactor to support Raspbian Signed-off-by: sr229 --- .travis.yml | 6 +----- raspbian.dockerfile | 14 ++++++++++++++ scripts/docker_build.sh | 40 +++++++++++++++++++++++++++------------- 3 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 raspbian.dockerfile diff --git a/.travis.yml b/.travis.yml index 8f89016..c0922df 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,10 +19,6 @@ matrix: arch: amd64 env: - TARGET="alpine" - - os: linux - arch: arm64 - env: - - TARGET="alpine" - os: linux arch: amd64 env: @@ -30,7 +26,7 @@ matrix: - os: linux arch: arm64 env: - - TARGET="centos" + - TARGET="raspbian" - os: osx script: scripts/ci.sh deploy: diff --git a/raspbian.dockerfile b/raspbian.dockerfile new file mode 100644 index 0000000..21b79cf --- /dev/null +++ b/raspbian.dockerfile @@ -0,0 +1,14 @@ +# WARNING: This requires qemu-user-static. +# Please grab that docker image first before building it on a x86 host! + +FROM raspbian/jessie:latest + +ENV PATH "$PATH:/root/node/bin" + +RUN apt-get update && \ + apt-get install build-essential; + +RUN mkdir -p /root/node && \ + cd /root/node && curl https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz | tar xJ --strip-components=1 -- && \ + ln -s /root/node/bin/node /usr/bin/node && \ + npm i -g yarn; \ No newline at end of file diff --git a/scripts/docker_build.sh b/scripts/docker_build.sh index c4fe21d..d35e32d 100755 --- a/scripts/docker_build.sh +++ b/scripts/docker_build.sh @@ -28,16 +28,30 @@ function docker_build() { docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME } -if [[ "$TARGET" == "alpine" ]]; then - CACHE_DIR=".ccache-alpine" - IMAGE="codercom/nbin-alpine" - PREBUILD_COMMAND="" - BINARY_NAME="node-${NODE_VERSION}-${ARCH}" - docker_build -else - CACHE_DIR=".ccache-centos" - IMAGE="codercom/nbin-centos" - PREBUILD_COMMAND="source /opt/rh/devtoolset-6/enable &&" - BINARY_NAME="node-${NODE_VERSION}-${ARCH}" - docker_build -fi +case "$TARGET" in + alpine) + CACHE_DIR=".ccache-alpine" + IMAGE="codercom/nbin-alpine" + PREBUILD_COMMAND="" + BINARY_NAME="node-${NODE_VERSION}-${ARCH}" + docker_build + ;; + centos) + CACHE_DIR=".ccache-centos" + IMAGE="codercom/nbin-centos" + PREBUILD_COMMAND="source /opt/rh/devtoolset-6/enable &&" + BINARY_NAME="node-${NODE_VERSION}-${ARCH}" + docker_build + ;; + raspbian) + CACHE_DIR=".ccache-raspbian" + IMAGE="codercom/nbin-raspbian" + PREBUILD_COMMAND="" + BINARY_NAME="node-${NODE_VERSION}-${ARCH}" + docker_build + ;; + *) + echo "Unsupported TARGET" + exit 127 + ;; +esac \ No newline at end of file