From d384cd8395fb0a0e0686f3c1ddac883002563f9a Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 22 Jan 2018 10:27:41 +0100 Subject: source bin/mysql-functions in conf/default.conf - just like bin/common-functions - because it is now needed almost everywhere --- bin/bootstrap-mysql | 2 -- 1 file changed, 2 deletions(-) (limited to 'bin/bootstrap-mysql') diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index 3069863..fcb2f7e 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -2,8 +2,6 @@ # shellcheck source=conf/default.conf . "${0%/*}/../conf/default.conf" -# shellcheck source=bin/mysql-functions -. "${base_dir}/bin/mysql-functions" tmp_dir=$(mktemp -d 'tmp.bootstrap-mysql.XXXXXXXXXX' --tmpdir) trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT -- cgit v1.2.3-70-g09d2 From fdb0d1b3ee103ab87fbe15c492402fb4f23846ce Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 22 Jan 2018 10:59:24 +0100 Subject: bin/bootstrap-mysql: lock everything --- bin/bootstrap-mysql | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'bin/bootstrap-mysql') diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index fcb2f7e..b67be6f 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -6,6 +6,22 @@ tmp_dir=$(mktemp -d 'tmp.bootstrap-mysql.XXXXXXXXXX' --tmpdir) trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT +exec 9> "${build_list_lock_file}" +if ! flock -n 9; then + >&2 echo 'Cannot get build-list lock.' + exit 1 +fi +exec 8> "${sanity_check_lock_file}" +if ! flock -s -n 9; then + >&2 echo 'Cannot get sanity-check lock.' + exit 1 +fi +exec 7> "${package_database_lock_file}" +if ! flock -s -n 7; then + >&2 echo 'Cannot get package-database lock.' + exit 1 +fi + for dir in $(ls_master_mirror 'i686'); do ls_master_mirror "i686/${dir}" | \ sed ' -- cgit v1.2.3-70-g09d2 From 2134c5f3aaecc5c64caacf550ee413d5ad96b7cf Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 22 Jan 2018 11:43:08 +0100 Subject: bin/bootstrap-mysql: new tables to track build errors, too --- bin/bootstrap-mysql | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'bin/bootstrap-mysql') diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index b67be6f..69bc015 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -111,7 +111,17 @@ if [ ! "$1" = 'slim' ]; then ' head VARCHAR(40)' \ ' UNIQUE name' \ ' UNIQUE url' \ - ' UNIQUE directory' + ' UNIQUE directory' \ + 'fail_reasons SMALLINT' \ + ' name VARCHAR(32)' \ + ' severity SMALLINT' \ + ' UNIQUE name' \ + 'failed_builds MEDIUMINT' \ + ' build_slave MEDIUMINT :build_slaves' \ + ' build_assignment BIGINT :build_assignments' \ + ' date DATETIME' \ + ' reason SMALLINT :fail_reasons' \ + ' log_file VARCHAR(128)' ) { -- cgit v1.2.3-70-g09d2 From 571c771968611c942162fe5b3132c76ed51af146 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 22 Jan 2018 13:28:39 +0100 Subject: bin/bootstrap-mysql: initialize `fail_reasons`, too --- bin/bootstrap-mysql | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'bin/bootstrap-mysql') diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index 69bc015..1eb98a2 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -114,6 +114,7 @@ if [ ! "$1" = 'slim' ]; then ' UNIQUE directory' \ 'fail_reasons SMALLINT' \ ' name VARCHAR(32)' \ + ' identifier VARCHAR(64)' \ ' severity SMALLINT' \ ' UNIQUE name' \ 'failed_builds MEDIUMINT' \ @@ -121,7 +122,7 @@ if [ ! "$1" = 'slim' ]; then ' build_assignment BIGINT :build_assignments' \ ' date DATETIME' \ ' reason SMALLINT :fail_reasons' \ - ' log_file VARCHAR(128)' + ' log_file VARCHAR(512)' ) { @@ -232,6 +233,43 @@ fi sed 's|,$||' printf ';\n' # shellcheck disable=SC2016 + printf 'INSERT IGNORE INTO `fail_reasons` (`name`,`identifier`,`severity`) VALUES ' + printf '(from_base64("%s"),"%s",%s),' \ + "$( + printf '%s' '==> ERROR: A failure occurred in build()\.' | \ + base64 -w0 + )" 'build()' 0 \ + "$( + printf '%s' '==> ERROR: Could not download sources\.' | \ + base64 -w0 + )" 'source' 1 \ + "$( + printf '%s' '.*error: failed to commit transaction (invalid or corrupted package)' | \ + base64 -w0 + )" 'package-cache' 2 \ + "$( + printf '%s' '==> ERROR: A failure occurred in prepare()\.' | \ + base64 -w0 + )" 'prepare()' 2 \ + "$( + printf '%s' '==> ERROR: A failure occurred in package\(_\S\+\)\?()\.' | \ + base64 -w0 + )" 'package()' 3 \ + "$( + printf '%s' '==> ERROR: A failure occurred in check()\.' | \ + base64 -w0 + )" 'check()' 4 \ + "$( + printf '%s' '==> ERROR: '"'"'pacman'"'"' failed to install missing dependencies\.' | \ + base64 -w0 + )" 'dependencies' 1 \ + "$( + printf '%s' '==> ERROR: Running makepkg as root is not allowed as it can cause permanent,.*' | \ + base64 -w0 + )" 'run-as-root' 1 | \ + sed 's|,$||' + printf ';\n' + # shellcheck disable=SC2016 printf 'INSERT IGNORE INTO `git_repositories` (`name`,`url`,`directory`,`head`) VALUES' { for repo in ${repo_names}; do -- cgit v1.2.3-70-g09d2 From 3c6f639d1f04ce849f1ae92fb1b87ae16d1284a2 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 22 Jan 2018 13:34:42 +0100 Subject: bin/bootstrap-mysql: assume only one package version is available for each build assignment --- bin/bootstrap-mysql | 1 + 1 file changed, 1 insertion(+) (limited to 'bin/bootstrap-mysql') diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index 1eb98a2..62dad81 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -425,6 +425,7 @@ find "${work_dir}/package-states" \ -name '*.tested' \ \) \ -exec sed ' + 1!d s@^.*-\([^-]\+\)-\([^-.]\+\)\.pkg\.tar\.xz$@{} \1 \2 \0@ s@^\S*/@@ s/^\(\S\+\)\.\(done\|testing\|tested\) /\1 / -- cgit v1.2.3-70-g09d2 From 511834749b219fb3ea7f52dbe14a9634c156f0ac Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 22 Jan 2018 13:46:36 +0100 Subject: bin/bootstrap-mysql: whoops, fix column orderd --- bin/bootstrap-mysql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bin/bootstrap-mysql') diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index 62dad81..6da2c86 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -233,7 +233,7 @@ fi sed 's|,$||' printf ';\n' # shellcheck disable=SC2016 - printf 'INSERT IGNORE INTO `fail_reasons` (`name`,`identifier`,`severity`) VALUES ' + printf 'INSERT IGNORE INTO `fail_reasons` (`identifier`,`name`,`severity`) VALUES ' printf '(from_base64("%s"),"%s",%s),' \ "$( printf '%s' '==> ERROR: A failure occurred in build()\.' | \ -- cgit v1.2.3-70-g09d2 From c3981b65615fd29d16e15860ee5872a996efb90e Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 22 Jan 2018 15:13:09 +0100 Subject: bin/bootstrap-mysql: one binary package may be in multiple repositories with identical versions/git hashes (e.g. "build-support"!) --- bin/bootstrap-mysql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'bin/bootstrap-mysql') diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index 6da2c86..35391f3 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -63,8 +63,8 @@ if [ ! "$1" = 'slim' ]; then ' is_tested BIT' \ ' pkgname VARCHAR(64)' \ ' architecture SMALLINT :architectures' \ - ' UNIQUE content build_assignment sub_pkgrel pkgname architecture' \ - ' UNIQUE file_name pkgname epoch pkgver pkgrel sub_pkgrel architecture' \ + ' UNIQUE content build_assignment sub_pkgrel pkgname architecture repository' \ + ' UNIQUE file_name pkgname epoch pkgver pkgrel sub_pkgrel architecture repository' \ 'repositories MEDIUMINT' \ ' name VARCHAR(64)' \ ' stability MEDIUMINT :repository_stabilities' \ -- cgit v1.2.3-70-g09d2 From 59103fabbb2583e627452750f7043633d21a7b45 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 22 Jan 2018 19:34:58 +0100 Subject: bin/bootstrap-mysql: deletion-list should be tracked, too --- bin/bootstrap-mysql | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'bin/bootstrap-mysql') diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index 35391f3..f67b779 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -369,7 +369,8 @@ fi 'testing' '"Packages:Testing"' \ 'staging' 'NULL' \ 'standalone' 'NULL' \ - 'unbuilt' '"Packages:Build-list"' + 'unbuilt' '"Packages:Build-list"' \ + 'forbidden' 'NULL' printf ';\n' } | \ sed 's|,;|;|' @@ -383,7 +384,8 @@ fi 'community-testing:testing:AQ==' \ 'staging:staging:AQ==' \ 'community-staging:staging:AQ==' \ - 'build-list:unbuilt:AA=='; do + 'build-list:unbuilt:AA==' \ + 'deletion-list:forbidden:AA=='; do # shellcheck disable=SC2016 printf 'INSERT IGNORE INTO `repositories` (`name`,`stability`,`is_on_master_mirror`) SELECT' # shellcheck disable=SC2016 -- cgit v1.2.3-70-g09d2 From 6a6d23c6a2246007ae7a7c2b2f0b79c5d9056fb9 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 23 Jan 2018 09:28:08 +0100 Subject: bin/bootstrap-mysql: user "http" needs access, too --- bin/bootstrap-mysql | 3 +++ 1 file changed, 3 insertions(+) (limited to 'bin/bootstrap-mysql') diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index f67b779..343e64e 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -220,6 +220,9 @@ if [ ! "$1" = 'slim' ]; then 'SELECT' 'buildmaster.*' \ 'UPDATE' 'buildmaster.*' \ 'RELOAD' '*.*' + printf 'GRANT %s ON %s TO '"'"'http'"'"'@'"'"'localhost'"'"';\n' \ + 'SHOW VIEW' 'buildmaster.*' \ + 'SELECT' 'buildmaster.*' printf 'FLUSH PRIVILEGES;\n' } | \ mysql -u root -p buildmaster -- cgit v1.2.3-70-g09d2 From fa31b12beae5c7b6a157dd3c9c7b534975e3e3b2 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 23 Jan 2018 11:20:19 +0100 Subject: bin/bootstrap-mysql: mark blocked packages in database, too --- bin/bootstrap-mysql | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'bin/bootstrap-mysql') diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index 343e64e..2d56aad 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -458,6 +458,32 @@ tr ' ' '.' < \ mysql_generate_package_metadata "${state_file}" done +# shellcheck disable=SC2016 +find "${work_dir}/package-states" -name '*.blocked' -printf '%p %f\n' | \ + sed ' + s|\.\([^. ]\+\)\.\([^. ]\+\)\.\([^. ]\+\)\.blocked$| \1 \2 \3| + ' | \ + while read -r state_file pkgbase git_revision mod_git_revision repository; do + printf 'UPDATE `build_assignments`' + printf ' JOIN `%s` ON `%s`.`id`=`%s`.`%s`' \ + 'package_sources' 'package_sources' 'build_assignments' 'package_source' \ + 'upstream_repositories' 'upstream_repositories' 'package_sources' 'upstream_package_repository' + printf ' SET `build_assignments`.`is_blocked`=from_base64("%s")' \ + "$( + tr -d '\n' < \ + "${state_file}" | \ + base64 -w0 + )" + printf ' WHERE' + printf ' `package_sources`.`%s`=from_base64("%s") AND' \ + 'pkgbase' "$(printf '%s' "${pkgbase}" | base64 -w0)" \ + 'git_revision' "$(printf '%s' "${git_revision}" | base64 -w0)" \ + 'mod_git_revision' "$(printf '%s' "${mod_git_revision}" | base64 -w0)" + printf ' `upstream_repositories`.`name`=from_base64("%s");\n' \ + "$(printf '%s' "${repository}" | base64 -w0)" + done | \ + ${mysql_command} + grep '^\('"$( # shellcheck disable=SC2086 printf '%s\\|' ${standalone_package_repositories} ${stable_package_repositories} -- cgit v1.2.3-70-g09d2 From c6ef11b46979de123f55a7fa286c3e0cd59f0b56 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 23 Jan 2018 12:27:46 +0100 Subject: bin/bootstrap-mysql: add "unknown" build error type --- bin/bootstrap-mysql | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'bin/bootstrap-mysql') diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index 2d56aad..46678f7 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -269,7 +269,11 @@ fi "$( printf '%s' '==> ERROR: Running makepkg as root is not allowed as it can cause permanent,.*' | \ base64 -w0 - )" 'run-as-root' 1 | \ + )" 'run-as-root' 1 \ + "$( + printf '.*' | \ + base64 -w0 + )" 'unknown' 100 | \ sed 's|,$||' printf ';\n' # shellcheck disable=SC2016 -- cgit v1.2.3-70-g09d2