summaryrefslogtreecommitdiff
path: root/sync.sh
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2018-05-27 10:13:52 +0200
committerErich Eckner <git@eckner.net>2018-05-27 10:13:52 +0200
commit14a8f5d3c7889f2046a008b1b1dc29f485ebb359 (patch)
tree644ebb60f7155dd5c139d233857684fbcd8546e6 /sync.sh
downloadcrux-ports-14a8f5d3c7889f2046a008b1b1dc29f485ebb359.tar.xz
initial commit
Diffstat (limited to 'sync.sh')
-rwxr-xr-xsync.sh146
1 files changed, 146 insertions, 0 deletions
diff --git a/sync.sh b/sync.sh
new file mode 100755
index 0000000..26bbb3f
--- /dev/null
+++ b/sync.sh
@@ -0,0 +1,146 @@
+#!/bin/bash
+
+finalPortsDirs=(/usr/src/ports/{cpan2crux,manual}Ports)
+
+d=$(
+ find "${finalPortsDirs[@]}" -mindepth 2 "(" -name ".*" -type d -prune -false ")" -o -type d -not -name ".*"
+)
+
+if [ -n "$d" ]
+then
+ echo "dirs:"
+ echo "$d"
+ exit -1
+fi
+
+l=$(
+ find "${finalPortsDirs[@]}" -type l
+)
+
+if [ -n "$l" ]
+then
+ echo "links:"
+ echo "$l"
+ exit -1
+fi
+
+if [ -d /usr/src/ports/.work ]; then
+ rm -f /usr/src/ports/.work/{REPO,index.html}
+ ls -1 /usr/src/ports/.work | \
+ while read -r s; do
+ if [ ! -h "/usr/src/ports/.work/${s}" ]; then
+ echo "/usr/src/ports/.work/${s} ist kein Symlink!"
+ exit -1
+ fi
+ rm /usr/src/ports/.work/$s
+ done
+ rmdir /usr/src/ports/.work
+fi
+mkdir /usr/src/ports/.work
+
+for dir in $(find "${finalPortsDirs[@]}" -mindepth 1 -maxdepth 1 -type d)
+do
+ for file in Pkgfile .md5sum .footprint .signature
+ do
+ if [ ! -f $dir/$file ]
+ then
+ echo "$dir/$file gibt es nicht, sollte es aber!"
+ exit -1
+ fi
+ done
+ if [ ! $(grep -c "^\s*name=" $dir/Pkgfile) -eq 1 ]
+ then
+ echo "$dir/Pkgfile hat \"name=..\" nicht genau ein Mal!"
+ exit -1
+ fi
+ if [ ! "$(grep "^\s*name=" $dir/Pkgfile | cut -d = -f 2)" == "$(basename "$dir")" ]
+ then
+ echo "$dir/Pkgfile behauptet zu $(grep "^\s*name=" $dir/Pkgfile | cut -d = -f 2) zu gehören!"
+ exit -1
+ fi
+ if [ ! $(grep -c "^\s*#\s*Maintainer:\s\+Erich Eckner, crux at eckner dot net\s*\$" $dir/Pkgfile) -eq 1 ]
+ then
+ echo "$dir/Pkgfile behauptet nicht von Erich gepflegt zu werden!"
+ exit -1
+ fi
+ if [ ! $(grep -c "\susr/man/" $dir/.footprint) -eq 0 ]
+ then
+ echo "$dir erzeugt Manpages in /usr/man statt /usr/share/man!"
+ exit -1
+ fi
+ ergs="$(prtverify $dir)"
+ if [ -n "$ergs" ]
+ then
+ echo "prtverify meckert $dir an:"
+ echo "$ergs"
+ exit -1
+ fi
+ signErr="$(
+ cd $dir
+ if ! signify -C -x .signature &> /dev/null
+ then
+ sudo -u pkgmk fakeroot pkgmk -cs 2>&1 | \
+ grep -v '^=======> Signature ok\.$'
+ fi
+ )"
+ if [ -n "${signErr}" ]
+ then
+ >&2 echo "signify meckert $dir an:"
+ echo "${signErr}"
+ exit -1
+ fi
+ ln -s ${dir} /usr/src/ports/.work/${dir##*/}
+done
+
+for file in deepthought.pub deepthought.httpup; do
+ ln -s /usr/src/ports/{,.work/}${file}
+done
+
+for dir in "${finalPortsDirs[@]}"; do
+ httpup-repgen ${dir}
+done
+
+for dir in "${finalPortsDirs[@]}"; do
+ cat ${dir}/REPO
+done | \
+ sort > \
+ /usr/src/ports/.work/REPO
+
+portspage --title="Erich Eckner's CRUX Ports" --header="/usr/src/ports/head" /usr/src/ports/.work | \
+ grep -v ">\." | \
+ sed 's|/usr/src/ports/\.work/\([^/]*\)/|/\1/Pkgfile|' | \
+ sed 's|\(<td><b>Description</b></td>\)|\1<td><b>Experimental?</b></td>|' | \
+ sed 's@^\(\s*<tr class="\(odd\|even\)">\(<td>.*</td>\)\{3\}\)\(<td>[0-9]\{4\}\(-[0-9]\{2\}\)\{2\}</td></tr>\)$@\1<td>EXPERIMENTELL</td>\4@' | \
+ while read -r s
+ do
+ if echo "${s}" | grep -q "EXPERIMENTELL"
+ then
+ if echo "${s}" | grep -q "https://opensources\.eckner\.net/"
+ then
+ s="${s/EXPERIMENTELL/yes}"
+ else
+ s="${s/EXPERIMENTELL/&nbsp;}"
+ fi
+ fi
+ echo "${s}"
+ done > \
+ /usr/src/ports/.work/index.html
+
+export RSYNC_RSH=ssh
+rsync -aLvzc --delete --delete-excluded \
+ --exclude "*tar.gz" \
+ --exclude "*tar.bz2" \
+ --exclude "*.gem" \
+ --exclude "*tgz" \
+ --exclude "*.zip" \
+ --exclude "sync.sh" \
+ --exclude "lastVersion.sh" \
+ --exclude "checkVersions" \
+ --exclude "head" \
+ --exclude ".ht*" \
+ --exclude "*CVS/" \
+ --include ".md5sum" \
+ --include ".footprint" \
+ --include ".signature" \
+ --exclude ".*" \
+ /usr/src/ports/.work/ ecknernet@eckner.net:crux.eckner.net