packages/mediawiki-extensions: use fetchgit

This commit is contained in:
Øystein Tveit 2024-07-08 19:54:42 +02:00
parent d0f63b2fc8
commit 52b46667b1
6 changed files with 48 additions and 46 deletions

View File

@ -1,13 +1,14 @@
{ fetchzip }: { fetchgit }:
let let
commit = "c17c919bdb9b67bb69f80df43e9ee9d33b1ecf1b"; commit = "cad869fbd95637902673f744581b29e0f3e3f61a";
project-name = "UserMerge"; project-name = "DeleteBatch";
tracking-branch = "REL1_41"; tracking-branch = "REL1_41";
in in
fetchzip { (fetchgit {
name = "mediawiki-delete-batch"; name = "mediawiki-delete-batch-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}";
hash = "sha256-+mkzTCo8RVlGoFyfCrSb5YMh4J6Pbi1PZLFu5ps8bWY="; rev = "refs/heads/${tracking-branch}";
stripRoot = false; hash = "sha256-M1ek1WdO1/uTjeYlrk3Tz+nlb/fFZH+O0Ok7b10iKak=";
}).overrideAttrs (_: {
passthru = { inherit project-name tracking-branch; }; passthru = { inherit project-name tracking-branch; };
} })

View File

@ -1,13 +1,14 @@
{ fetchzip }: { fetchgit }:
let let
commit = "4111a57c34e25bde579cce5d14ea094021e450c8"; commit = "4111a57c34e25bde579cce5d14ea094021e450c8";
project-name = "PluggableAuth"; project-name = "PluggableAuth";
tracking-branch = "REL1_41"; tracking-branch = "REL1_41";
in in
fetchzip { (fetchgit {
name = "mediawiki-pluggable-auth-source"; 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="; hash = "sha256-aPtN8A9gDxLlq2+EloRZBO0DfHtE0E5kbV/adk82jvM=";
stripRoot = false; }).overrideAttrs (_: {
passthru = { inherit project-name tracking-branch; }; passthru = { inherit project-name tracking-branch; };
} })

View File

@ -1,13 +1,14 @@
{ fetchzip }: { fetchgit }:
let let
commit = "ecb47191fecd1e0dc4c9d8b90a9118e393d82c23"; commit = "ecb47191fecd1e0dc4c9d8b90a9118e393d82c23";
project-name = "SimpleSAMLphp"; project-name = "SimpleSAMLphp";
tracking-branch = "REL1_41"; tracking-branch = "REL1_41";
in in
fetchzip { (fetchgit {
name = "mediawiki-simple-saml-php-source"; 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="; hash = "sha256-gKu+O49XrAVt6hXdt36Ru7snjsKX6g2CYJ0kk/d+CI8=";
stripRoot = false; }).overrideAttrs (_: {
passthru = { inherit project-name tracking-branch; }; passthru = { inherit project-name tracking-branch; };
} })

View File

@ -1,5 +1,5 @@
#!/usr/bin/env nix-shell #!/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 import os
from pathlib import Path from pathlib import Path
@ -8,11 +8,13 @@ import subprocess
from collections import defaultdict from collections import defaultdict
from pprint import pprint from pprint import pprint
from dataclasses import dataclass from dataclasses import dataclass
import json
import bs4 import bs4
import requests 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 @dataclass
class PluginMetadata: 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: 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") soup = bs4.BeautifulSoup(content, features="html.parser")
a = soup.find('li').findChild('a') a = soup.find('li').findChild('a')
commit_sha = a['href'].split('/')[-1] commit_sha = a['href'].split('/')[-1]
return commit_sha 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( out, err = subprocess.Popen(
["nix-prefetch-url", "--unpack", "--type", "sha256", tar_gz_url], ["nix-prefetch-git", "--url", url, "--rev", commit, "--fetch-submodules", "--quiet"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
).communicate()
out, err = subprocess.Popen(
["nix", "hash", "to-sri", "--type", "sha256", out.decode().strip()],
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE stderr=subprocess.PIPE
).communicate() ).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: 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) metadata = get_metadata(file_content)
if metadata is None: if metadata is None:
print(f"ERROR: could not find metadata for {package_file}")
return return
if metadata.commit == "": if metadata.commit == "":
metadata.commit = "<none>" metadata.commit = "<none>"
new_commit = get_newest_commit(metadata.project_name, metadata.tracking_branch) new_commit = get_newest_commit(metadata.project_name, metadata.tracking_branch)
if new_commit == metadata.commit: new_hash = get_nix_hash(f"{BASE_GIT_URL}/{metadata.project_name}", new_commit)
return if new_hash is None or new_hash == "":
print(f"ERROR: could not fetch hash for {metadata.project_name}")
new_url = f"{BASE_URL}/{metadata.project_name}/+archive/{new_commit}.tar.gz" exit(1)
new_hash = get_nix_hash(new_url)
print(f"Updating {metadata.project_name}: {metadata.commit} -> {new_commit}") print(f"Updating {metadata.project_name}: {metadata.commit} -> {new_commit}")

View File

@ -1,13 +1,14 @@
{ fetchzip }: { fetchgit }:
let let
commit = "c17c919bdb9b67bb69f80df43e9ee9d33b1ecf1b"; commit = "c17c919bdb9b67bb69f80df43e9ee9d33b1ecf1b";
project-name = "UserMerge"; project-name = "UserMerge";
tracking-branch = "REL1_41"; tracking-branch = "REL1_41";
in in
fetchzip { (fetchgit {
name = "mediawiki-user-merge-source"; 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="; hash = "sha256-+mkzTCo8RVlGoFyfCrSb5YMh4J6Pbi1PZLFu5ps8bWY=";
stripRoot = false; }).overrideAttrs (_: {
passthru = { inherit project-name tracking-branch; }; passthru = { inherit project-name tracking-branch; };
} })

View File

@ -1,13 +1,14 @@
{ fetchzip }: { fetchgit }:
let let
commit = "170d19aad1f28dc6bd3f98ee277680cabba9db0c"; commit = "170d19aad1f28dc6bd3f98ee277680cabba9db0c";
project-name = "VisualEditor"; project-name = "VisualEditor";
tracking-branch = "REL1_41"; tracking-branch = "REL1_41";
in in
fetchzip { (fetchgit {
name = "mediawiki-visual-editor-source"; name = "mediawiki-visual-editor-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}";
hash = "sha256-Qg5AE1kQ+R4iNYyqzjrcOf3g6WnPSQcYow1tU0RwFk0="; rev = "refs/heads/${tracking-branch}";
stripRoot = false; hash = "sha256-5WVlO/OEk4eln5j/w4Tu/MXSmlvjIn7l6H+OTPaV+t4=";
}).overrideAttrs (_: {
passthru = { inherit project-name tracking-branch; }; passthru = { inherit project-name tracking-branch; };
} })