diff options
author | Xorg | 2019-01-11 14:46:08 +0100 |
---|---|---|
committer | Xorg | 2019-01-11 14:46:08 +0100 |
commit | 4bfa0719aba031b9bb0a9eac7153a4847c1d5c28 (patch) | |
tree | e48f34e2b896722fdc3b6d43c8a2addf3cc2be2f | |
download | aur-4bfa0719aba031b9bb0a9eac7153a4847c1d5c28.tar.gz |
Initial commit
Note: this package replaces pacman-mirrorlist-rankmirrors-hook
-rw-r--r-- | .SRCINFO | 20 | ||||
-rw-r--r-- | .gitignore | 8 | ||||
-rw-r--r-- | PKGBUILD | 25 | ||||
-rw-r--r-- | mirrorlist-rankmirrors-hook.install | 7 | ||||
-rw-r--r-- | mirrorlist-rankmirrors.conf | 3 | ||||
-rw-r--r-- | mirrorlist-rankmirrors.hook | 11 | ||||
-rw-r--r-- | mirrorlist-rankmirrors.sh | 42 |
7 files changed, 116 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..d3db38cc1eda --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,20 @@ +pkgbase = mirrorlist-rankmirrors-hook + pkgdesc = Pacman hook to automatically rank new mirrors + pkgver = 1 + pkgrel = 1 + install = mirrorlist-rankmirrors-hook.install + arch = any + depends = pacman-contrib + depends = pacman-mirrorlist + conflicts = pacman-mirrorlist-rankmirrors-hook + replaces = pacman-mirrorlist-rankmirrors-hook + backup = etc/pacman.d/mirrorlist-rankmirrors.conf + source = mirrorlist-rankmirrors.sh + source = mirrorlist-rankmirrors.conf + source = mirrorlist-rankmirrors.hook + sha512sums = be000ecfe1964fbf2b15cdceede285a3de12f4caa9bfb58666453b58f592205d20666a2d43849390e2d03b9d03bd192447be0da4b221780c81423f10b4e73578 + sha512sums = 1ed343d832ef68e4ca839a73e0bb2abd13f95e13aab18398c1fe13450f46315686e40634c3c7dddfeed8eb83e1ca5d48c60c9f0615ab58a51005c753b945ae58 + sha512sums = 83a8ace99403296572e695ca992182195d5a983042773e00d506129d6e8cf38456f3d19b1e7e8b8c897c5d6ca8a465b627e8014108001d05005f3ad0b2d473e4 + +pkgname = mirrorlist-rankmirrors-hook + diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..ed10d2dce09a --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +* +!.gitignore +!.SRCINFO +!PKGBUILD +!mirrorlist-rankmirrors.conf +!mirrorlist-rankmirrors.hook +!mirrorlist-rankmirrors-hook.install +!mirrorlist-rankmirrors.sh diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..0e780686e4a5 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,25 @@ +# Maintainer: X0rg +# Contributor: u8sand (https://gist.github.com/u8sand/c2ed7dfbf6e4e781f532daf5aab141cb) + +pkgname='mirrorlist-rankmirrors-hook' +pkgver=1 +pkgrel=1 +pkgdesc='Pacman hook to automatically rank new mirrors' +arch=('any') +depends=('pacman-contrib' 'pacman-mirrorlist') +conflicts=('pacman-mirrorlist-rankmirrors-hook') +replaces=('pacman-mirrorlist-rankmirrors-hook') +backup=('etc/pacman.d/mirrorlist-rankmirrors.conf') +install="$pkgname.install" +source=('mirrorlist-rankmirrors.sh' + 'mirrorlist-rankmirrors.conf' + 'mirrorlist-rankmirrors.hook') +sha512sums=('be000ecfe1964fbf2b15cdceede285a3de12f4caa9bfb58666453b58f592205d20666a2d43849390e2d03b9d03bd192447be0da4b221780c81423f10b4e73578' + '1ed343d832ef68e4ca839a73e0bb2abd13f95e13aab18398c1fe13450f46315686e40634c3c7dddfeed8eb83e1ca5d48c60c9f0615ab58a51005c753b945ae58' + '83a8ace99403296572e695ca992182195d5a983042773e00d506129d6e8cf38456f3d19b1e7e8b8c897c5d6ca8a465b627e8014108001d05005f3ad0b2d473e4') + +package() { + install -Dvm755 "$srcdir/mirrorlist-rankmirrors.sh" "$pkgdir/usr/share/libalpm/scripts/mirrorlist-rankmirrors" + install -Dvm644 "$srcdir/mirrorlist-rankmirrors.conf" "$pkgdir/etc/pacman.d/mirrorlist-rankmirrors.conf" + install -Dvm644 "$srcdir/mirrorlist-rankmirrors.hook" "$pkgdir/usr/share/libalpm/hooks/mirrorlist-rankmirrors.hook" +} diff --git a/mirrorlist-rankmirrors-hook.install b/mirrorlist-rankmirrors-hook.install new file mode 100644 index 000000000000..5694b7975819 --- /dev/null +++ b/mirrorlist-rankmirrors-hook.install @@ -0,0 +1,7 @@ +post_install() { + if [ -f "/etc/pacman.d/mirrorlist-rankmirrors.conf.pacsave" ]; then + mv -v "/etc/pacman.d/mirrorlist-rankmirrors.conf.pacsave" "/etc/pacman.d/mirrorlist-rankmirrors.conf" + else + echo -e "\033[1;34mInfo:\033[0m you need to configure \033[1m/etc/pacman.d/mirrorlist-rankmirrors.conf\033[0m file." + fi +} diff --git a/mirrorlist-rankmirrors.conf b/mirrorlist-rankmirrors.conf new file mode 100644 index 000000000000..c3c818a31089 --- /dev/null +++ b/mirrorlist-rankmirrors.conf @@ -0,0 +1,3 @@ +# You can use 'grep "##" /etc/pacman.d/mirrorlist.pacnew' to get a list of countries + +COUNTRY= diff --git a/mirrorlist-rankmirrors.hook b/mirrorlist-rankmirrors.hook new file mode 100644 index 000000000000..32a3cc19bb71 --- /dev/null +++ b/mirrorlist-rankmirrors.hook @@ -0,0 +1,11 @@ +[Trigger] +Type = Package +Operation = Install +Operation = Upgrade +Target = pacman-mirrorlist + +[Action] +Depends = pacman-contrib +Description = Ranking mirrorlist... +When = PostTransaction +Exec = /usr/share/libalpm/scripts/mirrorlist-rankmirrors diff --git a/mirrorlist-rankmirrors.sh b/mirrorlist-rankmirrors.sh new file mode 100644 index 000000000000..7f1db8e7b368 --- /dev/null +++ b/mirrorlist-rankmirrors.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +CONFIG_FILE="/etc/pacman.d/mirrorlist-rankmirrors.conf" +MIRRORLIST="/etc/pacman.d/mirrorlist" +TMP_FILE="/tmp/mirrorlist" + +if [ "$(id -u)" != 0 ]; then + echo "error: you cannot perform this operation unless you are root." + exit 1 +fi + +# shellcheck source=/etc/pacman.d/mirrorlist-rankmirrors.conf +. "$CONFIG_FILE" +if [ -z "$COUNTRY" ]; then + echo "error: file $CONFIG_FILE is not configured." + exit 2 +fi + +[ -f "$MIRRORLIST.pacnew" ] && file="$MIRRORLIST.pacnew" || file="$MIRRORLIST" +if [ ! -f "$file" ]; then + echo "error: file $file doesn't exist." + exit 3 +fi + +if grep -q "# Server list generated by rankmirrors" "$file"; then + echo "==> There is nothing to do, file $file has already been processed." + exit 0 +fi + +awk '/^## '"$COUNTRY"'/{f=1}f==0{next}/^$/{exit}{print substr($0, 2)}' "$file" > "$TMP_FILE" +if [ -s "$TMP_FILE" ]; then + echo "==> rankmirrors $file" + rankmirrors "$TMP_FILE" | tee "$MIRRORLIST" && rm "$TMP_FILE" + if [ -f "$MIRRORLIST.pacnew" ]; then + rm "$MIRRORLIST.pacnew" + fi + count=$(grep -c -v "#" "$MIRRORLIST") + echo "==> Finished: $count mirrors ranked" +else + echo "error: there is no mirror for country $COUNTRY." + exit 4 +fi |