#!/bin/bash # init variables tmpDir="$(mktemp -d /tmp/archive.XXXXXX)" pkgDir="/srv/arch-mirror/arch/arch/archlinuxewe/os/x86_64" pkgSrcDir="$(dirname $(readlink -f -n "$0"))" [ "$(hostname)" == "rechenknecht" ] && aufRechenknecht=true || aufRechenknecht=false force=false upload=true updateMe=true # parse arguments eval set -- "$(getopt -o f --long force,no-upload,no-selfUpdate -n "$(basename "$0")" -- "$@")" while true do case $1 in -f|--force) force=true shift ;; --no-upload) upload=false shift ;; --no-selfUpdate) updateMe=false shift ;; --) shift break ;; *) >&2 echo "FEHLER: Verstehe Option \"$1\" doch nicht! Ich beende." exit 1 esac done if [ ! $# -eq 0 ] then >&2 echo 'FEHLER: Zu viele Argumente! Ich beende.' exit 1 fi $aufRechenknecht && pkgSrcDir="${pkgSrcDir}/archPackages" cd "${pkgSrcDir}" # extract git HEAD git archive --format tar HEAD | \ tar -x -C "${tmpDir}" -f - cd "${tmpDir}" # update $0 if ${updateMe} && ${aufRechenknecht} && [ -e "$(basename $0)" ] && ! diff -q "$(basename $0)" "$0" &> /dev/null then cp "$(basename $0)" "$0" $0 $@ err=$? rm -rf "${tmpDir}" exit ${err} fi # collect packages pakete="$( \ for paket in $( \ echo */PKGBUILD | \ sed "s|/PKGBUILD||g" \ ) do [ -d "${paket}" ] || continue . ${paket}/PKGBUILD pkgFile="${paket}-${pkgver}-${pkgrel}-${arch[0]}.pkg.tar.xz" ${force} || \ ! ${aufRechenknecht} || \ [ ! -e "${pkgDir}/${pkgFile}" ] && \ echo "${paket}" done )" if ${aufRechenknecht} then # build packages for paket in ${pakete} do cd "${tmpDir}/${paket}" rm -f ${paket}-*.pkg.tyr.xz makepkg -fcsr || exit $? ${upload} && scp ${tmpDir}/${paket}/${paket}-*.pkg.tyr.xz paule@127.0.0.1:${pkgDir}/ done # upload packages ${upload} && ssh paule@127.0.0.1 ' \ cd "'${pkgDir}'" for paket in '${pakete}' do alles="$(ls ${paket}*.pkg.tar.xz)" anz="$(echo "${alles}" | wc -l)" for version in $( \ echo "${alles}" | \ sed "s|^.*-\([^-]*-[^-]*\)-[^-]*\$|\1|" | \ sort -V | \ head -n$[${anz}-1] \ ) do rm ${paket}-${version}-*.pkg.tar.xz done done # update db repo-add \ '${pkgDir}'/archlinuxewe.db.tar.gz \ '${pkgDir}'/*.pkg.tar.xz ' else # check packages err=false for paket in ${pakete} do . ${paket}/PKGBUILD echo "${source}" | \ grep -q "opensources\.eckner\.net" || \ continue remSum="$(curl -o - "${source#*::}&post=sha256sum" 2> /dev/null)" if [ ! "${remSum}" == "${sha256sums}" ] then echo "sha256sum von ${pkgname} stimmt nicht: ${remSum} vs. ${sha256sums}." err=true fi done ${err} && exit 1 cd "${pkgSrcDir}" git push || exit $? ${force} && opts="-f" || opts="" ssh rechenknecht ~/archPackagesUpdate ${opts} || exit $? fi # clean up rm -rf "${tmpDir}"