index : builder | |
Archlinux32 build system | gitolite user |
summaryrefslogtreecommitdiff |
-rwxr-xr-x | lib/mysql-functions | 87 |
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 |