mirror of
https://github.com/TecharoHQ/anubis.git
synced 2026-04-10 18:48:44 +00:00
This also requires a bump to the minimum go version (#1525), but enables Windows builds. Windows is a bit of an experimental target for Anubis (I don't personally have any windows machines), but it compiles and should theoretically work. This is probably very worth it, I'm not aware of any distributions that need to package Anubis that don't have a supported version of Go packaged. If your distro does not, please consider upgrading to a supported version of Go. Signed-off-by: Xe Iaso <me@xeiaso.net>
97 lines
3.2 KiB
JavaScript
97 lines
3.2 KiB
JavaScript
$`npm run assets`;
|
|
|
|
["amd64", "arm64", "ppc64le", "riscv64"].forEach((goarch) => {
|
|
["linux", "windows"].forEach((platform) => {
|
|
if (goarch == "ppc64le" && platform == "windows") {
|
|
return;
|
|
}
|
|
|
|
if (goarch == "riscv64" && platform == "windows") {
|
|
return;
|
|
}
|
|
|
|
[deb, rpm, tarball].forEach((method) =>
|
|
method.build({
|
|
name: "anubis",
|
|
description:
|
|
"Anubis weighs the souls of incoming HTTP requests and uses a sha256 proof-of-work challenge in order to protect upstream resources from scraper bots.",
|
|
homepage: "https://anubis.techaro.lol",
|
|
license: "MIT",
|
|
goarch,
|
|
platform,
|
|
|
|
documentation: {
|
|
"./README.md": "README.md",
|
|
"./LICENSE": "LICENSE",
|
|
"./data/botPolicies.yaml": "botPolicies.yaml",
|
|
},
|
|
|
|
build: ({ bin, etc, systemd, doc }) => {
|
|
$`go build -o ${bin}/anubis -ldflags '-s -w -extldflags "-static" -X "github.com/TecharoHQ/anubis.Version=${git.tag()}"' ./cmd/anubis`;
|
|
$`go build -o ${bin}/anubis-robots2policy -ldflags '-s -w -extldflags "-static" -X "github.com/TecharoHQ/anubis.Version=${git.tag()}"' ./cmd/robots2policy`;
|
|
|
|
file.install("./run/anubis@.service", `${systemd}/anubis@.service`);
|
|
file.install("./run/default.env", `${etc}/default.env`);
|
|
|
|
$`mkdir -p ${doc}/docs`;
|
|
$`cp -a docs/docs ${doc}`;
|
|
$`find ${doc} -name _category_.json -delete`;
|
|
$`mkdir -p ${doc}/data`;
|
|
$`cp -a data/apps ${doc}/data/apps`;
|
|
$`cp -a data/bots ${doc}/data/bots`;
|
|
$`cp -a data/clients ${doc}/data/clients`;
|
|
$`cp -a data/common ${doc}/data/common`;
|
|
$`cp -a data/crawlers ${doc}/data/crawlers`;
|
|
$`cp -a data/meta ${doc}/data/meta`;
|
|
},
|
|
}),
|
|
)
|
|
}
|
|
);
|
|
});
|
|
|
|
// 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 bazaar 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}`,
|
|
});
|