From 80103377b779450c3a470ddaa2d620c9fdf75491 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Fri, 25 May 2018 10:50:24 +0200 Subject: conf/default.conf -> lib/load-configuration; conf/local.conf -> conf/{common,master,slave}.conf --- bin/bootstrap-mysql | 4 +- bin/build-master-status | 4 +- bin/build-packages | 4 +- bin/check-bugtracker | 4 +- bin/check-db-structure | 4 +- bin/check-opcodes | 4 +- bin/clean-cache | 4 +- bin/clean-git | 4 +- bin/cleanup | 4 +- bin/copy-to-build-support | 4 +- bin/db-update | 4 +- bin/delete-packages | 4 +- bin/filter-build-logs | 4 +- bin/find-obsolete-packages | 4 +- bin/get-assignment | 4 +- bin/get-package-updates | 4 +- bin/ii-answer | 4 +- bin/ii-connect | 4 +- bin/interpret-mail | 4 +- bin/modify-package-state | 4 +- bin/ping-from-slave | 4 +- bin/ping-to-master | 4 +- bin/prioritize-build-list | 4 +- bin/return-assignment | 4 +- bin/sanity-check | 4 +- bin/seed-build-list | 4 +- bin/show-dependencies | 4 +- bin/slave-build-connect | 4 +- bin/why-dont-you | 4 +- conf/.gitignore | 2 +- conf/common.conf.example | 14 ++++ conf/default.conf | 146 ----------------------------------------- conf/master.conf.example | 50 ++++++++++++++ conf/slave.conf.example | 33 ++++++++++ lib/common-functions | 2 +- lib/load-configuration | 159 +++++++++++++++++++++++++++++++++++++++++++++ lib/mysql-functions | 2 +- 37 files changed, 317 insertions(+), 207 deletions(-) create mode 100755 conf/common.conf.example delete mode 100755 conf/default.conf create mode 100755 conf/master.conf.example create mode 100755 conf/slave.conf.example create mode 100755 lib/load-configuration diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index c3d7080..f05ffe8 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -2,8 +2,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" exec 9> "${build_list_lock_file}" if ! verbose_flock -n 9; then diff --git a/bin/build-master-status b/bin/build-master-status index d1382c7..c019a37 100755 --- a/bin/build-master-status +++ b/bin/build-master-status @@ -4,8 +4,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" tmp_dir=$(mktemp -d 'tmp.build-master-status.XXXXXXXXXX' --tmpdir) trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT diff --git a/bin/build-packages b/bin/build-packages index 3d5d2d1..da0ed16 100755 --- a/bin/build-packages +++ b/bin/build-packages @@ -6,8 +6,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # TODO: build other 'architectures', too (pentium4, i486) diff --git a/bin/check-bugtracker b/bin/check-bugtracker index 75f4995..53d8ffb 100755 --- a/bin/check-bugtracker +++ b/bin/check-bugtracker @@ -6,8 +6,8 @@ # shellcheck disable=SC2039,SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" bug_list=$( curl -LSs 'https://bugs.archlinux32.org/index.php?export_list=Export%20Tasklist' | \ diff --git a/bin/check-db-structure b/bin/check-db-structure index 7354bf4..436ce00 100755 --- a/bin/check-db-structure +++ b/bin/check-db-structure @@ -2,8 +2,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # stored functions diff --git a/bin/check-opcodes b/bin/check-opcodes index feaffc3..5965d50 100755 --- a/bin/check-opcodes +++ b/bin/check-opcodes @@ -2,8 +2,8 @@ # shellcheck disable=SC2086,SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" usage( ) { >&2 cat <&2 echo '' diff --git a/bin/get-assignment b/bin/get-assignment index 1c67279..ba80798 100755 --- a/bin/get-assignment +++ b/bin/get-assignment @@ -14,8 +14,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # TODO: honor manual build order of tool-chain: # toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc diff --git a/bin/get-package-updates b/bin/get-package-updates index 59ec019..cfc0f74 100755 --- a/bin/get-package-updates +++ b/bin/get-package-updates @@ -6,8 +6,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # TODO: Find out, why sometimes package updates are missed. diff --git a/bin/ii-answer b/bin/ii-answer index 1e30ec1..f7c2d20 100755 --- a/bin/ii-answer +++ b/bin/ii-answer @@ -4,8 +4,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # welcome devs (in #archlinux32 only) welcome_user_regex='^\S\+ -!- \(abaumann\|deep42thought\|tyzoid\|phrik\)(.* has joined \S\+$' diff --git a/bin/ii-connect b/bin/ii-connect index 45eff65..4b9ecec 100755 --- a/bin/ii-connect +++ b/bin/ii-connect @@ -4,8 +4,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # start ii if it is not running if ! pgrep -x ii > /dev/null; then diff --git a/bin/interpret-mail b/bin/interpret-mail index a931cb7..e45c38f 100755 --- a/bin/interpret-mail +++ b/bin/interpret-mail @@ -2,8 +2,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # TODO: enable email interface to delete packages diff --git a/bin/modify-package-state b/bin/modify-package-state index 2ca2178..d5a201f 100755 --- a/bin/modify-package-state +++ b/bin/modify-package-state @@ -2,8 +2,8 @@ # shellcheck disable=SC2039,SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # shellcheck disable=SC2016 usage() { diff --git a/bin/ping-from-slave b/bin/ping-from-slave index 5ba8395..bb569dd 100755 --- a/bin/ping-from-slave +++ b/bin/ping-from-slave @@ -7,8 +7,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # TODO: receive/save some statistics about current build diff --git a/bin/ping-to-master b/bin/ping-to-master index 11dc7b8..3979656 100755 --- a/bin/ping-to-master +++ b/bin/ping-to-master @@ -7,8 +7,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # TODO: abort build if requested to diff --git a/bin/prioritize-build-list b/bin/prioritize-build-list index f5687e6..187cf29 100755 --- a/bin/prioritize-build-list +++ b/bin/prioritize-build-list @@ -2,8 +2,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" if [ $# -ne 1 ]; then echo 'Usage: prioritize-build-list pkg-regex' diff --git a/bin/return-assignment b/bin/return-assignment index dd13925..fdb7e1c 100755 --- a/bin/return-assignment +++ b/bin/return-assignment @@ -18,8 +18,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" if [ -s "${work_dir}/build-master-sanity" ]; then >&2 echo 'Build master is not sane.' diff --git a/bin/sanity-check b/bin/sanity-check index d5b86db..bfe6400 100755 --- a/bin/sanity-check +++ b/bin/sanity-check @@ -4,8 +4,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" usage() { >&2 echo '' diff --git a/bin/seed-build-list b/bin/seed-build-list index 7540f14..3a71429 100755 --- a/bin/seed-build-list +++ b/bin/seed-build-list @@ -4,8 +4,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # shellcheck disable=SC2016 usage() { diff --git a/bin/show-dependencies b/bin/show-dependencies index 111a41b..7eb4ead 100755 --- a/bin/show-dependencies +++ b/bin/show-dependencies @@ -2,8 +2,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # TODO: can this be faster? diff --git a/bin/slave-build-connect b/bin/slave-build-connect index d22597b..7d01e4c 100755 --- a/bin/slave-build-connect +++ b/bin/slave-build-connect @@ -2,8 +2,8 @@ # shellcheck disable=SC2119,SC2120 -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" if [ "x${SSH_ORIGINAL_COMMAND%% *}" = 'xget-assignment' ] || \ [ "x${SSH_ORIGINAL_COMMAND%% *}" = 'xreturn-assignment' ] || \ diff --git a/bin/why-dont-you b/bin/why-dont-you index f31c38c..7117bed 100755 --- a/bin/why-dont-you +++ b/bin/why-dont-you @@ -6,8 +6,8 @@ # investigate, why a certain operation is not done with certain packages -# shellcheck source=../conf/default.conf -. "${0%/*}/../conf/default.conf" +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" # TODO: reintrocude "keep", "stubbornly_keep", "stabilize" and "unstage" # using information from the database. diff --git a/conf/.gitignore b/conf/.gitignore index 9eef7aa..988ee56 100644 --- a/conf/.gitignore +++ b/conf/.gitignore @@ -1,2 +1,2 @@ -local.conf +*.conf admin-gpg-keys diff --git a/conf/common.conf.example b/conf/common.conf.example new file mode 100755 index 0000000..a26a82a --- /dev/null +++ b/conf/common.conf.example @@ -0,0 +1,14 @@ +#!/bin/sh + +# configurable variables used on the build slaves and on the build master +# default values are given as comments + +# To change variables from their default, copy this file to common.conf, +# uncomment and change the desired variables. + +#work_dir="${base_dir}/work" + +#repo_names='packages community archlinux32' +#repo_paths__packages="${work_dir}/repos/packages" +#repo_paths__community="${work_dir}/repos/community" +#repo_paths__archlinux32="${work_dir}/repos/packages32" diff --git a/conf/default.conf b/conf/default.conf deleted file mode 100755 index daa1955..0000000 --- a/conf/default.conf +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/sh - -# set up some common variables - -# shellcheck disable=SC2034 - -set -e -export LANG=C - -# TODO: This should become lib/load-configuration to avoid confusion. -# Additionally, there should be conf/common.conf.example, -# conf/master.conf.example and conf/slave.conf.example. - -# dirty hack to get this stuff debugable from a bash -if [ "x${0##*/}" = "x-bash" ] || [ "x${0##*/}" = "xbash" ] || [ "x${0##*/}" = "xdash" ]; then - base_dir=$(pwd) -else - base_dir=$(printf '%s/..' "$(dirname "$(readlink -f "$0")")") -fi - -work_dir="${base_dir}/work" - -# shellcheck source=../lib/common-functions -. "${base_dir}/lib/common-functions" - -# if mysqld is not running, we're either on a build slave and don't need -# lib/mysql-functions or we're on the build master and something is wrong -# anyway -if pgrep -x mysqld >/dev/null 2>&1; then - # shellcheck source=../lib/mysql-functions - . "${base_dir}/lib/mysql-functions" -fi - -# TODO: some of this should be read from the database instead -repo_names='packages community archlinux32' -repo_paths__packages="${work_dir}/repos/packages" -repo_paths__community="${work_dir}/repos/community" -repo_paths__archlinux32="${work_dir}/repos/packages32" - -master_build_server="buildmaster.archlinux32.org" -master_build_server_port="22" -master_build_server_user="slave" -master_build_server_identity="${work_dir}/.ssh/id_rsa" - -repo_key='0xdeadbeef' -package_key='0x15eebadc0de' - -# to access the master mirror via rsync -master_mirror_rsync_command='rsync --password-file=/home/slave/rsync.password' -master_mirror_rsync_directory='rsync://buildmaster@mirror.archlinux32.org/packages32' - -# to access the master mirror via sftp -master_mirror_sftp_command='sftp -b- user@mirror' - -# mirror of sources, identified (solely) by hash -source_by_hash_mirror='http://sources.archlinux32.org/' - -# what should be tried in what order to somehow repair a broken build -straws_that_might_repair_failing_builds=$( - printf '%s\n' \ - ':' \ - ':clean_chroot:' \ - ':mirrored_source_by_hash:' \ - ':mirrored_source:' \ - ':with_build_support:' \ - ':with_build_support:clean_chroot:' -) - -# root directory of the webserver -webserver_directory='/srv/http' - -# directory to keep the build log files in -build_log_directory='/srv/http/build-logs' - -# known package repositories -standalone_package_repositories=$( - printf '%s\n' 'build-support' 'gnome-unstable' 'kde-unstable' -) -stable_package_repositories=$( - printf '%s\n' 'community' 'core' 'extra' -) -testing_package_repositories=$( - printf '%s\n' 'community-testing' 'testing' -) -staging_package_repositories=$( - printf '%s\n' 'community-staging' 'staging' -) - -# irc client configuration -irc_dir='/home/slave/irc/irc.freenode.net' -irc_password='top_secret' - -# commands to run to update the i686 package mirror used for installing i686 packages, -# e.g. the one from /etc/pacman.d/mirrorlist32 (useful on build slaves which do not -# have the master mirror in the mirrorlist32) -mirror_update_command='' - -# list of urls to trigger updates of the respective mirrors (used on build master only) -mirror_refresh_trigger_urls='' - -# command to access the mysql database -mysql_command='mysql buildmaster' - -# possibly pull in custom modifications - -# shellcheck source=/dev/null -[ -r "${base_dir}/conf/local.conf" ] && . "${base_dir}/conf/local.conf" - -# check / set up environment - -if [ -z "${build_list_lock_file}" ]; then - build_list_lock_file="${work_dir}/build-list.lock" -fi - -if [ -z "${sanity_check_lock_file}" ]; then - sanity_check_lock_file="${work_dir}/sanity-check.lock" -fi - -if [ -z "${package_database_lock_file}" ]; then - package_database_lock_file="${work_dir}/package-database.lock" -fi - -mkdir -p "${work_dir}" - -for repo in ${repo_names}; do - - eval repo_path='"${repo_paths__'"${repo}"'}"' - - mkdir -p "${repo_path%/*}" - - if ! git -C "${repo_path}" rev-parse --git-dir > /dev/null 2>&1; then - if [ "${repo}" = "archlinux32" ]; then - repo_source='https://github.com/archlinux32/packages.git' - else - repo_source="git://git.archlinux.org/svntogit/${repo}.git" - fi - git clone --bare "${repo_source}" "${repo_path}" - fi - -done - -if [ "${master_build_server_identity}" = "${work_dir}/.ssh/id_rsa" ] && \ - [ ! -f "${master_build_server_identity}" ]; then - mkdir -p "${master_build_server_identity%/*}" - ssh-keygen -b4096 -f "${master_build_server_identity}" -fi diff --git a/conf/master.conf.example b/conf/master.conf.example new file mode 100755 index 0000000..4e708f3 --- /dev/null +++ b/conf/master.conf.example @@ -0,0 +1,50 @@ +#!/bin/sh + +# configurable variables used on the build master +# default values are given as comments + +# To change variables from their default, copy this file to common.conf, +# uncomment and change the desired variables. + +#repo_key='0xdeadbeef' + +# to access the master mirror via rsync +#master_mirror_rsync_command='rsync --password-file=/home/slave/rsync.password' +#master_mirror_rsync_directory='rsync://buildmaster@mirror.archlinux32.org/packages32' + +# to access the master mirror via sftp +#master_mirror_sftp_command='sftp -b- user@mirror' + +# root directory of the webserver +#webserver_directory='/srv/http' + +# directory to keep the build log files in +#build_log_directory='/srv/http/build-logs' + +# known package repositories +#standalone_package_repositories=$( +# printf '%s\n' 'build-support' 'gnome-unstable' 'kde-unstable' +#) +#stable_package_repositories=$( +# printf '%s\n' 'community' 'core' 'extra' +#) +#testing_package_repositories=$( +# printf '%s\n' 'community-testing' 'testing' +#) +#staging_package_repositories=$( +# printf '%s\n' 'community-staging' 'staging' +#) + +# irc client configuration +#irc_dir='/home/slave/irc/irc.freenode.net' +#irc_password='top_secret' + +# list of urls to trigger updates of the respective mirrors +#mirror_refresh_trigger_urls='' + +# command to access the mysql database +#mysql_command='mysql buildmaster' + +#build_list_lock_file="${work_dir}/build-list.lock" +#sanity_check_lock_file="${work_dir}/sanity-check.lock" +#package_database_lock_file="${work_dir}/package-database.lock" diff --git a/conf/slave.conf.example b/conf/slave.conf.example new file mode 100755 index 0000000..cda556b --- /dev/null +++ b/conf/slave.conf.example @@ -0,0 +1,33 @@ +#!/bin/sh + +# configurable variables used on the build slaves +# default values are given as comments + +# To change variables from their default, copy this file to common.conf, +# uncomment and change the desired variables. + +#master_build_server="buildmaster.archlinux32.org" +#master_build_server_port="22" +#master_build_server_user="slave" +#master_build_server_identity="${work_dir}/.ssh/id_rsa" + +#package_key='0x15eebadc0de' + +# mirror of sources, identified (solely) by hash +#source_by_hash_mirror='http://sources.archlinux32.org/' + +# what should be tried in what order to somehow repair a broken build +#straws_that_might_repair_failing_builds=$( +# printf '%s\n' \ +# ':' \ +# ':clean_chroot:' \ +# ':mirrored_source_by_hash:' \ +# ':mirrored_source:' \ +# ':with_build_support:' \ +# ':with_build_support:clean_chroot:' +#) + +# commands to run to update the i686 package mirror used for installing i686 packages, +# e.g. the one from /etc/pacman.d/mirrorlist32 (useful on build slaves which do not +# have the master mirror in the mirrorlist32) +#mirror_update_command='' diff --git a/lib/common-functions b/lib/common-functions index 43c6878..bf4306a 100755 --- a/lib/common-functions +++ b/lib/common-functions @@ -6,7 +6,7 @@ if [ -z "${base_dir}" ]; then # just to make shellcheck happy - . '../conf/default.conf' + . '../lib/load-configuration' fi # find_pkgbuilds package repository git_repository git_revision mod_git_revision diff --git a/lib/load-configuration b/lib/load-configuration new file mode 100755 index 0000000..095cadd --- /dev/null +++ b/lib/load-configuration @@ -0,0 +1,159 @@ +#!/bin/sh + +# load global variables + +# shellcheck disable=SC2034 + +set -e +export LANG=C + +# dirty hack to get this stuff debugable from a bash +if [ "x${0##*/}" = "x-bash" ] || [ "x${0##*/}" = "xbash" ] || [ "x${0##*/}" = "xdash" ]; then + base_dir=$(pwd) +else + base_dir=$(printf '%s/..' "$(dirname "$(readlink -f "$0")")") +fi + +work_dir="${base_dir}/work" + +# shellcheck source=../lib/common-functions +. "${base_dir}/lib/common-functions" + +# if mysqld is not running, we're either on a build slave and don't need +# lib/mysql-functions or we're on the build master and something is wrong +# anyway +if pgrep -x mysqld >/dev/null 2>&1; then + i_am_the_master=true + # shellcheck source=../lib/mysql-functions + . "${base_dir}/lib/mysql-functions" +else + i_am_the_master=false +fi + +# TODO: some of this should be read from the database instead +repo_names='packages community archlinux32' +repo_paths__packages="${work_dir}/repos/packages" +repo_paths__community="${work_dir}/repos/community" +repo_paths__archlinux32="${work_dir}/repos/packages32" + +master_build_server="buildmaster.archlinux32.org" +master_build_server_port="22" +master_build_server_user="slave" +master_build_server_identity="${work_dir}/.ssh/id_rsa" + +repo_key='0xdeadbeef' +package_key='0x15eebadc0de' + +# to access the master mirror via rsync +master_mirror_rsync_command='rsync --password-file=/home/slave/rsync.password' +master_mirror_rsync_directory='rsync://buildmaster@mirror.archlinux32.org/packages32' + +# to access the master mirror via sftp +master_mirror_sftp_command='sftp -b- user@mirror' + +# mirror of sources, identified (solely) by hash +source_by_hash_mirror='http://sources.archlinux32.org/' + +# what should be tried in what order to somehow repair a broken build +straws_that_might_repair_failing_builds=$( + printf '%s\n' \ + ':' \ + ':clean_chroot:' \ + ':mirrored_source_by_hash:' \ + ':mirrored_source:' \ + ':with_build_support:' \ + ':with_build_support:clean_chroot:' +) + +# root directory of the webserver +webserver_directory='/srv/http' + +# directory to keep the build log files in +build_log_directory='/srv/http/build-logs' + +# known package repositories +standalone_package_repositories=$( + printf '%s\n' 'build-support' 'gnome-unstable' 'kde-unstable' +) +stable_package_repositories=$( + printf '%s\n' 'community' 'core' 'extra' +) +testing_package_repositories=$( + printf '%s\n' 'community-testing' 'testing' +) +staging_package_repositories=$( + printf '%s\n' 'community-staging' 'staging' +) + +# irc client configuration +irc_dir='/home/slave/irc/irc.freenode.net' +irc_password='top_secret' + +# commands to run to update the i686 package mirror used for installing i686 packages, +# e.g. the one from /etc/pacman.d/mirrorlist32 (useful on build slaves which do not +# have the master mirror in the mirrorlist32) +mirror_update_command='' + +# list of urls to trigger updates of the respective mirrors (used on build master only) +mirror_refresh_trigger_urls='' + +# command to access the mysql database +mysql_command='mysql buildmaster' + +# possibly pull in custom modifications + +if [ -r "${base_dir}/conf/common.conf" ]; then + # shellcheck source=/dev/null + "${base_dir}/conf/common.conf" +fi + +if ${i_am_the_master} && \ + [ -r "${base_dir}/conf/master.conf" ]; then + # shellcheck source=/dev/null + . "${base_dir}/conf/master.conf" +fi + +if ! ${i_am_the_master} && \ + [ -r "${base_dir}/conf/slave.conf" ]; then + # shellcheck source=/dev/null + . "${base_dir}/conf/slave.conf" +fi + +# check / set up environment + +if [ -z "${build_list_lock_file}" ]; then + build_list_lock_file="${work_dir}/build-list.lock" +fi + +if [ -z "${sanity_check_lock_file}" ]; then + sanity_check_lock_file="${work_dir}/sanity-check.lock" +fi + +if [ -z "${package_database_lock_file}" ]; then + package_database_lock_file="${work_dir}/package-database.lock" +fi + +mkdir -p "${work_dir}" + +for repo in ${repo_names}; do + + eval repo_path='"${repo_paths__'"${repo}"'}"' + + mkdir -p "${repo_path%/*}" + + if ! git -C "${repo_path}" rev-parse --git-dir > /dev/null 2>&1; then + if [ "${repo}" = "archlinux32" ]; then + repo_source='https://github.com/archlinux32/packages.git' + else + repo_source="git://git.archlinux.org/svntogit/${repo}.git" + fi + git clone --bare "${repo_source}" "${repo_path}" + fi + +done + +if [ "${master_build_server_identity}" = "${work_dir}/.ssh/id_rsa" ] && \ + [ ! -f "${master_build_server_identity}" ]; then + mkdir -p "${master_build_server_identity%/*}" + ssh-keygen -b4096 -f "${master_build_server_identity}" +fi diff --git a/lib/mysql-functions b/lib/mysql-functions index a85d97f..4a719a8 100755 --- a/lib/mysql-functions +++ b/lib/mysql-functions @@ -6,7 +6,7 @@ if [ -z "${base_dir}" ]; then # just to make shellcheck happy - . '../conf/default.conf' + . '../lib/load-configuration' fi # TODO: replace most/all insert-select queries by separate select and insert -- cgit v1.2.3-70-g09d2