From 52b46667b1f03809a6f07e0121e1965fee123ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98ystein=20Tveit?= Date: Mon, 8 Jul 2024 19:54:42 +0200 Subject: [PATCH] packages/mediawiki-extensions: use fetchgit --- .../delete-batch/default.nix | 19 ++++++------ .../pluggable-auth/default.nix | 11 +++---- .../simple-saml-php/default.nix | 11 +++---- .../update-mediawiki-extensions.py | 29 +++++++++---------- .../user-merge/default.nix | 11 +++---- .../visual-editor/default.nix | 13 +++++---- 6 files changed, 48 insertions(+), 46 deletions(-) diff --git a/packages/mediawiki-extensions/delete-batch/default.nix b/packages/mediawiki-extensions/delete-batch/default.nix index 70ca275..4ed3b82 100644 --- a/packages/mediawiki-extensions/delete-batch/default.nix +++ b/packages/mediawiki-extensions/delete-batch/default.nix @@ -1,13 +1,14 @@ -{ fetchzip }: +{ fetchgit }: let - commit = "c17c919bdb9b67bb69f80df43e9ee9d33b1ecf1b"; - project-name = "UserMerge"; + commit = "cad869fbd95637902673f744581b29e0f3e3f61a"; + project-name = "DeleteBatch"; tracking-branch = "REL1_41"; in -fetchzip { - name = "mediawiki-delete-batch"; - url = "https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/${project-name}/+archive/${commit}.tar.gz"; - hash = "sha256-+mkzTCo8RVlGoFyfCrSb5YMh4J6Pbi1PZLFu5ps8bWY="; - stripRoot = false; +(fetchgit { + name = "mediawiki-delete-batch-source"; + url = "https://gerrit.wikimedia.org/r/mediawiki/extensions/${project-name}"; + rev = "refs/heads/${tracking-branch}"; + hash = "sha256-M1ek1WdO1/uTjeYlrk3Tz+nlb/fFZH+O0Ok7b10iKak="; +}).overrideAttrs (_: { passthru = { inherit project-name tracking-branch; }; -} +}) diff --git a/packages/mediawiki-extensions/pluggable-auth/default.nix b/packages/mediawiki-extensions/pluggable-auth/default.nix index 0e5ddb4..924e5f8 100644 --- a/packages/mediawiki-extensions/pluggable-auth/default.nix +++ b/packages/mediawiki-extensions/pluggable-auth/default.nix @@ -1,13 +1,14 @@ -{ fetchzip }: +{ fetchgit }: let commit = "4111a57c34e25bde579cce5d14ea094021e450c8"; project-name = "PluggableAuth"; tracking-branch = "REL1_41"; in -fetchzip { +(fetchgit { name = "mediawiki-pluggable-auth-source"; - url = "https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/${project-name}/+archive/${commit}.tar.gz"; + url = "https://gerrit.wikimedia.org/r/mediawiki/extensions/${project-name}"; + rev = "refs/heads/${tracking-branch}"; hash = "sha256-aPtN8A9gDxLlq2+EloRZBO0DfHtE0E5kbV/adk82jvM="; - stripRoot = false; +}).overrideAttrs (_: { passthru = { inherit project-name tracking-branch; }; -} +}) diff --git a/packages/mediawiki-extensions/simple-saml-php/default.nix b/packages/mediawiki-extensions/simple-saml-php/default.nix index 39ec8ac..28025e7 100644 --- a/packages/mediawiki-extensions/simple-saml-php/default.nix +++ b/packages/mediawiki-extensions/simple-saml-php/default.nix @@ -1,13 +1,14 @@ -{ fetchzip }: +{ fetchgit }: let commit = "ecb47191fecd1e0dc4c9d8b90a9118e393d82c23"; project-name = "SimpleSAMLphp"; tracking-branch = "REL1_41"; in -fetchzip { +(fetchgit { name = "mediawiki-simple-saml-php-source"; - url = "https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/${project-name}/+archive/${commit}.tar.gz"; + url = "https://gerrit.wikimedia.org/r/mediawiki/extensions/${project-name}"; + rev = "refs/heads/${tracking-branch}"; hash = "sha256-gKu+O49XrAVt6hXdt36Ru7snjsKX6g2CYJ0kk/d+CI8="; - stripRoot = false; +}).overrideAttrs (_: { passthru = { inherit project-name tracking-branch; }; -} +}) diff --git a/packages/mediawiki-extensions/update-mediawiki-extensions.py b/packages/mediawiki-extensions/update-mediawiki-extensions.py index c2eb748..b133ba1 100755 --- a/packages/mediawiki-extensions/update-mediawiki-extensions.py +++ b/packages/mediawiki-extensions/update-mediawiki-extensions.py @@ -1,5 +1,5 @@ #!/usr/bin/env nix-shell -#!nix-shell -i python3 -p "python3.withPackages(ps: with ps; [ beautifulsoup4 requests ])" +#!nix-shell -i python3 -p "python3.withPackages(ps: with ps; [ beautifulsoup4 requests ])" nix-prefetch-git import os from pathlib import Path @@ -8,11 +8,13 @@ import subprocess from collections import defaultdict from pprint import pprint from dataclasses import dataclass +import json import bs4 import requests -BASE_URL = "https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions" +BASE_WEB_URL = "https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions" +BASE_GIT_URL = "https://gerrit.wikimedia.org/r/mediawiki/extensions/" @dataclass class PluginMetadata: @@ -45,26 +47,21 @@ def get_metadata(file_content: str) -> dict[str,str] | None: def get_newest_commit(project_name: str, tracking_branch: str) -> str: - content = requests.get(f"{BASE_URL}/{project_name}/+log/refs/heads/{tracking_branch}/").text + content = requests.get(f"{BASE_WEB_URL}/{project_name}/+log/refs/heads/{tracking_branch}/").text soup = bs4.BeautifulSoup(content, features="html.parser") a = soup.find('li').findChild('a') commit_sha = a['href'].split('/')[-1] return commit_sha -def get_nix_hash(tar_gz_url: str) -> str: +def get_nix_hash(url: str, commit: str) -> str: out, err = subprocess.Popen( - ["nix-prefetch-url", "--unpack", "--type", "sha256", tar_gz_url], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE - ).communicate() - out, err = subprocess.Popen( - ["nix", "hash", "to-sri", "--type", "sha256", out.decode().strip()], + ["nix-prefetch-git", "--url", url, "--rev", commit, "--fetch-submodules", "--quiet"], stdout=subprocess.PIPE, stderr=subprocess.PIPE ).communicate() - return out.decode().strip() + return json.loads(out.decode().strip())['hash'] def set_commit_and_hash(file_content: str, commit: str, sha256: str) -> str: @@ -79,16 +76,16 @@ def update(package_file: Path) -> None: metadata = get_metadata(file_content) if metadata is None: + print(f"ERROR: could not find metadata for {package_file}") return if metadata.commit == "": metadata.commit = "" new_commit = get_newest_commit(metadata.project_name, metadata.tracking_branch) - if new_commit == metadata.commit: - return - - new_url = f"{BASE_URL}/{metadata.project_name}/+archive/{new_commit}.tar.gz" - new_hash = get_nix_hash(new_url) + new_hash = get_nix_hash(f"{BASE_GIT_URL}/{metadata.project_name}", new_commit) + if new_hash is None or new_hash == "": + print(f"ERROR: could not fetch hash for {metadata.project_name}") + exit(1) print(f"Updating {metadata.project_name}: {metadata.commit} -> {new_commit}") diff --git a/packages/mediawiki-extensions/user-merge/default.nix b/packages/mediawiki-extensions/user-merge/default.nix index f2816d0..7f7d390 100644 --- a/packages/mediawiki-extensions/user-merge/default.nix +++ b/packages/mediawiki-extensions/user-merge/default.nix @@ -1,13 +1,14 @@ -{ fetchzip }: +{ fetchgit }: let commit = "c17c919bdb9b67bb69f80df43e9ee9d33b1ecf1b"; project-name = "UserMerge"; tracking-branch = "REL1_41"; in -fetchzip { +(fetchgit { name = "mediawiki-user-merge-source"; - url = "https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/${project-name}/+archive/${commit}.tar.gz"; + url = "https://gerrit.wikimedia.org/r/mediawiki/extensions/${project-name}"; + rev = "refs/heads/${tracking-branch}"; hash = "sha256-+mkzTCo8RVlGoFyfCrSb5YMh4J6Pbi1PZLFu5ps8bWY="; - stripRoot = false; +}).overrideAttrs (_: { passthru = { inherit project-name tracking-branch; }; -} +}) diff --git a/packages/mediawiki-extensions/visual-editor/default.nix b/packages/mediawiki-extensions/visual-editor/default.nix index 5489a23..2210a71 100644 --- a/packages/mediawiki-extensions/visual-editor/default.nix +++ b/packages/mediawiki-extensions/visual-editor/default.nix @@ -1,13 +1,14 @@ -{ fetchzip }: +{ fetchgit }: let commit = "170d19aad1f28dc6bd3f98ee277680cabba9db0c"; project-name = "VisualEditor"; tracking-branch = "REL1_41"; in -fetchzip { +(fetchgit { name = "mediawiki-visual-editor-source"; - url = "https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/${project-name}/+archive/${commit}.tar.gz"; - hash = "sha256-Qg5AE1kQ+R4iNYyqzjrcOf3g6WnPSQcYow1tU0RwFk0="; - stripRoot = false; + url = "https://gerrit.wikimedia.org/r/mediawiki/extensions/${project-name}"; + rev = "refs/heads/${tracking-branch}"; + hash = "sha256-5WVlO/OEk4eln5j/w4Tu/MXSmlvjIn7l6H+OTPaV+t4="; +}).overrideAttrs (_: { passthru = { inherit project-name tracking-branch; }; -} +})