index : builder | |
Archlinux32 build system | gitolite user |
summaryrefslogtreecommitdiff |
-rwxr-xr-x | bin/build-packages | 2 | ||||
-rwxr-xr-x | bin/schedule-for-rebuild | 27 |
diff --git a/bin/build-packages b/bin/build-packages index fd9e448..b39546d 100755 --- a/bin/build-packages +++ b/bin/build-packages @@ -500,7 +500,7 @@ while [ "${count}" -ne 0 ] && \ date -u --iso-8601=seconds | \ cut -d+ -f1 ).build-log" - if CARCH="${arch}" makepkg --verifysource 2> "${log_file}"; then + if GIT_TERMINAL_PROMPT=0 CARCH="${arch}" makepkg --verifysource 2> "${log_file}"; then success=true rm "${log_file}" break diff --git a/bin/schedule-for-rebuild b/bin/schedule-for-rebuild index d8dae5c..cf2299e 100755 --- a/bin/schedule-for-rebuild +++ b/bin/schedule-for-rebuild @@ -1,4 +1,4 @@ -#!/bin/sh +#!/usr/bin/env bash # shellcheck disable=SC2119,SC2120 @@ -43,6 +43,9 @@ usage() { >&2 echo ' Never schedule the given package (for the given $arch).' >&2 echo ' -j|--jostle' >&2 echo ' Give new build assignments the highest priority.' + >&2 echo ' -l|--latest' + >&2 echo ' Only pick the latest version of each package.' + >&2 echo ' (Ignores the build support and community repos.)' >&2 echo ' -n|--no-action:' >&2 echo ' Do not actually schedule anything, just print it.' >&2 echo ' -p|--package $pkg_regex:' @@ -61,7 +64,7 @@ tmp_dir=$(mktemp -d 'tmp.schedule-for-rebuild.XXXXXXXXXX' --tmpdir) trap "rm -rf --one-file-system '${tmp_dir:?}'" EXIT eval set -- "$( - getopt -o afhi:jnp:s:tw \ + getopt -o afhi:jnp:s:tlw \ --long auto \ --long force \ --long help \ @@ -71,6 +74,7 @@ eval set -- "$( --long package: \ --long skip-arch: \ --long interactive \ + --long latest \ --long wait \ -n "$(basename "$0")" -- "$@" || \ echo usage @@ -81,6 +85,7 @@ ignore_mysql_generate_package_metadata_errors=false jostle=false update=true interactive=false +latest_package_only=false wait_for_lock='-n' while true @@ -124,6 +129,9 @@ do -t|--interactive) interactive=true ;; + -l|--latest) + latest_package_only=true + ;; -w|--wait) wait_for_lock='' ;; @@ -277,7 +285,7 @@ if [ -s "${tmp_dir}/package-regexes" ]; then } | \ mysql_run_query | \ tr '\t' ' ' | \ - sort -u \ + tac | awk '!seen[$0]++' | tac \ >>"${tmp_dir}/pkgbases" fi @@ -465,7 +473,7 @@ if ${auto}; then } \ | mysql_run_query \ | tr '\t' ' ' \ - | sort -u \ + | tac | awk '!seen[$0]++' | tac \ >>"${tmp_dir}/pkgbases" fi @@ -474,13 +482,19 @@ if [ ! -s "${tmp_dir}/pkgbases" ]; then exit fi -sort -u "${tmp_dir}/pkgbases" \ +# shellcheck disable=SC2016 +awkcmd='!seen[$0]++' +if ${latest_package_only}; then + # shellcheck disable=SC2016 + awkcmd='$5!="community" && $5!="build-support" && !seen[$2]++' +fi +tac "${tmp_dir}/pkgbases" | awk "${awkcmd}" | tac \ | sponge "${tmp_dir}/pkgbases" if ${interactive}; then echo "Which packages to rebuild? (Comma separated; Empty means all)" nl "${tmp_dir}/pkgbases" - read -p "Choice: " pkg_rebuild_choice + read -r -p "Choice: " pkg_rebuild_choice if [ -n "$pkg_rebuild_choice" ]; then readarray -td, pkg_rebuild_choice_array < <( printf '%s' "$pkg_rebuild_choice" | sed 's/\s//g;s/,\{2,\}/,/g' ) @@ -492,7 +506,6 @@ fi if ${update}; then cut -d' ' -f 2,3,4,5 "${tmp_dir}/pkgbases" \ | while read -r pkgbase git_rev git_mod_rev repo; do - success=false # shellcheck disable=SC2154 printf '%s ' "${pkgbase}" "${git_rev}" "${git_mod_rev}" "${repo_heads__archlinux32}" "${repo}" \ | sed 's/ $/\n/' |