Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/bin/db-update
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2021-02-19 09:54:04 +0100
committerErich Eckner <git@eckner.net>2021-02-19 09:54:04 +0100
commit766546736f961d1bf12fc74a65584f1c75ebb1f6 (patch)
tree1eb65200420e70c2fe883d6ebd78406c6e084fd0 /bin/db-update
parented76632ba6887bfe54e803a16324751710958981 (diff)
bin/db-update: -e|--everything new
Diffstat (limited to 'bin/db-update')
-rwxr-xr-xbin/db-update59
1 files changed, 48 insertions, 11 deletions
diff --git a/bin/db-update b/bin/db-update
index 4424c26..9fbc544 100755
--- a/bin/db-update
+++ b/bin/db-update
@@ -27,6 +27,9 @@ usage() {
>&2 echo ' move possible packages from staging to testing.'
>&2 echo ''
>&2 echo 'possible options:'
+ >&2 echo ' -e|--everything $arch/$repo:'
+ >&2 echo ' Force movement of every package in the given repo and'
+ >&2 echo ' move nothing else.'
>&2 echo ' -f|--force $arch/$repo/$pkgname:'
>&2 echo ' Force movement of given package and move nothing else.'
>&2 echo ' -h|--help:'
@@ -56,7 +59,8 @@ usage() {
}
eval set -- "$(
- getopt -o f:hino:pw \
+ getopt -o e:f:hino:pw \
+ --long everything: \
--long force: \
--long help \
--long ignore-insanity \
@@ -73,6 +77,7 @@ ignore_insanity=false
no_action_flag=''
progressive=false
force_pkgs=''
+force_every_pkgs=''
only=''
while true
@@ -86,6 +91,14 @@ do
printf '\n%s' "${force_pkgs}"
)
;;
+ -e|--everything)
+ shift
+ force_every_pkgs=$(
+ printf '%s' "$1" | \
+ base64 -w0
+ printf '\n%s' "${force_every_pkgs}"
+ )
+ ;;
-h|--help)
usage 0
;;
@@ -135,6 +148,18 @@ if ${progressive} && \
usage
fi
+if ${progressive} && \
+ [ -n "${force_every_pkgs}" ]; then
+ >&2 echo 'db-update: conflicting arguments'
+ usage
+fi
+
+if [ -n "${force_pkgs}" ] && \
+ [ -n "${force_every_pkgs}" ]; then
+ >&2 echo 'db-update: conflicting arguments'
+ usage
+fi
+
if [ -s "${work_dir}/build-master-sanity" ]; then
>&2 echo 'Build master is not sane.'
if ! ${ignore_insanity}; then
@@ -295,7 +320,8 @@ mysql_query_update_replaced_bpir() {
# are for the same architecture if we joined them via
# repository_moves, because only repositories with the same
# architectures should be listed there.
- if [ -n "${force_pkgs}" ]; then
+ if [ -n "${force_pkgs}" ] || \
+ [ -n "${force_every_pkgs}" ]; then
printf 'DROP TEMPORARY TABLE IF EXISTS `%s_bpir`;\n' \
'moveable' 'replaced'
printf 'CREATE TEMPORARY TABLE `replaced_bpir` (`id` BIGINT, `replaced_by` BIGINT, UNIQUE KEY (`id`));\n'
@@ -312,15 +338,26 @@ mysql_query_update_replaced_bpir() {
printf ' ON `binary_packages`.`build_assignment`=`f_bp`.`build_assignment`'
mysql_join_binary_packages_binary_packages_in_repositories 'f_bp' 'f_bpir'
printf ' AND `f_bpir`.`repository`=`repositories`.`id`'
- printf ' WHERE CONCAT('
- printf '`architectures`.`name`,"/",'
- printf '`repositories`.`name`,"/",'
- printf '`f_bp`.`pkgname`'
- printf ') IN ('
- # shellcheck disable=SC2086
- printf 'from_base64("%s"),' \
- ${force_pkgs} | \
- sed 's/,$/);\n/'
+ if [ -n "${force_pkgs}" ]; then
+ printf ' WHERE CONCAT('
+ printf '`architectures`.`name`,"/",'
+ printf '`repositories`.`name`,"/",'
+ printf '`f_bp`.`pkgname`'
+ printf ') IN ('
+ # shellcheck disable=SC2086
+ printf 'from_base64("%s"),' \
+ ${force_pkgs} | \
+ sed 's/,$/);\n/'
+ else
+ printf ' WHERE CONCAT('
+ printf '`architectures`.`name`,"/",'
+ printf '`repositories`.`name`'
+ printf ') IN ('
+ # shellcheck disable=SC2086
+ printf 'from_base64("%s"),' \
+ ${force_every_pkgs} | \
+ sed 's/,$/);\n/'
+ fi
printf 'DELETE `moveable_bpir`'
printf ' FROM `moveable_bpir`'
printf ' JOIN `binary_packages_in_repositories`'