index : releng | |
Archlinux32 release engineering | gitolite user |
summaryrefslogtreecommitdiff |
author | Andreas Baumann <mail@andreasbaumann.cc> | 2022-02-05 14:16:02 +0100 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2022-02-05 14:16:02 +0100 |
commit | a132f6d3c4773d816cdc64b3e8539a1a24177530 (patch) | |
tree | 0d6511ab9b3f82e256e3aad19faa5130e42dc106 /al32-mktorrent.sh | |
parent | 24d641d2acbbb320fa69fbfd6bf75fda2b3e78d9 (diff) |
-rwxr-xr-x | al32-mktorrent.sh | 165 |
diff --git a/al32-mktorrent.sh b/al32-mktorrent.sh deleted file mode 100755 index 969ad1b..0000000 --- a/al32-mktorrent.sh +++ /dev/null @@ -1,165 +0,0 @@ -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -#! /bin/bash -set -euo pipefail - -function join_by { local IFS="$1"; shift; echo "$*"; } - -usage () { - echo "Usage: $0 [-d date] [-w webdir] [-t hefurdir] [arch...]" -} - -fg_green="\033[32m" -fg_red="\033[31m" -fg_blue="\033[34m" -fg_reset="\033[0m" -fg_bold="\033[1m" - -MIRRORLIST_FILE="https://git.archlinux32.org/packages/plain/core/pacman-mirrorlist/mirrorlist" - -function create_torrent_for_arch () { - declare -a available_mirrors - mirrorlist="$(curl -f "$MIRRORLIST_FILE" 2>/dev/null | grep Server | cut -d '=' -f 2 | sed -e 's/\s//g;s_$arch/$repo_archisos/_')" - - if [ "$#" -eq 0 ] ; then - echo "No architecture specified, selecting 'i686'" - arch="i686" - elif [ "$#" -eq 1 ] ; then - echo "Selecting architecture '$1'" - arch="$1" - else - usage - echo "Too many arguments, exiting" >&2 - exit 1 - fi - - iso_string="archlinux32-$iso_date-$arch.iso" - - available_mirrors=($mirrorlist) - - if [ ! -f "$iso_string" ] ; then - echo -e "$fg_reset${fg_bold}Downloading iso...$fg_reset" - curl -f -O "${available_mirrors[0]}$iso_string" - else - echo -e "$fg_reset${fg_bold}Reusing already downloaded iso...$fg_reset" - fi - - - echo -e "$fg_reset${fg_bold}Downloading verification files...$fg_reset" - if [ ! -f "$iso_string.sig" ] ; then - curl -O "${available_mirrors[0]}$iso_string.sig" - fi - if [ ! -f "sha512sums" ] ; then - curl -O "${available_mirrors[0]}sha512sums" - fi - - echo -n -e "$fg_reset${fg_bold}Checking PGP signature...$fg_reset " - gpg --verify "$iso_string.sig" "$iso_string" || exit 100 - echo -e "$fg_reset${fg_green}OK" - - echo -e "$fg_reset${fg_bold}Checking SHA512 sums...$fg_reset" - sha512sum --ignore-missing --check sha512sums || exit 101 - - echo -e "$fg_reset${fg_bold}Create torrent file...$fg_reset" - if [ -f "$iso_string.torrent" ] ; then - rm "$iso_string.torrent" - fi - mktorrent --announce=http://archlinux32.org:6969/announce --web-seed="$(join_by ',' "${available_mirrors[@]}")" "$iso_string" - - echo -e "$fg_reset${fg_bold}Create magnet link...$fg_reset" - magnet_link="$(transmission-show --magnet "$iso_string.torrent")" - "${0%/*}/update-website" --magnet-"$arch" "$magnet_link" - echo "$magnet_link" - - echo -e "$fg_reset${fg_bold}Create RSS feed files...$fg_reset" - python "${0%/*}/magnet2feed.py" "$magnet_link" "$iso_date" -} - -function upload_file_to_remote_dir { - if [ -f "$1" ] && [ -n "$2" ] ; then - echo -e "$fg_reset${fg_bold}Uploading file$fg_reset ${fg_blue}$1$fg_reset ${fg_bold}to$fg_reset ${fg_blue}$2$fg_reset $fg_bold...$fg_reset" - scp "$1" "$2" - fi -} - -### Check for if required programs are present - -which mktorrent 2>&1 >/dev/null || ( - echo "Missing mktorrent" - exit 1 -) - -python -c "import feedgenerator" 2>/dev/null || ( - echo "Missing python module feedgenerator" - exit 1 -) - -which transmission-show 2>&1 >/dev/null || ( - echo "Missing transmission-show" - exit 1 -) - -### Actual program - -declare -a architectures=("i686") -iso_date='' -web_dir='' -hefur_dir='' - -while getopts "d:w:t:h" o; do - case "${o}" in - d) - iso_date=${OPTARG} - ;; - t) - hefur_dir=${OPTARG} - ;; - w) - web_dir=${OPTARG} - ;; - h) - usage - exit - ;; - *) - echo "$0: unknown option ${o}" >&2 - usage - ;; - esac -done -shift $((OPTIND-1)) - -if [ "$#" -gt 0 ] ; then - architectures=($@) -fi - -[ -z "$iso_date" ] && read -r -p "Date of the ISO: " iso_date - -for a in "${architectures[@]}" ; do - create_torrent_for_arch "$a" -done - -for a in "${architectures[@]}" ; do - torrent_filename="archlinux32-$iso_date-$a.iso.torrent" - if [ -n "$web_dir" ] ; then - feed_filename="feed_$a.rss" - upload_file_to_remote_dir "$torrent_filename" "$web_dir" - upload_file_to_remote_dir "$feed_filename" "$web_dir" - fi - if [ -n "$hefur_dir" ] ; then - upload_file_to_remote_dir "$torrent_filename" "$hefur_dir" - fi -done - -# vim: set ts=4 sw=4: |