diff --git a/usr/local/bin/build.sh.orig b/usr/local/bin/build.sh old mode 100644 new mode 100755 index c3b8f7a..0b1c9a5 --- a/usr/local/bin/build.sh.orig +++ b/usr/local/bin/build.sh @@ -7,13 +7,14 @@ set -eu -o pipefail readonly APORTSDIR=$CI_PROJECT_DIR -readonly REPOS="main community testing non-free" +readonly REPOS="main community testing" readonly ARCH=$(apk --print-arch) # gitlab variables readonly BASEBRANCH=$CI_MERGE_REQUEST_TARGET_BRANCH_NAME : "${REPODEST:=$HOME/packages}" -: "${MIRROR:=https://dl-cdn.alpinelinux.org/alpine}" +: "${MIRROR:=https://ayakael.net/api/packages/forge/alpine}" +: "${ALPINE_MIRROR:=http://dl-cdn.alpinelinux.org/alpine}" : "${MAX_ARTIFACT_SIZE:=300000000}" #300M : "${CI_DEBUG_BUILD:=}" @@ -67,13 +68,32 @@ report() { } get_release() { + echo $CI_ALPINE_TARGET +} + + +get_qubes_release() { case $BASEBRANCH in - *-stable) echo v"${BASEBRANCH%-*}";; - master) echo edge;; - *) die "Branch \"$BASEBRANCH\" not supported!" + r*) echo $BASEBRANCH;; + main) echo r4.3;; esac } +changed_aports() { + : "${APORTSDIR?APORTSDIR missing}" + : "${BASEBRANCH?BASEBRANCH missing}" + + cd "$APORTSDIR" + local aports + + aports=$(git diff --name-only --diff-filter=ACMR \ + "$BASEBRANCH"...HEAD -- "*/APKBUILD" | xargs -rn1 dirname) + + # shellcheck disable=2086 + ap builddirs -d "$APORTSDIR" $aports 2>/dev/null | xargs -rn1 basename +} + + build_aport() { local repo="$1" aport="$2" cd "$APORTSDIR/$repo/$aport" @@ -99,13 +119,13 @@ set_repositories_for() { local release release=$(get_release) - for repo in $REPOS; do + for repo in qubes-$(get_qubes_release); do [ "$repo" = "non-free" ] && continue - [ "$release" != "edge" ] && [ "$repo" == "testing" ] && continue + [ "$release" == "edge" ] && [ "$repo" == "backports" ] && continue repos="$repos $MIRROR/$release/$repo $REPODEST/$repo" [ "$repo" = "$target_repo" ] && break done - doas sh -c "printf '%s\n' $repos > /etc/apk/repositories" + doas sh -c "printf '%s\n' $repos >> /etc/apk/repositories" doas apk update } @@ -118,7 +138,15 @@ apply_offset_limit() { } setup_system() { - doas sh -c "echo $MIRROR/$(get_release)/main > /etc/apk/repositories" + local repos='' repo='' + local release + + release=$(get_release) + for repo in $REPOS; do + [ "$release" != "edge" ] && [ "$repo" == "testing" ] && continue + repos="$repos $ALPINE_MIRROR/$release/$repo" + done + doas sh -c "printf '%s\n' $repos > /etc/apk/repositories" doas apk -U upgrade -a || apk fix || die "Failed to up/downgrade system" abuild-keygen -ain doas sed -i -E 's/export JOBS=[0-9]+$/export JOBS=$(nproc)/' /etc/abuild.conf @@ -192,32 +220,22 @@ section_end setup build_start=$CI_ALPINE_BUILD_OFFSET build_limit=$CI_ALPINE_BUILD_LIMIT -for repo in $(changed_repos); do - set_repositories_for "$repo" - built_aports=0 - changed_aports_in_repo=$(changed_aports "$repo") - changed_aports_in_repo_count=$(echo "$changed_aports_in_repo" | wc -l) - changed_aports_to_build=$(echo "$changed_aports_in_repo" | apply_offset_limit "$build_start" "$build_limit") +set_repositories_for $(get_qubes_release) +built_aports=0 +changed_aports_in_repo=$(changed_aports $BASEBRANCH) +changed_aports_in_repo_count=$(echo "$changed_aports_in_repo" | wc -l) +changed_aports_to_build=$(echo "$changed_aports_in_repo" | apply_offset_limit "$build_start" "$build_limit") - msg "Changed aports in $repo:" - # shellcheck disable=SC2086 # Splitting is expected here - printf " - %s\n" $changed_aports_to_build - for pkgname in $changed_aports_to_build; do - section_start "build_$pkgname" "Building package $pkgname" - built_aports=$((built_aports+1)) - if check_aport "$repo" "$pkgname"; then - build_aport "$repo" "$pkgname" - fi - section_end "build_$pkgname" - done - - build_start=$((build_start-(changed_aports_in_repo_count-built_aports))) - build_limit=$((build_limit-built_aports)) - - if [ $build_limit -le 0 ]; then - msg "Limit reached, breaking" - break +msg "Changed aports:" +# shellcheck disable=SC2086 # Splitting is expected here +printf " - %s\n" $changed_aports_to_build +for pkgname in $changed_aports_to_build; do + section_start "build_$pkgname" "Building package $pkgname" + built_aports=$((built_aports+1)) + if check_aport . "$pkgname"; then + build_aport . "$pkgname" fi + section_end "build_$pkgname" done section_start artifacts "Handeling artifacts" collapse