diff options
author | Esteban Carnevale <alfplayer@mailoo.org> | 2014-11-05 11:32:25 -0300 |
---|---|---|
committer | Esteban Carnevale <alfplayer@mailoo.org> | 2014-11-05 11:32:25 -0300 |
commit | 5dea1cb51b010830ecad0d4e2ba875eef9a6c4ba (patch) | |
tree | acbf8c08029a3ec32d4909539151a2eb7cb21135 | |
parent | 9a10cb46a74e404e57517bfda46ddd672e749bd3 (diff) |
abs-history: Add script
-rwxr-xr-x | abs-history | 134 |
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 |