Skip to content

Commit 81f6588

Browse files
authored
Merge pull request #98 from tianon/more-arches
Add support for armel (ARMv5), ppc64el (IBM POWER 8), and s390x (IBM z Systems)
2 parents 0c28623 + 7bd400d commit 81f6588

File tree

4 files changed

+66
-44
lines changed

4 files changed

+66
-44
lines changed

.travis.yml

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,30 @@
11
sudo: required
2-
dist: trusty
2+
services:
3+
- docker
34

45
language: generic
56

67
env:
78
matrix:
8-
- CC=gcc ARCH_SUFFIX= ARCH_NATIVE=1 MINIMAL=
9-
- CC=gcc ARCH_SUFFIX=amd64 ARCH_NATIVE=1 MINIMAL=
10-
- CC=arm-linux-gnueabihf-gcc ARCH_SUFFIX=armhf ARCH_NATIVE= MINIMAL=
11-
- CC=aarch64-linux-gnu-gcc ARCH_SUFFIX=arm64 ARCH_NATIVE= MINIMAL=
12-
- CFLAGS="-m32" ARCH_SUFFIX=i386 ARCH_NATIVE= MINIMAL=
13-
- CC=musl-gcc ARCH_SUFFIX=muslc-amd64 ARCH_NATIVE=1 MINIMAL=
14-
- CC=gcc ARCH_SUFFIX=amd64 ARCH_NATIVE=1 MINIMAL=1
9+
- ARCH_SUFFIX= CC=gcc ARCH_NATIVE=1 MINIMAL=
10+
- ARCH_SUFFIX=amd64 CC=gcc ARCH_NATIVE=1 MINIMAL=
11+
- ARCH_SUFFIX=amd64 CC=gcc ARCH_NATIVE=1 MINIMAL=1
12+
- ARCH_SUFFIX=arm64 CC=aarch64-linux-gnu-gcc ARCH_NATIVE= MINIMAL=
13+
- ARCH_SUFFIX=armel CC=arm-linux-gnueabi-gcc ARCH_NATIVE= MINIMAL=
14+
- ARCH_SUFFIX=armhf CC=arm-linux-gnueabihf-gcc ARCH_NATIVE= MINIMAL=
15+
- ARCH_SUFFIX=i386 CFLAGS="-m32" ARCH_NATIVE= MINIMAL=
16+
- ARCH_SUFFIX=muslc-amd64 CC=musl-gcc ARCH_NATIVE=1 MINIMAL=
17+
- ARCH_SUFFIX=ppc64el CC=powerpc64le-linux-gnu-gcc ARCH_NATIVE= MINIMAL=
18+
- ARCH_SUFFIX=s390x CC=s390x-linux-gnu-gcc ARCH_NATIVE= MINIMAL=
1519
global:
16-
- SIGN_BINARIES=1
1720
- secure: "RKF9Z9gLxp6k/xITqn7ma1E9HfpYcDXuJFf4862WeH9EMnK9lDq+TWnGsQfkIlqh8h9goe7U+BvRiTibj9MiD5u7eluLo3dlwsLxPpYtyswYeLeC1wKKdT5LPGAXbRKomvBalRYMI+dDnGIM4w96mHgGGvx2zZXGkiAQhm6fJ3k="
18-
- DIST_DIR="${HOME}/up"
21+
- DIST_DIR="${PWD}/dist"
1922

2023
before_install:
2124
- openssl aes-256-cbc -K $encrypted_2893fd5649e7_key -iv $encrypted_2893fd5649e7_iv -in sign.key.enc -out sign.key -d || echo "Encrypted signing key unavailable"
2225

2326
script:
24-
- sudo ./ci/install_deps.sh
25-
- ./ci/run_build.sh
27+
- ./ddist.sh "$ARCH_SUFFIX"
2628
- ls -lah "$DIST_DIR"
2729
- git diff --exit-code
2830

Dockerfile

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM ubuntu:trusty
1+
FROM ubuntu:xenial
22

33
ARG ARCH_SUFFIX
44

@@ -7,3 +7,12 @@ RUN /install_deps.sh
77

88
# Pre-install those here for faster local builds.
99
RUN CFLAGS="-DPR_SET_CHILD_SUBREAPER=36 -DPR_GET_CHILD_SUBREAPER=37" pip install psutil python-prctl bitmap
10+
11+
ARG ARCH_NATIVE
12+
ARG CC
13+
14+
# Persist ARGs into the image
15+
16+
ENV ARCH_SUFFIX="$ARCH_SUFFIX" \
17+
ARCH_NATIVE="$ARCH_NATIVE" \
18+
CC="$CC"

ci/install_deps.sh

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,25 @@ set -o nounset
44
set -o xtrace
55

66
DEPS=(
7-
build-essential git gdb valgrind cmake rpm \
8-
python-dev libcap-dev python-pip python-virtualenv \
7+
build-essential git gdb valgrind cmake rpm file
8+
libcap-dev python-dev python-pip python-setuptools
99
hardening-includes gnupg
1010
)
1111

12-
if [[ -z "${ARCH_SUFFIX-}" ]] || [[ "$ARCH_SUFFIX" = "amd64" ]]; then
13-
true
14-
elif [[ "$ARCH_SUFFIX" = "armhf" ]]; then
15-
DEPS+=(gcc-arm-linux-gnueabihf binutils-arm-linux-gnueabi libc6-dev-armhf-cross)
16-
elif [[ "$ARCH_SUFFIX" = "arm64" ]]; then
17-
DEPS+=(gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu libc6-dev-arm64-cross)
18-
elif [[ "$ARCH_SUFFIX" = "i386" ]]; then
19-
DEPS+=(libc6-dev-i386 gcc-multilib)
20-
elif [[ "$ARCH_SUFFIX" = "muslc-amd64" ]]; then
21-
DEPS+=(musl-tools)
22-
else
23-
echo "Unknown ARCH_SUFFIX=${ARCH_SUFFIX}"
24-
exit 1
25-
fi
12+
case "${ARCH_SUFFIX-}" in
13+
amd64|'') ;;
14+
arm64) DEPS+=(gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu libc6-dev-arm64-cross) ;;
15+
armel) DEPS+=(gcc-arm-linux-gnueabi binutils-arm-linux-gnueabi libc6-dev-armel-cross) ;;
16+
armhf) DEPS+=(gcc-arm-linux-gnueabihf binutils-arm-linux-gnueabihf libc6-dev-armhf-cross) ;;
17+
i386) DEPS+=(libc6-dev-i386 gcc-multilib) ;;
18+
muslc-amd64) DEPS+=(musl-tools) ;;
19+
ppc64el) DEPS+=(gcc-powerpc64le-linux-gnu binutils-powerpc64le-linux-gnu libc6-dev-ppc64el-cross) ;;
20+
s390x) DEPS+=(gcc-s390x-linux-gnu binutils-s390x-linux-gnu libc6-dev-s390x-cross) ;;
21+
*) echo "Unknown ARCH_SUFFIX=${ARCH_SUFFIX-}"; exit 1 ;;
22+
esac
2623

2724
apt-get update
2825
apt-get install --no-install-recommends --yes "${DEPS[@]}"
2926
rm -rf /var/lib/apt/lists/*
27+
28+
pip install virtualenv

ddist.sh

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,46 @@
22
set -o errexit
33
set -o nounset
44

5-
if [[ "$#" != 1 ]]; then
6-
echo "Usage: $0 ARCH_SUFFIX"
7-
exit 1
8-
fi
9-
suffix="$1"
10-
115
REL_HERE=$(dirname "${BASH_SOURCE}")
126
HERE=$(cd "${REL_HERE}"; pwd)
137

14-
IMG="tini-build-${suffix}"
15-
SRC="/tini"
8+
IMG="tini-build"
9+
10+
if [[ -n "${ARCH_SUFFIX-}" ]]; then
11+
IMG="${IMG}_${ARCH_SUFFIX}"
12+
fi
13+
14+
if [[ -n "${ARCH_NATIVE-}" ]]; then
15+
IMG="${IMG}_native"
16+
fi
17+
18+
if [[ -n "${CC-}" ]]; then
19+
IMG="${IMG}_${CC}"
20+
fi
1621

1722
# Cleanup the build dir
1823
rm -f "${HERE}/dist"/*
1924

2025
# Create the build image
21-
docker build --build-arg "ARCH_SUFFIX=${suffix}" -t "${IMG}" .
26+
echo "build: ${IMG}"
27+
28+
docker build \
29+
--build-arg "ARCH_SUFFIX=${ARCH_SUFFIX-}" \
30+
--build-arg "ARCH_NATIVE=${ARCH_NATIVE-}" \
31+
--build-arg "CC=${CC-gcc}" \
32+
-t "${IMG}" \
33+
.
34+
35+
# Build new Tini
36+
SRC="/tini"
2237

23-
# Run test without subreaper support, don't copy build files here
2438
docker run -it --rm \
2539
--volume="${HERE}:${SRC}" \
2640
-e BUILD_DIR=/tmp/tini-build \
2741
-e SOURCE_DIR="${SRC}" \
28-
-e FORCE_SUBREAPER="${FORCE_SUBREAPER:="1"}" \
29-
-e GPG_PASSPHRASE="${GPG_PASSPHRASE:=}" \
30-
-e CC="${CC:=gcc}" \
42+
-e FORCE_SUBREAPER="${FORCE_SUBREAPER-1}" \
43+
-e GPG_PASSPHRASE="${GPG_PASSPHRASE-}" \
3144
-e CFLAGS="${CFLAGS-}" \
32-
-e ARCH_NATIVE="${ARCH_NATIVE-1}" \
33-
-e ARCH_SUFFIX="${suffix}" \
3445
-e MINIMAL="${MINIMAL-}" \
46+
-u "$(id -u):$(id -g)" \
3547
"${IMG}" "${SRC}/ci/run_build.sh"

0 commit comments

Comments
 (0)