From 361b7ab97c78cdff8daf0052d7eff0da418c9906 Mon Sep 17 00:00:00 2001 From: sadlerm4 Date: Sun, 5 Jan 2025 05:23:07 +1100 Subject: [PATCH] feat: andax (#2874) cherry picks @38414e6 @aa21bc8 @3566e7e --- andax/bump_extras.rhai | 22 ++++++++++++++++++++++ andax/ci/extra_repos.rhai | 26 ++++++++++++++++++++++++++ andax/get_proj_label.rhai | 2 ++ 3 files changed, 50 insertions(+) create mode 100644 andax/bump_extras.rhai create mode 100644 andax/ci/extra_repos.rhai create mode 100644 andax/get_proj_label.rhai diff --git a/andax/bump_extras.rhai b/andax/bump_extras.rhai new file mode 100644 index 0000000000..c7c21db7b4 --- /dev/null +++ b/andax/bump_extras.rhai @@ -0,0 +1,22 @@ +fn as_bodhi_ver(branch) { + if branch.starts_with("el") { + branch.crop(2); + if branch == "10" { + return "EPEL-10.0"; + } + return `EPEL-${release}`; + } else if branch == "frawhide" { + return "42"; + } else if branch.starts_with("f") { + branch.crop(1); + return branch; + } else { + print(`E: unsupported branch: ${labels.branch}`); + terminate(); + } +} + +fn bodhi(pkg, branch) { + let url = `https://bodhi.fedoraproject.org/updates/?search=${pkg}&status=stable&releases=${branch}&rows_per_page=1&page=1`; + return find(`^${pkg}-([\d.]+)-\d+\.[\w\d]+$`, get(url).json().updates[0].title, 1); +} diff --git a/andax/ci/extra_repos.rhai b/andax/ci/extra_repos.rhai new file mode 100644 index 0000000000..8fc353a502 --- /dev/null +++ b/andax/ci/extra_repos.rhai @@ -0,0 +1,26 @@ +import "anda::cfg" as cfg; + +fn install(labels) { + if labels.script_path == () { + print("fatal: labels.script_path is empty"); + terminate(); + } + let releasever = sh("rpm -E '%fedora'", #{"stdout": "piped"}).ctx.stdout; + releasever.trim(); + let basearch = sh("rpm -E '%_arch'", #{"stdout": "piped"}).ctx.stdout; + basearch.trim(); + let hcl = cfg::load_file(sub(`(.+/)[^.]+\.rhai`, "${1}anda.hcl", labels.script_path)); + for repo in hcl.project.pkg.rpm.extra_repos { + repo = sub(`\$releasever`, releasever, repo); + repo = sub(`\$basearch`, basearch, repo); + let filename = sub(`\W`, "_", repo); + let file = open_file(`/etc/yum.repos.d/${filename}.repo`); + file.write(` +[filename] +name=${filename} +baseurl=${repo} +enabled=1 +gpgcheck=0 +`); + } +} diff --git a/andax/get_proj_label.rhai b/andax/get_proj_label.rhai new file mode 100644 index 0000000000..285aa8a89d --- /dev/null +++ b/andax/get_proj_label.rhai @@ -0,0 +1,2 @@ +import "anda::cfg" as cfg; +print(cfg::load_file(labels.project).project.pkg.labels.to_json());