summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/seed-build-list63
1 files changed, 52 insertions, 11 deletions
diff --git a/bin/seed-build-list b/bin/seed-build-list
index a744380..3cba6d4 100755
--- a/bin/seed-build-list
+++ b/bin/seed-build-list
@@ -14,8 +14,12 @@ usage() {
>&2 echo 'possible options:'
>&2 echo ' -h|--help:'
>&2 echo ' Show this help and exit.'
+ >&2 echo ' -i|--ignore $package:'
+ >&2 echo ' Do not update $package.'
>&2 echo ' -m|--mirror $url:'
>&2 echo ' Get x86_64 packages from mirror at $url.'
+ >&2 echo ' -n|--no-action:'
+ >&2 echo ' Do not actually update build-list, just print it.'
>&2 echo ' -p|--package $pkg_regex:'
>&2 echo ' Update packages matching $pkg_regex.'
[ -z "$1" ] && exit 1 || exit $1
@@ -25,9 +29,11 @@ tmp_dir="$(mktemp -d)"
trap "rm -rf --one-file-system '${tmp_dir}'" EXIT
eval set -- "$(
- getopt -o hm:p: \
+ getopt -o hi:m:np: \
--long help \
+ --long ignore: \
--long mirror: \
+ --long no-action \
--long package: \
-n "$(basename "$0")" -- "$@" || \
echo usage
@@ -37,6 +43,9 @@ touch "${tmp_dir}/mirrors"
touch "${tmp_dir}/delta_packages"
touch "${tmp_dir}/delta_pkgbases"
touch "${tmp_dir}/package_regexes"
+touch "${tmp_dir}/ignore_packages"
+
+update=true
while true
do
@@ -44,11 +53,19 @@ do
-h|--help)
usage 0
;;
+ -i|--ignore)
+ shift
+ echo "$1" >> \
+ "${tmp_dir}/ignore_packages"
+ ;;
-m|--mirror)
shift
echo "$1" >> \
"${tmp_dir}/mirrors"
;;
+ -n|--no-action)
+ update=false
+ ;;
-p|--package)
shift
echo "$1" >> \
@@ -226,20 +243,44 @@ done < \
# Create a lock file for build list.
-exec 9> "${build_list_lock_file}"
-flock 9
+if ${update}; then
+ exec 9> "${build_list_lock_file}"
+ flock 9
+fi
# ignore packages already on the build list
awk '{print "old " $1 " " $2 " " $3 " " $4 " " $1}' "${work_dir}/build-list" > \
"${tmp_dir}/build-list.old"
-cat "${tmp_dir}/build-list.append" "${tmp_dir}/build-list.old" | \
- sort -k6,6 | \
- uniq -uf5 | \
- grep '^append ' | \
- awk '{print $2 " " $3 " " $4 " " $5}' >> \
- "${work_dir}/build-list"
+# ignore packages on the deletion-list
+awk '{print "delete " $1 " X X X " $1}' "${work_dir}/deletion-list" >> \
+ "${tmp_dir}/build-list.old"
-# Remove the lock file
+# ignore packages on the blacklist
+git -C "${repo_paths__archlinux32}" archive HEAD -- blacklist | \
+ tar -Ox blacklist | \
+ awk '{print "blacklist " $1 " X X X " $1}' >> \
+ "${tmp_dir}/build-list.old"
-rm -f "${build_list_lock_file}"
+# ignore explicitely ignored packages
+awk '{print "ignore " $1 " X X X " $1}' "${tmp_dir}/ignore_packages" >> \
+ "${tmp_dir}/build-list.old"
+
+if ${update}; then
+ cat "${tmp_dir}/build-list.append" "${tmp_dir}/build-list.old" | \
+ sort -k6,6 -k1,1 | \
+ uniq -uf5 | \
+ grep '^append ' | \
+ awk '{print $2 " " $3 " " $4 " " $5}' >> \
+ "${work_dir}/build-list"
+
+ # Remove the lock file
+
+ rm -f "${build_list_lock_file}"
+else
+ cat "${tmp_dir}/build-list.append" "${tmp_dir}/build-list.old" | \
+ sort -k6,6 | \
+ uniq -uf5 | \
+ grep '^append ' | \
+ awk '{print $2 " " $3 " " $4 " " $5}'
+fi