diff options
author | Erich Eckner <git@eckner.net> | 2016-04-04 11:20:44 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2016-04-04 11:24:09 +0200 |
commit | 582289dc70616adca2ecc95bcc7cd0f624d4b532 (patch) | |
tree | e66f94bd2a32fc19fade65e6033a54a3e446c85d | |
parent | 02bf699c79095a15cb973c39c3b5b74cb4928be7 (diff) | |
download | archlinuxewe.git.save-582289dc70616adca2ecc95bcc7cd0f624d4b532.tar.xz |
archPackagesUpdate soweit funktionstüchtig
-rwxr-xr-x | archPackagesUpdate | 131 |
1 files changed, 125 insertions, 6 deletions
diff --git a/archPackagesUpdate b/archPackagesUpdate index 3d5a8388..94ffc347 100755 --- a/archPackagesUpdate +++ b/archPackagesUpdate @@ -1,23 +1,142 @@ #!/bin/bash -cd $(dirname $0)/archPackages - +# 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 -# extract git HEAD +# 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 [ -e "$(basename $0)" ] && ! diff -q "$(basename $0)" "$0" &> /dev/null +if ${updateMe} && ${aufRechenknecht} && [ -e "$(basename $0)" ] && ! diff -q "$(basename $0)" "$0" &> /dev/null then cp "$(basename $0)" "$0" - $0 - exit $? + $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 $? + + ssh rechenknecht "~/archPackagesUpdate" || exit $? +fi +# clean up rm -rf "${tmpDir}" |