diff options
-rwxr-xr-x | jobs/alpine-amd64.run | 55 | ||||
-rwxr-xr-x | scripts/uchroot | 9 |
2 files changed, 49 insertions, 15 deletions
diff --git a/jobs/alpine-amd64.run b/jobs/alpine-amd64.run index 83c6717..4ae8e87 100755 --- a/jobs/alpine-amd64.run +++ b/jobs/alpine-amd64.run @@ -9,30 +9,63 @@ if [ -n "$CLEAN" ]; then exit 0 fi +cat >abuild-system.conf <<EOF +export CFLAGS="-Os -fomit-frame-pointer" +export CXXFLAGS="\$CFLAGS" +export CPPFLAGS="\$CFLAGS" +export LDFLAGS="-Wl,--as-needed" + +export JOBS=4 +export MAKEFLAGS=-j\$JOBS + +USE_COLORS=1 + +SRCDEST=/var/cache/distfiles +REPODEST=\$HOME/packages/ + +CLEANUP="srcdir bldroot pkgdir deps" +ERROR_CLEANUP="bldroot deps" +EOF + +export ROOT="$WORKSPACE/root" # TODO get latest uri from latest-releases.yml file flock --exclusive "$WORKSPACE/root.lock" /bin/sh -se <<EOF . utils - if [ ! -d "$WORKSPACE/root" ]; then + if [ ! -d "$ROOT" ]; then echo_stage "Setting up new root" wget "http://dl-cdn.alpinelinux.org/alpine/edge/releases/x86_64/alpine-minirootfs-3.8.0-x86_64.tar.gz" -O alpine.tar.gz gunzip alpine.tar.gz tar -f alpine.tar --delete ./dev/null - mkdir "$WORKSPACE/root" - uroot tar -xf alpine.tar -C "$WORKSPACE/root" - uchroot "$WORKSPACE/root" /bin/sh -sxe <<EEOF + mkdir "$ROOT" + uroot tar -xf alpine.tar -C "$ROOT" + chmod 755 "$ROOT" # This is intentional, tar changes access rights + uchroot "$ROOT" root /bin/sh -sxe <<EEOF apk update - apk add alpine-sdk - adduser -D -h /build build + apk add alpine-sdk lua-aports + adduser -s /bin/sh -D build addgroup build abuild - # TODO more setup + mkdir -p /var/cache/distfiles + chgrp abuild /var/cache/distfiles + chmod g+w /var/cache/distfiles +EEOF + uchroot "$ROOT" build:build /bin/sh -sxe <<EEOF + cd && mkdir .abuild + echo 'PACKAGER_PRIVKEY="/home/build/.abuild/key.rsa"' > .abuild/abuild.conf EEOF + uroot cp ~/alpinelinux.rsa.key "$ROOT/home/build/.abuild/key.rsa" + uroot cp abuild-system.conf "$ROOT/etc/abuild.conf" fi echo_stage "Update system" - uchroot "$WORKSPACE/root" /bin/sh -ce 'apk update && apk upgrade' + uchroot "$ROOT" root /bin/sh -ce 'apk update && apk upgrade' echo_stage "Update package sources" - # TODO -EOF + git_clone "git@cynerd.cz:alpine-personal-pkgs" "aports" + uroot rm -rf "$ROOT/home/build/aports" + uroot mv aports "$ROOT/home/build/aports" + uchroot "$ROOT" root chown -R build:build /home/build/aports -# TODO + echo_stage "Build packages" + # TODO generate list of repositories automatically + uchroot "$ROOT" build:build buildrepo --purge personal hacked +EOF diff --git a/scripts/uchroot b/scripts/uchroot index 77f3f10..e036ce2 100755 --- a/scripts/uchroot +++ b/scripts/uchroot @@ -1,7 +1,7 @@ #!/bin/sh set -e -[ $# -ge 1 ] || { - echo "Usage: uchroot ROOT [CMD] [ARG].." >&2 +[ $# -ge 2 ] || { + echo "Usage: uchroot ROOT USER[:GROUP] [CMD] [ARG].." >&2 exit 1 } @@ -11,7 +11,8 @@ fi ############################################################### ROOT="$1" -shift +USERSPEC="$2" +shift 2 [ -d "$ROOT" ] || { echo "There is no such directory: $ROOT" >&2 exit 1 @@ -30,4 +31,4 @@ cp -f /etc/resolv.conf "$ROOT/etc/resolv.conf" if [ $# -lt 1 ]; then set "/bin/sh" fi -exec chroot "$ROOT" "$@" +exec chroot --userspec="$USERSPEC" "$ROOT" "$@" |