diff options
Diffstat (limited to 'files/usr/local/bin/build.sh')
-rwxr-xr-x | files/usr/local/bin/build.sh | 147 |
1 files changed, 0 insertions, 147 deletions
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 - |