index : releng | |
Archlinux32 release engineering | gitolite user |
summaryrefslogtreecommitdiff |
-rwxr-xr-x | Attic/update-website-old | 334 |
diff --git a/Attic/update-website-old b/Attic/update-website-old deleted file mode 100755 index 95f12ad..0000000 --- a/Attic/update-website-old +++ /dev/null @@ -1,334 +0,0 @@ -#!/bin/bash - -set -e - -mirror_dir='/mnt/archlinux32' -website_dir='/usr/src/archlinux32/archweb32' - -usage() { - >&2 echo '' - >&2 echo 'update-website: update download, torrent, magnet links on' - >&2 echo ' the Arch32 website' - >&2 echo '' - >&2 echo 'possible options:' - >&2 echo ' -h|--help: Show this help and exit.' - >&2 echo ' --magnet-i686 $link:' - >&2 echo ' Set archiso-i686 magnet link to $link.' - >&2 echo ' --magnet-dual $link:' - >&2 echo ' Set archiso-dual magnet link to $link.' - >&2 echo ' --torrent-seed-i686 $link:' - >&2 echo ' Set archiso-i686 torrent link to $link.' - >&2 echo ' --torrent-seed-dual $link:' - >&2 echo ' Set archiso-dual torrent link to $link.' - >&2 echo ' --website-dir $dir:' - >&2 echo ' Set website-dir to $dir.' - >&2 echo ' --mirror-dir $dir:' - >&2 echo ' Set mirror-dir to $dir.' - >&2 echo ' --update-iso:' - >&2 echo ' Update information about iso, too.' - [ -z "$1" ] && exit 1 || exit "$1" -} - -eval set -- "$( - getopt -o h \ - --long help \ - --long magnet-i686: \ - --long magnet-dual: \ - --long torrent-seed-i686: \ - --long torrent-seed-dual: \ - --long mirror-dir: \ - --long website-dir: \ - --long update-iso \ - -n "$(basename "$0")" -- "$@" || \ - echo usage -)" - -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 - -while [ $# -gt 0 ]; do - case "$1" in - '--magnet-i686') - if [ -s "${tmp_dir}/magnet.i686" ]; then - printf 'Option %s given multiple times.\n' "$1" - usage - fi - shift - echo "$1" | \ - tr -d '\n' > \ - "${tmp_dir}/magnet.i686" - ;; - '--magnet-dual') - if [ -s "${tmp_dir}/magnet.dual" ]; then - printf 'Option %s given multiple times.\n' "$1" - usage - fi - shift - echo "$1" | \ - tr -d '\n' > \ - "${tmp_dir}/magnet.dual" - ;; - '--torrent-seed-i686') - if [ -s "${tmp_dir}/torrent-seed.i686" ]; then - printf 'Option %s given multiple times.\n' "$1" - usage - fi - shift - echo "$1" | \ - tr -d '\n' > \ - "${tmp_dir}/torrent-seed.i686" - ;; - '--torrent-seed-dual') - if [ -s "${tmp_dir}/torrent-seed.dual" ]; then - printf 'Option %s given multiple times.\n' "$1" - usage - fi - shift - echo "$1" | \ - tr -d '\n' > \ - "${tmp_dir}/torrent-seed.dual" - ;; - '--mirror-dir') - if [ -s "${tmp_dir}/mirror_dir.set" ]; then - printf 'Option %s given multiple times.\n' "$1" - usage - fi - shift - mirror_dir="$1" - echo "$mirror_dir" > "${tmp_dir}/mirror_dir.set" - ;; - '--website-dir') - if [ -s "${tmp_dir}/website_dir.set" ]; then - printf 'Option %s given multiple times.\n' "$1" - usage - fi - shift - website_dir="$1" - echo "$website_dir" > "${tmp_dir}/website_dir.set" - ;; - '--update-iso') - if [ -s "${tmp_dir}/update_iso.set" ]; then - printf 'Option %s given multiple times.\n' "$1" - usage - fi - echo "true" > "${tmp_dir}/update_iso.set" - ;; - '--help'|'-h') - usage 0 - ;; - '--') - shift - break - ;; - *) - >&2 printf 'Whoops, option "%s" is not yet implemented!\n' "$1" - exit 42 - ;; - esac - shift -done - -if [ $# -gt 0 ]; then - >&2 echo 'Too many arguments.' - exit 2 -fi - -( - printf ' <div id="download-mirrors">\n' - curl -Ss 'https://archlinux32.org/mirrorlist/?country=all&hash='"$( - head -c 24 /dev/urandom | \ - base64 -w0 - )" | \ - sed ' - 0,/^$/d - /^$/d - /^## /{ - s|^## |\n </ul>\n\n <h5>| - s|$|</h5>\n\n <ul>\n| - '"$( - while read -r flag country; do - printf \ - 's|<h5>%s</h5>|<h5><span class="fam-flag fam-flag-%s" title="%s"></span> %s</h5>|\n' \ - "${country}" \ - "${flag}" \ - "${country}" \ - "${country}" - done < \ - "${0%/*}/flag-names" - )"' - } - /^#Server = /{ - s|^#Server = \(.*//\)\([^/]*\)\(/.*\)\$arch/\$repo/\?$|'"$( - printf \ - ' %s\\n' \ - '<li><a href="\1\2\3archisos/"' \ - ' title="Download from \1\2\3">\2</a></li>' - )"'| - } - ' | \ - sed ' - 0,/<\/ul>/d - ' - printf ' </ul>\n\n' - printf ' </div>\n' -) | \ - sed -i ' - :emptyLines - /^\n*$/{ - N - bemptyLines - } - /^\(\s*\n\)*\s*<div id="download-mirrors">$/{ - :a - s|^.*</div>|| - tb - $!N - ba - :b - r /dev/stdin - } - ' "${website_dir}/download/index.html" - -latest_iso_date="$( - ls "${mirror_dir}/archisos" | \ - grep '^archlinux32-[0-9.]\+-\(dual\|i.86\)\.iso$' | \ - sed 's@^archlinux32-\([0-9.]\+\)-\(dual\|i.86\)\.iso$@\1@' | \ - sort -k1,1 -u | \ - tail -n1 -)" - -declare -A desc -desc['i686']='i686 only' -# desc['dual']='dual bootable' - -for arch in "${!desc[@]}"; do - if [ ! -s "${tmp_dir}/magnet.${arch}" ]; then - continue - fi - if ! tr '&' '\n' < \ - "${tmp_dir}/magnet.${arch}" | \ - grep -qxF "dn=archlinux32-${latest_iso_date}-${arch}.iso"; then - >&2 printf 'Magnet link for %s is not for %s, skipping.\n' "${arch}" "archlinux32-${latest_iso_date}-${arch}.iso" - continue - fi - sed -i ' - /<li><a href="magnet:?.*-'"${arch}"'\.iso/ s/href="[^"]\+"/href="'"$(sed 's|&|\\&|g' "${tmp_dir}/magnet.${arch}")"'"/ - /title="Magnet link">Magnet link for \S\+ ('"${desc["${arch}"]}"')/ s/>Magnet link for \S\+ />Magnet link for '"${latest_iso_date}"' / - ' "${website_dir}/download/index.html" -done - -for arch in "${!desc[@]}"; do - if [ ! -s "${tmp_dir}/torrent-seed.${arch}" ]; then - continue - fi - if ! grep -qF "archlinux32-${latest_iso_date}-${arch}" "${tmp_dir}/torrent-seed.${arch}"; then - >&2 printf 'Torrent seed for %s is not for %s, skipping.\n' "${arch}" "archlinux32-${latest_iso_date}-${arch}.iso" - continue - fi - sed -i ' - /<li><a href="http.*-'"${arch}"'\.iso.torrent/ s/href="[^"]\+"/href="'"$(sed -e 's_/_\\/_g' "${tmp_dir}/torrent-seed.${arch}")"'"/ - /title="Download torrent">Torrent for \S\+ ('"${desc["${arch}"]}"')/ s/>Torrent for \S\+ />Torrent for '"${latest_iso_date}"' / - ' "${website_dir}/download/index.html" -done - -if [ ! -s "${tmp_dir}/update_iso.set" ]; then - exit -fi - -unset kernels -unset sizes -declare -A sizes -declare -A md5 -declare -A sha512 - -for arch in "${!desc[@]}"; do - iso="${mirror_dir}/archisos/archlinux32-${latest_iso_date}-${arch}.iso" - if [ ! -f "${iso}" ]; then - >&2 echo "Can't find iso to arch ${arch}." - exit 1 - fi - sudo mount -o loop,ro "${iso}" "${tmp_dir}" - kernels="$( - printf '%s\n' ${kernels} $( - find "${tmp_dir}/arch" \ - -maxdepth 1 \ - -name 'pkglist.*.txt' \ - -not -name 'pkglist.x86_64.txt' \ - -execdir cat {} \; \ - | sed ' - s/^linux\s\+\([^-]\+-[^-]\+\)$/\1/ - t - d - ' - ) | \ - sort -u - )" - sudo umount "${tmp_dir}" - sizes["${arch}"]="$( - printf 'scale=1; %s/1024/1024\n' "$(stat -c'%s' "${iso}")" | \ - bc - )" - md5["${arch}"]="$( - grep "\s${iso##*/}\$" "${mirror_dir}/archisos/md5sums" | \ - awk '{print $1}' - )" - sha512["${arch}"]="$( - grep "\s${iso##*/}\$" "${mirror_dir}/archisos/sha512sums" | \ - awk '{print $1}' - )" - sign_keys="$( - printf '%s\n' ${sign_keys} $( - gpg --status-fd=1 --verify "${iso}.sig" "${iso}" 2> /dev/null | \ - grep '^\[GNUPG:] VALIDSIG [0-9A-F]\+ ' | \ - cut -d' ' -f3 - ) | \ - sort -u - )" -done - -if [ $(echo "${kernels}" | grep -c '\S') -ne 1 ]; then - >&2 echo 'Not exactly one kernel on the iso:' - >&2 echo "${kernels}" - exit 1 -fi - -if [ $(echo "${sign_keys}" | grep -c '\S') -ne 1 ]; then - >&2 echo 'Not exactly one key used for signing the iso:' - >&2 echo "'${sign_keys}'" - exit 1 -fi - -if [ "${sign_keys}" != '33CA3597B0D161AAE4173F65C17F1214114574A4' ]; then - >&2 printf 'Isos are signed with key %s instead of %s.\n' \ - "${sign_keys}" \ - '33CA3597B0D161AAE4173F65C17F1214114574A4' - exit 1 -fi - -values=( - 'Current Release' "${latest_iso_date}" - 'Included Kernel' "${kernels}" - 'PGP Key' '<a href="http://www.archlinux32.org/buildmaster/gpg-keys.php?fp='"${sign_keys}"'">'"${sign_keys}"'</a>' -) -for arch in 'i686' 'dual'; do - values+=( - "ISO Size (${desc["${arch}"]})" "${sizes["${arch}"]} MB" - "MD5 (${desc["${arch}"]})" "${md5["${arch}"]}" - "SHA512 (${desc["${arch}"]})" "${sha512["${arch}"]}" - ) -done - -sed -i "$( - printf '/%s:/s|</strong>.*</li>|</strong> %s</li>|\n' "${values[@]}" - printf '/archlinux32-[0-9.]\+-%s\.iso\.sig/s@archlinux32-[0-9.]\+-%s\.iso\.sig@archlinux32-%s-%s.iso.sig@\n' \ - 'i686' 'i686' "${latest_iso_date}" 'i686' \ - 'dual' 'dual' "${latest_iso_date}" 'dual' -) -" \ - "${website_dir}/download/index.html" |