Procházet zdrojové kódy

make build reproducible: uppkg -> 1.27.0-3

Noah Vogt před 1 rokem
rodič
revize
2e4276878a
2 změnil soubory, kde provedl 23 přidání a 21 odebrání
  1. 1 5
      .SRCINFO
  2. 22 16
      PKGBUILD

+ 1 - 5
.SRCINFO

@@ -1,18 +1,14 @@
 pkgbase = chromium-extension-clearurls
 	pkgdesc = a chromium extension to automatically remove tracking elements from URLs to help protect your privacy
 	pkgver = 1.27.0
-	pkgrel = 2
+	pkgrel = 3
 	url = https://gitlab.com/ClearURLs/ClearUrls
 	arch = any
 	license = LGPL3
 	makedepends = git
-	makedepends = zip
-	makedepends = unzip
 	makedepends = jq
 	makedepends = openssl
 	depends = chromium
-	provides = chromium-extension-clearurls
-	conflicts = chromium-extension-clearurls
 	source = git+https://gitlab.com/ClearURLs/ClearUrls.git#commit=14a0832973e137f0cbbbb1e9110c1286bc88e319
 	source = clearurls.pem
 	sha256sums = SKIP

+ 22 - 16
PKGBUILD

@@ -1,51 +1,57 @@
 # Maintainer: Noah Vogt (noahvogt) <noah@noahvogt.com>
+# private key generated with `openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -traditional`
 
-pkgname='chromium-extension-clearurls'
 _extension='clearurls'
+pkgname="chromium-extension-$_extension"
 pkgver=1.27.0
-pkgrel=2
+pkgrel=3
 pkgdesc="a chromium extension to automatically remove tracking elements from URLs to help protect your privacy"
 license=('LGPL3')
 arch=('any')
 url="https://gitlab.com/ClearURLs/ClearUrls"
 depends=('chromium')
-makedepends=('git' 'zip' 'unzip' 'jq' 'openssl')
+makedepends=('git' 'jq' 'openssl')
 _commit="14a0832973e137f0cbbbb1e9110c1286bc88e319"
 source=("git+https://gitlab.com/ClearURLs/ClearUrls.git#commit=$_commit"
-        "clearurls.pem")
+        "$_extension.pem")
 sha256sums=('SKIP'
             '81e2b3fc4c621493c9c3e7625064b0ec5cb8e0dc64d8715ffd10c46de0a419d8')
-provides=('chromium-extension-clearurls')
-conflicts=('chromium-extension-clearurls')
 
 build() {
+    # prepare source directory (while retaining reproducibility)
+    mkdir -p "$pkgname-$pkgver"
     cd ClearUrls
-    zip ../ClearURLs.zip -r -FS clearurls.js browser-polyfill.js manifest.json img/* external_js/* html/* core_js/* css/* fonts/* _locales/*
+    cp -r clearurls.js browser-polyfill.js manifest.json img/ external_js/ html/ core_js/ css/ fonts/ _locales/ ../"$pkgname-$pkgver"
     cd ..
+    find "$pkgname-$pkgver" -exec touch -t 202403120000 {} +
 
-    unzip -d "$pkgname-$pkgver" "ClearURLs.zip"
-    cd "$pkgname-$pkgver"
-
+    # derive variables from private key
     pubkey="$(openssl rsa -in "$srcdir/$_extension.pem" -pubout -outform DER |base64 -w0)"
-    # create extension json
     export _id="$(echo $pubkey |base64 -d |sha256sum |head -c32 |tr '0-9a-f' 'a-p')"
+
+    # create extension json
+    _extver="$(jq -r '.version' "$pkgname-$pkgver/manifest.json")"
     echo "extenson id should be: $_id"
-    cat << EOF > "$_id".json
+    cat << EOF > "$srcdir/$_id".json
 {
     "external_crx": "/usr/lib/$pkgname/$pkgname-$pkgver.crx",
-    "external_version": "$pkgver"
+    "external_version": "$_extver"
 }
 EOF
+
+    # enroll public key in manifest
     cd "$srcdir/$pkgname-$pkgver"
     jq --ascii-output --arg key "$pubkey" '. + {key: $key}' manifest.json > manifest.json.new
     mv manifest.json.new manifest.json
-    cd "$srcdir"
+    touch -t 202403120000 manifest.json
+    cd ..
+
+    # pack extension
     tmpdir="$(mktemp -d chromium-pack-XXXXXX)"
     chromium --user-data-dir="$tmpdir" --pack-extension="$pkgname-$pkgver" --pack-extension-key="$_extension.pem"
-    #mv "src_edge_chrome_manifest_v3.crx" "$pkgname-$pkgver.crx"
 }
 
 package() {
-    install -Dm644 -t "$pkgdir/usr/share/chromium/extensions/" "$srcdir/$pkgname-$pkgver/$_id.json"
+    install -Dm644 -t "$pkgdir/usr/share/chromium/extensions/" "$_id.json"
     install -Dm644 -t "$pkgdir/usr/lib/$pkgname/" "$pkgname-$pkgver.crx"
 }