]> Cypherpunks repositories - bass.git/commitdiff
Use an improved meta4ra
authorSergey Matveev <stargrave@stargrave.org>
Mon, 16 Feb 2026 20:45:09 +0000 (23:45 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Tue, 17 Feb 2026 07:50:32 +0000 (10:50 +0300)
Ability to sort download URLs, multiple attempts to download.

13 files changed:
build/distfiles/.gitignore
build/distfiles/default.rc
build/distfiles/gcc-4-compile-with-gcc-5.patch.do
build/distfiles/meta4ra-0.12.0.tar.zst.meta4 [deleted file]
build/distfiles/meta4ra-1.0.0.tar.zst.meta4 [new file with mode: 0644]
build/lib/pkg-inst
build/skel/sysutils/meta4ra-1.0.0.do [moved from build/skel/sysutils/meta4ra-0.12.0.do with 100% similarity]
contrib/prepare-deps/link-from-distfiles
contrib/prepare-deps/steps/080-meta4ra-0.12.0.dl [deleted file]
contrib/prepare-deps/steps/080-meta4ra-1.0.0 [moved from contrib/prepare-deps/steps/080-meta4ra-0.12.0 with 100% similarity]
contrib/prepare-deps/steps/080-meta4ra-1.0.0.dl [new file with mode: 0644]
doc/Build/Distfiles
lib/rc

index 048ee60779651359b710ef4a68100c1f526c87d43dc3a71b75b26d134fedc0c1..24426e4812b595397aa7966a1e1f8a21450abced4ee212e856a177205af906e3 100644 (file)
 /meson-0.56.0.tar.gz
 /meson-0.63.3.tar.gz
 /meson-1.7.2.tar.gz
-/meta4ra-0.12.0.tar.zst
+/meta4ra-1.0.0.tar.zst
 /MIME-Base32-1.303.tar.gz
 /mkvtoolnix-58.0.0.tar.xz
 /mod_tile-v0.7.0-58-gc3453bc.tar.zst
index a586bcfda27a36747d6ed7f1577c7b35026920e5342e1df45fbe75afda8aeb34..f1af5239883775446ba6fe9beccfd12e4a11221cd5a7656b27f5be6be58f1c1a 100644 (file)
@@ -1,29 +1,41 @@
 if [ -r predownloaded/$1 ] ; then
     echo Using predownloaded/$1... >&2
-    meta4ra-check -hashes "$META4RA_HASHES" -meta4 $1.meta4 predownloaded/$1 >&2
+    meta4ra-check -hashes "$META4RA_HASHES" $1.meta4 predownloaded/$1 >&2
     ln predownloaded/$1 $3
     exit 0
 fi
 
 if [ -e $1.meta4 ] ; then
-    if [ "$META4_FETCHER" = "meta4ra-check" ] ; then
-        meta4ra-check -progress -dl 0 \
-            -hashes "$META4RA_HASHES" \
-            -meta4 $1.meta4 $(basename $1)
-        exit
-    fi
     meta4=$(realpath $1.meta4)
-    tmp=$(mktemp -d ${TMPDIR:-/tmp}/$(basename $1).XXXXXX)
+    fn=$(basename $1)
+    tmp=$(mktemp -d ${TMPDIR:-/tmp}/$fn.XXXXXX)
     trap "rm -fr $tmp" HUP PIPE INT QUIT TERM EXIT
     cd $tmp
     case "$META4_FETCHER" in
+    meta4ra)
+        size=$(meta4ra-list -size $meta4 $fn)
+        meta4ra-list $meta4 $fn |
+        meta4ra-url-sort ${META4RA_CC_SORT:-"" rand} |
+        while read url ; do
+            echo "trying ${url}..." >&2
+            meta4ra-dl -progress -size $size "$url" |
+            meta4ra-check -pipe -hashes "$META4RA_HASHES" \
+                $meta4 $fn >$fn || {
+                    rm $fn
+                    continue
+                }
+            break
+        done
+        [ -s $fn ]
+        cat $fn
+        ;;
     wget)
         wget --input-metalink=$meta4 >&2
-        cat "$(basename $1).meta4.#1"
+        cat "$fn.meta4.#1"
         ;;
     aria2c)
         aria2c $meta4 >&2
-        cat $(basename $1)
+        cat $fn
         ;;
     *)
         echo Unknown \$META4_FETCHER >&2
index b67c19537ec5e6187d689398f8eea28c24636444c9d961c4cc92a299db6f08cb..5d508ad7f06dcb28987aeab4bb8f9361e93e11e489eda363121a6263eadcb1ce 100644 (file)
@@ -3,4 +3,4 @@ sname=$1.do . "$BASS_ROOT"/lib/rc
 [ -d guix.git ] || git clone --depth 1 --bare https://git.savannah.gnu.org/git/guix.git >&2
 p=gnu/packages/patches/gcc-4-compile-with-gcc-5.patch
 ( cd guix.git ; git archive @ $p | tar xfO - $p ) >$3
-meta4ra-check -pipe -meta4 $1.meta4 $1 <$3 >/dev/null
+meta4ra-check -pipe $1.meta4 $1 <$3 >/dev/null
diff --git a/build/distfiles/meta4ra-0.12.0.tar.zst.meta4 b/build/distfiles/meta4ra-0.12.0.tar.zst.meta4
deleted file mode 100644 (file)
index fa4c623..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<metalink xmlns="urn:ietf:params:xml:ns:metalink">
-  <file name="meta4ra-0.12.0.tar.zst">
-    <hash type="blake3-256">dcab22303e5c0249fcf96dc6d1e65d73bf0464bbd5066ca664e4406dbdbc2979</hash>
-    <hash type="blake2b-512">862fe656eccf2e86c315cb9fecbf54230094c33a537f77f450c2a72f0859f899797ec29c671ab1400b0d0b34e87fcae1c2cac8a449963a18f0e6d8856419ff58</hash>
-    <hash type="blake2b-256">85a627ff1318ec4f0c53e1284580d936cf24b2376e610b2b801ebec80f340ff8</hash>
-    <hash type="skein-512">cf08226b770efc2079e7dd51445105bafe718ee489c8977cba8cc9da185798912143f1643957c28ec7a6ccb30d81ef15f46f1f351bd47801b4d969ee0d314d06</hash>
-    <hash type="shake128">9f1518066798b619ab414794ef83ae067e202aed1c6edac4c09feac5d0beccff</hash>
-    <hash type="shake256">196b89801ab1a1227e1bc5a664316575d08e63edaf44eab38759a4b55edb9ebbd371103b23b3a6be43f776555e0431a2ca79f09eac102e783ad544009e7b7704</hash>
-    <hash type="sha-512">f649872a08f0755fb37357a4833282415b1656499bedf4769a1fa4cbca163602440eadf07bba2e79d10aa84cf147a3dc309c232591865e5a4505e828f256edb9</hash>
-    <hash type="sha-256">7cde0a60066c96e0abe9271189308a02f227f4412161c7856c54e1af8c5688a3</hash>
-    <hash type="streebog-512">3303b4adba1bb11aca9ca823cf0a1a68d101b6854229f7b51c48df1bc00b9ded01b9c457689b13673786cc979576ec36dcca70f97e2e36e3a485e7f14d121395</hash>
-    <hash type="streebog-256">b882b762d7a706067257b6c2b2617d8ea9d576e56229868d12387c5912562aed</hash>
-    <hash type="xxh3-128">30f976a41cce7924a540f028b351d7b0</hash>
-    <signature mediatype="application/ssh-signature"><![CDATA[
------BEGIN SSH SIGNATURE-----
-U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAghQxyOlPm7DilJhOJz1KoUGtVbH
-BWX/nRiWzQembxCXUAAAAEZmlsZQAAAAAAAAAGc2hhNTEyAAAAUwAAAAtzc2gtZWQyNTUx
-OQAAAEDNP48+sEsgXiBBx2QahVbSwBI3ISy6D+/4h3clZBPJpMXAs/7XQ+DvoAWDVZ1adt
-1C6A65TEEzBrhrfVhkvcoE
------END SSH SIGNATURE-----
-]]></signature>
-    <size>473733</size>
-    <url priority="1" location="ru">http://www.meta4ra.stargrave.org/download/meta4ra-0.12.0.tar.zst</url>
-    <url priority="2" location="ru">https://www.meta4ra.stargrave.org/download/meta4ra-0.12.0.tar.zst</url>
-    <url>http://y.www.meta4ra.stargrave.org/download/meta4ra-0.12.0.tar.zst</url>
-  </file>
-</metalink>
diff --git a/build/distfiles/meta4ra-1.0.0.tar.zst.meta4 b/build/distfiles/meta4ra-1.0.0.tar.zst.meta4
new file mode 100644 (file)
index 0000000..65c5afd
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metalink xmlns="urn:ietf:params:xml:ns:metalink">
+  <file name="meta4ra-1.0.0.tar.zst">
+    <hash type="blake3-256">e8fc1dada0274b29acfcc0c3301422597acc92a429f2b8ab3ab6ffb0bd88d940</hash>
+    <hash type="blake2b-512">6e7cdfe61ebaa68e88cc9a59c40ab6798a8e524a419378af65c4691dd9885bb9cfe88efdfed0ab04d6a5626568aa594f2cc42f112af066606f0554b94b57d026</hash>
+    <hash type="blake2b-256">3fe8e06e7669924f739e5b6ef277f11d53745ce8d9c1c1c2af9a515b67247e58</hash>
+    <hash type="skein-512">e0ee9c62aa930b7934aa67101e7340e09721a4217551eda97a917edb5f7f313b1f82261c79dcb52a05c6e8ffa6c0e13f94ac33338dfee7e8d3935ead10f9393e</hash>
+    <hash type="shake128">37ebbfe18e330eac62f8759e31ad85c6c390cb663e4660f41af91bf79e06acb3</hash>
+    <hash type="shake256">d514e2b1bd820f52da029339f7490f6d253723f5469c5c84b3c31520c53ff63937c6987d4e27e74233c5815185f815072cbd2526015c4598a18c8f8e4f4a82e3</hash>
+    <hash type="sha-512">d24ae8d46528d0965afc3e82d5af445ba8994ebf1a17fd00a78d8a5cd51e64a6524b2f53681cd14793e2146fba890be191015ca94e309257c1317cebb02c5088</hash>
+    <hash type="sha-256">976444891ca30bce9779f2667a75a6ba86b377ada3d91e4cdce642db23f5a731</hash>
+    <hash type="streebog-512">847f24c7e866af8ebabd294486051535e2a83ce8ab12f2b0f5af2e0a9a60fae22f4ec22014e16d8d2695964dfd1bb765f233bd73d27784e0f52124f2400f47eb</hash>
+    <hash type="streebog-256">fa3a391637444b96f3dbae2d453aedcc6d5fc3e4e14d6592733d581a9557a6a9</hash>
+    <hash type="xxh3-128">49f69d0caae0b4001ce423e8e444d9ab</hash>
+    <signature mediatype="application/ssh-signature"><![CDATA[
+-----BEGIN SSH SIGNATURE-----
+U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAghQxyOlPm7DilJhOJz1KoUGtVbH
+BWX/nRiWzQembxCXUAAAAEZmlsZQAAAAAAAAAGc2hhNTEyAAAAUwAAAAtzc2gtZWQyNTUx
+OQAAAEDLZP3Tzbvlznxjrt27XXIgJp0B7C1JE5B/nmqM+A6wdHqUnSVgM989L9NeN3Swz0
+BtO3+4QQ5vYGF24whSuYkC
+-----END SSH SIGNATURE-----
+]]></signature>
+    <size>476243</size>
+    <url priority="1" location="ru">http://www.meta4ra.stargrave.org/download/meta4ra-1.0.0.tar.zst</url>
+    <url priority="2" location="ru">https://www.meta4ra.stargrave.org/download/meta4ra-1.0.0.tar.zst</url>
+    <url>http://y.www.meta4ra.stargrave.org/download/meta4ra-1.0.0.tar.zst</url>
+  </file>
+</metalink>
index 70094c5c332ce2eb9cbc1626131098330aab6a3da0465e56a030450a3d91536c..74e98335817377be4d69962cc696d4c16f4d2dc6949d7d533e9ca899d3724ffd 100755 (executable)
@@ -45,7 +45,7 @@ else
     if command -v meta4ra-check >/dev/null ; then
         $TAR xf $skelpkg bin.meta4
         $TAR xfO $skelpkg bin | {
-            meta4ra-check -hashes "$META4RA_HASHES" -pipe -meta4 bin.meta4 $NAMENHASH ||
+            meta4ra-check -hashes "$META4RA_HASHES" -pipe bin.meta4 $NAMENHASH ||
             touch untar-failed
         } | $TAR xf - || touch untar-failed
     else
index 9813898c73a440ac5b64f28a42e08bffb358cd4c8172a6d4373bcc0c3318e92b..78410bdfc6b0239c703b2ad1ff0a1992d94dc4e25d6f0006f49207e5e0c09999 100755 (executable)
@@ -9,5 +9,5 @@ ln -f ../../../build/distfiles/go1.23.5.tar.gz go1.23.5.src.tar.gz
 ln -f ../../../build/distfiles/go1.25.6.tar.gz go1.25.6.src.tar.gz
 ln -f ../../../build/distfiles/go1.26.0.tar.gz go1.26.0.src.tar.gz
 ln -f ../../../build/distfiles/goredo-2.9.1.tar.zst
-ln -f ../../../build/distfiles/meta4ra-0.12.0.tar.zst
+ln -f ../../../build/distfiles/meta4ra-1.0.0.tar.zst
 ln -f ../../../build/distfiles/zstd-1.5.7.tar.gz
diff --git a/contrib/prepare-deps/steps/080-meta4ra-0.12.0.dl b/contrib/prepare-deps/steps/080-meta4ra-0.12.0.dl
deleted file mode 100644 (file)
index 194e1a7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-dodl http://www.meta4ra.stargrave.org/download/$name.tar.zst $name.tar.zst f649872a08f0755fb37357a4833282415b1656499bedf4769a1fa4cbca163602440eadf07bba2e79d10aa84cf147a3dc309c232591865e5a4505e828f256edb9
diff --git a/contrib/prepare-deps/steps/080-meta4ra-1.0.0.dl b/contrib/prepare-deps/steps/080-meta4ra-1.0.0.dl
new file mode 100644 (file)
index 0000000..7ab03ea
--- /dev/null
@@ -0,0 +1 @@
+dodl http://www.meta4ra.stargrave.org/download/$name.tar.zst $name.tar.zst d24ae8d46528d0965afc3e82d5af445ba8994ebf1a17fd00a78d8a5cd51e64a6524b2f53681cd14793e2146fba890be191015ca94e309257c1317cebb02c5088
index 3963f1046d6ac28ed76b74e66f46c9730a7cb40c0268f581ca73487f0130bd34..b355317545cb9c6ecdfaa883c359533b30e3c96708d2b3a5b1de2ebee9a59344 100644 (file)
@@ -26,10 +26,10 @@ target. An archive with all of them can be created with
 
 .meta4 files can be processed by either of three programs:
 
-* $META4_FETCHER=meta4ra-check
-  Use "meta4ra-check -dl 0" command to download the first URL. This is
-  by default, because meta4ra utilities are anyway installed already. It
-  won't try to download other URLs, unlike other fetch options there!
+* $META4_FETCHER=meta4ra
+  Use "meta4ra-url-sort ${META4RA_CC_SORT:-"" rand} | meta4ra-dl"
+  command to download the randomised URL, preferring location-less URL.
+  This is by default, because meta4ra utilities are anyway installed already.
 
 * $META4_FETCHER=wget
   Use wget compiled with --with-metalink option. The only drawback is
diff --git a/lib/rc b/lib/rc
index e49bc092888a74cf4a1628811460b583f6e9964b2fbc915a0d2cab6296005c0e..bf9598a6d7cbe156c92e05a5bafedfcc963621c3e099ce02f2e1d84d4fa7b8b3 100644 (file)
--- a/lib/rc
+++ b/lib/rc
@@ -32,8 +32,8 @@ COMPRESSOR=${COMPRESSOR:-zstdmt}
 export TMPDIR=${TMPDIR:-/tmp}
 MAKE_JOBS=${MAKE_JOBS:-$(nproc)}
 
-# Program to use for downloading .meta4 files: "meta4ra-check", "wget", "aria2c".
-export META4_FETCHER="${META4_FETCHER:-meta4ra-check}"
+# Program to use for downloading .meta4 files: "meta4ra", "wget", "aria2c".
+export META4_FETCHER="${META4_FETCHER:-meta4ra}"
 
 if command -v fetch >/dev/null 2>/dev/null ; then
     JUSTDL="fetch -o"