All checks were successful
Test / Create distribution (push) Successful in 1m0s
Test / Sandbox (push) Successful in 2m43s
Test / Hakurei (push) Successful in 4m1s
Test / ShareFS (push) Successful in 4m2s
Test / Hpkg (push) Successful in 4m31s
Test / Sandbox (race detector) (push) Successful in 5m9s
Test / Hakurei (race detector) (push) Successful in 5m58s
Test / Flake checks (push) Successful in 1m45s
XSLT is untamable and extremely unpleasant to work with. This patches out the broken docs for now in the interest of getting some work done. Signed-off-by: Ophestra <cat@gensokyo.uk>
254 lines
5.3 KiB
Go
254 lines
5.3 KiB
Go
package rosa
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"hakurei.app/internal/pkg"
|
|
)
|
|
|
|
// PArtifact is a lazily-initialised [pkg.Artifact] preset.
|
|
type PArtifact int
|
|
|
|
const (
|
|
ACL PArtifact = iota
|
|
ArgpStandalone
|
|
Attr
|
|
Autoconf
|
|
Automake
|
|
BC
|
|
Bash
|
|
Binutils
|
|
Bison
|
|
Bzip2
|
|
CMake
|
|
Coreutils
|
|
Curl
|
|
DTC
|
|
Diffutils
|
|
Elfutils
|
|
Fakeroot
|
|
Findutils
|
|
Flex
|
|
Fuse
|
|
GMP
|
|
GLib
|
|
Gawk
|
|
Gettext
|
|
Git
|
|
Go
|
|
Gperf
|
|
Grep
|
|
Gzip
|
|
Hakurei
|
|
HakureiDist
|
|
IniConfig
|
|
Kernel
|
|
KernelHeaders
|
|
KernelSource
|
|
Kmod
|
|
LibXau
|
|
Libcap
|
|
Libexpat
|
|
Libiconv
|
|
Libpsl
|
|
Libffi
|
|
Libgd
|
|
Libtool
|
|
Libseccomp
|
|
Libucontext
|
|
Libxml2
|
|
Libxslt
|
|
M4
|
|
MPC
|
|
MPFR
|
|
Make
|
|
Meson
|
|
Mksh
|
|
MuslFts
|
|
MuslObstack
|
|
NSS
|
|
NSSCACert
|
|
Ncurses
|
|
Ninja
|
|
OpenSSL
|
|
PCRE2
|
|
Packaging
|
|
Patch
|
|
Perl
|
|
PerlLocaleGettext
|
|
PerlMIMECharset
|
|
PerlModuleBuild
|
|
PerlPodParser
|
|
PerlSGMLS
|
|
PerlTermReadKey
|
|
PerlTextCharWidth
|
|
PerlTextWrapI18N
|
|
PerlUnicodeGCString
|
|
PerlYAMLTiny
|
|
PkgConfig
|
|
Pluggy
|
|
Procps
|
|
PyTest
|
|
Pygments
|
|
Python
|
|
QEMU
|
|
Rsync
|
|
Sed
|
|
Setuptools
|
|
SquashfsTools
|
|
TamaGo
|
|
Tar
|
|
Texinfo
|
|
Toybox
|
|
toyboxEarly
|
|
Unzip
|
|
UtilLinux
|
|
Wayland
|
|
WaylandProtocols
|
|
XCB
|
|
XCBProto
|
|
Xproto
|
|
XZ
|
|
Zlib
|
|
Zstd
|
|
|
|
buildcatrust
|
|
utilMacros
|
|
|
|
// gcc is a hacked-to-pieces GCC toolchain meant for use in intermediate
|
|
// stages only. This preset and its direct output must never be exposed.
|
|
gcc
|
|
|
|
// Stage0 is a tarball containing all compile-time dependencies of artifacts
|
|
// part of the [Std] toolchain.
|
|
Stage0
|
|
|
|
// _presetEnd is the total number of presets and does not denote a preset.
|
|
_presetEnd
|
|
)
|
|
|
|
var (
|
|
// artifactsF is an array of functions for the result of [PArtifact].
|
|
artifactsF [_presetEnd]func(t Toolchain) pkg.Artifact
|
|
|
|
// artifacts stores the result of artifactsF.
|
|
artifacts [_toolchainEnd][len(artifactsF)]pkg.Artifact
|
|
// artifactsOnce is for lazy initialisation of artifacts.
|
|
artifactsOnce [_toolchainEnd][len(artifactsF)]sync.Once
|
|
)
|
|
|
|
// 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)
|
|
})
|
|
return artifacts[t][p]
|
|
}
|
|
|
|
// ResolveName returns a [PArtifact] by name.
|
|
func ResolveName(name string) (p PArtifact, ok bool) {
|
|
p, ok = map[string]PArtifact{
|
|
"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,
|
|
"gettext": Gettext,
|
|
"git": Git,
|
|
"go": Go,
|
|
"gperf": Gperf,
|
|
"grep": Grep,
|
|
"gzip": Gzip,
|
|
"hakurei": Hakurei,
|
|
"hakurei-dist": HakureiDist,
|
|
"iniconfig": IniConfig,
|
|
"kernel": Kernel,
|
|
"kernel-headers": KernelHeaders,
|
|
"kernel-source": KernelSource,
|
|
"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
|
|
}
|