summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEsteban Carnevale <alfplayer@mailoo.org>2014-11-05 11:32:25 -0300
committerEsteban Carnevale <alfplayer@mailoo.org>2014-11-05 11:32:25 -0300
commit5dea1cb51b010830ecad0d4e2ba875eef9a6c4ba (patch)
treeacbf8c08029a3ec32d4909539151a2eb7cb21135
parent9a10cb46a74e404e57517bfda46ddd672e749bd3 (diff)
abs-history: Add script
-rwxr-xr-xabs-history134
1 files changed, 134 insertions, 0 deletions
diff --git a/abs-history b/abs-history
new file mode 100755
index 0000000..3c31374
--- /dev/null
+++ b/abs-history
@@ -0,0 +1,134 @@
+#!/bin/bash
+
+# alfplayer, based on the script abslibre of dbscripts
+# 2014-06-12
+#
+# "abs" command alternative fetching from Parabola's abslibre.git
+# and from Arch's svntogit
+
+ABSROOT="/var/abs-evc"
+ABSLIBRE=/var/abs-evc/abslibre.git
+ABSPARABOLA=/var/abs-evc/abs-parabola
+# Remote
+ARCHGITBASE=https://projects.archlinux.org/git/svntogit/
+ABSLIBREGIT=https://projects.parabolagnulinux.org/abslibre.git
+BLACKLISTURL='https://projects.parabolagnulinux.org/blacklist.git/plain/blacklist.txt'
+BLFILE=/tmp/blacklist.txt
+
+function sync_abs() {
+# Sync Arch repos packages.git and community.git from internet
+ for archrepo in packages community; do
+ if [ -d ${ABSROOT}/arch-${archrepo}/.git ]; then
+ pushd ${ABSROOT}/arch-${archrepo} >/dev/null 2>&1
+ git pull
+ popd >/dev/null 2>&1
+ else
+ git clone ${ARCHGITBASE}/${archrepo}.git ${ABSROOT}/arch-${archrepo}
+ fi
+ done
+
+# Sync ABSLibre from internet
+ if [ -d ${ABSLIBRE}/.git ]; then
+ pushd ${ABSLIBRE} >/dev/null 2>&1
+ git pull
+ popd >/dev/null 2>&1
+ else
+ git clone ${ABSLIBREGIT} ${ABSLIBRE}
+ fi
+}
+
+function get_blacklist() {
+ printf ":: Updating blacklist...\t"
+ wget -q -O - "${BLACKLISTURL}" | cut -d':' -f1 | sort -u | \
+ sed "s#^#"${ABSROOT}"/arch-(packages|community)/#" > ${BLFILE} || {
+ printf "[FAILED]\n"
+ return 1
+ }
+
+# Prevent using an empty blacklist
+ [ $(wc -l ${BLFILE} | cut -d " " -f1) -eq 0 ] && return 1
+
+ printf "[OK]\n"
+}
+
+function sync_abs_libre() {
+
+# Sync abslibre.git package repository directories
+ if [ ! -d ${ABSPARABOLA} ]; then
+ echo "Create directory ${ABSPARABOLA}"
+ mkdir ${ABSPARABOLA}
+ #ln -s ${ABSLIBRE}/{libre,libre-multilib,pcr,nonprism,java} ${ABSPARABOLA}
+ fi
+
+ ln -s ${ABSLIBRE}/{libre,libre-multilib,pcr,nonprism,java} ${ABSPARABOLA}
+
+# Sync Arch packages symlinks
+ mkdir "${ABSPARABOLA}"/{core,extra,community}
+ for archrepo in packages community ; do
+ git ls-tree --name-only @ -- arch-*/*/repos/*-* | \
+ grep -vEf ${BLFILE} | while read -a path ; do
+ file=${path##*/}
+ read pkgname repo arch <<< $(echo "${path}" | sed 's#^\./arch-\(packages\|community\)/\([^/]*\)/repos/\([^/]*\)-\([^/]*\).*$#\2 \3 \4#')
+ [[ $arch != i686 ]] && \
+ echo ln -s "${ABSROOT}/${archrepo}/${pkgname}/repos/${archrepo}-${arch}" "${ABSPARABOLA}/${repo}/${pkgname}"
+ done
+ done
+
+ find -L "${ABSPARABOLA}" -type l -delete
+}
+
+# This part is very hacky and particular to the current setup :P
+sync_pre_mips64el() {
+ pushd /home/fauno/Repos/abslibre-pre-mips64el >/dev/null
+
+ sudo -u fauno sh -c "
+
+ rsync ${SYNCARGS} \
+ --exclude=.git* \
+ --exclude=community-staging \
+ --exclude=community-testing \
+ --exclude=gnome-unstable \
+ --exclude=kde-unstable \
+ --exclude=multilib \
+ --exclude=multilib-testing \
+ --exclude=multilib-staging \
+ --exclude=staging \
+ --exclude=testing \
+ ${ABSLIBRE}/x86_64/ \
+ /home/fauno/Repos/abslibre-pre-mips64el/ && \
+ git add . && \
+ git commit -m \"$(date)\" -a
+ git push origin master
+ "
+}
+
+# Create .abs.tar.gz tarballs
+create_tarballs() {
+ for repo in ${ABSLIBRE}/{i686,x86_64}/*; do
+ baserepo=${repo##*/}
+ arch=$(basename $(dirname $repo))
+
+# Remove the old one
+ mkdir -p /srv/http/web/media/abs/$baserepo/os/$arch/
+ rm /srv/http/web/media/abs/$baserepo/os/$arch/$baserepo.abs.tar.gz
+# Create a new one joining arch and any
+# Remove the first part of the path (it could be $repo but any isn't hit)
+ bsdtar -czvf /srv/http/web/media/abs/$baserepo/os/$arch/$baserepo.abs.tar.gz \
+ -s ":${ABSLIBRE}/[a-z0-9_]\+/[a-z]\+::" \
+ $repo/* ${ABSLIBRE}/any/${baserepo}/*
+
+ done
+}
+
+sync_abs || exit 1
+get_blacklist || exit 1
+sync_abs_libre || exit 1
+# This is being done at repo server now
+#sync_pre_mips64el || exit 1
+#create_tarballs || exit 1
+
+#echo "Exclusion list used"
+#cat ${BLFILE}
+#less ${BLFILE}
+
+exit 0