index : releng | |
Archlinux32 release engineering | gitolite user |
summaryrefslogtreecommitdiff |
author | Andreas Baumann <mail@andreasbaumann.cc> | 2022-02-01 21:37:19 +0100 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2022-02-01 21:37:19 +0100 |
commit | b43bf951c7471fabd2301641ba3503bacf5b91e7 (patch) | |
tree | 14954f32f0e7d6ca0376c37b2864178d0c5c7051 /build-all | |
parent | 3b569e24016a3cb5258e9e856d7161b8360499f3 (diff) |
-rwxr-xr-x | build-all | 164 |
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) <mail@andreasbaumann.cc> +SIGN_KEY='16194A82231E9EF823562181C8E8F5A0AF9BA7E7' +# Archlinux 32 Release Key <release@archlinux32.org> +#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}" </dev/null +#popd + +# checksum the ISO and the signature +echo "Updating checksum files.." +#pushd "${ARCHISOS_DIR}" +#files=("${ISO}" "${ISO}.sig") +#for file in "${files[@]}"; do +# echo $file +# [ ! -f sha512sums ] || sed -i "/${file}$/d" sha512sums +# sha512sum "${file}" >> 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.' + ;; + + + |