Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/lib/mysql-functions
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mysql-functions')
-rwxr-xr-xlib/mysql-functions87
1 files changed, 61 insertions, 26 deletions
diff --git a/lib/mysql-functions b/lib/mysql-functions
index af2c3ba..d58a7f5 100755
--- a/lib/mysql-functions
+++ b/lib/mysql-functions
@@ -33,6 +33,7 @@ mysql_run_query() {
local file
local files
local number
+ local trial
file_name_extra=''
if [ "$1" = 'unimportant' ]; then
@@ -46,10 +47,19 @@ mysql_run_query() {
query_stdin=$(mktemp "${work_dir}/tmp.mysql-functions.${file_name_extra}query.$(date +'%Y-%m-%dT%T').XXXXXX.stdin")
query_stdout="${query_stdin%.stdin}.stdout"
query_stderr="${query_stdin%.stdin}.stderr"
- cat > "${query_stdin}"
- for _ in $(seq 10); do
+ {
+ printf -- '-- called by %s\n' "$0"
+ if printf '%s\n' "$0" \
+ | grep -qF intention; then
+ sed '
+ s@^@-- : @
+ ' "$0"
+ fi
+ cat
+ } > "${query_stdin}"
+ for trial in $(seq 15); do
if [ -f "${query_stdout}" ]; then
- wait_some_time 10 10
+ wait_some_time "$((20*trial))" "$((20*trial))"
fi
if ${mysql_command} -N --raw --batch "$@" \
< "${query_stdin}" \
@@ -147,15 +157,15 @@ mysql_add_package_source() {
local repo
local upstream_package_repository_id
- if grep -qx 'PKGBUILD_mod = \S\+' "${srcinfo_file}"; then
- uses_modification=1
- else
+ if [ "${mod_git_revision}" = '0000000000000000000000000000000000000000' ]; then
uses_modification=0
- fi
- if grep -qx 'PKGBUILD = \S\+' "${srcinfo_file}"; then
- uses_upstream=1
else
+ uses_modification=1
+ fi
+ if [ "${git_revision}" = '0000000000000000000000000000000000000000' ]; then
uses_upstream=0
+ else
+ uses_upstream=1
fi
upstream_package_repository_id=$(
@@ -231,7 +241,7 @@ mysql_generate_package_metadata() {
temp_dir=$(mktemp -d 'tmp.mysql-functions.mysql_generate_package_metadata.XXXXXXXXXX' --tmpdir)
trap 'rm -rf --one-file-system "${temp_dir}"' EXIT
- if ! make_source_info "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${temp_dir}/SRCINFO"; then
+ if ! make_source_info_using_cache "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${temp_dir}/SRCINFO"; then
>&2 printf '"make_source_info %s %s %s %s %s" failed.\n' "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${temp_dir}/SRCINFO"
exit 2
fi
@@ -255,6 +265,7 @@ mysql_generate_package_metadata() {
)
if [ -z "${pkgbase}" ]; then
>&2 printf '"make_source_info" did not return a "pkgbase" - eh, what?\n'
+ >&2 sed 's@.*@>\0<@' "${temp_dir}/SRCINFO"
exit 2
fi
@@ -702,6 +713,16 @@ mysql_sanity_check() {
mysql_join_binary_packages_in_repositories_repositories
printf ' WHERE `repositories`.`is_on_master_mirror`'
printf ' AND `binary_packages`.`sha512sum` IS NULL;\n'
+ printf 'SELECT DISTINCT CONCAT("non-virtual binary-package without signature: ",'
+ mysql_package_name_query
+ printf ') FROM `binary_packages`'
+ mysql_join_binary_packages_architectures
+ printf ' LEFT'
+ mysql_join_binary_packages_compressions
+ mysql_join_binary_packages_binary_packages_in_repositories
+ mysql_join_binary_packages_in_repositories_repositories
+ printf ' WHERE `repositories`.`is_on_master_mirror`'
+ printf ' AND `binary_packages`.`signing_key` IS NULL;\n'
} | \
mysql_run_query | \
sed '
@@ -1266,6 +1287,18 @@ mysql_query_select_pkgbase_and_revision() {
mysql_join_package_sources_upstream_repositories
}
+# mysql_package_version_query [binary_packages]
+# print a mysql query of the full version of a package
+
+mysql_package_version_query() {
+ local bp_name="${1:-binary_packages}"
+ printf 'CONCAT('
+ printf 'IF(`%s`.`epoch`=0,"",CONCAT(`%s`.`epoch`,":")),' "${bp_name}" "${bp_name}"
+ printf '`%s`.`pkgver`,"-",' "${bp_name}"
+ printf '`%s`.`pkgrel`' "${bp_name}"
+ printf ')'
+}
+
# mysql_package_name_query [binary_packages] [architectures] [compressions]
# print a mysql query of the full name of a package file
@@ -1371,9 +1404,7 @@ for link in \
\
'ssh_keys:owner:persons' \
\
- 'ssh_log:build_slave:build_slaves' \
- \
- 'upstream_repositories:git_repository:git_repositories'; do
+ 'ssh_log:build_slave:build_slaves'; do
# A join for these cannot be done, because it's not clear on what to join:
# 'repository_stability_relations:more_stable:repository_stabilities'
# 'repository_stability_relations:less_stable:repository_stabilities'
@@ -1745,20 +1776,24 @@ mysql_query_ordering_correct() {
# active build slaves
mysql_determine_majority_build_slave_architecture_id() {
{
- printf 'SELECT'
- printf ' COUNT(DISTINCT `ssh_log`.`id`) AS `count`,'
- printf '`architectures`.`id`'
- printf ' FROM `ssh_log`'
- printf ' JOIN `architectures`'
- printf ' ON `ssh_log`.`parameters`=CONCAT(`architectures`.`name`," ")'
- printf ' WHERE `action`="get-assignment"'
- printf ' AND `ssh_log`.`date`>ADDTIME(NOW(),"-1 00:00:00")'
- printf ' GROUP BY `ssh_log`.`parameters`'
- printf ' ORDER BY `count` DESC'
- printf ' LIMIT 1'
+ {
+ printf 'SELECT'
+ printf ' COUNT(DISTINCT `ssh_log`.`id`) AS `count`,'
+ printf '`architectures`.`id`'
+ printf ' FROM `ssh_log`'
+ printf ' JOIN `architectures`'
+ printf ' ON `ssh_log`.`parameters`=CONCAT(`architectures`.`name`," ")'
+ printf ' WHERE `action`="get-assignment"'
+ printf ' AND `ssh_log`.`date`>ADDTIME(NOW(),"-1 00:00:00")'
+ printf ' GROUP BY `ssh_log`.`parameters`'
+ printf ' ORDER BY `count` DESC'
+ printf ' LIMIT 1'
+ } | \
+ mysql_run_query | \
+ cut -f2
+ echo '-1'
} | \
- mysql_run_query | \
- cut -f2
+ head -n1
}
# mysql_query_delete_packages $package_sources_condition $repositories_condition