Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/build-all
diff options
context:
space:
mode:
Diffstat (limited to 'build-all')
-rwxr-xr-xbuild-all164
1 files changed, 164 insertions, 0 deletions
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.'
+ ;;
+
+
+