From b43bf951c7471fabd2301641ba3503bacf5b91e7 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Tue, 1 Feb 2022 21:37:19 +0100 Subject: adapted for buildmaster, ISO, update works, not the torrents --- build-all | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100755 build-all (limited to 'build-all') diff --git a/build-all b/build-all new file mode 100755 index 0000000..8071357 --- /dev/null +++ b/build-all @@ -0,0 +1,164 @@ +#!/bin/bash + +# runs on the buildmaster only, works currently only there +# +# calls all subscripts to build the iso, sign it, generate checksums, +# update the website, update RSS feeds, feed the torrents, etc. +# +# this script is supposed to be used by Archlinux32 people only +# as it contains hard-coded pathes and server names.. + +# prerequisites: +# - mkinitcpio-archiso32 and archiso32 installed on the host +# - https://git.archlinux32.org/releng checked out locally +# - pacman-mirrorlist32 for /etc/pacman.d/mirrorlist32 +# - mktorrent, python-feedgenerator, transmission-cli, hefur + +# parameters +CONFIG="releng" +ARCH="i686" +DATE=$(date +%Y.%m.%d) +ISO="archlinux32-${DATE}-${ARCH}.iso" +SIGNATURE="${ISO}.sig" +TORRENT="${ISO}.torrent" +TORRENT_SERVER="archlinux32.org" +WEBSITE_DIR="/srv/http/archlinux32.org" +MIRROR_DIR="/srv/http/mirror/mirror.archlinux32.org" +ARCHISOS_DIR="${MIRROR_DIR}/archisos/" +MIRROR_USER='mirror' +MIRROR_GROUP='mirror' +#Andreas Baumann (sign) +SIGN_KEY='16194A82231E9EF823562181C8E8F5A0AF9BA7E7' +# Archlinux 32 Release Key +#SIGN_KEY='33CA3597B0D161AAE4173F65C17F1214114574A4' +WEB_DIR="/srv/http/archlinux32.org" + +base_dir=$( + readlink -e "${0%/*}" +) + +pushd() { + command pushd "$@" > /dev/null +} + +popd() { + command popd "$@" > /dev/null +} + +export pushd popd + +# fail on first error +set -e + +# cleanup hook +tmp_dir="$(mktemp -d)" +cleanup() { + if mountpoint -q "${tmp_dir}"; then + sudo umount "${tmp_dir}" + fi + rm -rf --one-file-system "${tmp_dir}" +} +trap cleanup EXIT + +# build the ISO +#echo "Building ISO.." +#"${base_dir}/build-iso" --config="${CONFIG}" --arch "${ARCH}" \ +# --output-dir="${ARCHISOS_DIR}" --iso "${ISO}" + +# sign ISO +echo "Signing ISO.." +#pushd "${ARCHISOS_DIR}" +#rm -rf "${ISO}.sig" +#gpg --local-user "${SIGN_KEY}" --batch --no-tty --detach-sign "${ISO}" > sha512sums +# [ ! -f md5sums ] || sed -i "/${file}$/d" md5sums +# md5sum "${file}" >> md5sums +#done +#sort -k2,2 sha512sums --output sha512sums +#sort -k2,2 md5sums --output md5sums +#popd + +# date used for torrents and commit message +date=$(echo "${ISO}" \ + | sed 's/^.*-\([^-]\+\)-[^-]\+$/\1/' \ + | sort -u +) + +# generate torrents (currently broken) +#echo "Generating torrents.." +#bash -x "${base_dir}/al32-mktorrent.sh" -d "${torrent_date}" -t "hefur@${TORRENT_SERVER}:" "${ARCH}" + +# update web page +echo "Updating website.." +git -C "${WEB_DIR}" pull --ff-only +"${base_dir}/update-website" \ + --website-dir="${WEBSITE_DIR}" \ + --mirror-dir="${MIRROR_DIR}" \ + --update-iso +git -C "${WEB_DIR}" commit 'download/index.html' -m 'download/index.html: new isos ('"${date}"')' +git -C "${WEB_DIR}" push + +# when did we last updates the +date +%s > "${ARCHISOS_DIR}/lastupdate" + +# set permissions correctly of all generated or changed fles +echo "Fixing/setting permissions.." +#chown "${MIRROR_USER}:${MIRROR_GROUP}" \ +# "${ARCHISOS_DIR}/${ISO}" "${ARCHISOS_DIR}/${SIGNATURE}" "${ARCHISOS_DIR}/${TORRENT}" \ +# "${ARCHISOS_DIR}/sha512sums" "${ARCHISOS_DIR}/md5sums" "${ARCHISOS_DIR}/lastupdate" + +echo "Finished." + +exit 0 + +#-- +# TODO from here: + +archive='/mnt/archlinux32archive' +destination='/mnt/archlinux32/archisos' + + mv $( + printf '%s.torrent\n' ${isos} + ) feed_dual.rss feed_i686.rss "${destination}/" + +# torrent generation + +# ATM no torrents +# ATM no dual +# --torrent-seed-dual "https://pool.mirror.archlinux32.org/archisos/archlinux32-${date}-dual.iso.torrent" \ +# --torrent-seed-i686 "https://pool.mirror.archlinux32.org/archisos/archlinux32-${date}-i686.iso.torrent" \ +# + +# this seems to be cleanup of old isos (which must be moved to the archive +# should be in a separate script too like cleanup-isos, can then be called in build-all + + find "${destination}" \( -name 'archlinux32-*' -o -name 'archlinux-*' \) -not -name 'archlinux32-'"${date}"'-*' \ + | while read -r to_delete; do + if diff -q "${to_delete}" "${archive}/iso/${to_delete#${destination}/}" >/dev/null; then + rm "${to_delete}" + printf '%s\n' "${to_delete}" \ + | sed ' + s@^.*/@@ + s/\./\\./g + s@.*@/ \0$/d@ + ' + fi + done \ + >> "${tmp_dir}/delete-regex" + sed -i -f "${tmp_dir}/delete-regex" "${destination}/sha512sums" + sed -i -f "${tmp_dir}/delete-regex" "${destination}/md5sums" + + echo '... done.' + ;; + + + -- cgit v1.2.3-70-g09d2