summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2016-04-04 11:20:44 +0200
committerErich Eckner <git@eckner.net>2016-04-04 11:24:09 +0200
commit582289dc70616adca2ecc95bcc7cd0f624d4b532 (patch)
treee66f94bd2a32fc19fade65e6033a54a3e446c85d
parent02bf699c79095a15cb973c39c3b5b74cb4928be7 (diff)
downloadarchlinuxewe.git.save-582289dc70616adca2ecc95bcc7cd0f624d4b532.tar.xz
archPackagesUpdate soweit funktionstüchtig
-rwxr-xr-xarchPackagesUpdate131
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}"