summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorXorg2019-01-11 14:46:08 +0100
committerXorg2019-01-11 14:46:08 +0100
commit4bfa0719aba031b9bb0a9eac7153a4847c1d5c28 (patch)
treee48f34e2b896722fdc3b6d43c8a2addf3cc2be2f
downloadaur-4bfa0719aba031b9bb0a9eac7153a4847c1d5c28.tar.gz
Initial commit
Note: this package replaces pacman-mirrorlist-rankmirrors-hook
-rw-r--r--.SRCINFO20
-rw-r--r--.gitignore8
-rw-r--r--PKGBUILD25
-rw-r--r--mirrorlist-rankmirrors-hook.install7
-rw-r--r--mirrorlist-rankmirrors.conf3
-rw-r--r--mirrorlist-rankmirrors.hook11
-rw-r--r--mirrorlist-rankmirrors.sh42
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