From df27a96f1f67b8f30b96bf8fd28e985793dfd45d Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Sun, 6 Apr 2025 08:44:52 -0400 Subject: make a half-baked tarball (#221) * make a half-baked tarball Closes #217 Signed-off-by: Xe Iaso * make two tarballs: one with just the vendor, and one with vendor and npm Signed-off-by: Xe Iaso --------- Signed-off-by: Xe Iaso --- yeetfile.js | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'yeetfile.js') diff --git a/yeetfile.js b/yeetfile.js index 94388be..871153d 100644 --- a/yeetfile.js +++ b/yeetfile.js @@ -24,4 +24,49 @@ $`npm run assets`; file.install("./run/default.env", `${etc}/default.env`); }, })); +}); + +// NOTE(Xe): Fixes #217. This is a "half baked" tarball that includes the harder +// parts for deterministic distros already done. Distributions like NixOS, Gentoo +// and *BSD ports have a difficult time fitting the square peg of their dependency +// model into the bazarr of round holes that various modern languages use. Needless +// to say, this makes adoption easier. +tarball.build({ + name: "anubis-src-vendor", + license: "MIT", + // XXX(Xe): This is needed otherwise go will be very sad. + platform: yeet.goos, + goarch: yeet.goarch, + + build: ({ out }) => { + // prepare clean checkout in $out + $`git archive --format=tar HEAD | tar xC ${out}`; + // vendor Go dependencies + $`cd ${out} && go mod vendor`; + // write VERSION file + $`echo ${git.tag()} > ${out}/VERSION`; + }, + + mkFilename: ({ name, version }) => `${name}-${version}`, +}); + +tarball.build({ + name: "anubis-src-vendor-npm", + license: "MIT", + // XXX(Xe): This is needed otherwise go will be very sad. + platform: yeet.goos, + goarch: yeet.goarch, + + build: ({ out }) => { + // prepare clean checkout in $out + $`git archive --format=tar HEAD | tar xC ${out}`; + // vendor Go dependencies + $`cd ${out} && go mod vendor`; + // build NPM-bound dependencies + $`cd ${out} && npm ci && npm run assets && rm -rf node_modules` + // write VERSION file + $`echo ${git.tag()} > ${out}/VERSION`; + }, + + mkFilename: ({ name, version }) => `${name}-${version}`, }); \ No newline at end of file -- cgit v1.2.3