diff --git a/toolchain/builder/zeta-makepkg b/toolchain/builder/zeta-makepkg
index 95242be..fa15e36 100755
--- a/toolchain/builder/zeta-makepkg
+++ b/toolchain/builder/zeta-makepkg
@@ -69,6 +69,8 @@ Commands:
Flags:
--output
Output repository root (default: .)
Creates packages// with tarball + package.lua
+ --repo Base URL for generated package.lua manifests
+ (default: https://raw.githubusercontent.com/gretagen/...)
-j, --jobs Number of parallel build jobs (default: nproc)
--no-index Don't update packages/index.lua after building
--keep-work Don't remove the build work directory
@@ -99,6 +101,7 @@ local function parse_cli(args)
help = false,
recipe = nil,
jobs = nil, -- nil = auto-detect (nproc)
+ repo = "https://raw.githubusercontent.com/gretagen/zeta-packages/refs/heads/main",
}
local i = 1
@@ -115,6 +118,13 @@ local function parse_cli(args)
return nil
end
opts.output = args[i]
+ elseif a == "--repo" then
+ i = i + 1
+ if i > #args then
+ io.stderr:write("error: --repo requires a URL argument\n")
+ return nil
+ end
+ opts.repo = args[i]
elseif a == "--no-index" then
opts.no_index = true
elseif a == "--keep-work" then
@@ -216,7 +226,7 @@ local function run_build(recipe_path, opts)
local tarball_sha256 = packager.create_tarball(stage_dir, tarball_path)
-- 10. Write package.lua manifest
- packager.write_manifest(r, tarball_sha256, pkg_dir)
+ packager.write_manifest(r, tarball_sha256, pkg_dir, opts.repo)
-- 11. Update index
if not opts.no_index then
diff --git a/toolchain/lib/packager.lua b/toolchain/lib/packager.lua
index 6372fe1..c88e463 100644
--- a/toolchain/lib/packager.lua
+++ b/toolchain/lib/packager.lua
@@ -97,7 +97,8 @@ end
-- The generated manifest uses archive mode (strip=1) and includes the
-- computed sha256 of the binary tarball. Optional fields (deps, files,
-- test) are included when present in the recipe.
-function packager.write_manifest(recipe, tarball_sha256, pkg_dir)
+function packager.write_manifest(recipe, tarball_sha256, pkg_dir, repo)
+ local repo = repo or "https://raw.githubusercontent.com/gretagen/zeta-packages/refs/heads/main"
local lines = {}
local function emit(fmt, ...)
lines[#lines + 1] = string.format(fmt, ...)
@@ -107,8 +108,8 @@ function packager.write_manifest(recipe, tarball_sha256, pkg_dir)
emit(' name = "%s",', recipe.name)
emit(' version = "%s",', recipe.version)
emit(' summary = "%s",', escape(recipe.summary))
- emit(' url = "https://github.com/gretagen/zeta-packages/packages/%s/%s-%s.tar.gz",',
- recipe.name, recipe.name, recipe.version)
+ emit(' url = "%s/packages/%s/%s-%s.tar.gz",',
+ repo, recipe.name, recipe.name, recipe.version)
emit(' sha256 = "%s",', tarball_sha256)
if #recipe.deps > 0 then