From a4fb5765c0fe8f6d03985d5375b09c0cd68903f2 Mon Sep 17 00:00:00 2001
From: Luke Shumaker <lukeshu@sbcglobal.net>
Date: Sun, 17 Apr 2016 13:49:03 -0400
Subject: switch up the naming schem for the import scripts

---
 db-import-archlinux-src | 124 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 124 insertions(+)
 create mode 100755 db-import-archlinux-src

(limited to 'db-import-archlinux-src')

diff --git a/db-import-archlinux-src b/db-import-archlinux-src
new file mode 100755
index 0000000..72171f1
--- /dev/null
+++ b/db-import-archlinux-src
@@ -0,0 +1,124 @@
+#!/bin/bash
+
+set -e
+
+FTP_BASE=/srv/repo/main
+ABSLIBRE=/srv/abslibre
+ABSGIT=/srv/git/abslibre/abslibre.git
+# Remote
+# ABSGIT=http://projects.parabolagnulinux.org/abslibre.git
+BLACKLIST=/home/repo/blacklist/blacklist.txt
+SYNCARGS='-mrtv --no-motd --delete-after --no-p --no-o --no-g --quiet'
+BLFILE=/tmp/blacklist.txt
+
+# Variables from abs.conf
+ABSROOT="/srv/abs/"
+# DON'T CHANGE. WE NEED IT FOR ABSLIBRE
+SYNCSERVER="rsync.archlinux.org"
+ARCH="i686"
+MIRRORLIST="/etc/pacman.d/mirrorlist"
+REPOS=(core extra community testing community-testing !staging !community-staging)
+
+# Steps
+# * Sync abs
+# * Download blacklist.txt
+# * Sync abslibre from abs excluding from blacklist
+# * Create repo.abs.tar.gz tarballs
+
+function sync_abs() {
+	for ARCH in any i686 x86_64; do
+		rsync ${SYNCARGS} ${SYNCSERVER}::abs/${ARCH}/ ${ABSROOT}/${ARCH} || return $?
+	done
+
+	# fix some permissions
+	find "${ABSROOT}" -type d -print0 | xargs -0 chmod 755
+	find "${ABSROOT}" -type f -print0 | xargs -0 chmod 644
+}
+
+function get_blacklist() {
+	printf ":: Updating blacklist...\t"
+	cat "${BLACKLIST}" | cut -d':' -f1 | sort -u | \
+		sed "s/^/**\//" > ${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() {
+
+	# Clone ABSLibre git repo
+	rm -rf /tmp/abslibre
+	git clone "$ABSGIT" /tmp/abslibre
+
+	# Sync from ABS and then sync from ABSLibre
+	printf ":: Syncing ABSLibre...\t"
+	(rsync ${SYNCARGS} --delete-excluded \
+		--exclude-from=${BLFILE} \
+		${ABSROOT} \
+		${ABSLIBRE} \
+		&&
+		for ARCH in i686 x86_64; do rsync -v -mrtq --no-motd --no-p --no-o --no-g --quiet --exclude=.git/ /tmp/abslibre/ ${ABSLIBRE}/${ARCH}/; done) || {
+		printf "[FAILED]\n"
+		return 1
+	}
+
+	# fix some permissions
+	find "${ABSLIBRE}" -type d -print0 | xargs -0 chmod 755
+	find "${ABSLIBRE}" -type f -print0 | xargs -0 chmod 644
+
+	printf "[OK]\n"
+}
+
+# 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
+		git gc
+		"
+}
+
+# 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 $FTP_BASE/$baserepo/os/$arch/
+		rm -fv $FTP_BASE/$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 -czf $FTP_BASE/$baserepo/os/$arch/$baserepo.abs.tar.gz \
+			-s ":${ABSLIBRE}/[a-z0-9_]\+/[a-z]\+::" \
+			$repo/* ${ABSLIBRE}/any/${baserepo}/*
+
+	done
+}
+
+sync_abs
+get_blacklist
+sync_abs_libre
+#sync_pre_mips64el
+create_tarballs
-- 
cgit v1.2.3-2-g168b