From a2b5085e818fff537bdb1df1f6a9c66e6031a190 Mon Sep 17 00:00:00 2001 From: Carlo Landmeter Date: Thu, 2 May 2019 23:02:43 +0000 Subject: rename files to overlay --- dockerfiles/edge/aarch64/Dockerfile | 2 +- dockerfiles/edge/armhf/Dockerfile | 2 +- dockerfiles/edge/armv7/Dockerfile | 2 +- dockerfiles/edge/x86/Dockerfile | 2 +- dockerfiles/edge/x86_64/Dockerfile | 2 +- dockerfiles/v3.9/aarch64/Dockerfile | 2 +- dockerfiles/v3.9/armhf/Dockerfile | 2 +- dockerfiles/v3.9/armv7/Dockerfile | 2 +- dockerfiles/v3.9/x86/Dockerfile | 2 +- dockerfiles/v3.9/x86_64/Dockerfile | 2 +- files/etc/apk/repositories | 0 files/etc/skel/.abuild/abuild.conf | 4 - files/etc/skel/.gitconfig | 3 - files/etc/sudoers.d/wheel | 1 - files/usr/local/bin/build.sh | 147 ----------------------------------- files/usr/local/bin/setup.sh | 18 ----- overlay/etc/apk/repositories | 0 overlay/etc/skel/.abuild/abuild.conf | 4 + overlay/etc/skel/.gitconfig | 3 + overlay/etc/sudoers.d/wheel | 1 + overlay/usr/local/bin/build.sh | 147 +++++++++++++++++++++++++++++++++++ overlay/usr/local/bin/setup.sh | 18 +++++ 22 files changed, 183 insertions(+), 183 deletions(-) delete mode 100644 files/etc/apk/repositories delete mode 100644 files/etc/skel/.abuild/abuild.conf delete mode 100644 files/etc/skel/.gitconfig delete mode 100644 files/etc/sudoers.d/wheel delete mode 100755 files/usr/local/bin/build.sh delete mode 100755 files/usr/local/bin/setup.sh create mode 100644 overlay/etc/apk/repositories create mode 100644 overlay/etc/skel/.abuild/abuild.conf create mode 100644 overlay/etc/skel/.gitconfig create mode 100644 overlay/etc/sudoers.d/wheel create mode 100755 overlay/usr/local/bin/build.sh create mode 100755 overlay/usr/local/bin/setup.sh diff --git a/dockerfiles/edge/aarch64/Dockerfile b/dockerfiles/edge/aarch64/Dockerfile index 8358f98..76ccfe7 100644 --- a/dockerfiles/edge/aarch64/Dockerfile +++ b/dockerfiles/edge/aarch64/Dockerfile @@ -1,6 +1,6 @@ FROM arm64v8/alpine:latest -COPY files/ / +COPY overlay/ / RUN ["setup.sh", "edge" ] diff --git a/dockerfiles/edge/armhf/Dockerfile b/dockerfiles/edge/armhf/Dockerfile index af7fba5..500b8bd 100644 --- a/dockerfiles/edge/armhf/Dockerfile +++ b/dockerfiles/edge/armhf/Dockerfile @@ -1,6 +1,6 @@ FROM arm32v6/alpine:latest -COPY files/ / +COPY overlay/ / RUN ["setup.sh", "edge" ] diff --git a/dockerfiles/edge/armv7/Dockerfile b/dockerfiles/edge/armv7/Dockerfile index 101f48d..ca1887d 100644 --- a/dockerfiles/edge/armv7/Dockerfile +++ b/dockerfiles/edge/armv7/Dockerfile @@ -1,6 +1,6 @@ FROM arm32v6/alpine:latest -COPY files/ / +COPY overlay/ / # hack to force system to upgrade to armv7 COPY dockerfiles/edge/armv7/arch /etc/apk/ diff --git a/dockerfiles/edge/x86/Dockerfile b/dockerfiles/edge/x86/Dockerfile index c944be5..e11a467 100644 --- a/dockerfiles/edge/x86/Dockerfile +++ b/dockerfiles/edge/x86/Dockerfile @@ -1,6 +1,6 @@ FROM i386/alpine:latest -COPY files/ / +COPY overlay/ / RUN ["setup.sh", "edge" ] diff --git a/dockerfiles/edge/x86_64/Dockerfile b/dockerfiles/edge/x86_64/Dockerfile index eafb80b..052c097 100644 --- a/dockerfiles/edge/x86_64/Dockerfile +++ b/dockerfiles/edge/x86_64/Dockerfile @@ -1,6 +1,6 @@ FROM amd64/alpine:latest -COPY files/ / +COPY overlay/ / RUN ["setup.sh", "edge" ] diff --git a/dockerfiles/v3.9/aarch64/Dockerfile b/dockerfiles/v3.9/aarch64/Dockerfile index 82c4354..3b21c65 100644 --- a/dockerfiles/v3.9/aarch64/Dockerfile +++ b/dockerfiles/v3.9/aarch64/Dockerfile @@ -1,6 +1,6 @@ FROM arm64v8/alpine:3.9 -COPY files/ / +COPY overlay/ / RUN ["setup.sh", "v3.9" ] diff --git a/dockerfiles/v3.9/armhf/Dockerfile b/dockerfiles/v3.9/armhf/Dockerfile index 2e8259c..58fe677 100644 --- a/dockerfiles/v3.9/armhf/Dockerfile +++ b/dockerfiles/v3.9/armhf/Dockerfile @@ -1,6 +1,6 @@ FROM arm32v6/alpine:3.9 -COPY files/ / +COPY overlay/ / RUN ["setup.sh", "v3.9" ] diff --git a/dockerfiles/v3.9/armv7/Dockerfile b/dockerfiles/v3.9/armv7/Dockerfile index 7f523ed..dfef6a5 100644 --- a/dockerfiles/v3.9/armv7/Dockerfile +++ b/dockerfiles/v3.9/armv7/Dockerfile @@ -1,6 +1,6 @@ FROM arm32v6/alpine:3.9 -COPY files/ / +COPY overlay/ / # hack to force system to upgrade to armv7 COPY dockerfiles/v3.9/armv7/arch /etc/apk/ diff --git a/dockerfiles/v3.9/x86/Dockerfile b/dockerfiles/v3.9/x86/Dockerfile index f545247..fc04032 100644 --- a/dockerfiles/v3.9/x86/Dockerfile +++ b/dockerfiles/v3.9/x86/Dockerfile @@ -1,6 +1,6 @@ FROM i386/alpine:3.9 -COPY files/ / +COPY overlay/ / RUN ["setup.sh", "v3.9" ] diff --git a/dockerfiles/v3.9/x86_64/Dockerfile b/dockerfiles/v3.9/x86_64/Dockerfile index 47dcf73..a10df94 100644 --- a/dockerfiles/v3.9/x86_64/Dockerfile +++ b/dockerfiles/v3.9/x86_64/Dockerfile @@ -1,6 +1,6 @@ FROM amd64/alpine:3.9 -COPY files/ / +COPY overlay/ / RUN ["setup.sh", "v3.9" ] diff --git a/files/etc/apk/repositories b/files/etc/apk/repositories deleted file mode 100644 index e69de29..0000000 diff --git a/files/etc/skel/.abuild/abuild.conf b/files/etc/skel/.abuild/abuild.conf deleted file mode 100644 index d934024..0000000 --- a/files/etc/skel/.abuild/abuild.conf +++ /dev/null @@ -1,4 +0,0 @@ -# buildozer abuild settings -PACKAGER="buildozer " -REPODEST="$HOME/packages" -USE_COLORS=force diff --git a/files/etc/skel/.gitconfig b/files/etc/skel/.gitconfig deleted file mode 100644 index 818ea76..0000000 --- a/files/etc/skel/.gitconfig +++ /dev/null @@ -1,3 +0,0 @@ -[user] - email = alpine-infra@lists.alpinelinux.org - name = buildozer diff --git a/files/etc/sudoers.d/wheel b/files/etc/sudoers.d/wheel deleted file mode 100644 index 7c499c2..0000000 --- a/files/etc/sudoers.d/wheel +++ /dev/null @@ -1 +0,0 @@ -%wheel ALL=(ALL) NOPASSWD: ALL diff --git a/files/usr/local/bin/build.sh b/files/usr/local/bin/build.sh deleted file mode 100755 index ac45cf9..0000000 --- a/files/usr/local/bin/build.sh +++ /dev/null @@ -1,147 +0,0 @@ -#!/bin/sh - -set -eu - -readonly APORTSDIR=$HOME/aports -readonly REPODEST=$HOME/packages -readonly REPOS="main community testing non-free" -readonly MIRROR=http://dl-cdn.alpinelinux.org/alpine -readonly REPOURL=https://github.com/alpinelinux/aports -readonly ARCH=$(apk --print-arch) -# Drone variables -readonly BRANCH=$DRONE_COMMIT_BRANCH -readonly PR=$DRONE_PULL_REQUEST - -msg() { - local color=${2:-green} - case "$color" in - red) color="31";; - green) color="32";; - yellow) color="33";; - blue) color="34";; - *) color="32";; - esac - printf "\033[1;%sm>>>\033[1;0m %s\n" "$color" "$1" | xargs >&2 -} - -die() { - msg "$1" red - exit 1 -} - -get_release() { - case $BRANCH in - *-stable) echo v${BRANCH%-*};; - master) echo edge;; - *) die "Branch \"$BRANCH\" not supported!" - esac -} - -build_aport() { - local repo="$1" aport="$2" - cd "$APORTSDIR/$repo/$aport" - if abuild -r; then - checkapk || true - aport_ok="$aport_ok $repo/$aport" - else - aport_ng="$aport_ng $repo/$aport" - fi -} - -check_aport() { - local repo="$1" aport="$2" - cd "$APORTSDIR/$repo/$aport" - if ! abuild check_arch 2>/dev/null; then - aport_na="$aport_na $repo/$aport" - return 1 - fi -} - -changed_repos() { - cd "$APORTSDIR" - for repo in $REPOS; do - git diff --exit-code remotes/origin/$BRANCH -- $repo >/dev/null \ - || echo "$repo" - done -} - -set_repositories_for() { - local target_repo="$1" repos= repo= - local release=$(get_release) - for repo in $REPOS; do - [ "$repo" = "non-free" ] && continue - repos="$repos $MIRROR/$release/$repo" - [ "$repo" = "$target_repo" ] && break - done - sudo sh -c "printf '%s\n' $repos > /etc/apk/repositories" - sudo apk update -} - -changed_aports() { - cd "$APORTSDIR" - local repo="$1" - local aports=$(git diff --name-only --diff-filter=ACMR --relative="$repo" \ - remotes/origin/$BRANCH -- "*/APKBUILD" | xargs -I% dirname %) - ap builddirs -d "$APORTSDIR/$repo" $aports 2>/dev/null | xargs -I% basename % | xargs -} - -setup_system() { - sudo sh -c "echo $MIRROR/$(get_release)/main > /etc/apk/repositories" - sudo apk -U upgrade -a || apk fix || die "Failed to up/downgrade system" - abuild-keygen -ain - sudo sed -i 's/JOBS=[0-9]*/JOBS=$(nproc)/' /etc/abuild.conf - mkdir -p "$REPODEST" -} - -create_workspace() { - msg "Cloning aports and applying PR$PR" - git clone --depth=1 --branch $BRANCH $REPOURL $APORTSDIR - wget -qO- $REPOURL/pull/$PR.patch | git -C $APORTSDIR am -} - -sysinfo() { - printf ">>> Host system information (arch: %s, release: %s) <<<\n" "$ARCH" "$(get_release)" - printf "- Number of Cores: %s\n" $(nproc) - printf "- Memory: %s Gb\n" $(awk '/^MemTotal/ {print ($2/1024/1024)}' /proc/meminfo) - printf "- Free space: %s\n" $(df -hP / | awk '/\/$/ {print $4}') -} - -aport_ok= -aport_na= -aport_ng= -failed= - -sysinfo || true -setup_system || die "Failed to setup system" -create_workspace || die "Failed to create workspace" - -for repo in $(changed_repos); do - set_repositories_for "$repo" - for pkgname in $(changed_aports "$repo"); do - if check_aport "$repo" "$pkgname"; then - build_aport "$repo" "$pkgname" - fi - done -done - -echo "### Build summary ###" - -for ok in $aport_ok; do - msg "$ok: build succesfully" -done - -for na in $aport_na; do - msg "$na: disabled for $ARCH" yellow -done - -for ng in $aport_ng; do - msg "$ng: build failed" red - failed=true -done - -if [ "$failed" = true ]; then - exit 1 -elif [ -z "$aport_ok" ]; then - msg "No packages found to be built." yellow -fi - diff --git a/files/usr/local/bin/setup.sh b/files/usr/local/bin/setup.sh deleted file mode 100755 index 9e80a82..0000000 --- a/files/usr/local/bin/setup.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -set -eu - -release=${1:-edge} -echo "http://dl-cdn.alpinelinux.org/alpine/$release/main" > /etc/apk/repositories - -apk -U upgrade -a -apk add alpine-sdk lua-aports pigz -rm -rf /var/cache/apk/* - -# use buildozer for building -adduser -D buildozer -adduser buildozer abuild -adduser buildozer wheel - -# default distfiles location -install -d -g abuild -m 775 /var/cache/distfiles diff --git a/overlay/etc/apk/repositories b/overlay/etc/apk/repositories new file mode 100644 index 0000000..e69de29 diff --git a/overlay/etc/skel/.abuild/abuild.conf b/overlay/etc/skel/.abuild/abuild.conf new file mode 100644 index 0000000..d934024 --- /dev/null +++ b/overlay/etc/skel/.abuild/abuild.conf @@ -0,0 +1,4 @@ +# buildozer abuild settings +PACKAGER="buildozer " +REPODEST="$HOME/packages" +USE_COLORS=force diff --git a/overlay/etc/skel/.gitconfig b/overlay/etc/skel/.gitconfig new file mode 100644 index 0000000..818ea76 --- /dev/null +++ b/overlay/etc/skel/.gitconfig @@ -0,0 +1,3 @@ +[user] + email = alpine-infra@lists.alpinelinux.org + name = buildozer diff --git a/overlay/etc/sudoers.d/wheel b/overlay/etc/sudoers.d/wheel new file mode 100644 index 0000000..7c499c2 --- /dev/null +++ b/overlay/etc/sudoers.d/wheel @@ -0,0 +1 @@ +%wheel ALL=(ALL) NOPASSWD: ALL diff --git a/overlay/usr/local/bin/build.sh b/overlay/usr/local/bin/build.sh new file mode 100755 index 0000000..ac45cf9 --- /dev/null +++ b/overlay/usr/local/bin/build.sh @@ -0,0 +1,147 @@ +#!/bin/sh + +set -eu + +readonly APORTSDIR=$HOME/aports +readonly REPODEST=$HOME/packages +readonly REPOS="main community testing non-free" +readonly MIRROR=http://dl-cdn.alpinelinux.org/alpine +readonly REPOURL=https://github.com/alpinelinux/aports +readonly ARCH=$(apk --print-arch) +# Drone variables +readonly BRANCH=$DRONE_COMMIT_BRANCH +readonly PR=$DRONE_PULL_REQUEST + +msg() { + local color=${2:-green} + case "$color" in + red) color="31";; + green) color="32";; + yellow) color="33";; + blue) color="34";; + *) color="32";; + esac + printf "\033[1;%sm>>>\033[1;0m %s\n" "$color" "$1" | xargs >&2 +} + +die() { + msg "$1" red + exit 1 +} + +get_release() { + case $BRANCH in + *-stable) echo v${BRANCH%-*};; + master) echo edge;; + *) die "Branch \"$BRANCH\" not supported!" + esac +} + +build_aport() { + local repo="$1" aport="$2" + cd "$APORTSDIR/$repo/$aport" + if abuild -r; then + checkapk || true + aport_ok="$aport_ok $repo/$aport" + else + aport_ng="$aport_ng $repo/$aport" + fi +} + +check_aport() { + local repo="$1" aport="$2" + cd "$APORTSDIR/$repo/$aport" + if ! abuild check_arch 2>/dev/null; then + aport_na="$aport_na $repo/$aport" + return 1 + fi +} + +changed_repos() { + cd "$APORTSDIR" + for repo in $REPOS; do + git diff --exit-code remotes/origin/$BRANCH -- $repo >/dev/null \ + || echo "$repo" + done +} + +set_repositories_for() { + local target_repo="$1" repos= repo= + local release=$(get_release) + for repo in $REPOS; do + [ "$repo" = "non-free" ] && continue + repos="$repos $MIRROR/$release/$repo" + [ "$repo" = "$target_repo" ] && break + done + sudo sh -c "printf '%s\n' $repos > /etc/apk/repositories" + sudo apk update +} + +changed_aports() { + cd "$APORTSDIR" + local repo="$1" + local aports=$(git diff --name-only --diff-filter=ACMR --relative="$repo" \ + remotes/origin/$BRANCH -- "*/APKBUILD" | xargs -I% dirname %) + ap builddirs -d "$APORTSDIR/$repo" $aports 2>/dev/null | xargs -I% basename % | xargs +} + +setup_system() { + sudo sh -c "echo $MIRROR/$(get_release)/main > /etc/apk/repositories" + sudo apk -U upgrade -a || apk fix || die "Failed to up/downgrade system" + abuild-keygen -ain + sudo sed -i 's/JOBS=[0-9]*/JOBS=$(nproc)/' /etc/abuild.conf + mkdir -p "$REPODEST" +} + +create_workspace() { + msg "Cloning aports and applying PR$PR" + git clone --depth=1 --branch $BRANCH $REPOURL $APORTSDIR + wget -qO- $REPOURL/pull/$PR.patch | git -C $APORTSDIR am +} + +sysinfo() { + printf ">>> Host system information (arch: %s, release: %s) <<<\n" "$ARCH" "$(get_release)" + printf "- Number of Cores: %s\n" $(nproc) + printf "- Memory: %s Gb\n" $(awk '/^MemTotal/ {print ($2/1024/1024)}' /proc/meminfo) + printf "- Free space: %s\n" $(df -hP / | awk '/\/$/ {print $4}') +} + +aport_ok= +aport_na= +aport_ng= +failed= + +sysinfo || true +setup_system || die "Failed to setup system" +create_workspace || die "Failed to create workspace" + +for repo in $(changed_repos); do + set_repositories_for "$repo" + for pkgname in $(changed_aports "$repo"); do + if check_aport "$repo" "$pkgname"; then + build_aport "$repo" "$pkgname" + fi + done +done + +echo "### Build summary ###" + +for ok in $aport_ok; do + msg "$ok: build succesfully" +done + +for na in $aport_na; do + msg "$na: disabled for $ARCH" yellow +done + +for ng in $aport_ng; do + msg "$ng: build failed" red + failed=true +done + +if [ "$failed" = true ]; then + exit 1 +elif [ -z "$aport_ok" ]; then + msg "No packages found to be built." yellow +fi + diff --git a/overlay/usr/local/bin/setup.sh b/overlay/usr/local/bin/setup.sh new file mode 100755 index 0000000..9e80a82 --- /dev/null +++ b/overlay/usr/local/bin/setup.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +set -eu + +release=${1:-edge} +echo "http://dl-cdn.alpinelinux.org/alpine/$release/main" > /etc/apk/repositories + +apk -U upgrade -a +apk add alpine-sdk lua-aports pigz +rm -rf /var/cache/apk/* + +# use buildozer for building +adduser -D buildozer +adduser buildozer abuild +adduser buildozer wheel + +# default distfiles location +install -d -g abuild -m 775 /var/cache/distfiles -- cgit v1.2.3