Compare commits

..

3 Commits

Author SHA1 Message Date
Øystein Tveit 1591fdb7cc bekkalokk/mediawiki: re-enable DeleteBatch extension 2024-07-08 19:56:43 +02:00
Øystein Tveit ed28ba28f3 bekkalokk/mediawiki: leave togglable debug flags for future use 2024-07-08 19:55:52 +02:00
Øystein Tveit 52b46667b1 packages/mediawiki-extensions: use fetchgit 2024-07-08 19:54:42 +02:00
7 changed files with 53 additions and 49 deletions

View File

@ -86,8 +86,7 @@ in {
}; };
extensions = { extensions = {
#inherit (pkgs.mediawiki-extensions) DeleteBatch UserMerge PluggableAuth SimpleSAMLphp VisualEditor; inherit (pkgs.mediawiki-extensions) DeleteBatch UserMerge PluggableAuth SimpleSAMLphp VisualEditor;
inherit (pkgs.mediawiki-extensions) UserMerge PluggableAuth SimpleSAMLphp VisualEditor;
}; };
extraConfig = '' extraConfig = ''
@ -121,7 +120,6 @@ in {
# Misc # Misc
$wgEmergencyContact = "${cfg.passwordSender}"; $wgEmergencyContact = "${cfg.passwordSender}";
$wgShowIPinHeader = false;
$wgUseTeX = false; $wgUseTeX = false;
$wgLocalInterwiki = $wgSitename; $wgLocalInterwiki = $wgSitename;
@ -137,6 +135,10 @@ in {
] ]
]; ];
# Debugging
$wgShowExceptionDetails = false;
$wgShowIPinHeader = false;
# Fix https://github.com/NixOS/nixpkgs/issues/183097 # Fix https://github.com/NixOS/nixpkgs/issues/183097
$wgDBserver = "${toString cfg.database.host}"; $wgDBserver = "${toString cfg.database.host}";
''; '';

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; };
} })