aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-03-04 18:01:18 +0900
committerOphestra <cat@gensokyo.uk>2026-03-05 00:20:27 +0900
commitd2c6d486b06073aa88ee1912d3587f657cd57304 (patch)
tree42e7df590ee8cda255e4cd35f9bd5ff7f9b2f94f
parent6fdd800b2b421b32e7db373b576433126c4652a2 (diff)
internal/rosa: provide package metadata
This had to be done out-of-band because there was no way to efficiently represent these within Artifact. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--internal/rosa/acl.go28
-rw-r--r--internal/rosa/all.go159
-rw-r--r--internal/rosa/all_test.go49
-rw-r--r--internal/rosa/argp-standalone.go14
-rw-r--r--internal/rosa/bzip2.go14
-rw-r--r--internal/rosa/cmake.go14
-rw-r--r--internal/rosa/curl.go14
-rw-r--r--internal/rosa/dtc.go14
-rw-r--r--internal/rosa/elfutils.go14
-rw-r--r--internal/rosa/fakeroot.go14
-rw-r--r--internal/rosa/flex.go14
-rw-r--r--internal/rosa/fuse.go14
-rw-r--r--internal/rosa/git.go14
-rw-r--r--internal/rosa/gnu.go350
-rw-r--r--internal/rosa/go.go22
-rw-r--r--internal/rosa/gtk.go14
-rw-r--r--internal/rosa/hakurei.go24
-rw-r--r--internal/rosa/images.go13
-rw-r--r--internal/rosa/kernel.go55
-rw-r--r--internal/rosa/kmod.go14
-rw-r--r--internal/rosa/libcap.go14
-rw-r--r--internal/rosa/libexpat.go14
-rw-r--r--internal/rosa/libffi.go14
-rw-r--r--internal/rosa/libgd.go14
-rw-r--r--internal/rosa/libpsl.go14
-rw-r--r--internal/rosa/libseccomp.go18
-rw-r--r--internal/rosa/libucontext.go14
-rw-r--r--internal/rosa/libxml2.go14
-rw-r--r--internal/rosa/libxslt.go14
-rw-r--r--internal/rosa/llvm.go12
-rw-r--r--internal/rosa/make.go14
-rw-r--r--internal/rosa/meson.go14
-rw-r--r--internal/rosa/mksh.go14
-rw-r--r--internal/rosa/musl-fts.go14
-rw-r--r--internal/rosa/musl-obstack.go14
-rw-r--r--internal/rosa/musl.go14
-rw-r--r--internal/rosa/ncurses.go14
-rw-r--r--internal/rosa/ninja.go14
-rw-r--r--internal/rosa/openssl.go14
-rw-r--r--internal/rosa/pcre2.go14
-rw-r--r--internal/rosa/perl.go154
-rw-r--r--internal/rosa/pkg-config.go14
-rw-r--r--internal/rosa/procps.go14
-rw-r--r--internal/rosa/python.go130
-rw-r--r--internal/rosa/qemu.go14
-rw-r--r--internal/rosa/rsync.go14
-rw-r--r--internal/rosa/squashfs.go14
-rw-r--r--internal/rosa/ssl.go39
-rw-r--r--internal/rosa/stage0.go13
-rw-r--r--internal/rosa/tamago.go14
-rw-r--r--internal/rosa/toybox.go24
-rw-r--r--internal/rosa/unzip.go14
-rw-r--r--internal/rosa/util-linux.go14
-rw-r--r--internal/rosa/wayland.go28
-rw-r--r--internal/rosa/x.go42
-rw-r--r--internal/rosa/xcb.go28
-rw-r--r--internal/rosa/xz.go14
-rw-r--r--internal/rosa/zlib.go14
-rw-r--r--internal/rosa/zstd.go14
59 files changed, 1285 insertions, 477 deletions
diff --git a/internal/rosa/acl.go b/internal/rosa/acl.go
index 5a33c0ae..a924a0e7 100644
--- a/internal/rosa/acl.go
+++ b/internal/rosa/acl.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newAttr() pkg.Artifact {
+func (t Toolchain) newAttr() (pkg.Artifact, string) {
const (
version = "2.5.2"
checksum = "YWEphrz6vg1sUMmHHVr1CRo53pFXRhq_pjN-AlG8UgwZK1y6m7zuDhxqJhD0SV0l"
@@ -62,11 +62,19 @@ ln -s ../../system/bin/perl /usr/bin
`,
}, (*MakeHelper)(nil),
Perl,
- )
+ ), version
+}
+func init() {
+ artifactsM[Attr] = Metadata{
+ f: Toolchain.newAttr,
+
+ Name: "attr",
+ Description: "Commands for Manipulating Filesystem Extended Attributes",
+ Website: "https://savannah.nongnu.org/projects/attr/",
+ }
}
-func init() { artifactsF[Attr] = Toolchain.newAttr }
-func (t Toolchain) newACL() pkg.Artifact {
+func (t Toolchain) newACL() (pkg.Artifact, string) {
const (
version = "2.3.2"
checksum = "-fY5nwH4K8ZHBCRXrzLdguPkqjKI6WIiGu4dBtrZ1o0t6AIU73w8wwJz_UyjIS0P"
@@ -81,6 +89,14 @@ func (t Toolchain) newACL() pkg.Artifact {
SkipCheck: true,
},
Attr,
- )
+ ), version
+}
+func init() {
+ artifactsM[ACL] = Metadata{
+ f: Toolchain.newACL,
+
+ Name: "acl",
+ Description: "Commands for Manipulating POSIX Access Control Lists",
+ Website: "https://savannah.nongnu.org/projects/acl/",
+ }
}
-func init() { artifactsF[ACL] = Toolchain.newACL }
diff --git a/internal/rosa/all.go b/internal/rosa/all.go
index 22ba015f..28a0ac96 100644
--- a/internal/rosa/all.go
+++ b/internal/rosa/all.go
@@ -120,7 +120,10 @@ const (
Zlib
Zstd
- buildcatrust
+ // _presetUnexportedStart is the first unexported preset.
+ _presetUnexportedStart
+
+ buildcatrust = iota - 1
utilMacros
// Musl is a standalone libc that does not depend on the toolchain.
@@ -138,131 +141,59 @@ const (
_presetEnd
)
+// Metadata is stage-agnostic information of a [PArtifact] not directly
+// representable in the resulting [pkg.Artifact].
+type Metadata struct {
+ f func(t Toolchain) (a pkg.Artifact, version string)
+
+ // Unique package name.
+ Name string `json:"name"`
+ // Short user-facing description.
+ Description string `json:"description"`
+ // Project home page.
+ Website string `json:"website,omitempty"`
+}
+
+// Unversioned denotes an unversioned [PArtifact].
+const Unversioned = "\x00"
+
var (
- // artifactsF is an array of functions for the result of [PArtifact].
- artifactsF [_presetEnd]func(t Toolchain) pkg.Artifact
+ // artifactsM is an array of [PArtifact] metadata.
+ artifactsM [_presetEnd]Metadata
- // artifacts stores the result of artifactsF.
- artifacts [_toolchainEnd][len(artifactsF)]pkg.Artifact
+ // artifacts stores the result of Metadata.f.
+ artifacts [_toolchainEnd][len(artifactsM)]pkg.Artifact
+ // versions stores the version of [PArtifact].
+ versions [_toolchainEnd][len(artifactsM)]string
// artifactsOnce is for lazy initialisation of artifacts.
- artifactsOnce [_toolchainEnd][len(artifactsF)]sync.Once
+ artifactsOnce [_toolchainEnd][len(artifactsM)]sync.Once
)
+// GetMetadata returns [Metadata] of a [PArtifact].
+func GetMetadata(p PArtifact) *Metadata { return &artifactsM[p] }
+
// Load returns the resulting [pkg.Artifact] of [PArtifact].
func (t Toolchain) Load(p PArtifact) pkg.Artifact {
artifactsOnce[t][p].Do(func() {
- artifacts[t][p] = artifactsF[p](t)
+ artifacts[t][p], versions[t][p] = artifactsM[p].f(t)
})
return artifacts[t][p]
}
+// Version returns the version string of [PArtifact].
+func (t Toolchain) Version(p PArtifact) string {
+ artifactsOnce[t][p].Do(func() {
+ artifacts[t][p], versions[t][p] = artifactsM[p].f(t)
+ })
+ return versions[t][p]
+}
+
// ResolveName returns a [PArtifact] by name.
func ResolveName(name string) (p PArtifact, ok bool) {
- p, ok = map[string]PArtifact{
- "initramfs-image": ImageInitramfs,
-
- "kernel": Kernel,
- "kernel-headers": KernelHeaders,
- "kernel-source": KernelSource,
-
- "acl": ACL,
- "argp-standalone": ArgpStandalone,
- "attr": Attr,
- "autoconf": Autoconf,
- "automake": Automake,
- "bc": BC,
- "bash": Bash,
- "binutils": Binutils,
- "bison": Bison,
- "bzip2": Bzip2,
- "cmake": CMake,
- "coreutils": Coreutils,
- "curl": Curl,
- "dtc": DTC,
- "diffutils": Diffutils,
- "elfutils": Elfutils,
- "fakeroot": Fakeroot,
- "findutils": Findutils,
- "flex": Flex,
- "fuse": Fuse,
- "gmp": GMP,
- "glib": GLib,
- "gawk": Gawk,
- "gen_init_cpio": GenInitCPIO,
- "gettext": Gettext,
- "git": Git,
- "go": Go,
- "gperf": Gperf,
- "grep": Grep,
- "gzip": Gzip,
- "hakurei": Hakurei,
- "hakurei-dist": HakureiDist,
- "iniconfig": IniConfig,
- "kmod": Kmod,
- "libXau": LibXau,
- "libcap": Libcap,
- "libexpat": Libexpat,
- "libiconv": Libiconv,
- "libpsl": Libpsl,
- "libseccomp": Libseccomp,
- "libucontext": Libucontext,
- "libxml2": Libxml2,
- "libxslt": Libxslt,
- "libffi": Libffi,
- "libgd": Libgd,
- "libtool": Libtool,
- "m4": M4,
- "mpc": MPC,
- "mpfr": MPFR,
- "make": Make,
- "meson": Meson,
- "mksh": Mksh,
- "musl-fts": MuslFts,
- "musl-obstack": MuslObstack,
- "nss": NSS,
- "nss-cacert": NSSCACert,
- "ncurses": Ncurses,
- "ninja": Ninja,
- "openssl": OpenSSL,
- "pcre2": PCRE2,
- "packaging": Packaging,
- "patch": Patch,
- "perl": Perl,
- "Locale::gettext": PerlLocaleGettext,
- "MIME::Charset": PerlMIMECharset,
- "Module::Build": PerlModuleBuild,
- "Pod::Parser": PerlPodParser,
- "SGMLS": PerlSGMLS,
- "Term::ReadKey": PerlTermReadKey,
- "Text::CharWidth": PerlTextCharWidth,
- "Text::WrapI18N": PerlTextWrapI18N,
- "Unicode::GCString": PerlUnicodeGCString,
- "YAML::Tiny": PerlYAMLTiny,
- "pkg-config": PkgConfig,
- "pluggy": Pluggy,
- "procps": Procps,
- "pytest": PyTest,
- "pygments": Pygments,
- "python": Python,
- "qemu": QEMU,
- "rsync": Rsync,
- "sed": Sed,
- "setuptools": Setuptools,
- "squashfs-tools": SquashfsTools,
- "tamago": TamaGo,
- "tar": Tar,
- "texinfo": Texinfo,
- "toybox": Toybox,
- "unzip": Unzip,
- "util-linux": UtilLinux,
- "wayland": Wayland,
- "wayland-protocols": WaylandProtocols,
- "xcb": XCB,
- "xcb-proto": XCBProto,
- "xproto": Xproto,
- "xz": XZ,
- "zlib": Zlib,
- "zstd": Zstd,
- }[name]
- return
+ for i := range _presetUnexportedStart {
+ if name == artifactsM[i].Name {
+ return i, true
+ }
+ }
+ return 0, false
}
diff --git a/internal/rosa/all_test.go b/internal/rosa/all_test.go
new file mode 100644
index 00000000..7187c25d
--- /dev/null
+++ b/internal/rosa/all_test.go
@@ -0,0 +1,49 @@
+package rosa
+
+import "testing"
+
+func TestLoad(t *testing.T) {
+ t.Parallel()
+
+ for i := range _presetEnd {
+ p := PArtifact(i)
+ t.Run(GetMetadata(p).Name, func(t *testing.T) {
+ t.Parallel()
+
+ Std.Load(p)
+ })
+ }
+}
+
+func TestResolveName(t *testing.T) {
+ t.Parallel()
+
+ for i := range _presetUnexportedStart {
+ p := i
+ name := GetMetadata(p).Name
+ t.Run(name, func(t *testing.T) {
+ t.Parallel()
+
+ if got, ok := ResolveName(name); !ok {
+ t.Fatal("ResolveName: ok = false")
+ } else if got != p {
+ t.Fatalf("ResolveName: %d, want %d", got, p)
+ }
+ })
+ }
+}
+func TestResolveNameUnexported(t *testing.T) {
+ t.Parallel()
+
+ for i := _presetUnexportedStart; i < _presetEnd; i++ {
+ p := i
+ name := GetMetadata(p).Name
+ t.Run(name, func(t *testing.T) {
+ t.Parallel()
+
+ if got, ok := ResolveName(name); ok {
+ t.Fatalf("ResolveName: resolved unexported preset %d", got)
+ }
+ })
+ }
+}
diff --git a/internal/rosa/argp-standalone.go b/internal/rosa/argp-standalone.go
index 0e4da9d9..32cb71c8 100644
--- a/internal/rosa/argp-standalone.go
+++ b/internal/rosa/argp-standalone.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newArgpStandalone() pkg.Artifact {
+func (t Toolchain) newArgpStandalone() (pkg.Artifact, string) {
const (
version = "1.3"
checksum = "vtW0VyO2pJ-hPyYmDI2zwSLS8QL0sPAUKC1t3zNYbwN2TmsaE-fADhaVtNd3eNFl"
@@ -23,6 +23,14 @@ install -D -m755 libargp.a /work/system/lib/libargp.a
`,
},
Diffutils,
- )
+ ), version
+}
+func init() {
+ artifactsM[ArgpStandalone] = Metadata{
+ f: Toolchain.newArgpStandalone,
+
+ Name: "argp-standalone",
+ Description: "hierarchical argument parsing library broken out from glibc",
+ Website: "http://www.lysator.liu.se/~nisse/misc/",
+ }
}
-func init() { artifactsF[ArgpStandalone] = Toolchain.newArgpStandalone }
diff --git a/internal/rosa/bzip2.go b/internal/rosa/bzip2.go
index e32b3507..87c56b93 100644
--- a/internal/rosa/bzip2.go
+++ b/internal/rosa/bzip2.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newBzip2() pkg.Artifact {
+func (t Toolchain) newBzip2() (pkg.Artifact, string) {
const (
version = "1.0.8"
checksum = "cTLykcco7boom-s05H1JVsQi1AtChYL84nXkg_92Dm1Xt94Ob_qlMg_-NSguIK-c"
@@ -23,6 +23,14 @@ func (t Toolchain) newBzip2() pkg.Artifact {
"CC=cc",
},
Install: "make PREFIX=/work/system install",
- })
+ }), version
+}
+func init() {
+ artifactsM[Bzip2] = Metadata{
+ f: Toolchain.newBzip2,
+
+ Name: "bzip2",
+ Description: "a freely available, patent free, high-quality data compressor",
+ Website: "https://sourceware.org/bzip2/",
+ }
}
-func init() { artifactsF[Bzip2] = Toolchain.newBzip2 }
diff --git a/internal/rosa/cmake.go b/internal/rosa/cmake.go
index 203814bd..27956b0f 100644
--- a/internal/rosa/cmake.go
+++ b/internal/rosa/cmake.go
@@ -8,7 +8,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newCMake() pkg.Artifact {
+func (t Toolchain) newCMake() (pkg.Artifact, string) {
const (
version = "4.2.3"
checksum = "Y4uYGnLrDQX78UdzH7fMzfok46Nt_1taDIHSmqgboU1yFi6f0iAXBDegMCu4eS-J"
@@ -102,9 +102,17 @@ index 2ead810437..f85cbb8b1c 100644
},
},
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[CMake] = Metadata{
+ f: Toolchain.newCMake,
+
+ Name: "cmake",
+ Description: "cross-platform, open-source build system",
+ Website: "https://cmake.org/",
+ }
}
-func init() { artifactsF[CMake] = Toolchain.newCMake }
// CMakeHelper is the [CMake] build system helper.
type CMakeHelper struct {
diff --git a/internal/rosa/curl.go b/internal/rosa/curl.go
index bd8c7907..ac1050a9 100644
--- a/internal/rosa/curl.go
+++ b/internal/rosa/curl.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newCurl() pkg.Artifact {
+func (t Toolchain) newCurl() (pkg.Artifact, string) {
const (
version = "8.18.0"
checksum = "YpOolP_sx1DIrCEJ3elgVAu0wTLDS-EZMZFvOP0eha7FaLueZUlEpuMwDzJNyi7i"
@@ -25,6 +25,14 @@ func (t Toolchain) newCurl() pkg.Artifact {
Libpsl,
OpenSSL,
- )
+ ), version
+}
+func init() {
+ artifactsM[Curl] = Metadata{
+ f: Toolchain.newCurl,
+
+ Name: "curl",
+ Description: "command line tool and library for transferring data with URLs",
+ Website: "https://curl.se/",
+ }
}
-func init() { artifactsF[Curl] = Toolchain.newCurl }
diff --git a/internal/rosa/dtc.go b/internal/rosa/dtc.go
index e503060a..17d40408 100644
--- a/internal/rosa/dtc.go
+++ b/internal/rosa/dtc.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newDTC() pkg.Artifact {
+func (t Toolchain) newDTC() (pkg.Artifact, string) {
const (
version = "1.7.2"
checksum = "vUoiRynPyYRexTpS6USweT5p4SVHvvVJs8uqFkkVD-YnFjwf6v3elQ0-Etrh00Dt"
@@ -28,6 +28,14 @@ func (t Toolchain) newDTC() pkg.Artifact {
M4,
Coreutils,
Diffutils,
- )
+ ), version
+}
+func init() {
+ artifactsM[DTC] = Metadata{
+ f: Toolchain.newDTC,
+
+ Name: "dtc",
+ Description: "The Device Tree Compiler",
+ Website: "https://git.kernel.org/pub/scm/utils/dtc/dtc.git/",
+ }
}
-func init() { artifactsF[DTC] = Toolchain.newDTC }
diff --git a/internal/rosa/elfutils.go b/internal/rosa/elfutils.go
index 5c47ebae..ab8395e3 100644
--- a/internal/rosa/elfutils.go
+++ b/internal/rosa/elfutils.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newElfutils() pkg.Artifact {
+func (t Toolchain) newElfutils() (pkg.Artifact, string) {
const (
version = "0.194"
checksum = "Q3XUygUPv9vR1TkWucwUsQ8Kb1_F6gzk-KMPELr3cC_4AcTrprhVPMvN0CKkiYRa"
@@ -36,6 +36,14 @@ func (t Toolchain) newElfutils() pkg.Artifact {
MuslFts,
MuslObstack,
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[Elfutils] = Metadata{
+ f: Toolchain.newElfutils,
+
+ Name: "elfutils",
+ Description: "utilities and libraries to handle ELF files and DWARF data",
+ Website: "https://sourceware.org/elfutils/",
+ }
}
-func init() { artifactsF[Elfutils] = Toolchain.newElfutils }
diff --git a/internal/rosa/fakeroot.go b/internal/rosa/fakeroot.go
index f97b4663..173e3f5a 100644
--- a/internal/rosa/fakeroot.go
+++ b/internal/rosa/fakeroot.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newFakeroot() pkg.Artifact {
+func (t Toolchain) newFakeroot() (pkg.Artifact, string) {
const (
version = "1.37.2"
checksum = "4ve-eDqVspzQ6VWDhPS0NjW3aSenBJcPAJq_BFT7OOFgUdrQzoTBxZWipDAGWxF8"
@@ -46,6 +46,14 @@ index f135ad9..85c784c 100644
Attr,
Libcap,
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[Fakeroot] = Metadata{
+ f: Toolchain.newFakeroot,
+
+ Name: "fakeroot",
+ Description: "tool for simulating superuser privileges",
+ Website: "https://salsa.debian.org/clint/fakeroot",
+ }
}
-func init() { artifactsF[Fakeroot] = Toolchain.newFakeroot }
diff --git a/internal/rosa/flex.go b/internal/rosa/flex.go
index e6fef284..fae77684 100644
--- a/internal/rosa/flex.go
+++ b/internal/rosa/flex.go
@@ -4,7 +4,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newFlex() pkg.Artifact {
+func (t Toolchain) newFlex() (pkg.Artifact, string) {
const (
version = "2.6.4"
checksum = "p9POjQU7VhgOf3x5iFro8fjhy0NOanvA7CTeuWS_veSNgCixIJshTrWVkc5XLZkB"
@@ -16,6 +16,14 @@ func (t Toolchain) newFlex() pkg.Artifact {
pkg.TarGzip,
), nil, (*MakeHelper)(nil),
M4,
- )
+ ), version
+}
+func init() {
+ artifactsM[Flex] = Metadata{
+ f: Toolchain.newFlex,
+
+ Name: "flex",
+ Description: "scanner generator for lexing in C and C++",
+ Website: "https://github.com/westes/flex/",
+ }
}
-func init() { artifactsF[Flex] = Toolchain.newFlex }
diff --git a/internal/rosa/fuse.go b/internal/rosa/fuse.go
index 13781743..9d2aaad9 100644
--- a/internal/rosa/fuse.go
+++ b/internal/rosa/fuse.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newFuse() pkg.Artifact {
+func (t Toolchain) newFuse() (pkg.Artifact, string) {
const (
version = "3.18.1"
checksum = "COb-BgJRWXLbt9XUkNeuiroQizpMifXqxgieE1SlkMXhs_WGSyJStrmyewAw2hd6"
@@ -31,6 +31,14 @@ func (t Toolchain) newFuse() pkg.Artifact {
PyTest,
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[Fuse] = Metadata{
+ f: Toolchain.newFuse,
+
+ Name: "fuse",
+ Description: "the reference implementation of the Linux FUSE interface",
+ Website: "https://github.com/libfuse/libfuse/",
+ }
}
-func init() { artifactsF[Fuse] = Toolchain.newFuse }
diff --git a/internal/rosa/git.go b/internal/rosa/git.go
index 1880af06..d1cbf1e0 100644
--- a/internal/rosa/git.go
+++ b/internal/rosa/git.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newGit() pkg.Artifact {
+func (t Toolchain) newGit() (pkg.Artifact, string) {
const (
version = "2.52.0"
checksum = "uH3J1HAN_c6PfGNJd2OBwW4zo36n71wmkdvityYnrh8Ak0D1IifiAvEWz9Vi9DmS"
@@ -63,9 +63,17 @@ disable_test t2200-add-update
Curl,
OpenSSL,
Libexpat,
- )
+ ), version
+}
+func init() {
+ artifactsM[Git] = Metadata{
+ f: Toolchain.newGit,
+
+ Name: "git",
+ Description: "distributed version control system",
+ Website: "https://www.git-scm.com/",
+ }
}
-func init() { artifactsF[Git] = Toolchain.newGit }
// NewViaGit returns a [pkg.Artifact] for cloning a git repository.
func (t Toolchain) NewViaGit(
diff --git a/internal/rosa/gnu.go b/internal/rosa/gnu.go
index 328a372c..f3f35ec9 100644
--- a/internal/rosa/gnu.go
+++ b/internal/rosa/gnu.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newM4() pkg.Artifact {
+func (t Toolchain) newM4() (pkg.Artifact, string) {
const (
version = "1.4.20"
checksum = "RT0_L3m4Co86bVBY3lCFAEs040yI1WdeNmRylFpah8IZovTm6O4wI7qiHJN3qsW9"
@@ -18,11 +18,19 @@ chmod +w tests/test-c32ispunct.sh && echo '#!/bin/sh' > tests/test-c32ispunct.sh
`,
}, (*MakeHelper)(nil),
Diffutils,
- )
+ ), version
+}
+func init() {
+ artifactsM[M4] = Metadata{
+ f: Toolchain.newM4,
+
+ Name: "m4",
+ Description: "a macro processor with GNU extensions",
+ Website: "https://www.gnu.org/software/m4/",
+ }
}
-func init() { artifactsF[M4] = Toolchain.newM4 }
-func (t Toolchain) newBison() pkg.Artifact {
+func (t Toolchain) newBison() (pkg.Artifact, string) {
const (
version = "3.8.2"
checksum = "BhRM6K7URj1LNOkIDCFDctSErLS-Xo5d9ba9seg10o6ACrgC1uNhED7CQPgIY29Y"
@@ -35,11 +43,19 @@ func (t Toolchain) newBison() pkg.Artifact {
M4,
Diffutils,
Sed,
- )
+ ), version
}
-func init() { artifactsF[Bison] = Toolchain.newBison }
+func init() {
+ artifactsM[Bison] = Metadata{
+ f: Toolchain.newBison,
-func (t Toolchain) newSed() pkg.Artifact {
+ Name: "bison",
+ Description: "a general-purpose parser generator",
+ Website: "https://www.gnu.org/software/bison/",
+ }
+}
+
+func (t Toolchain) newSed() (pkg.Artifact, string) {
const (
version = "4.9"
checksum = "pe7HWH4PHNYrazOTlUoE1fXmhn2GOPFN_xE62i0llOr3kYGrH1g2_orDz0UtZ9Nt"
@@ -50,11 +66,19 @@ func (t Toolchain) newSed() pkg.Artifact {
pkg.TarGzip,
), nil, (*MakeHelper)(nil),
Diffutils,
- )
+ ), version
+}
+func init() {
+ artifactsM[Sed] = Metadata{
+ f: Toolchain.newSed,
+
+ Name: "sed",
+ Description: "a non-interactive command-line text editor",
+ Website: "https://www.gnu.org/software/sed/",
+ }
}
-func init() { artifactsF[Sed] = Toolchain.newSed }
-func (t Toolchain) newAutoconf() pkg.Artifact {
+func (t Toolchain) newAutoconf() (pkg.Artifact, string) {
const (
version = "2.72"
checksum = "-c5blYkC-xLDer3TWEqJTyh1RLbOd1c5dnRLKsDnIrg_wWNOLBpaqMY8FvmUFJ33"
@@ -75,11 +99,19 @@ func (t Toolchain) newAutoconf() pkg.Artifact {
Perl,
Bash,
Diffutils,
- )
+ ), version
+}
+func init() {
+ artifactsM[Autoconf] = Metadata{
+ f: Toolchain.newAutoconf,
+
+ Name: "autoconf",
+ Description: "M4 macros to produce self-contained configure script",
+ Website: "https://www.gnu.org/software/autoconf/",
+ }
}
-func init() { artifactsF[Autoconf] = Toolchain.newAutoconf }
-func (t Toolchain) newAutomake() pkg.Artifact {
+func (t Toolchain) newAutomake() (pkg.Artifact, string) {
const (
version = "1.18.1"
checksum = "FjvLG_GdQP7cThTZJLDMxYpRcKdpAVG-YDs1Fj1yaHlSdh_Kx6nRGN14E0r_BjcG"
@@ -107,11 +139,19 @@ test_disable '#!/bin/sh' t/pr9.sh
Gzip,
Autoconf,
Diffutils,
- )
+ ), version
}
-func init() { artifactsF[Automake] = Toolchain.newAutomake }
+func init() {
+ artifactsM[Automake] = Metadata{
+ f: Toolchain.newAutomake,
-func (t Toolchain) newLibtool() pkg.Artifact {
+ Name: "automake",
+ Description: "a tool for automatically generating Makefile.in files",
+ Website: "https://www.gnu.org/software/automake/",
+ }
+}
+
+func (t Toolchain) newLibtool() (pkg.Artifact, string) {
const (
version = "2.5.4"
checksum = "pa6LSrQggh8mSJHQfwGjysAApmZlGJt8wif2cCLzqAAa2jpsTY0jZ-6stS3BWZ2Q"
@@ -128,11 +168,19 @@ func (t Toolchain) newLibtool() pkg.Artifact {
},
M4,
Diffutils,
- )
+ ), version
+}
+func init() {
+ artifactsM[Libtool] = Metadata{
+ f: Toolchain.newLibtool,
+
+ Name: "libtool",
+ Description: "a generic library support script",
+ Website: "https://www.gnu.org/software/libtool/",
+ }
}
-func init() { artifactsF[Libtool] = Toolchain.newLibtool }
-func (t Toolchain) newGzip() pkg.Artifact {
+func (t Toolchain) newGzip() (pkg.Artifact, string) {
const (
version = "1.14"
checksum = "NWhjUavnNfTDFkZJyAUonL9aCOak8GVajWX2OMlzpFnuI0ErpBFyj88mz2xSjz0q"
@@ -144,11 +192,19 @@ func (t Toolchain) newGzip() pkg.Artifact {
), nil, &MakeHelper{
// dependency loop
SkipCheck: true,
- })
+ }), version
}
-func init() { artifactsF[Gzip] = Toolchain.newGzip }
+func init() {
+ artifactsM[Gzip] = Metadata{
+ f: Toolchain.newGzip,
-func (t Toolchain) newGettext() pkg.Artifact {
+ Name: "gzip",
+ Description: "a popular data compression program",
+ Website: "https://www.gnu.org/software/gzip/",
+ }
+}
+
+func (t Toolchain) newGettext() (pkg.Artifact, string) {
const (
version = "1.0"
checksum = "3MasKeEdPeFEgWgzsBKk7JqWqql1wEMbgPmzAfs-mluyokoW0N8oQVxPQoOnSdgC"
@@ -180,11 +236,19 @@ touch gettext-tools/autotools/archive.dir.tar
Sed,
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[Gettext] = Metadata{
+ f: Toolchain.newGettext,
+
+ Name: "gettext",
+ Description: "tools for producing multi-lingual messages",
+ Website: "https://www.gnu.org/software/gettext/",
+ }
}
-func init() { artifactsF[Gettext] = Toolchain.newGettext }
-func (t Toolchain) newDiffutils() pkg.Artifact {
+func (t Toolchain) newDiffutils() (pkg.Artifact, string) {
const (
version = "3.12"
checksum = "9J5VAq5oA7eqwzS1Yvw-l3G5o-TccUrNQR3PvyB_lgdryOFAfxtvQfKfhdpquE44"
@@ -203,11 +267,19 @@ test_disable 'int main(){return 0;}' gnulib-tests/test-c32ispunct.c
test_disable '#!/bin/sh' tests/cmp
`,
Flag: TEarly,
- }, (*MakeHelper)(nil))
+ }, (*MakeHelper)(nil)), version
}
-func init() { artifactsF[Diffutils] = Toolchain.newDiffutils }
+func init() {
+ artifactsM[Diffutils] = Metadata{
+ f: Toolchain.newDiffutils,
-func (t Toolchain) newPatch() pkg.Artifact {
+ Name: "diffutils",
+ Description: "several programs related to finding differences between files",
+ Website: "https://www.gnu.org/software/diffutils/",
+ }
+}
+
+func (t Toolchain) newPatch() (pkg.Artifact, string) {
const (
version = "2.8"
checksum = "MA0BQc662i8QYBD-DdGgyyfTwaeALZ1K0yusV9rAmNiIsQdX-69YC4t9JEGXZkeR"
@@ -225,11 +297,19 @@ test_disable '#!/bin/sh' tests/ed-style
test_disable '#!/bin/sh' tests/need-filename
`,
Flag: TEarly,
- }, (*MakeHelper)(nil))
+ }, (*MakeHelper)(nil)), version
+}
+func init() {
+ artifactsM[Patch] = Metadata{
+ f: Toolchain.newPatch,
+
+ Name: "patch",
+ Description: "a program to apply diff output to files",
+ Website: "https://savannah.gnu.org/projects/patch/",
+ }
}
-func init() { artifactsF[Patch] = Toolchain.newPatch }
-func (t Toolchain) newBash() pkg.Artifact {
+func (t Toolchain) newBash() (pkg.Artifact, string) {
const (
version = "5.3"
checksum = "4LQ_GRoB_ko-Ih8QPf_xRKA02xAm_TOxQgcJLmFDT6udUPxTAWrsj-ZNeuTusyDq"
@@ -245,11 +325,19 @@ func (t Toolchain) newBash() pkg.Artifact {
Configure: [][2]string{
{"without-bash-malloc"},
},
- })
+ }), version
}
-func init() { artifactsF[Bash] = Toolchain.newBash }
+func init() {
+ artifactsM[Bash] = Metadata{
+ f: Toolchain.newBash,
-func (t Toolchain) newCoreutils() pkg.Artifact {
+ Name: "bash",
+ Description: "the Bourne Again SHell",
+ Website: "https://www.gnu.org/software/bash/",
+ }
+}
+
+func (t Toolchain) newCoreutils() (pkg.Artifact, string) {
const (
version = "9.9"
checksum = "B1_TaXj1j5aiVIcazLWu8Ix03wDV54uo2_iBry4qHG6Y-9bjDpUPlkNLmU_3Nvw6"
@@ -281,11 +369,19 @@ test_disable 'int main(){return 0;}' gnulib-tests/test-lchown.c
Bash,
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[Coreutils] = Metadata{
+ f: Toolchain.newCoreutils,
+
+ Name: "coreutils",
+ Description: "the basic file, shell and text manipulation utilities",
+ Website: "https://www.gnu.org/software/coreutils/",
+ }
}
-func init() { artifactsF[Coreutils] = Toolchain.newCoreutils }
-func (t Toolchain) newTexinfo() pkg.Artifact {
+func (t Toolchain) newTexinfo() (pkg.Artifact, string) {
const (
version = "7.2"
checksum = "9EelM5b7QGMAY5DKrAm_El8lofBGuFWlaBPSBhh7l_VQE8054MBmC0KBvGrABqjv"
@@ -299,11 +395,19 @@ func (t Toolchain) newTexinfo() pkg.Artifact {
SkipCheck: true,
},
Perl,
- )
+ ), version
+}
+func init() {
+ artifactsM[Texinfo] = Metadata{
+ f: Toolchain.newTexinfo,
+
+ Name: "texinfo",
+ Description: "the GNU square-wheel-reinvension of man pages",
+ Website: "https://www.gnu.org/software/texinfo/",
+ }
}
-func init() { artifactsF[Texinfo] = Toolchain.newTexinfo }
-func (t Toolchain) newGperf() pkg.Artifact {
+func (t Toolchain) newGperf() (pkg.Artifact, string) {
const (
version = "3.3"
checksum = "RtIy9pPb_Bb8-31J2Nw-rRGso2JlS-lDlVhuNYhqR7Nt4xM_nObznxAlBMnarJv7"
@@ -314,11 +418,19 @@ func (t Toolchain) newGperf() pkg.Artifact {
pkg.TarGzip,
), nil, (*MakeHelper)(nil),
Diffutils,
- )
+ ), version
+}
+func init() {
+ artifactsM[Gperf] = Metadata{
+ f: Toolchain.newGperf,
+
+ Name: "gperf",
+ Description: "a perfect hash function generator",
+ Website: "https://www.gnu.org/software/gperf/",
+ }
}
-func init() { artifactsF[Gperf] = Toolchain.newGperf }
-func (t Toolchain) newGawk() pkg.Artifact {
+func (t Toolchain) newGawk() (pkg.Artifact, string) {
const (
version = "5.3.2"
checksum = "uIs0d14h_d2DgMGYwrPtegGNyt_bxzG3D6Fe-MmExx_pVoVkQaHzrtmiXVr6NHKk"
@@ -332,11 +444,19 @@ func (t Toolchain) newGawk() pkg.Artifact {
}, &MakeHelper{
// dependency loop
SkipCheck: true,
- })
+ }), version
+}
+func init() {
+ artifactsM[Gawk] = Metadata{
+ f: Toolchain.newGawk,
+
+ Name: "gawk",
+ Description: "an implementation of awk with GNU extensions",
+ Website: "https://www.gnu.org/software/gawk/",
+ }
}
-func init() { artifactsF[Gawk] = Toolchain.newGawk }
-func (t Toolchain) newGrep() pkg.Artifact {
+func (t Toolchain) newGrep() (pkg.Artifact, string) {
const (
version = "3.12"
checksum = "qMB4RjaPNRRYsxix6YOrjE8gyAT1zVSTy4nW4wKW9fqa0CHYAuWgPwDTirENzm_1"
@@ -355,11 +475,19 @@ test_disable 'int main(){return 0;}' gnulib-tests/test-c32ispunct.c
`,
}, (*MakeHelper)(nil),
Diffutils,
- )
+ ), version
+}
+func init() {
+ artifactsM[Grep] = Metadata{
+ f: Toolchain.newGrep,
+
+ Name: "grep",
+ Description: "searches input for lines containing a match to a pattern",
+ Website: "https://www.gnu.org/software/grep/",
+ }
}
-func init() { artifactsF[Grep] = Toolchain.newGrep }
-func (t Toolchain) newFindutils() pkg.Artifact {
+func (t Toolchain) newFindutils() (pkg.Artifact, string) {
const (
version = "4.10.0"
checksum = "ZXABdNBQXL7QjTygynRRTdXYWxQKZ0Wn5eMd3NUnxR0xaS0u0VfcKoTlbo50zxv6"
@@ -377,11 +505,19 @@ echo 'int main(){return 0;}' > tests/xargs/test-sigusr.c
Diffutils,
XZ,
Sed,
- )
+ ), version
}
-func init() { artifactsF[Findutils] = Toolchain.newFindutils }
+func init() {
+ artifactsM[Findutils] = Metadata{
+ f: Toolchain.newFindutils,
-func (t Toolchain) newBC() pkg.Artifact {
+ Name: "findutils",
+ Description: "the basic directory searching utilities",
+ Website: "https://www.gnu.org/software/findutils/",
+ }
+}
+
+func (t Toolchain) newBC() (pkg.Artifact, string) {
const (
version = "1.08.2"
checksum = "8h6f3hjV80XiFs6v9HOPF2KEyg1kuOgn5eeFdVspV05ODBVQss-ey5glc8AmneLy"
@@ -397,11 +533,19 @@ func (t Toolchain) newBC() pkg.Artifact {
}, (*MakeHelper)(nil),
Perl,
Texinfo,
- )
+ ), version
+}
+func init() {
+ artifactsM[BC] = Metadata{
+ f: Toolchain.newBC,
+
+ Name: "bc",
+ Description: "an arbitrary precision numeric processing language",
+ Website: "https://www.gnu.org/software/bc/",
+ }
}
-func init() { artifactsF[BC] = Toolchain.newBC }
-func (t Toolchain) newLibiconv() pkg.Artifact {
+func (t Toolchain) newLibiconv() (pkg.Artifact, string) {
const (
version = "1.18"
checksum = "iV5q3VxP5VPdJ-X7O5OQI4fGm8VjeYb5viLd1L3eAHg26bbHb2_Qn63XPF3ucVZr"
@@ -410,11 +554,19 @@ func (t Toolchain) newLibiconv() pkg.Artifact {
nil, "https://ftpmirror.gnu.org/gnu/libiconv/libiconv-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil, (*MakeHelper)(nil))
+ ), nil, (*MakeHelper)(nil)), version
+}
+func init() {
+ artifactsM[Libiconv] = Metadata{
+ f: Toolchain.newLibiconv,
+
+ Name: "libiconv",
+ Description: "iconv implementation independent of glibc",
+ Website: "https://www.gnu.org/software/libiconv/",
+ }
}
-func init() { artifactsF[Libiconv] = Toolchain.newLibiconv }
-func (t Toolchain) newTar() pkg.Artifact {
+func (t Toolchain) newTar() (pkg.Artifact, string) {
const (
version = "1.35"
checksum = "zSaoSlVUDW0dSfm4sbL4FrXLFR8U40Fh3zY5DWhR5NCIJ6GjU6Kc4VZo2-ZqpBRA"
@@ -442,11 +594,19 @@ func (t Toolchain) newTar() pkg.Artifact {
Gzip,
Bzip2,
Zstd,
- )
+ ), version
}
-func init() { artifactsF[Tar] = Toolchain.newTar }
+func init() {
+ artifactsM[Tar] = Metadata{
+ f: Toolchain.newTar,
-func (t Toolchain) newBinutils() pkg.Artifact {
+ Name: "tar",
+ Description: "provides the ability to create tar archives",
+ Website: "https://www.gnu.org/software/tar/",
+ }
+}
+
+func (t Toolchain) newBinutils() (pkg.Artifact, string) {
const (
version = "2.45"
checksum = "hlLtqqHDmzAT2OQVHaKEd_io2DGFvJkaeS-igBuK8bRRir7LUKGHgHYNkDVKaHTT"
@@ -457,11 +617,19 @@ func (t Toolchain) newBinutils() pkg.Artifact {
pkg.TarBzip2,
), nil, (*MakeHelper)(nil),
Bash,
- )
+ ), version
+}
+func init() {
+ artifactsM[Binutils] = Metadata{
+ f: Toolchain.newBinutils,
+
+ Name: "binutils",
+ Description: "a collection of binary tools",
+ Website: "https://www.gnu.org/software/binutils/",
+ }
}
-func init() { artifactsF[Binutils] = Toolchain.newBinutils }
-func (t Toolchain) newGMP() pkg.Artifact {
+func (t Toolchain) newGMP() (pkg.Artifact, string) {
const (
version = "6.3.0"
checksum = "yrgbgEDWKDdMWVHh7gPbVl56-sRtVVhfvv0M_LX7xMUUk_mvZ1QOJEAnt7g4i3k5"
@@ -473,11 +641,19 @@ func (t Toolchain) newGMP() pkg.Artifact {
pkg.TarBzip2,
), nil, (*MakeHelper)(nil),
M4,
- )
+ ), version
+}
+func init() {
+ artifactsM[GMP] = Metadata{
+ f: Toolchain.newGMP,
+
+ Name: "gmp",
+ Description: "a free library for arbitrary precision arithmetic",
+ Website: "https://gmplib.org/",
+ }
}
-func init() { artifactsF[GMP] = Toolchain.newGMP }
-func (t Toolchain) newMPFR() pkg.Artifact {
+func (t Toolchain) newMPFR() (pkg.Artifact, string) {
const (
version = "4.2.2"
checksum = "wN3gx0zfIuCn9r3VAn_9bmfvAYILwrRfgBjYSD1IjLqyLrLojNN5vKyQuTE9kA-B"
@@ -489,11 +665,19 @@ func (t Toolchain) newMPFR() pkg.Artifact {
pkg.TarBzip2,
), nil, (*MakeHelper)(nil),
GMP,
- )
+ ), version
}
-func init() { artifactsF[MPFR] = Toolchain.newMPFR }
+func init() {
+ artifactsM[MPFR] = Metadata{
+ f: Toolchain.newMPFR,
-func (t Toolchain) newMPC() pkg.Artifact {
+ Name: "mpfr",
+ Description: "a C library for multiple-precision floating-point computations",
+ Website: "https://www.mpfr.org/",
+ }
+}
+
+func (t Toolchain) newMPC() (pkg.Artifact, string) {
const (
version = "1.3.1"
checksum = "o8r8K9R4x7PuRx0-JE3-bC5jZQrtxGV2nkB773aqJ3uaxOiBDCID1gKjPaaDxX4V"
@@ -506,11 +690,19 @@ func (t Toolchain) newMPC() pkg.Artifact {
), nil, (*MakeHelper)(nil),
GMP,
MPFR,
- )
+ ), version
+}
+func init() {
+ artifactsM[MPC] = Metadata{
+ f: Toolchain.newMPC,
+
+ Name: "mpc",
+ Description: "a C library for the arithmetic of complex numbers",
+ Website: "https://www.multiprecision.org/",
+ }
}
-func init() { artifactsF[MPC] = Toolchain.newMPC }
-func (t Toolchain) newGCC() pkg.Artifact {
+func (t Toolchain) newGCC() (pkg.Artifact, string) {
const (
version = "15.2.0"
checksum = "TXJ5WrbXlGLzy1swghQTr4qxgDCyIZFgJry51XEPTBZ8QYbVmFeB4lZbSMtPJ-a1"
@@ -710,6 +902,14 @@ ln -s system/lib /work/
Zlib,
Libucontext,
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[gcc] = Metadata{
+ f: Toolchain.newGCC,
+
+ Name: "gcc",
+ Description: "The GNU Compiler Collection",
+ Website: "https://www.gnu.org/software/gcc/",
+ }
}
-func init() { artifactsF[gcc] = Toolchain.newGCC }
diff --git a/internal/rosa/go.go b/internal/rosa/go.go
index 475eb086..6278dfb3 100644
--- a/internal/rosa/go.go
+++ b/internal/rosa/go.go
@@ -62,7 +62,7 @@ ln -s \
)))
}
-func (t Toolchain) newGoLatest() pkg.Artifact {
+func (t Toolchain) newGoLatest() (pkg.Artifact, string) {
var (
bootstrapEnv []string
bootstrapExtra []pkg.Artifact
@@ -153,9 +153,13 @@ rm \
`, go123,
)
+ const (
+ version = "1.26.0"
+ checksum = "uHLcrgBc0NMcyTMDLRNAZIcOx0RyQlyekSl9xbWSwj3esEFWJysYLfLa3S8p39Nh"
+ )
return t.newGo(
- "1.26.0",
- "uHLcrgBc0NMcyTMDLRNAZIcOx0RyQlyekSl9xbWSwj3esEFWJysYLfLa3S8p39Nh",
+ version,
+ checksum,
finalEnv, `
sed -i \
's,/lib/ld-musl-`+linuxArch()+`.so.1,/system/bin/linker,' \
@@ -164,6 +168,14 @@ sed -i \
rm \
os/root_unix_test.go
`, go125,
- )
+ ), version
+}
+func init() {
+ artifactsM[Go] = Metadata{
+ f: Toolchain.newGoLatest,
+
+ Name: "go",
+ Description: "the Go programming language toolchain",
+ Website: "https://go.dev/",
+ }
}
-func init() { artifactsF[Go] = Toolchain.newGoLatest }
diff --git a/internal/rosa/gtk.go b/internal/rosa/gtk.go
index 06449ca2..eaa31ebc 100644
--- a/internal/rosa/gtk.go
+++ b/internal/rosa/gtk.go
@@ -7,7 +7,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newGLib() pkg.Artifact {
+func (t Toolchain) newGLib() (pkg.Artifact, string) {
const (
version = "2.86.4"
checksum = "AfTjBrrxtXXPL6dFa1LfTe40PyPSth62CoIkM5m_VJTUngGLOFHw6I4XE7RGQE8G"
@@ -46,6 +46,14 @@ func (t Toolchain) newGLib() pkg.Artifact {
PCRE2,
Libffi,
Zlib,
- )
+ ), version
+}
+func init() {
+ artifactsM[GLib] = Metadata{
+ f: Toolchain.newGLib,
+
+ Name: "glib",
+ Description: "the GNU library of miscellaneous stuff",
+ Website: "https://gitlab.gnome.org/GNOME/glib/",
+ }
}
-func init() { artifactsF[GLib] = Toolchain.newGLib }
diff --git a/internal/rosa/hakurei.go b/internal/rosa/hakurei.go
index a5ae7795..06b7e155 100644
--- a/internal/rosa/hakurei.go
+++ b/internal/rosa/hakurei.go
@@ -58,8 +58,9 @@ func main() {
)))
}
func init() {
- artifactsF[Hakurei] = func(t Toolchain) pkg.Artifact {
- return t.newHakurei("", `
+ artifactsM[Hakurei] = Metadata{
+ f: func(t Toolchain) (pkg.Artifact, string) {
+ return t.newHakurei("", `
mkdir -p /work/system/libexec/hakurei/
echo '# Building hakurei.'
@@ -83,12 +84,23 @@ mkdir -p /work/system/bin/
hakurei \
sharefs \
../../bin/)
-`)
+`), hakureiVersion
+ },
+
+ Name: "hakurei",
+ Description: "low-level userspace tooling for Rosa OS",
+ Website: "https://hakurei.app/",
}
- artifactsF[HakureiDist] = func(t Toolchain) pkg.Artifact {
- return t.newHakurei("-dist", `
+ artifactsM[HakureiDist] = Metadata{
+ f: func(t Toolchain) (pkg.Artifact, string) {
+ return t.newHakurei("-dist", `
export HAKUREI_VERSION
DESTDIR=/work /usr/src/hakurei/dist/release.sh
-`)
+`), hakureiVersion
+ },
+
+ Name: "hakurei-dist",
+ Description: "low-level userspace tooling for Rosa OS (distribution tarball)",
+ Website: "https://hakurei.app/",
}
}
diff --git a/internal/rosa/images.go b/internal/rosa/images.go
index b477309d..52ff8f65 100644
--- a/internal/rosa/images.go
+++ b/internal/rosa/images.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newImageInitramfs() pkg.Artifact {
+func (t Toolchain) newImageInitramfs() (pkg.Artifact, string) {
return t.New("initramfs", TNoToolchain, []pkg.Artifact{
t.Load(Zstd),
t.Load(Hakurei),
@@ -14,6 +14,13 @@ dir /dev 0755 0 0
nod /dev/null 0666 0 0 c 1 3
nod /dev/console 0600 0 0 c 5 1
file /init /system/libexec/hakurei/earlyinit 0555 0 0
-`))))
+`)))), Unversioned
+}
+func init() {
+ artifactsM[ImageInitramfs] = Metadata{
+ Name: "initramfs-image",
+ Description: "Rosa OS initramfs image",
+
+ f: Toolchain.newImageInitramfs,
+ }
}
-func init() { artifactsF[ImageInitramfs] = Toolchain.newImageInitramfs }
diff --git a/internal/rosa/kernel.go b/internal/rosa/kernel.go
index 5d9bf6ff..826aa166 100644
--- a/internal/rosa/kernel.go
+++ b/internal/rosa/kernel.go
@@ -11,16 +11,24 @@ var kernelSource = pkg.NewHTTPGetTar(
pkg.TarGzip,
)
-func (t Toolchain) newKernelSource() pkg.Artifact {
+func (t Toolchain) newKernelSource() (pkg.Artifact, string) {
return t.New("kernel-"+kernelVersion+"-src", 0, nil, nil, nil, `
mkdir -p /work/usr/src/
cp -r /usr/src/linux /work/usr/src/
chmod -R +w /work/usr/src/linux/
-`, pkg.Path(AbsUsrSrc.Append("linux"), false, kernelSource))
+`, pkg.Path(AbsUsrSrc.Append("linux"), false, kernelSource)), kernelVersion
}
-func init() { artifactsF[KernelSource] = Toolchain.newKernelSource }
+func init() {
+ artifactsM[KernelSource] = Metadata{
+ f: Toolchain.newKernelSource,
-func (t Toolchain) newKernelHeaders() pkg.Artifact {
+ Name: "kernel-source",
+ Description: "a writable kernel source tree installed to /usr/src/linux",
+ Website: "https://kernel.org/",
+ }
+}
+
+func (t Toolchain) newKernelHeaders() (pkg.Artifact, string) {
return t.NewPackage("kernel-headers", kernelVersion, kernelSource, &PackageAttr{
Flag: TEarly,
}, &MakeHelper{
@@ -38,11 +46,19 @@ func (t Toolchain) newKernelHeaders() pkg.Artifact {
Install: "# headers installed during make",
},
Rsync,
- )
+ ), kernelVersion
+}
+func init() {
+ artifactsM[KernelHeaders] = Metadata{
+ f: Toolchain.newKernelHeaders,
+
+ Name: "kernel-headers",
+ Description: "an installation of kernel headers",
+ Website: "https://kernel.org/",
+ }
}
-func init() { artifactsF[KernelHeaders] = Toolchain.newKernelHeaders }
-func (t Toolchain) newKernel() pkg.Artifact {
+func (t Toolchain) newKernel() (pkg.Artifact, string) {
return t.NewPackage("kernel", kernelVersion, kernelSource, &PackageAttr{
Env: []string{
"PATH=/system/sbin",
@@ -123,14 +139,29 @@ rm -v /work/lib/modules/` + kernelVersion + `/build
OpenSSL,
UtilLinux,
KernelHeaders,
- )
+ ), kernelVersion
}
-func init() { artifactsF[Kernel] = Toolchain.newKernel }
+func init() {
+ artifactsM[Kernel] = Metadata{
+ f: Toolchain.newKernel,
-func (t Toolchain) newGenInitCPIO() pkg.Artifact {
+ Name: "kernel",
+ Description: "the generic Rosa OS linux kernel",
+ Website: "https://kernel.org/",
+ }
+}
+
+func (t Toolchain) newGenInitCPIO() (pkg.Artifact, string) {
return t.New("gen_init_cpio-"+kernelVersion, 0, nil, nil, nil, `
mkdir -p /work/system/bin/
cc -o /work/system/bin/gen_init_cpio /usr/src/linux/usr/gen_init_cpio.c
-`, pkg.Path(AbsUsrSrc.Append("linux"), false, kernelSource))
+`, pkg.Path(AbsUsrSrc.Append("linux"), false, kernelSource)), kernelVersion
+}
+func init() {
+ artifactsM[GenInitCPIO] = Metadata{
+ f: Toolchain.newGenInitCPIO,
+
+ Name: "gen_init_cpio",
+ Description: "a program in the kernel source tree for creating initramfs archive",
+ }
}
-func init() { artifactsF[GenInitCPIO] = Toolchain.newGenInitCPIO }
diff --git a/internal/rosa/kmod.go b/internal/rosa/kmod.go
index 4292bbf7..1b899e39 100644
--- a/internal/rosa/kmod.go
+++ b/internal/rosa/kmod.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newKmod() pkg.Artifact {
+func (t Toolchain) newKmod() (pkg.Artifact, string) {
const (
version = "34.2"
checksum = "0K7POeTKxMhExsaTsnKAC6LUNsRSfe6sSZxWONPbOu-GI_pXOw3toU_BIoqfBhJV"
@@ -28,6 +28,14 @@ func (t Toolchain) newKmod() pkg.Artifact {
Zstd,
OpenSSL,
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[Kmod] = Metadata{
+ f: Toolchain.newKmod,
+
+ Name: "kmod",
+ Description: "a set of tools to handle common tasks with Linux kernel modules",
+ Website: "https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git",
+ }
}
-func init() { artifactsF[Kmod] = Toolchain.newKmod }
diff --git a/internal/rosa/libcap.go b/internal/rosa/libcap.go
index 81a9ec63..0806415c 100644
--- a/internal/rosa/libcap.go
+++ b/internal/rosa/libcap.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newLibcap() pkg.Artifact {
+func (t Toolchain) newLibcap() (pkg.Artifact, string) {
const (
version = "2.77"
checksum = "2GOTFU4cl2QoS7Dv5wh0c9-hxsQwIzMB9Y_gfAo5xKHqcM13fiHt1RbPkfemzjmB"
@@ -39,6 +39,14 @@ ln -s ../system/bin/bash /bin/
},
Bash,
Diffutils,
- )
+ ), version
+}
+func init() {
+ artifactsM[Libcap] = Metadata{
+ f: Toolchain.newLibcap,
+
+ Name: "libcap",
+ Description: "a library for getting and setting POSIX.1e draft 15 capabilities",
+ Website: "https://sites.google.com/site/fullycapable/",
+ }
}
-func init() { artifactsF[Libcap] = Toolchain.newLibcap }
diff --git a/internal/rosa/libexpat.go b/internal/rosa/libexpat.go
index 3cda1226..616b486b 100644
--- a/internal/rosa/libexpat.go
+++ b/internal/rosa/libexpat.go
@@ -6,7 +6,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newLibexpat() pkg.Artifact {
+func (t Toolchain) newLibexpat() (pkg.Artifact, string) {
const (
version = "2.7.3"
checksum = "GmkoD23nRi9cMT0cgG1XRMrZWD82UcOMzkkvP1gkwSFWCBgeSXMuoLpa8-v8kxW-"
@@ -19,6 +19,14 @@ func (t Toolchain) newLibexpat() pkg.Artifact {
pkg.TarBzip2,
), nil, (*MakeHelper)(nil),
Bash,
- )
+ ), version
+}
+func init() {
+ artifactsM[Libexpat] = Metadata{
+ f: Toolchain.newLibexpat,
+
+ Name: "libexpat",
+ Description: "a stream-oriented XML parser library",
+ Website: "https://libexpat.github.io/",
+ }
}
-func init() { artifactsF[Libexpat] = Toolchain.newLibexpat }
diff --git a/internal/rosa/libffi.go b/internal/rosa/libffi.go
index ef4edb5e..b5994ce5 100644
--- a/internal/rosa/libffi.go
+++ b/internal/rosa/libffi.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newLibffi() pkg.Artifact {
+func (t Toolchain) newLibffi() (pkg.Artifact, string) {
const (
version = "3.4.5"
checksum = "apIJzypF4rDudeRoI_n3K7N-zCeBLTbQlHRn9NSAZqdLAWA80mR0gXPTpHsL7oMl"
@@ -14,6 +14,14 @@ func (t Toolchain) newLibffi() pkg.Artifact {
pkg.TarGzip,
), nil, (*MakeHelper)(nil),
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[Libffi] = Metadata{
+ f: Toolchain.newLibffi,
+
+ Name: "libffi",
+ Description: "a portable, high level programming interface to various calling conventions",
+ Website: "https://sourceware.org/libffi/",
+ }
}
-func init() { artifactsF[Libffi] = Toolchain.newLibffi }
diff --git a/internal/rosa/libgd.go b/internal/rosa/libgd.go
index 428a9e1b..d06b8e30 100644
--- a/internal/rosa/libgd.go
+++ b/internal/rosa/libgd.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newLibgd() pkg.Artifact {
+func (t Toolchain) newLibgd() (pkg.Artifact, string) {
const (
version = "2.3.3"
checksum = "8T-sh1_FJT9K9aajgxzh8ot6vWIF-xxjcKAHvTak9MgGUcsFfzP8cAvvv44u2r36"
@@ -21,6 +21,14 @@ mkdir /dev/shm/gd
`,
}, (*MakeHelper)(nil),
Zlib,
- )
+ ), version
+}
+func init() {
+ artifactsM[Libgd] = Metadata{
+ f: Toolchain.newLibgd,
+
+ Name: "libgd",
+ Description: "an open source code library for the dynamic creation of images",
+ Website: "https://libgd.github.io/",
+ }
}
-func init() { artifactsF[Libgd] = Toolchain.newLibgd }
diff --git a/internal/rosa/libpsl.go b/internal/rosa/libpsl.go
index 27b382f5..6dd54f0c 100644
--- a/internal/rosa/libpsl.go
+++ b/internal/rosa/libpsl.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newLibpsl() pkg.Artifact {
+func (t Toolchain) newLibpsl() (pkg.Artifact, string) {
const (
version = "0.21.5"
checksum = "XjfxSzh7peG2Vg4vJlL8z4JZJLcXqbuP6pLWkrGCmRxlnYUFTKNBqWGHCxEOlCad"
@@ -21,6 +21,14 @@ test_disable 'int main(){return 0;}' tests/test-is-public-builtin.c
`,
}, (*MakeHelper)(nil),
Python,
- )
+ ), version
+}
+func init() {
+ artifactsM[Libpsl] = Metadata{
+ f: Toolchain.newLibpsl,
+
+ Name: "libpsl",
+ Description: "provides functions to work with the Mozilla Public Suffix List",
+ Website: "https://rockdaboot.github.io/libpsl/",
+ }
}
-func init() { artifactsF[Libpsl] = Toolchain.newLibpsl }
diff --git a/internal/rosa/libseccomp.go b/internal/rosa/libseccomp.go
index 7d1a796c..fba718fb 100644
--- a/internal/rosa/libseccomp.go
+++ b/internal/rosa/libseccomp.go
@@ -1,10 +1,8 @@
package rosa
-import (
- "hakurei.app/internal/pkg"
-)
+import "hakurei.app/internal/pkg"
-func (t Toolchain) newLibseccomp() pkg.Artifact {
+func (t Toolchain) newLibseccomp() (pkg.Artifact, string) {
const (
version = "2.6.0"
checksum = "mMu-iR71guPjFbb31u-YexBaanKE_nYPjPux-vuBiPfS_0kbwJdfCGlkofaUm-EY"
@@ -24,6 +22,14 @@ ln -s ../system/bin/bash /bin/
Gperf,
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[Libseccomp] = Metadata{
+ f: Toolchain.newLibseccomp,
+
+ Name: "libseccomp",
+ Description: "an interface to the Linux Kernel's syscall filtering mechanism",
+ Website: "https://github.com/seccomp/libseccomp/",
+ }
}
-func init() { artifactsF[Libseccomp] = Toolchain.newLibseccomp }
diff --git a/internal/rosa/libucontext.go b/internal/rosa/libucontext.go
index cf2333e2..7bbba7ee 100644
--- a/internal/rosa/libucontext.go
+++ b/internal/rosa/libucontext.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newLibucontext() pkg.Artifact {
+func (t Toolchain) newLibucontext() (pkg.Artifact, string) {
const (
version = "1.5"
checksum = "Ggk7FMmDNBdCx1Z9PcNWWW6LSpjGYssn2vU0GK5BLXJYw7ZxZbA2m_eSgT9TFnIG"
@@ -25,6 +25,14 @@ func (t Toolchain) newLibucontext() pkg.Artifact {
"ARCH=" + linuxArch(),
},
Install: "make prefix=/system DESTDIR=/work install",
- })
+ }), version
+}
+func init() {
+ artifactsM[Libucontext] = Metadata{
+ f: Toolchain.newLibucontext,
+
+ Name: "libucontext",
+ Description: "ucontext implementation featuring glibc-compatible ABI",
+ Website: "https://github.com/kaniini/libucontext/",
+ }
}
-func init() { artifactsF[Libucontext] = Toolchain.newLibucontext }
diff --git a/internal/rosa/libxml2.go b/internal/rosa/libxml2.go
index 8f0a140b..4e1a10b2 100644
--- a/internal/rosa/libxml2.go
+++ b/internal/rosa/libxml2.go
@@ -6,7 +6,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newLibxml2() pkg.Artifact {
+func (t Toolchain) newLibxml2() (pkg.Artifact, string) {
const (
version = "2.15.1"
checksum = "pYzAR3cNrEHezhEMirgiq7jbboLzwMj5GD7SQp0jhSIMdgoU4G9oU9Gxun3zzUIU"
@@ -21,6 +21,14 @@ func (t Toolchain) newLibxml2() pkg.Artifact {
}, (*MakeHelper)(nil),
Diffutils,
XZ,
- )
+ ), version
+}
+func init() {
+ artifactsM[Libxml2] = Metadata{
+ f: Toolchain.newLibxml2,
+
+ Name: "libxml2",
+ Description: "an XML toolkit implemented in C",
+ Website: "https://gitlab.gnome.org/GNOME/libxml2/",
+ }
}
-func init() { artifactsF[Libxml2] = Toolchain.newLibxml2 }
diff --git a/internal/rosa/libxslt.go b/internal/rosa/libxslt.go
index 0162e439..87018adf 100644
--- a/internal/rosa/libxslt.go
+++ b/internal/rosa/libxslt.go
@@ -6,7 +6,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newLibxslt() pkg.Artifact {
+func (t Toolchain) newLibxslt() (pkg.Artifact, string) {
const (
version = "1.1.45"
checksum = "vw72UbREQnA3YDYuZ9-93hDr9BYCaKV6oh_U4Kt4n1Js_na4E-nFj-ksZnZ0kvEK"
@@ -27,6 +27,14 @@ func (t Toolchain) newLibxslt() pkg.Artifact {
PkgConfig,
Libxml2,
- )
+ ), version
+}
+func init() {
+ artifactsM[Libxslt] = Metadata{
+ f: Toolchain.newLibxslt,
+
+ Name: "libxslt",
+ Description: "an XSLT processor based on libxml2",
+ Website: "https://gitlab.gnome.org/GNOME/libxslt/",
+ }
}
-func init() { artifactsF[Libxslt] = Toolchain.newLibxslt }
diff --git a/internal/rosa/llvm.go b/internal/rosa/llvm.go
index c0c64938..8154d17f 100644
--- a/internal/rosa/llvm.go
+++ b/internal/rosa/llvm.go
@@ -216,6 +216,10 @@ func (t Toolchain) newLLVM() (musl, compilerRT, runtimes, clang pkg.Artifact) {
{"LLVM_ENABLE_LIBXML2", "OFF"},
}
+ muslHeaders, _ := t.newMusl(true, []string{
+ "CC=clang",
+ })
+
compilerRT = t.newLLVMVariant("compiler-rt", &llvmAttr{
env: stage0ExclConcat(t, []string{},
"LDFLAGS="+earlyLDFLAGS(false),
@@ -237,9 +241,9 @@ func (t Toolchain) newLLVM() (musl, compilerRT, runtimes, clang pkg.Artifact) {
{"COMPILER_RT_BUILD_XRAY", "OFF"},
},
append: []string{"compiler-rt"},
- nonStage0: []pkg.Artifact{t.newMusl(true, []string{
- "CC=clang",
- })},
+ nonStage0: []pkg.Artifact{
+ muslHeaders,
+ },
script: `
mkdir -p "/work/system/lib/clang/21/lib/"
ln -s \
@@ -255,7 +259,7 @@ ln -s \
`,
})
- musl = t.newMusl(false, stage0ExclConcat(t, []string{
+ musl, _ = t.newMusl(false, stage0ExclConcat(t, []string{
"CC=clang",
"LIBCC=/system/lib/clang/21/lib/" +
triplet() + "/libclang_rt.builtins.a",
diff --git a/internal/rosa/make.go b/internal/rosa/make.go
index 891f6077..9af01275 100644
--- a/internal/rosa/make.go
+++ b/internal/rosa/make.go
@@ -7,7 +7,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newMake() pkg.Artifact {
+func (t Toolchain) newMake() (pkg.Artifact, string) {
const (
version = "4.4.1"
checksum = "YS_B07ZcAy9PbaK5_vKGj64SrxO2VMpnMKfc9I0Q9IC1rn0RwOH7802pJoj2Mq4a"
@@ -24,9 +24,17 @@ cd "$(mktemp -d)"
nil, "https://ftpmirror.gnu.org/gnu/make/make-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- )))
+ ))), version
+}
+func init() {
+ artifactsM[Make] = Metadata{
+ f: Toolchain.newMake,
+
+ Name: "make",
+ Description: "a tool which controls the generation of executables and other non-source files",
+ Website: "https://www.gnu.org/software/make/",
+ }
}
-func init() { artifactsF[Make] = Toolchain.newMake }
// MakeHelper is the [Make] build system helper.
type MakeHelper struct {
diff --git a/internal/rosa/meson.go b/internal/rosa/meson.go
index 317b102d..0bd1d716 100644
--- a/internal/rosa/meson.go
+++ b/internal/rosa/meson.go
@@ -7,7 +7,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newMeson() pkg.Artifact {
+func (t Toolchain) newMeson() (pkg.Artifact, string) {
const (
version = "1.10.1"
checksum = "w895BXF_icncnXatT_OLCFe2PYEtg4KrKooMgUYdN-nQVvbFX3PvYWHGEpogsHtd"
@@ -27,9 +27,17 @@ python3 setup.py \
version+"/meson-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- )))
+ ))), version
+}
+func init() {
+ artifactsM[Meson] = Metadata{
+ f: Toolchain.newMeson,
+
+ Name: "meson",
+ Description: "an open source build system",
+ Website: "https://mesonbuild.com/",
+ }
}
-func init() { artifactsF[Meson] = Toolchain.newMeson }
// MesonHelper is the [Meson] build system helper.
type MesonHelper struct {
diff --git a/internal/rosa/mksh.go b/internal/rosa/mksh.go
index 318bd3c4..8c2ac503 100644
--- a/internal/rosa/mksh.go
+++ b/internal/rosa/mksh.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newMksh() pkg.Artifact {
+func (t Toolchain) newMksh() (pkg.Artifact, string) {
const (
version = "59c"
checksum = "0Zj-k4nXEu3IuJY4lvwD2OrC2t27GdZj8SPy4DoaeuBRH1padWb7oREpYgwY8JNq"
@@ -31,6 +31,14 @@ ln -vs ../system/bin/sh /work/bin/
"https://mbsd.evolvis.org/MirOS/dist/mir/mksh/mksh-R"+version+".tgz",
mustDecode(checksum),
pkg.TarGzip,
- )))
+ ))), version
+}
+func init() {
+ artifactsM[Mksh] = Metadata{
+ f: Toolchain.newMksh,
+
+ Name: "mksh",
+ Description: "MirBSD Korn Shell",
+ Website: "https://www.mirbsd.org/mksh",
+ }
}
-func init() { artifactsF[Mksh] = Toolchain.newMksh }
diff --git a/internal/rosa/musl-fts.go b/internal/rosa/musl-fts.go
index 26faf79b..1ce50770 100644
--- a/internal/rosa/musl-fts.go
+++ b/internal/rosa/musl-fts.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newMuslFts() pkg.Artifact {
+func (t Toolchain) newMuslFts() (pkg.Artifact, string) {
const (
version = "1.2.7"
checksum = "N_p_ZApX3eHt7xoDCw1hLf6XdJOw7ZSx7xPvpvAP0knG2zgU0zeN5w8tt5Pg60XJ"
@@ -25,6 +25,14 @@ func (t Toolchain) newMuslFts() pkg.Artifact {
Automake,
Libtool,
PkgConfig,
- )
+ ), version
+}
+func init() {
+ artifactsM[MuslFts] = Metadata{
+ f: Toolchain.newMuslFts,
+
+ Name: "musl-fts",
+ Description: "implementation of fts(3) functions which are missing in musl libc",
+ Website: "https://github.com/void-linux/musl-fts",
+ }
}
-func init() { artifactsF[MuslFts] = Toolchain.newMuslFts }
diff --git a/internal/rosa/musl-obstack.go b/internal/rosa/musl-obstack.go
index 1f100db2..613e2879 100644
--- a/internal/rosa/musl-obstack.go
+++ b/internal/rosa/musl-obstack.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newMuslObstack() pkg.Artifact {
+func (t Toolchain) newMuslObstack() (pkg.Artifact, string) {
const (
version = "1.2.3"
checksum = "tVRY_KjIlkkMszcaRlkKdBVQHIXTT_T_TiMxbwErlILXrOBosocg8KklppZhNdCG"
@@ -25,6 +25,14 @@ func (t Toolchain) newMuslObstack() pkg.Artifact {
Automake,
Libtool,
PkgConfig,
- )
+ ), version
+}
+func init() {
+ artifactsM[MuslObstack] = Metadata{
+ f: Toolchain.newMuslObstack,
+
+ Name: "musl-obstack",
+ Description: "obstack functions and macros separated from glibc",
+ Website: "https://github.com/void-linux/musl-obstack",
+ }
}
-func init() { artifactsF[MuslObstack] = Toolchain.newMuslObstack }
diff --git a/internal/rosa/musl.go b/internal/rosa/musl.go
index 076fffcc..1b2c509d 100644
--- a/internal/rosa/musl.go
+++ b/internal/rosa/musl.go
@@ -6,7 +6,7 @@ func (t Toolchain) newMusl(
headers bool,
env []string,
extra ...pkg.Artifact,
-) pkg.Artifact {
+) (pkg.Artifact, string) {
const (
version = "1.2.5"
checksum = "y6USdIeSdHER_Fw2eT2CNjqShEye85oEg2jnOur96D073ukmIpIqDOLmECQroyDb"
@@ -50,10 +50,16 @@ rmdir -v /work/lib
Env: env,
}, &helper,
Coreutils,
- )
+ ), version
}
func init() {
- artifactsF[Musl] = func(t Toolchain) pkg.Artifact {
- return t.newMusl(false, nil)
+ artifactsM[Musl] = Metadata{
+ f: func(t Toolchain) (pkg.Artifact, string) {
+ return t.newMusl(false, nil)
+ },
+
+ Name: "musl",
+ Description: "an implementation of the C standard library",
+ Website: "https://musl.libc.org/",
}
}
diff --git a/internal/rosa/ncurses.go b/internal/rosa/ncurses.go
index 3a9e0162..45a86098 100644
--- a/internal/rosa/ncurses.go
+++ b/internal/rosa/ncurses.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newNcurses() pkg.Artifact {
+func (t Toolchain) newNcurses() (pkg.Artifact, string) {
const (
version = "6.6"
checksum = "XvWp4xi6hR_hH8XUoGY26L_pqBSDapJYulhzZqPuR0KNklqypqNc1yNXU-nOjf5w"
@@ -21,6 +21,14 @@ func (t Toolchain) newNcurses() pkg.Artifact {
},
},
PkgConfig,
- )
+ ), version
+}
+func init() {
+ artifactsM[Ncurses] = Metadata{
+ f: Toolchain.newNcurses,
+
+ Name: "ncurses",
+ Description: "a free software emulation of curses in System V Release 4.0 (SVr4)",
+ Website: "https://invisible-island.net/ncurses/",
+ }
}
-func init() { artifactsF[Ncurses] = Toolchain.newNcurses }
diff --git a/internal/rosa/ninja.go b/internal/rosa/ninja.go
index 50772aec..7cc5cca7 100644
--- a/internal/rosa/ninja.go
+++ b/internal/rosa/ninja.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newNinja() pkg.Artifact {
+func (t Toolchain) newNinja() (pkg.Artifact, string) {
const (
version = "1.13.2"
checksum = "ygKWMa0YV2lWKiFro5hnL-vcKbc_-RACZuPu0Io8qDvgQlZ0dxv7hPNSFkt4214v"
@@ -33,6 +33,14 @@ cp ninja /work/system/bin/
mustDecode(checksum),
pkg.TarGzip,
), false,
- )))
+ ))), version
+}
+func init() {
+ artifactsM[Ninja] = Metadata{
+ f: Toolchain.newNinja,
+
+ Name: "ninja",
+ Description: "a small build system with a focus on speed",
+ Website: "https://ninja-build.org/",
+ }
}
-func init() { artifactsF[Ninja] = Toolchain.newNinja }
diff --git a/internal/rosa/openssl.go b/internal/rosa/openssl.go
index 600355ef..e798b3ef 100644
--- a/internal/rosa/openssl.go
+++ b/internal/rosa/openssl.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newOpenSSL() pkg.Artifact {
+func (t Toolchain) newOpenSSL() (pkg.Artifact, string) {
const (
version = "3.5.5"
checksum = "I2Hp1LxcTR8j4G6LFEQMVy6EJH-Na1byI9Ti-ThBot6EMLNRnjGXGq-WXrim3Fkz"
@@ -35,6 +35,14 @@ func (t Toolchain) newOpenSSL() pkg.Artifact {
Zlib,
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[OpenSSL] = Metadata{
+ f: Toolchain.newOpenSSL,
+
+ Name: "openssl",
+ Description: "TLS/SSL and crypto library",
+ Website: "https://www.openssl.org/",
+ }
}
-func init() { artifactsF[OpenSSL] = Toolchain.newOpenSSL }
diff --git a/internal/rosa/pcre2.go b/internal/rosa/pcre2.go
index 415384e1..53ab3e56 100644
--- a/internal/rosa/pcre2.go
+++ b/internal/rosa/pcre2.go
@@ -4,7 +4,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newPCRE2() pkg.Artifact {
+func (t Toolchain) newPCRE2() (pkg.Artifact, string) {
const (
version = "10.43"
checksum = "iyNw-POPSJwiZVJfUK5qACA6q2uMzP-84WieimN_CskaEkuw5fRnRTZhEv6ry2Yo"
@@ -28,6 +28,14 @@ ln -s ../system/bin/toybox /bin/echo
},
},
Diffutils,
- )
+ ), version
+}
+func init() {
+ artifactsM[PCRE2] = Metadata{
+ f: Toolchain.newPCRE2,
+
+ Name: "pcre2",
+ Description: "a set of C functions that implement regular expression pattern matching",
+ Website: "https://pcre2project.github.io/pcre2/",
+ }
}
-func init() { artifactsF[PCRE2] = Toolchain.newPCRE2 }
diff --git a/internal/rosa/perl.go b/internal/rosa/perl.go
index 64e8c549..e98cddc6 100644
--- a/internal/rosa/perl.go
+++ b/internal/rosa/perl.go
@@ -6,7 +6,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newPerl() pkg.Artifact {
+func (t Toolchain) newPerl() (pkg.Artifact, string) {
const (
version = "5.42.0"
checksum = "2KR7Jbpk-ZVn1a30LQRwbgUvg2AXlPQZfzrqCr31qD5-yEsTwVQ_W76eZH-EdxM9"
@@ -45,9 +45,17 @@ rm -f /system/bin/ps # perl does not like toybox ps
"test_harness",
},
Install: "./perl -Ilib -I. installperl --destdir=/work",
- })
+ }), version
+}
+func init() {
+ artifactsM[Perl] = Metadata{
+ f: Toolchain.newPerl,
+
+ Name: "perl",
+ Description: "The Perl Programming language",
+ Website: "https://www.perl.org/",
+ }
}
-func init() { artifactsF[Perl] = Toolchain.newPerl }
// newViaPerlModuleBuild installs a perl module via Build.PL.
func (t Toolchain) newViaPerlModuleBuild(
@@ -72,7 +80,7 @@ perl Build.PL --prefix=/system
)))
}
-func (t Toolchain) newPerlModuleBuild() pkg.Artifact {
+func (t Toolchain) newPerlModuleBuild() (pkg.Artifact, string) {
const (
version = "0.4234"
checksum = "ZKxEFG4hE1rqZt52zBL2LRZBMkYzhjb5-cTBXcsyA52EbPeeYyVxU176yAea8-Di"
@@ -82,9 +90,17 @@ func (t Toolchain) newPerlModuleBuild() pkg.Artifact {
"Module-Build-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil)
+ ), nil), version
+}
+func init() {
+ artifactsM[PerlModuleBuild] = Metadata{
+ f: Toolchain.newPerlModuleBuild,
+
+ Name: "perl-Module::Build",
+ Description: "build and install Perl modules",
+ Website: "https://metacpan.org/release/Module-Build",
+ }
}
-func init() { artifactsF[PerlModuleBuild] = Toolchain.newPerlModuleBuild }
// newViaPerlMakeMaker installs a perl module via Makefile.PL.
func (t Toolchain) newViaPerlMakeMaker(
@@ -114,7 +130,7 @@ func (t Toolchain) newViaPerlMakeMaker(
})...)
}
-func (t Toolchain) newPerlLocaleGettext() pkg.Artifact {
+func (t Toolchain) newPerlLocaleGettext() (pkg.Artifact, string) {
const (
version = "1.07"
checksum = "cFq4BKFD1MWSoa7lsrPjpdo9kzPqd0jlRcBFUyL1L1isw8m3D_Sge_ff0MAu_9J3"
@@ -124,11 +140,19 @@ func (t Toolchain) newPerlLocaleGettext() pkg.Artifact {
"Locale-gettext-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil)
+ ), nil), version
+}
+func init() {
+ artifactsM[PerlLocaleGettext] = Metadata{
+ f: Toolchain.newPerlLocaleGettext,
+
+ Name: "perl-Locale::gettext",
+ Description: "message handling functions",
+ Website: "https://metacpan.org/release/Locale-gettext",
+ }
}
-func init() { artifactsF[PerlLocaleGettext] = Toolchain.newPerlLocaleGettext }
-func (t Toolchain) newPerlPodParser() pkg.Artifact {
+func (t Toolchain) newPerlPodParser() (pkg.Artifact, string) {
const (
version = "1.67"
checksum = "RdURu9mOfExk_loCp6abxlcQV3FycSNbTqhRS9i6JUqnYfGGEgercK30g0gjYyqe"
@@ -138,11 +162,19 @@ func (t Toolchain) newPerlPodParser() pkg.Artifact {
"Pod-Parser-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil)
+ ), nil), version
}
-func init() { artifactsF[PerlPodParser] = Toolchain.newPerlPodParser }
+func init() {
+ artifactsM[PerlPodParser] = Metadata{
+ f: Toolchain.newPerlPodParser,
-func (t Toolchain) newPerlSGMLS() pkg.Artifact {
+ Name: "perl-Pod::Parser",
+ Description: "base class for creating POD filters and translators",
+ Website: "https://metacpan.org/release/Pod-Parser",
+ }
+}
+
+func (t Toolchain) newPerlSGMLS() (pkg.Artifact, string) {
const (
version = "1.1"
checksum = "aZijn4MUqD-wfyZgdcCruCwl4SgDdu25cNmJ4_UvdAk9a7uz4gzMQdoeB6DQ6QOy"
@@ -152,11 +184,19 @@ func (t Toolchain) newPerlSGMLS() pkg.Artifact {
"SGMLSpm-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil)
+ ), nil), version
}
-func init() { artifactsF[PerlSGMLS] = Toolchain.newPerlSGMLS }
+func init() {
+ artifactsM[PerlSGMLS] = Metadata{
+ f: Toolchain.newPerlSGMLS,
-func (t Toolchain) newPerlTermReadKey() pkg.Artifact {
+ Name: "perl-SGMLS",
+ Description: "class for postprocessing the output from the sgmls and nsgmls parsers",
+ Website: "https://metacpan.org/release/RAAB/SGMLSpm-1.1",
+ }
+}
+
+func (t Toolchain) newPerlTermReadKey() (pkg.Artifact, string) {
const (
version = "2.38"
checksum = "qerL8Xo7kD0f42PZoiEbmE8Roc_S9pOa27LXelY4DN_0UNy_u5wLrGHI8utNlaiI"
@@ -166,11 +206,19 @@ func (t Toolchain) newPerlTermReadKey() pkg.Artifact {
"TermReadKey-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil)
+ ), nil), version
+}
+func init() {
+ artifactsM[PerlTermReadKey] = Metadata{
+ f: Toolchain.newPerlTermReadKey,
+
+ Name: "perl-Term::ReadKey",
+ Description: "a perl module for simple terminal control",
+ Website: "https://metacpan.org/release/TermReadKey",
+ }
}
-func init() { artifactsF[PerlTermReadKey] = Toolchain.newPerlTermReadKey }
-func (t Toolchain) newPerlTextCharWidth() pkg.Artifact {
+func (t Toolchain) newPerlTextCharWidth() (pkg.Artifact, string) {
const (
version = "0.04"
checksum = "G2p5RHU4_HiZ23ZusBA_enTlVMxz0J4esUx4CGcOPhY6xYTbp-aXWRN6lYZpzBw2"
@@ -180,11 +228,19 @@ func (t Toolchain) newPerlTextCharWidth() pkg.Artifact {
"Text-CharWidth-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil)
+ ), nil), version
}
-func init() { artifactsF[PerlTextCharWidth] = Toolchain.newPerlTextCharWidth }
+func init() {
+ artifactsM[PerlTextCharWidth] = Metadata{
+ f: Toolchain.newPerlTextCharWidth,
-func (t Toolchain) newPerlTextWrapI18N() pkg.Artifact {
+ Name: "perl-Text::CharWidth",
+ Description: "get number of occupied columns of a string on terminal",
+ Website: "https://metacpan.org/release/Text-CharWidth",
+ }
+}
+
+func (t Toolchain) newPerlTextWrapI18N() (pkg.Artifact, string) {
const (
version = "0.06"
checksum = "Vmo89qLgxUqyQ6QmWJVqu60aQAUjrNKRjFQSXGnvClxofzRjiCa6idzPgJ4VkixM"
@@ -196,11 +252,19 @@ func (t Toolchain) newPerlTextWrapI18N() pkg.Artifact {
pkg.TarGzip,
), nil,
PerlTextCharWidth,
- )
+ ), version
}
-func init() { artifactsF[PerlTextWrapI18N] = Toolchain.newPerlTextWrapI18N }
+func init() {
+ artifactsM[PerlTextWrapI18N] = Metadata{
+ f: Toolchain.newPerlTextWrapI18N,
-func (t Toolchain) newPerlMIMECharset() pkg.Artifact {
+ Name: "perl-Text::WrapI18N",
+ Description: "line wrapping module",
+ Website: "https://metacpan.org/release/Text-WrapI18N",
+ }
+}
+
+func (t Toolchain) newPerlMIMECharset() (pkg.Artifact, string) {
const (
version = "1.013.1"
checksum = "Ou_ukcrOa1cgtE3mptinb-os3bdL1SXzbRDFZQF3prrJj-drc3rp_huay7iDLJol"
@@ -210,11 +274,19 @@ func (t Toolchain) newPerlMIMECharset() pkg.Artifact {
"MIME-Charset-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil)
+ ), nil), version
}
-func init() { artifactsF[PerlMIMECharset] = Toolchain.newPerlMIMECharset }
+func init() {
+ artifactsM[PerlMIMECharset] = Metadata{
+ f: Toolchain.newPerlMIMECharset,
-func (t Toolchain) newPerlUnicodeGCString() pkg.Artifact {
+ Name: "perl-MIME::Charset",
+ Description: "Charset Information for MIME",
+ Website: "https://metacpan.org/release/MIME-Charset",
+ }
+}
+
+func (t Toolchain) newPerlUnicodeGCString() (pkg.Artifact, string) {
const (
version = "2019.001"
checksum = "ZHVkh7EDgAUHnTpvXsnPAuWpgNoBImtY_9_8TIbo2co_WgUwEb0MtXPhI8pAZ5OH"
@@ -226,11 +298,19 @@ func (t Toolchain) newPerlUnicodeGCString() pkg.Artifact {
pkg.TarGzip,
), nil,
PerlMIMECharset,
- )
+ ), version
+}
+func init() {
+ artifactsM[PerlUnicodeGCString] = Metadata{
+ f: Toolchain.newPerlUnicodeGCString,
+
+ Name: "perl-Unicode::GCString",
+ Description: "String as Sequence of UAX #29 Grapheme Clusters",
+ Website: "https://metacpan.org/release/Unicode-LineBreak",
+ }
}
-func init() { artifactsF[PerlUnicodeGCString] = Toolchain.newPerlUnicodeGCString }
-func (t Toolchain) newPerlYAMLTiny() pkg.Artifact {
+func (t Toolchain) newPerlYAMLTiny() (pkg.Artifact, string) {
const (
version = "1.76"
checksum = "V1MV4KPym1LxSw8CRXqPR3K-l1hGHbT5Ob4t-9xju6R9X_CWyw6hI8wsMaNdHdBY"
@@ -240,6 +320,14 @@ func (t Toolchain) newPerlYAMLTiny() pkg.Artifact {
"YAML-Tiny-"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- ), nil)
+ ), nil), version
+}
+func init() {
+ artifactsM[PerlYAMLTiny] = Metadata{
+ f: Toolchain.newPerlYAMLTiny,
+
+ Name: "perl-YAML::Tiny",
+ Description: "read/write YAML files with as little code as possible",
+ Website: "https://metacpan.org/release/YAML-Tiny",
+ }
}
-func init() { artifactsF[PerlYAMLTiny] = Toolchain.newPerlYAMLTiny }
diff --git a/internal/rosa/pkg-config.go b/internal/rosa/pkg-config.go
index 32eb1363..e868249e 100644
--- a/internal/rosa/pkg-config.go
+++ b/internal/rosa/pkg-config.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newPkgConfig() pkg.Artifact {
+func (t Toolchain) newPkgConfig() (pkg.Artifact, string) {
const (
version = "0.29.2"
checksum = "gi7yAvkwo20Inys1tHbeYZ3Wjdm5VPkrnO0Q6_QZPCAwa1zrA8F4a63cdZDd-717"
@@ -17,6 +17,14 @@ func (t Toolchain) newPkgConfig() pkg.Artifact {
{"CFLAGS", "'-Wno-int-conversion'"},
{"with-internal-glib"},
},
- })
+ }), version
+}
+func init() {
+ artifactsM[PkgConfig] = Metadata{
+ f: Toolchain.newPkgConfig,
+
+ Name: "pkg-config",
+ Description: "a helper tool used when compiling applications and libraries",
+ Website: "https://pkgconfig.freedesktop.org/",
+ }
}
-func init() { artifactsF[PkgConfig] = Toolchain.newPkgConfig }
diff --git a/internal/rosa/procps.go b/internal/rosa/procps.go
index 51c39501..a7397fb9 100644
--- a/internal/rosa/procps.go
+++ b/internal/rosa/procps.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newProcps() pkg.Artifact {
+func (t Toolchain) newProcps() (pkg.Artifact, string) {
const (
version = "4.0.6"
checksum = "pl_fZLvDlv6iZTkm8l_tHFpzTDVFGCiSJEs3eu0zAX6u36AV36P_En8K7JPScRWM"
@@ -27,6 +27,14 @@ func (t Toolchain) newProcps() pkg.Artifact {
Gzip,
PkgConfig,
- )
+ ), version
+}
+func init() {
+ artifactsM[Procps] = Metadata{
+ f: Toolchain.newProcps,
+
+ Name: "procps",
+ Description: "command line and full screen utilities for browsing procfs",
+ Website: "https://gitlab.com/procps-ng/procps",
+ }
}
-func init() { artifactsF[Procps] = Toolchain.newProcps }
diff --git a/internal/rosa/python.go b/internal/rosa/python.go
index 1c9a2fe7..2adee576 100644
--- a/internal/rosa/python.go
+++ b/internal/rosa/python.go
@@ -7,7 +7,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newPython() pkg.Artifact {
+func (t Toolchain) newPython() (pkg.Artifact, string) {
const (
version = "3.14.2"
checksum = "7nZunVMGj0viB-CnxpcRego2C90X5wFsMTgsoewd5z-KSZY2zLuqaBwG-14zmKys"
@@ -59,31 +59,52 @@ func (t Toolchain) newPython() pkg.Artifact {
OpenSSL,
Bzip2,
XZ,
- )
+ ), version
+}
+func init() {
+ artifactsM[Python] = Metadata{
+ f: Toolchain.newPython,
+
+ Name: "python",
+ Description: "the Python programming language interpreter",
+ Website: "https://www.python.org/",
+ }
}
-func init() { artifactsF[Python] = Toolchain.newPython }
// newViaPip is a helper for installing python dependencies via pip.
-func (t Toolchain) newViaPip(
- name, version, abi, platform, checksum, prefix string,
- extra ...pkg.Artifact,
-) pkg.Artifact {
+func newViaPip(
+ name, description, version, abi, platform, checksum, prefix string,
+ extra ...PArtifact,
+) Metadata {
wname := name + "-" + version + "-py3-" + abi + "-" + platform + ".whl"
- return t.New(name+"-"+version, 0, slices.Concat([]pkg.Artifact{
- t.Load(Python),
- }, extra), nil, nil, `
+ return Metadata{
+ f: func(t Toolchain) (pkg.Artifact, string) {
+ extraRes := make([]pkg.Artifact, len(extra))
+ for i, p := range extra {
+ extraRes[i] = t.Load(p)
+ }
+
+ return t.New(name+"-"+version, 0, slices.Concat([]pkg.Artifact{
+ t.Load(Python),
+ }, extraRes), nil, nil, `
pip3 install \
--no-index \
--prefix=/system \
--root=/work \
/usr/src/`+wname+`
`, pkg.Path(AbsUsrSrc.Append(wname), false, pkg.NewHTTPGet(
- nil, prefix+wname,
- mustDecode(checksum),
- )))
+ nil, prefix+wname,
+ mustDecode(checksum),
+ ))), version
+ },
+
+ Name: "python-" + name,
+ Description: description,
+ Website: "https://pypi.org/project/" + name + "/",
+ }
}
-func (t Toolchain) newSetuptools() pkg.Artifact {
+func (t Toolchain) newSetuptools() (pkg.Artifact, string) {
const (
version = "80.10.1"
checksum = "p3rlwEmy1krcUH1KabprQz1TCYjJ8ZUjOQknQsWh3q-XEqLGEd3P4VrCc7ouHGXU"
@@ -101,53 +122,64 @@ pip3 install \
"v"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- )))
+ ))), version
}
-func init() { artifactsF[Setuptools] = Toolchain.newSetuptools }
+func init() {
+ artifactsM[Setuptools] = Metadata{
+ f: Toolchain.newSetuptools,
-func (t Toolchain) newPygments() pkg.Artifact {
- return t.newViaPip("pygments", "2.19.2", "none", "any",
+ Name: "setuptools",
+ Description: "the autotools of the Python ecosystem",
+ Website: "https://pypi.org/project/setuptools/",
+ }
+}
+
+func init() {
+ artifactsM[Pygments] = newViaPip(
+ "pygments",
+ " a syntax highlighting package written in Python",
+ "2.19.2", "none", "any",
"ak_lwTalmSr7W4Mjy2XBZPG9I6a0gwSy2pS87N8x4QEuZYif0ie9z0OcfRfi9msd",
"https://files.pythonhosted.org/packages/"+
- "c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/")
-}
-func init() { artifactsF[Pygments] = Toolchain.newPygments }
+ "c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/",
+ )
-func (t Toolchain) newPluggy() pkg.Artifact {
- return t.newViaPip("pluggy", "1.6.0", "none", "any",
+ artifactsM[Pluggy] = newViaPip(
+ "pluggy",
+ "the core framework used by the pytest, tox, and devpi projects",
+ "1.6.0", "none", "any",
"2HWYBaEwM66-y1hSUcWI1MyE7dVVuNNRW24XD6iJBey4YaUdAK8WeXdtFMQGC-4J",
"https://files.pythonhosted.org/packages/"+
- "54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/")
-}
-func init() { artifactsF[Pluggy] = Toolchain.newPluggy }
+ "54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/",
+ )
-func (t Toolchain) newPackaging() pkg.Artifact {
- return t.newViaPip("packaging", "26.0", "none", "any",
+ artifactsM[Packaging] = newViaPip(
+ "packaging",
+ "reusable core utilities for various Python Packaging interoperability specifications",
+ "26.0", "none", "any",
"iVVXcqdwHDskPKoCFUlh2x8J0Gyq-bhO4ns9DvUJ7oJjeOegRYtSIvLV33Bki-pP",
"https://files.pythonhosted.org/packages/"+
- "b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/")
-}
-func init() { artifactsF[Packaging] = Toolchain.newPackaging }
+ "b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/",
+ )
-func (t Toolchain) newIniConfig() pkg.Artifact {
- const version = "2.3.0"
- return t.newViaPip("iniconfig", version, "none", "any",
+ artifactsM[IniConfig] = newViaPip(
+ "iniconfig",
+ "a small and simple INI-file parser module",
+ "2.3.0", "none", "any",
"SDgs4S5bXi77aVOeKTPv2TUrS3M9rduiK4DpU0hCmDsSBWqnZcWInq9lsx6INxut",
- "https://github.com/pytest-dev/iniconfig/releases/download/"+
- "v"+version+"/")
-}
-func init() { artifactsF[IniConfig] = Toolchain.newIniConfig }
-
-func (t Toolchain) newPyTest() pkg.Artifact {
- const version = "9.0.2"
- return t.newViaPip("pytest", version, "none", "any",
+ "https://files.pythonhosted.org/packages/"+
+ "cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/",
+ )
+ artifactsM[PyTest] = newViaPip(
+ "pytest",
+ "the pytest framework",
+ "9.0.2", "none", "any",
"IM2wDbLke1EtZhF92zvAjUl_Hms1uKDtM7U8Dt4acOaChMnDg1pW7ib8U0wYGDLH",
- "https://github.com/pytest-dev/pytest/releases/download/"+
- version+"/",
- t.Load(IniConfig),
- t.Load(Packaging),
- t.Load(Pluggy),
- t.Load(Pygments),
+ "https://files.pythonhosted.org/packages/"+
+ "3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/",
+ IniConfig,
+ Packaging,
+ Pluggy,
+ Pygments,
)
}
-func init() { artifactsF[PyTest] = Toolchain.newPyTest }
diff --git a/internal/rosa/qemu.go b/internal/rosa/qemu.go
index 385c13df..e609ec62 100644
--- a/internal/rosa/qemu.go
+++ b/internal/rosa/qemu.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newQEMU() pkg.Artifact {
+func (t Toolchain) newQEMU() (pkg.Artifact, string) {
const (
version = "10.2.1"
checksum = "rjLTSgHJd3X3Vgpxrsus_ZZiaYLiNix1YhcHaGbLd_odYixwZjCcAIt8CVQPJGdZ"
@@ -93,6 +93,14 @@ EOF
Zstd,
DTC,
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[QEMU] = Metadata{
+ f: Toolchain.newQEMU,
+
+ Name: "qemu",
+ Description: "a generic and open source machine emulator and virtualizer",
+ Website: "https://www.qemu.org/",
+ }
}
-func init() { artifactsF[QEMU] = Toolchain.newQEMU }
diff --git a/internal/rosa/rsync.go b/internal/rosa/rsync.go
index ccf41862..7816465b 100644
--- a/internal/rosa/rsync.go
+++ b/internal/rosa/rsync.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newRsync() pkg.Artifact {
+func (t Toolchain) newRsync() (pkg.Artifact, string) {
const (
version = "3.4.1"
checksum = "VBlTsBWd9z3r2-ex7GkWeWxkUc5OrlgDzikAC0pK7ufTjAJ0MbmC_N04oSVTGPiv"
@@ -24,6 +24,14 @@ func (t Toolchain) newRsync() pkg.Artifact {
// circular dependency
SkipCheck: true,
- })
+ }), version
+}
+func init() {
+ artifactsM[Rsync] = Metadata{
+ f: Toolchain.newRsync,
+
+ Name: "rsync",
+ Description: "an open source utility that provides fast incremental file transfer",
+ Website: "https://rsync.samba.org/",
+ }
}
-func init() { artifactsF[Rsync] = Toolchain.newRsync }
diff --git a/internal/rosa/squashfs.go b/internal/rosa/squashfs.go
index 8d0c0203..004f4eff 100644
--- a/internal/rosa/squashfs.go
+++ b/internal/rosa/squashfs.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newSquashfsTools() pkg.Artifact {
+func (t Toolchain) newSquashfsTools() (pkg.Artifact, string) {
const (
version = "4.7.4"
checksum = "pG0E_wkRJFS6bvPYF-hTKZT-cWnvo5BbIzCDZrJZVQDgJOx2Vc3ZfNSEV7Di7cSW"
@@ -39,6 +39,14 @@ func (t Toolchain) newSquashfsTools() pkg.Artifact {
Zstd,
Gzip,
Zlib,
- )
+ ), version
+}
+func init() {
+ artifactsM[SquashfsTools] = Metadata{
+ f: Toolchain.newSquashfsTools,
+
+ Name: "squashfs-tools",
+ Description: "tools to create and extract Squashfs filesystems",
+ Website: "https://github.com/plougher/squashfs-tools",
+ }
}
-func init() { artifactsF[SquashfsTools] = Toolchain.newSquashfsTools }
diff --git a/internal/rosa/ssl.go b/internal/rosa/ssl.go
index 1e57cc7f..59e2667e 100644
--- a/internal/rosa/ssl.go
+++ b/internal/rosa/ssl.go
@@ -4,7 +4,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newNSS() pkg.Artifact {
+func (t Toolchain) newNSS() (pkg.Artifact, string) {
const (
version = "3_120"
checksum = "9M0SNMrj9BJp6RH2rQnMm6bZWtP0Kgj64D5JNPHF7Cxr2_8kfy3msubIcvEPwC35"
@@ -63,20 +63,31 @@ cp -r \
Zlib,
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[NSS] = Metadata{
+ f: Toolchain.newNSS,
+
+ Name: "nss",
+ Description: "Network Security Services",
+ Website: "https://firefox-source-docs.mozilla.org/security/nss/index.html",
+ }
}
-func init() { artifactsF[NSS] = Toolchain.newNSS }
-func (t Toolchain) newBuildCATrust() pkg.Artifact {
+func init() {
const version = "0.4.0"
- return t.newViaPip("buildcatrust", version, "none", "any",
+ artifactsM[buildcatrust] = newViaPip(
+ "buildcatrust",
+ "transform certificate stores between formats",
+ version, "none", "any",
"k_FGzkRCLjbTWBkuBLzQJ1S8FPAz19neJZlMHm0t10F2Y0hElmvVwdSBRc03Rjo1",
"https://github.com/nix-community/buildcatrust/"+
- "releases/download/v"+version+"/")
+ "releases/download/v"+version+"/",
+ )
}
-func init() { artifactsF[buildcatrust] = Toolchain.newBuildCATrust }
-func (t Toolchain) newNSSCACert() pkg.Artifact {
+func (t Toolchain) newNSSCACert() (pkg.Artifact, string) {
return t.New("nss-cacert", 0, []pkg.Artifact{
t.Load(Bash),
t.Load(Python),
@@ -92,6 +103,14 @@ buildcatrust \
--ca_unpacked_output /work/system/etc/ssl/certs/unbundled \
--ca_hashed_unpacked_output /work/system/etc/ssl/certs/hashed \
--p11kit_output /work/system/etc/ssl/trust-source/ca-bundle.trust.p11-kit
-`)
+`), Unversioned
+}
+func init() {
+ artifactsM[NSSCACert] = Metadata{
+ f: Toolchain.newNSSCACert,
+
+ Name: "nss-cacert",
+ Description: "bundle of X.509 certificates of public Certificate Authorities",
+ Website: "https://curl.se/docs/caextract.html",
+ }
}
-func init() { artifactsF[NSSCACert] = Toolchain.newNSSCACert }
diff --git a/internal/rosa/stage0.go b/internal/rosa/stage0.go
index e446ffe5..b579d392 100644
--- a/internal/rosa/stage0.go
+++ b/internal/rosa/stage0.go
@@ -7,7 +7,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newStage0() pkg.Artifact {
+func (t Toolchain) newStage0() (pkg.Artifact, string) {
musl, compilerRT, runtimes, clang := t.NewLLVM()
return t.New("rosa-stage0", 0, []pkg.Artifact{
musl,
@@ -39,9 +39,16 @@ tar \
-C / \
-f /work/stage0-`+triplet()+`.tar.bz2 \
system bin usr/bin/env
-`)
+`), Unversioned
+}
+func init() {
+ artifactsM[Stage0] = Metadata{
+ f: Toolchain.newStage0,
+
+ Name: "rosa-stage0",
+ Description: "Rosa OS stage0 toolchain tarball for bootstrap",
+ }
}
-func init() { artifactsF[Stage0] = Toolchain.newStage0 }
var (
// stage0 stores the tarball unpack artifact.
diff --git a/internal/rosa/tamago.go b/internal/rosa/tamago.go
index 58ca648b..1b2b4e31 100644
--- a/internal/rosa/tamago.go
+++ b/internal/rosa/tamago.go
@@ -6,7 +6,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newTamaGo() pkg.Artifact {
+func (t Toolchain) newTamaGo() (pkg.Artifact, string) {
const (
version = "1.26.0"
checksum = "5XkfbpTpSdPJfwtTfUegfdu4LUy8nuZ7sCondiRIxTJI9eQONi8z_O_dq9yDkjw8"
@@ -35,6 +35,14 @@ rm \
"tamago-go"+version+".tar.gz",
mustDecode(checksum),
pkg.TarGzip,
- )))
+ ))), version
+}
+func init() {
+ artifactsM[TamaGo] = Metadata{
+ f: Toolchain.newTamaGo,
+
+ Name: "tamago",
+ Description: "a Go toolchain extended with support for bare metal execution",
+ Website: "https://github.com/usbarmory/tamago-go",
+ }
}
-func init() { artifactsF[TamaGo] = Toolchain.newTamaGo }
diff --git a/internal/rosa/toybox.go b/internal/rosa/toybox.go
index 813cd5d5..23fffd52 100644
--- a/internal/rosa/toybox.go
+++ b/internal/rosa/toybox.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newToybox(suffix, script string) pkg.Artifact {
+func (t Toolchain) newToybox(suffix, script string) (pkg.Artifact, string) {
const (
version = "0.8.13"
checksum = "rZ1V1ATDte2WeQZanxLVoiRGdfPXhMlEo5-exX-e-ml8cGn9qOv0ABEUVZpX3wTI"
@@ -56,15 +56,22 @@ ln -s ../../system/bin/env /work/usr/bin
Gzip,
KernelHeaders,
- )
+ ), version
}
func init() {
- artifactsF[Toybox] = func(t Toolchain) pkg.Artifact {
- return t.newToybox("", "")
+ artifactsM[Toybox] = Metadata{
+ f: func(t Toolchain) (pkg.Artifact, string) {
+ return t.newToybox("", "")
+ },
+
+ Name: "toybox",
+ Description: "many common Linux command line utilities",
+ Website: "https://landley.net/toybox/",
}
- artifactsF[toyboxEarly] = func(t Toolchain) pkg.Artifact {
- return t.newToybox("-early", `
+ artifactsM[toyboxEarly] = Metadata{
+ f: func(t Toolchain) (pkg.Artifact, string) {
+ return t.newToybox("-early", `
echo '
CONFIG_EXPR=y
CONFIG_TR=y
@@ -72,5 +79,10 @@ CONFIG_AWK=y
CONFIG_DIFF=y
' >> .config
`)
+ },
+
+ Name: "toybox-early",
+ Description: "a build of toybox with unfinished tools enabled to break dependency loops",
+ Website: "https://landley.net/toybox/",
}
}
diff --git a/internal/rosa/unzip.go b/internal/rosa/unzip.go
index 84e6120c..cc821428 100644
--- a/internal/rosa/unzip.go
+++ b/internal/rosa/unzip.go
@@ -6,7 +6,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newUnzip() pkg.Artifact {
+func (t Toolchain) newUnzip() (pkg.Artifact, string) {
const (
version = "6.0"
checksum = "fcqjB1IOVRNJ16K5gTGEDt3zCJDVBc7EDSra9w3H93stqkNwH1vaPQs_QGOpQZu1"
@@ -29,6 +29,14 @@ mv unzip /work/system/bin/
mustDecode(checksum),
pkg.TarGzip,
), false,
- )))
+ ))), version
+}
+func init() {
+ artifactsM[Unzip] = Metadata{
+ f: Toolchain.newUnzip,
+
+ Name: "unzip",
+ Description: "portable compression/archiver utilities",
+ Website: "https://infozip.sourceforge.net/",
+ }
}
-func init() { artifactsF[Unzip] = Toolchain.newUnzip }
diff --git a/internal/rosa/util-linux.go b/internal/rosa/util-linux.go
index d6f4aba5..a1c72471 100644
--- a/internal/rosa/util-linux.go
+++ b/internal/rosa/util-linux.go
@@ -6,7 +6,7 @@ import (
"hakurei.app/internal/pkg"
)
-func (t Toolchain) newUtilLinux() pkg.Artifact {
+func (t Toolchain) newUtilLinux() (pkg.Artifact, string) {
const (
version = "2.41.3"
checksum = "gPTd5JJ2ho_Rd0qainuogcLiiWwKSXEZPXN3yCCRl0m0KBgMaqwFuMjYgu9z8zCH"
@@ -44,6 +44,14 @@ ln -s ../system/bin/bash /bin/
Bash,
KernelHeaders,
- )
+ ), version
+}
+func init() {
+ artifactsM[UtilLinux] = Metadata{
+ f: Toolchain.newUtilLinux,
+
+ Name: "util-linux",
+ Description: "a random collection of Linux utilities",
+ Website: "https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git",
+ }
}
-func init() { artifactsF[UtilLinux] = Toolchain.newUtilLinux }
diff --git a/internal/rosa/wayland.go b/internal/rosa/wayland.go
index 00c5862d..1e50f933 100644
--- a/internal/rosa/wayland.go
+++ b/internal/rosa/wayland.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newWayland() pkg.Artifact {
+func (t Toolchain) newWayland() (pkg.Artifact, string) {
const (
version = "1.24.0"
checksum = "JxgLiFRRGw2D3uhVw8ZeDbs3V7K_d4z_ypDog2LBqiA_5y2vVbUAk5NT6D5ozm0m"
@@ -32,11 +32,19 @@ echo 'int main(){}' > tests/sanity-test.c
Libffi,
Libexpat,
Libxml2,
- )
+ ), version
+}
+func init() {
+ artifactsM[Wayland] = Metadata{
+ f: Toolchain.newWayland,
+
+ Name: "wayland",
+ Description: "core Wayland window system code and protocol",
+ Website: "https://wayland.freedesktop.org/",
+ }
}
-func init() { artifactsF[Wayland] = Toolchain.newWayland }
-func (t Toolchain) newWaylandProtocols() pkg.Artifact {
+func (t Toolchain) newWaylandProtocols() (pkg.Artifact, string) {
const (
version = "1.47"
checksum = "B_NodZ7AQfCstcx7kgbaVjpkYOzbAQq0a4NOk-SA8bQixAE20FY3p1-6gsbPgHn9"
@@ -105,6 +113,14 @@ GitLab
Libffi,
Libexpat,
Libxml2,
- )
+ ), version
+}
+func init() {
+ artifactsM[WaylandProtocols] = Metadata{
+ f: Toolchain.newWaylandProtocols,
+
+ Name: "wayland-protocols",
+ Description: "Additional standard Wayland protocols",
+ Website: "https://wayland.freedesktop.org/",
+ }
}
-func init() { artifactsF[WaylandProtocols] = Toolchain.newWaylandProtocols }
diff --git a/internal/rosa/x.go b/internal/rosa/x.go
index fc4596b7..0d8ff958 100644
--- a/internal/rosa/x.go
+++ b/internal/rosa/x.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newUtilMacros() pkg.Artifact {
+func (t Toolchain) newUtilMacros() (pkg.Artifact, string) {
const (
version = "1.17"
checksum = "vYPO4Qq3B_WGcsBjG0-lfwZ6DZ7ayyrOLqfDrVOgTDcyLChuMGOAAVAa_UXLu5tD"
@@ -12,11 +12,19 @@ func (t Toolchain) newUtilMacros() pkg.Artifact {
"util-macros-"+version+".tar.bz2",
mustDecode(checksum),
pkg.TarBzip2,
- ), nil, (*MakeHelper)(nil))
+ ), nil, (*MakeHelper)(nil)), version
}
-func init() { artifactsF[utilMacros] = Toolchain.newUtilMacros }
+func init() {
+ artifactsM[utilMacros] = Metadata{
+ f: Toolchain.newUtilMacros,
-func (t Toolchain) newXproto() pkg.Artifact {
+ Name: "util-macros",
+ Description: "X.Org Autotools macros",
+ Website: "https://xorg.freedesktop.org/",
+ }
+}
+
+func (t Toolchain) newXproto() (pkg.Artifact, string) {
const (
version = "7.0.23"
checksum = "goxwWxV0jZ_3pNczXFltZWHAhq92x-aEreUGyp5Ns8dBOoOmgbpeNIu1nv0Zx07z"
@@ -37,11 +45,19 @@ func (t Toolchain) newXproto() pkg.Artifact {
PkgConfig,
utilMacros,
- )
+ ), version
+}
+func init() {
+ artifactsM[Xproto] = Metadata{
+ f: Toolchain.newXproto,
+
+ Name: "xproto",
+ Description: "X Window System unified protocol definitions",
+ Website: "https://gitlab.freedesktop.org/xorg/proto/xorgproto",
+ }
}
-func init() { artifactsF[Xproto] = Toolchain.newXproto }
-func (t Toolchain) newLibXau() pkg.Artifact {
+func (t Toolchain) newLibXau() (pkg.Artifact, string) {
const (
version = "1.0.7"
checksum = "bm768RoZZnHRe9VjNU1Dw3BhfE60DyS9D_bgSR-JLkEEyUWT_Hb_lQripxrXto8j"
@@ -64,6 +80,14 @@ func (t Toolchain) newLibXau() pkg.Artifact {
utilMacros,
Xproto,
- )
+ ), version
+}
+func init() {
+ artifactsM[LibXau] = Metadata{
+ f: Toolchain.newLibXau,
+
+ Name: "libXau",
+ Description: "functions for handling Xauthority files and entries",
+ Website: "https://gitlab.freedesktop.org/xorg/lib/libxau",
+ }
}
-func init() { artifactsF[LibXau] = Toolchain.newLibXau }
diff --git a/internal/rosa/xcb.go b/internal/rosa/xcb.go
index 2f9abfc7..b27a4b98 100644
--- a/internal/rosa/xcb.go
+++ b/internal/rosa/xcb.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newXCBProto() pkg.Artifact {
+func (t Toolchain) newXCBProto() (pkg.Artifact, string) {
const (
version = "1.17.0"
checksum = "_NtbKaJ_iyT7XiJz25mXQ7y-niTzE8sHPvLXZPcqtNoV_-vTzqkezJ8Hp2U1enCv"
@@ -13,11 +13,19 @@ func (t Toolchain) newXCBProto() pkg.Artifact {
pkg.TarGzip,
), nil, (*MakeHelper)(nil),
Python,
- )
+ ), version
+}
+func init() {
+ artifactsM[XCBProto] = Metadata{
+ f: Toolchain.newXCBProto,
+
+ Name: "xcb-proto",
+ Description: "XML-XCB protocol descriptions used by libxcb for the X11 protocol & extensions",
+ Website: "https://gitlab.freedesktop.org/xorg/proto/xcbproto",
+ }
}
-func init() { artifactsF[XCBProto] = Toolchain.newXCBProto }
-func (t Toolchain) newXCB() pkg.Artifact {
+func (t Toolchain) newXCB() (pkg.Artifact, string) {
const (
version = "1.17.0"
checksum = "hjjsc79LpWM_hZjNWbDDS6qRQUXREjjekS6UbUsDq-RR1_AjgNDxhRvZf-1_kzDd"
@@ -33,6 +41,14 @@ func (t Toolchain) newXCB() pkg.Artifact {
XCBProto,
Xproto,
LibXau,
- )
+ ), version
+}
+func init() {
+ artifactsM[XCB] = Metadata{
+ f: Toolchain.newXCB,
+
+ Name: "xcb",
+ Description: "The X protocol C-language Binding",
+ Website: "https://xcb.freedesktop.org/",
+ }
}
-func init() { artifactsF[XCB] = Toolchain.newXCB }
diff --git a/internal/rosa/xz.go b/internal/rosa/xz.go
index d3704940..806c9b45 100644
--- a/internal/rosa/xz.go
+++ b/internal/rosa/xz.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newXZ() pkg.Artifact {
+func (t Toolchain) newXZ() (pkg.Artifact, string) {
const (
version = "5.8.2"
checksum = "rXT-XCp9R2q6cXqJ5qenp0cmGPfiENQiU3BWtUVeVgArfRmSsISeUJgvCR3zI0a0"
@@ -14,6 +14,14 @@ func (t Toolchain) newXZ() pkg.Artifact {
pkg.TarBzip2,
), nil, (*MakeHelper)(nil),
Diffutils,
- )
+ ), version
+}
+func init() {
+ artifactsM[XZ] = Metadata{
+ f: Toolchain.newXZ,
+
+ Name: "xz",
+ Description: "XZ Utils",
+ Website: "https://tukaani.org/xz/",
+ }
}
-func init() { artifactsF[XZ] = Toolchain.newXZ }
diff --git a/internal/rosa/zlib.go b/internal/rosa/zlib.go
index f0ce8071..6cbf3b9e 100644
--- a/internal/rosa/zlib.go
+++ b/internal/rosa/zlib.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newZlib() pkg.Artifact {
+func (t Toolchain) newZlib() (pkg.Artifact, string) {
const (
version = "1.3.1"
checksum = "E-eIpNzE8oJ5DsqH4UuA_0GDKuQF5csqI8ooDx2w7Vx-woJ2mb-YtSbEyIMN44mH"
@@ -20,6 +20,14 @@ func (t Toolchain) newZlib() pkg.Artifact {
Host: `""`,
Build: `""`,
- })
+ }), version
+}
+func init() {
+ artifactsM[Zlib] = Metadata{
+ f: Toolchain.newZlib,
+
+ Name: "zlib",
+ Description: "lossless data-compression library",
+ Website: "https://zlib.net/",
+ }
}
-func init() { artifactsF[Zlib] = Toolchain.newZlib }
diff --git a/internal/rosa/zstd.go b/internal/rosa/zstd.go
index 4c3a47fb..96d9b07d 100644
--- a/internal/rosa/zstd.go
+++ b/internal/rosa/zstd.go
@@ -2,7 +2,7 @@ package rosa
import "hakurei.app/internal/pkg"
-func (t Toolchain) newZstd() pkg.Artifact {
+func (t Toolchain) newZstd() (pkg.Artifact, string) {
const (
version = "1.5.7"
checksum = "4XhfR7DwVkwo1R-TmYDAJOcx9YXv9WSFhcFUe3hWEAMmdMLPhFaznCqYIA19_xxV"
@@ -18,6 +18,14 @@ func (t Toolchain) newZstd() pkg.Artifact {
{"CMAKE_BUILD_TYPE", "Release"},
{"CMAKE_INSTALL_LIBDIR", "lib"},
},
- })
+ }), version
+}
+func init() {
+ artifactsM[Zstd] = Metadata{
+ f: Toolchain.newZstd,
+
+ Name: "zstd",
+ Description: "a fast compression algorithm",
+ Website: "https://facebook.github.io/zstd/",
+ }
}
-func init() { artifactsF[Zstd] = Toolchain.newZstd }