diff --git a/ci/ci-build-musl-i386 b/ci/ci-build-musl-i386 new file mode 100755 index 00000000..233fc018 --- /dev/null +++ b/ci/ci-build-musl-i386 @@ -0,0 +1,34 @@ +#!/bin/sh +# Usage: $0 [branch] [configure options] +# Create source tarball from HEAD or given branch and build it in musl CI +# environment. Configure options follow branch name that can be empty. + +HERE=`pwd` +if [ -f "configure.ac" ]; then + SOURCEDIR=`pwd` +elif [ -f "../configure.ac" ]; then + cd .. + SOURCEDIR=`pwd` +else + echo "ERROR: cannot determine source directory from `pwd`" + exit 1 +fi + +CIIMAGEDIR=ci/images/ci-musl-i386 +BRANCH=${1:-HEAD} +if [ "$#" -ge 1 ]; then + shift +fi +HASH=$(git log -1 --format='%h %s' "$BRANCH") + +echo "CI: Generate archive from $BRANCH ($HASH)" +git archive --prefix=btrfs-progs-devel/ -o devel.tar "$BRANCH" +echo "$BRANCH $HASH" > GITCOMMIT +tar uvf devel.tar GITCOMMIT +#rm GITCOMMIT +gzip --force --best devel.tar + +cd "$CIIMAGEDIR" +cp "$SOURCEDIR/devel.tar.gz" . +./docker-build +./docker-run -- ./test-build devel --disable-documentation --disable-backtrace --disable-libudev "$@" diff --git a/ci/images/ci-musl-i386/Dockerfile b/ci/images/ci-musl-i386/Dockerfile new file mode 100644 index 00000000..16c1a123 --- /dev/null +++ b/ci/images/ci-musl-i386/Dockerfile @@ -0,0 +1,19 @@ +FROM alpine:edge + +WORKDIR /tmp + +RUN apk update +RUN apk add linux-headers musl-dev util-linux-dev bash +RUN apk add attr-dev acl-dev e2fsprogs-dev zlib-dev lzo-dev zstd-dev +RUN apk add autoconf automake make gcc tar gzip clang +RUN apk add python3 py3-setuptools python3-dev +RUN apk add libgcrypt-dev libsodium-dev libkcapi-dev + +# For downloading fresh sources +RUN apk add wget + +# Only build tests +COPY ./test-build . +COPY ./devel.tar.gz . + +CMD ./test-build devel --disable-documentation --disable-backtrace --disable-libudev diff --git a/ci/images/ci-musl-i386/docker-build b/ci/images/ci-musl-i386/docker-build new file mode 100755 index 00000000..5e80d8c5 --- /dev/null +++ b/ci/images/ci-musl-i386/docker-build @@ -0,0 +1,11 @@ +#!/bin/sh +# Run from the directory with Dockerfile, directory name should match the image +# name + +prefix=kdave +image=$(basename `pwd` | tr '[A-Z]' '[a-z]') + +# Make sure the file exists as it's required but can be empty. In that case +# it's downloaded when ./test-build is executed +touch devel.tar.gz +docker buildx build --platform linux/386 -t "$prefix/$image" . diff --git a/ci/images/ci-musl-i386/docker-run b/ci/images/ci-musl-i386/docker-run new file mode 120000 index 00000000..09033311 --- /dev/null +++ b/ci/images/ci-musl-i386/docker-run @@ -0,0 +1 @@ +../docker-run \ No newline at end of file diff --git a/ci/images/ci-musl-i386/test-build b/ci/images/ci-musl-i386/test-build new file mode 100755 index 00000000..64fee170 --- /dev/null +++ b/ci/images/ci-musl-i386/test-build @@ -0,0 +1,22 @@ +#!/bin/sh +# usage: $0 [branch name] [configure parameters] + +urlbase="https://github.com/kdave/btrfs-progs/archive" +branch=${1:-devel} +fname="${branch}.tar.gz" +url="${urlbase}/${fname}" + +shift + +echo "btrfs-progs build test of branch ${branch}" +cd /tmp +if [ -f "$fname" -a -s "$fname" ]; then + echo "Found local file $fname, not downloading" +else + echo "Missing or empty tar, downloading devel branch from git" + rm -- "$fname" + wget "$url" -O "$fname" +fi +tar xf "$fname" +cd "btrfs-progs-$branch" +ci/build-default "$@"