Compare commits
25 Commits
v0.4.3
..
689f972976
| Author | SHA1 | Date | |
|---|---|---|---|
|
689f972976
|
|||
|
3f33b62dfd
|
|||
|
ac5488eef6
|
|||
|
77a15130c7
|
|||
|
4c1e823908
|
|||
|
5f5a398a5b
|
|||
|
d5e4a2e6a7
|
|||
|
57c6b84b60
|
|||
|
4269627b4b
|
|||
|
d50e3c3d5b
|
|||
|
eae2890d98
|
|||
|
f8ebfd71a7
|
|||
|
dce1a05f6c
|
|||
|
eff265837c
|
|||
|
7d809eb15f
|
|||
|
9accc2f961
|
|||
|
e5a4094298
|
|||
|
410c4f8bb0
|
|||
|
2e23c6d367
|
|||
|
f5e9a0c04e
|
|||
|
3bd4ef616c
|
|||
|
41402fd578
|
|||
|
b47fa1a214
|
|||
|
9e363cb2c9
|
|||
|
1389c77022
|
+15
-20
@@ -64,11 +64,12 @@ func main() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
e, ok := r.(rosa.LoadError)
|
switch r.(type) {
|
||||||
if !ok {
|
case rosa.LoadError, pkg.IRStringError:
|
||||||
|
log.Fatal(r)
|
||||||
|
default:
|
||||||
panic(r)
|
panic(r)
|
||||||
}
|
}
|
||||||
log.Fatal(e)
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
ctx, stop := signal.NotifyContext(context.Background(),
|
ctx, stop := signal.NotifyContext(context.Background(),
|
||||||
@@ -86,6 +87,7 @@ func main() {
|
|||||||
flagLTO bool
|
flagLTO bool
|
||||||
flagPT bool
|
flagPT bool
|
||||||
|
|
||||||
|
flagSourcePath string
|
||||||
flagCrossOverride int
|
flagCrossOverride int
|
||||||
|
|
||||||
addr net.UnixAddr
|
addr net.UnixAddr
|
||||||
@@ -136,6 +138,12 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if flagSourcePath != "" {
|
||||||
|
if err := rosa.Native().SetSource(os.DirFS(flagSourcePath)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}).Flag(
|
}).Flag(
|
||||||
&flagQuiet,
|
&flagQuiet,
|
||||||
@@ -196,6 +204,10 @@ func main() {
|
|||||||
&flagPT,
|
&flagPT,
|
||||||
"parse-time", command.BoolFlag(false),
|
"parse-time", command.BoolFlag(false),
|
||||||
"Print duration of the initial azalea parse",
|
"Print duration of the initial azalea parse",
|
||||||
|
).Flag(
|
||||||
|
&flagSourcePath,
|
||||||
|
"source", command.StringFlag(""),
|
||||||
|
"Override hakurei source tree",
|
||||||
)
|
)
|
||||||
|
|
||||||
c.NewCommand(
|
c.NewCommand(
|
||||||
@@ -427,8 +439,6 @@ func main() {
|
|||||||
var (
|
var (
|
||||||
flagGentoo string
|
flagGentoo string
|
||||||
flagChecksum string
|
flagChecksum string
|
||||||
|
|
||||||
flagStage0 bool
|
|
||||||
)
|
)
|
||||||
c.NewCommand(
|
c.NewCommand(
|
||||||
"stage3",
|
"stage3",
|
||||||
@@ -490,17 +500,6 @@ func main() {
|
|||||||
"("+pkg.Encode(checksum[0].Value())+")",
|
"("+pkg.Encode(checksum[0].Value())+")",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if flagStage0 {
|
|
||||||
if err = cm.Do(func(cache *pkg.Cache) (err error) {
|
|
||||||
pathname, _, err = cache.Cure(rosa.Native().Std().NewStage0())
|
|
||||||
return
|
|
||||||
}); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
log.Println(pathname)
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
return
|
||||||
},
|
},
|
||||||
).Flag(
|
).Flag(
|
||||||
@@ -511,10 +510,6 @@ func main() {
|
|||||||
&flagChecksum,
|
&flagChecksum,
|
||||||
"checksum", command.StringFlag(""),
|
"checksum", command.StringFlag(""),
|
||||||
"Checksum of Gentoo stage3 tarball",
|
"Checksum of Gentoo stage3 tarball",
|
||||||
).Flag(
|
|
||||||
&flagStage0,
|
|
||||||
"stage0", command.BoolFlag(false),
|
|
||||||
"Create bootstrap stage0 tarball",
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+29
-6
@@ -155,7 +155,7 @@ type TContext struct {
|
|||||||
// Target [Artifact] encoded identifier.
|
// Target [Artifact] encoded identifier.
|
||||||
ids string
|
ids string
|
||||||
// Pathname status was created at.
|
// Pathname status was created at.
|
||||||
statusPath *check.Absolute
|
statusPath, statusSPath *check.Absolute
|
||||||
// File statusHeader and logs are written to.
|
// File statusHeader and logs are written to.
|
||||||
status *os.File
|
status *os.File
|
||||||
// Error value during prepareStatus.
|
// Error value during prepareStatus.
|
||||||
@@ -258,6 +258,11 @@ func (t *TContext) destroy(errP *error) {
|
|||||||
), 10),
|
), 10),
|
||||||
).String(),
|
).String(),
|
||||||
))
|
))
|
||||||
|
if t.statusSPath != nil {
|
||||||
|
t.cache.checksumMu.Lock()
|
||||||
|
*errP = errors.Join(*errP, os.Remove(t.statusSPath.String()))
|
||||||
|
t.cache.checksumMu.Unlock()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
t.status = nil
|
t.status = nil
|
||||||
}
|
}
|
||||||
@@ -1923,6 +1928,9 @@ func (c *Cache) cure(a Artifact, curesExempt bool) (
|
|||||||
}
|
}
|
||||||
c.exitCure(a, curesExempt)
|
c.exitCure(a, curesExempt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if c.msg.IsVerbose() {
|
||||||
|
c.msg.Verbosef("cure file %s: %v", reportName(f, id), err)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1954,7 +1962,7 @@ func (c *Cache) cure(a Artifact, curesExempt bool) (
|
|||||||
t := TContext{
|
t := TContext{
|
||||||
c.base.Append(dirWork, ids),
|
c.base.Append(dirWork, ids),
|
||||||
c.base.Append(dirTemp, ids),
|
c.base.Append(dirTemp, ids),
|
||||||
ids, nil, nil, nil,
|
ids, nil, nil, nil, nil,
|
||||||
common{ctx, c},
|
common{ctx, c},
|
||||||
}
|
}
|
||||||
switch ca := a.(type) {
|
switch ca := a.(type) {
|
||||||
@@ -1966,6 +1974,9 @@ func (c *Cache) cure(a Artifact, curesExempt bool) (
|
|||||||
err = ca.Cure(&t)
|
err = ca.Cure(&t)
|
||||||
c.exitCure(a, curesExempt)
|
c.exitCure(a, curesExempt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if c.msg.IsVerbose() {
|
||||||
|
c.msg.Verbosef("cure trivial %s: %v", reportName(ca, id), err)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
@@ -2043,16 +2054,25 @@ func (c *Cache) cure(a Artifact, curesExempt bool) (
|
|||||||
}
|
}
|
||||||
err = ca.Cure(&f)
|
err = ca.Cure(&f)
|
||||||
if err == nil && f.status != nil {
|
if err == nil && f.status != nil {
|
||||||
|
statusS := c.base.Append(
|
||||||
|
dirStatus,
|
||||||
|
substitutes,
|
||||||
|
)
|
||||||
|
c.checksumMu.Lock()
|
||||||
err = os.Link(c.base.Append(
|
err = os.Link(c.base.Append(
|
||||||
dirStatus,
|
dirStatus,
|
||||||
ids,
|
ids,
|
||||||
).String(), c.base.Append(
|
).String(), statusS.String())
|
||||||
dirStatus,
|
c.checksumMu.Unlock()
|
||||||
substitutes,
|
if err == nil {
|
||||||
).String())
|
f.statusSPath = statusS
|
||||||
|
}
|
||||||
}
|
}
|
||||||
c.exitCure(a, curesExempt)
|
c.exitCure(a, curesExempt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if c.msg.IsVerbose() {
|
||||||
|
c.msg.Verbosef("cure %s: %v", reportName(ca, id), err)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
@@ -2101,6 +2121,9 @@ func (c *Cache) cure(a Artifact, curesExempt bool) (
|
|||||||
Got: gotChecksum,
|
Got: gotChecksum,
|
||||||
Want: checksum.Value(),
|
Want: checksum.Value(),
|
||||||
}
|
}
|
||||||
|
if c.msg.IsVerbose() {
|
||||||
|
c.msg.Verbosef("validate %s: %v", reportName(a, id), err)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ func (a busyboxBin) Params(*pkg.IContext) {}
|
|||||||
// IsExclusive returns false: Cure performs a trivial filesystem write.
|
// IsExclusive returns false: Cure performs a trivial filesystem write.
|
||||||
func (busyboxBin) IsExclusive() bool { return false }
|
func (busyboxBin) IsExclusive() bool { return false }
|
||||||
|
|
||||||
// Dependencies returns the underlying busybox [pkg.File].
|
// Dependencies returns the underlying busybox [pkg.FileArtifact].
|
||||||
func (a busyboxBin) Dependencies() []pkg.Artifact {
|
func (a busyboxBin) Dependencies() []pkg.Artifact {
|
||||||
return []pkg.Artifact{a.bin}
|
return []pkg.Artifact{a.bin}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ var (
|
|||||||
_ninja = H("ninja")
|
_ninja = H("ninja")
|
||||||
)
|
)
|
||||||
|
|
||||||
// CMakeHelper is the [CMake] build system helper.
|
// CMakeHelper builds and tests a CMake project with specified CACHE entries.
|
||||||
type CMakeHelper struct {
|
type CMakeHelper struct {
|
||||||
// Path elements joined with source.
|
// Path elements joined with source.
|
||||||
Append []string
|
Append []string
|
||||||
@@ -34,7 +34,7 @@ type CMakeHelper struct {
|
|||||||
|
|
||||||
var _ Helper = new(CMakeHelper)
|
var _ Helper = new(CMakeHelper)
|
||||||
|
|
||||||
// extra returns a hardcoded slice of [CMake] and [Ninja].
|
// extra returns the cmake handle alongside either ninja or make.
|
||||||
func (attr *CMakeHelper) extra(int) P {
|
func (attr *CMakeHelper) extra(int) P {
|
||||||
if attr != nil && attr.Make {
|
if attr != nil && attr.Make {
|
||||||
return P{_cmake, _make}
|
return P{_cmake, _make}
|
||||||
|
|||||||
@@ -36,8 +36,3 @@ git \
|
|||||||
rm -rf /work/.git
|
rm -rf /work/.git
|
||||||
`, resolvconf())
|
`, resolvconf())
|
||||||
}
|
}
|
||||||
|
|
||||||
// newTagRemote is a helper around NewViaGit for a tag on a git remote.
|
|
||||||
func (t Toolchain) newTagRemote(url, tag, checksum string) pkg.Artifact {
|
|
||||||
return t.NewViaGit(url, "refs/tags/"+tag, mustDecode(checksum))
|
|
||||||
}
|
|
||||||
|
|||||||
+7
-9
@@ -6,14 +6,12 @@ import (
|
|||||||
"hakurei.app/internal/pkg"
|
"hakurei.app/internal/pkg"
|
||||||
)
|
)
|
||||||
|
|
||||||
var _go = H("go")
|
|
||||||
|
|
||||||
// newGo returns a specific version of the Go toolchain.
|
// newGo returns a specific version of the Go toolchain.
|
||||||
func (t Toolchain) newGo(
|
func (t Toolchain) newGo(
|
||||||
version, checksum string,
|
version, checksum string,
|
||||||
env []string,
|
env []string,
|
||||||
script string,
|
script string,
|
||||||
boot pkg.Artifact,
|
boot ...pkg.Artifact,
|
||||||
) pkg.Artifact {
|
) pkg.Artifact {
|
||||||
return t.NewPackage("go", version, newTar(
|
return t.NewPackage("go", version, newTar(
|
||||||
"https://go.dev/dl/go"+version+".src.tar.gz",
|
"https://go.dev/dl/go"+version+".src.tar.gz",
|
||||||
@@ -28,7 +26,7 @@ func (t Toolchain) newGo(
|
|||||||
"TMPDIR=/dev/shm/go",
|
"TMPDIR=/dev/shm/go",
|
||||||
}, env),
|
}, env),
|
||||||
|
|
||||||
Extra: []pkg.Artifact{boot},
|
Extra: boot,
|
||||||
}, &GenericHelper{
|
}, &GenericHelper{
|
||||||
InPlace: true,
|
InPlace: true,
|
||||||
Build: `
|
Build: `
|
||||||
@@ -72,13 +70,13 @@ func init() {
|
|||||||
native.MustRegister(meta.Name, func(t Toolchain) (*Metadata, pkg.Artifact) {
|
native.MustRegister(meta.Name, func(t Toolchain) (*Metadata, pkg.Artifact) {
|
||||||
var (
|
var (
|
||||||
bootstrapEnv []string
|
bootstrapEnv []string
|
||||||
bootstrapEarly pkg.Artifact
|
bootstrapEarly []pkg.Artifact
|
||||||
|
|
||||||
finalEnv []string
|
finalEnv []string
|
||||||
)
|
)
|
||||||
switch t.arch {
|
switch t.arch {
|
||||||
case "amd64":
|
case "amd64":
|
||||||
bootstrapEarly = t.NewPackage("go", "1.4-bootstrap", newTar(
|
bootstrapEarly = []pkg.Artifact{t.NewPackage("go", "1.4-bootstrap", newTar(
|
||||||
"https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz",
|
"https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz",
|
||||||
"8o9JL_ToiQKadCTb04nvBDkp8O1xiWOolAxVEqaTGodieNe4lOFEjlOxN3bwwe23",
|
"8o9JL_ToiQKadCTb04nvBDkp8O1xiWOolAxVEqaTGodieNe4lOFEjlOxN3bwwe23",
|
||||||
pkg.TarGzip,
|
pkg.TarGzip,
|
||||||
@@ -98,11 +96,11 @@ mkdir -p /var/tmp/
|
|||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
_bash,
|
_bash,
|
||||||
)
|
)}
|
||||||
|
|
||||||
case "arm64", "riscv64":
|
case "arm64", "riscv64":
|
||||||
bootstrapEnv = append(bootstrapEnv, "GOROOT_BOOTSTRAP=/system")
|
bootstrapEnv = append(bootstrapEnv, "GOROOT_BOOTSTRAP=/system")
|
||||||
_, bootstrapEarly = t.MustLoad(H("gcc"))
|
bootstrapEarly = t.Append(bootstrapEarly, H("gcc"))
|
||||||
finalEnv = append(finalEnv, "CGO_ENABLED=0")
|
finalEnv = append(finalEnv, "CGO_ENABLED=0")
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -123,7 +121,7 @@ sed -i \
|
|||||||
echo \
|
echo \
|
||||||
'type syscallDescriptor = int' >> \
|
'type syscallDescriptor = int' >> \
|
||||||
os/rawconn_test.go
|
os/rawconn_test.go
|
||||||
`, bootstrapEarly)
|
`, bootstrapEarly...)
|
||||||
|
|
||||||
go121 := t.newGo(
|
go121 := t.newGo(
|
||||||
"1.21.13",
|
"1.21.13",
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
package rosa
|
|
||||||
|
|
||||||
import (
|
|
||||||
"hakurei.app/fhs"
|
|
||||||
"hakurei.app/internal/pkg"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
meta := Metadata{
|
|
||||||
Name: "system-image",
|
|
||||||
Description: "Rosa OS system image",
|
|
||||||
Version: Unversioned,
|
|
||||||
}
|
|
||||||
native.MustRegister(meta.Name, func(t Toolchain) (*Metadata, pkg.Artifact) {
|
|
||||||
return &meta, t.New("system.img", TNoToolchain, t.Append(nil,
|
|
||||||
H("squashfs-tools"),
|
|
||||||
), nil, nil, `
|
|
||||||
mksquashfs /mnt/system /work/system.img
|
|
||||||
`, pkg.Path(fhs.AbsRoot.Append("mnt"), false, t.Append(nil,
|
|
||||||
_musl,
|
|
||||||
_mksh,
|
|
||||||
_toybox,
|
|
||||||
|
|
||||||
H("kmod"),
|
|
||||||
H("kernel"),
|
|
||||||
H("firmware"),
|
|
||||||
)...))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
meta := Metadata{
|
|
||||||
Name: "initramfs-image",
|
|
||||||
Description: "Rosa OS initramfs image",
|
|
||||||
Version: Unversioned,
|
|
||||||
}
|
|
||||||
native.MustRegister(meta.Name, func(t Toolchain) (*Metadata, pkg.Artifact) {
|
|
||||||
return &meta, t.New("initramfs", TNoToolchain, t.Append(nil,
|
|
||||||
_zstd,
|
|
||||||
H("earlyinit"),
|
|
||||||
H("gen_init_cpio"),
|
|
||||||
), nil, nil, `
|
|
||||||
gen_init_cpio -t 4294967295 -c /usr/src/initramfs | zstd > /work/initramfs.zst
|
|
||||||
`, pkg.Path(AbsUsrSrc.Append("initramfs"), false, pkg.NewFile("initramfs", []byte(`
|
|
||||||
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
|
|
||||||
`))))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
var _make = H("make")
|
var _make = H("make")
|
||||||
|
|
||||||
// MakeHelper is the [Make] build system helper.
|
// MakeHelper wraps the make program and its surrounding build system.
|
||||||
type MakeHelper struct {
|
type MakeHelper struct {
|
||||||
// Do not include default extras.
|
// Do not include default extras.
|
||||||
OmitDefaults bool
|
OmitDefaults bool
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
var _meson = H("meson")
|
var _meson = H("meson")
|
||||||
|
|
||||||
// MesonHelper is the [Meson] build system helper.
|
// MesonHelper builds and tests a meson project.
|
||||||
type MesonHelper struct {
|
type MesonHelper struct {
|
||||||
// Runs after setup.
|
// Runs after setup.
|
||||||
ScriptCompileEarly string
|
ScriptCompileEarly string
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ package cmake {
|
|||||||
website = "https://cmake.org";
|
website = "https://cmake.org";
|
||||||
anitya = 306;
|
anitya = 306;
|
||||||
|
|
||||||
version* = "4.3.2";
|
version* = "4.3.3";
|
||||||
source = remoteGitHubRelease {
|
source = remoteGitHubRelease {
|
||||||
suffix = "Kitware/CMake";
|
suffix = "Kitware/CMake";
|
||||||
tag = "v"+version;
|
tag = "v"+version;
|
||||||
name = "cmake-"+version+".tar.gz";
|
name = "cmake-"+version+".tar.gz";
|
||||||
checksum = "6QylwRVKletndTSkZTV2YBRwgd_9rUVgav_QW23HpjUgV21AVYZOUOal8tdBDmO7";
|
checksum = "VS-b6cN4S9hfNv3JOUAbAfI9nh3EeuVwY_IVgUdgq6VKwvfchhXwvvFAUcpZG6Ez";
|
||||||
compress = gzip;
|
compress = gzip;
|
||||||
};
|
};
|
||||||
patches = [
|
patches = [
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package fcft {
|
||||||
|
description = "a simple library for font loading and glyph rasterization using FontConfig, FreeType and pixman";
|
||||||
|
website = "https://codeberg.org/dnkl/fcft";
|
||||||
|
anitya = 143240;
|
||||||
|
|
||||||
|
version* = "3.3.3";
|
||||||
|
source = remoteTar {
|
||||||
|
url = "https://codeberg.org/dnkl/fcft/archive/"+version+".tar.gz";
|
||||||
|
checksum = "bMj8OmqtoANRKZWbjHk4WfP09AxJYRbWGqUsm1gRJ_dOFg6gooNbgkDu597PLfz2";
|
||||||
|
compress = gzip;
|
||||||
|
};
|
||||||
|
|
||||||
|
exec = meson {};
|
||||||
|
|
||||||
|
inputs = [
|
||||||
|
pixman,
|
||||||
|
fontconfig,
|
||||||
|
utf8proc,
|
||||||
|
tllist,
|
||||||
|
];
|
||||||
|
|
||||||
|
runtime = [
|
||||||
|
pixman,
|
||||||
|
fontconfig,
|
||||||
|
utf8proc,
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -3,12 +3,12 @@ package firmware {
|
|||||||
website = "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git";
|
website = "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git";
|
||||||
anitya = 141464;
|
anitya = 141464;
|
||||||
|
|
||||||
version* = "20260410";
|
version* = "20260519";
|
||||||
source = remoteGitLab {
|
source = remoteGitLab {
|
||||||
domain = "gitlab.com";
|
domain = "gitlab.com";
|
||||||
suffix = "kernel-firmware/linux-firmware";
|
suffix = "kernel-firmware/linux-firmware";
|
||||||
ref = version;
|
ref = version;
|
||||||
checksum = "J8PdQlGqwrivpskPzbL6xacqR6mlKtXpe5RpzFfVzKPAgG81ZRXsc3qrxwdGJbil";
|
checksum = "l-wBRTWclYnJsgV4qtUV1-UL5Y4nknAPre8CMe0dH7PxtAqbaeudEIM_Fnuj0TCV";
|
||||||
};
|
};
|
||||||
|
|
||||||
// dedup creates temporary file
|
// dedup creates temporary file
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package fontconfig {
|
||||||
|
description = "font configuration and customization library";
|
||||||
|
website = "https://www.freedesktop.org/wiki/Software/fontconfig";
|
||||||
|
anitya = 827;
|
||||||
|
|
||||||
|
version* = "2.18.0";
|
||||||
|
source = remoteGitLab {
|
||||||
|
domain = "gitlab.freedesktop.org";
|
||||||
|
suffix = "fontconfig/fontconfig";
|
||||||
|
ref = version;
|
||||||
|
checksum = "Z-yA7pFiE7cRDxZm32EHUPmeRx-lth2X6uw51aoeLi4BXwNm4iOWT13IGp3YSbNW";
|
||||||
|
};
|
||||||
|
|
||||||
|
exec = make {
|
||||||
|
generate = "NOCONFIGURE=1 ./autogen.sh";
|
||||||
|
};
|
||||||
|
|
||||||
|
inputs = [
|
||||||
|
automake,
|
||||||
|
libtool,
|
||||||
|
pkg-config,
|
||||||
|
gettext,
|
||||||
|
gperf,
|
||||||
|
gzip,
|
||||||
|
python,
|
||||||
|
|
||||||
|
zlib,
|
||||||
|
libexpat,
|
||||||
|
freetype,
|
||||||
|
];
|
||||||
|
|
||||||
|
runtime = [
|
||||||
|
zlib,
|
||||||
|
libexpat,
|
||||||
|
freetype,
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package foot {
|
||||||
|
description = "a fast, lightweight and minimalistic Wayland terminal emulator";
|
||||||
|
website = "https://codeberg.org/dnkl/foot";
|
||||||
|
anitya = 141611;
|
||||||
|
|
||||||
|
version* = "1.27.0";
|
||||||
|
source = remoteTar {
|
||||||
|
url = "https://codeberg.org/dnkl/foot/archive/"+version+".tar.gz";
|
||||||
|
checksum = "E2XIPRD8t-WBBJUebIwChFT8K_85diwdalssUNwnuZBIynPa7rlXro5WCe9v3UlK";
|
||||||
|
compress = gzip;
|
||||||
|
};
|
||||||
|
|
||||||
|
exec = meson {};
|
||||||
|
|
||||||
|
inputs = [
|
||||||
|
ncurses,
|
||||||
|
|
||||||
|
xkbcommon,
|
||||||
|
tllist,
|
||||||
|
fcft,
|
||||||
|
kernel-headers,
|
||||||
|
];
|
||||||
|
|
||||||
|
runtime = [
|
||||||
|
xkbcommon,
|
||||||
|
fcft,
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -3,11 +3,11 @@ package glib {
|
|||||||
website = "https://developer.gnome.org/glib";
|
website = "https://developer.gnome.org/glib";
|
||||||
anitya = 10024;
|
anitya = 10024;
|
||||||
|
|
||||||
version* = "2.88.1";
|
version* = "2.89.0";
|
||||||
source = remoteGit {
|
source = remoteGit {
|
||||||
url = "https://gitlab.gnome.org/GNOME/glib.git";
|
url = "https://gitlab.gnome.org/GNOME/glib.git";
|
||||||
tag = version;
|
tag = version;
|
||||||
checksum = "Rkszn6W4RHjyspyqfXdVAVawdwDJCuS0Zu0f7qot7tbJhnw2fUDoUUJB40m-1MCX";
|
checksum = "4FXKhdS3pC98LevYa_h7piRylG86cZ_c9zAtGr78oHodU1ob8rBxGU0hoIZ4nzcA";
|
||||||
};
|
};
|
||||||
|
|
||||||
files = {
|
files = {
|
||||||
|
|||||||
@@ -1,61 +0,0 @@
|
|||||||
From 2a9aa3b4007a73a6c9d4608cb9a8822247881fd6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ophestra <cat@gensokyo.uk>
|
|
||||||
Date: Thu, 21 May 2026 23:34:50 +0900
|
|
||||||
Subject: [PATCH] cmd/dist: include version in release
|
|
||||||
|
|
||||||
This makes HAKUREI_VERSION optional during build.
|
|
||||||
|
|
||||||
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
||||||
---
|
|
||||||
cmd/dist/VERSION | 1 +
|
|
||||||
cmd/dist/main.go | 7 ++++++-
|
|
||||||
flake.nix | 1 -
|
|
||||||
3 files changed, 7 insertions(+), 2 deletions(-)
|
|
||||||
create mode 100644 cmd/dist/VERSION
|
|
||||||
|
|
||||||
diff --git a/cmd/dist/VERSION b/cmd/dist/VERSION
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000..0eec13e4
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cmd/dist/VERSION
|
|
||||||
@@ -0,0 +1 @@
|
|
||||||
+v0.4.2
|
|
||||||
diff --git a/cmd/dist/main.go b/cmd/dist/main.go
|
|
||||||
index 9ed7f2f8..d876cf83 100644
|
|
||||||
--- a/cmd/dist/main.go
|
|
||||||
+++ b/cmd/dist/main.go
|
|
||||||
@@ -18,8 +18,13 @@ import (
|
|
||||||
"os/signal"
|
|
||||||
"path/filepath"
|
|
||||||
"runtime"
|
|
||||||
+ "strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
+//go:generate sh -c "git describe --tags > VERSION"
|
|
||||||
+//go:embed VERSION
|
|
||||||
+var version string
|
|
||||||
+
|
|
||||||
// getenv looks up an environment variable, and returns fallback if it is unset.
|
|
||||||
func getenv(key, fallback string) string {
|
|
||||||
if v, ok := os.LookupEnv(key); ok {
|
|
||||||
@@ -47,7 +52,7 @@ func main() {
|
|
||||||
|
|
||||||
verbose := os.Getenv("VERBOSE") != ""
|
|
||||||
runTests := os.Getenv("HAKUREI_DIST_MAKE") == ""
|
|
||||||
- version := getenv("HAKUREI_VERSION", "untagged")
|
|
||||||
+ version = getenv("HAKUREI_VERSION", strings.TrimSpace(version))
|
|
||||||
prefix := getenv("PREFIX", "/usr")
|
|
||||||
destdir := getenv("DESTDIR", "dist")
|
|
||||||
|
|
||||||
diff --git a/flake.nix b/flake.nix
|
|
||||||
index 4de35204..09520be2 100644
|
|
||||||
--- a/flake.nix
|
|
||||||
+++ b/flake.nix
|
|
||||||
@@ -139,7 +139,6 @@
|
|
||||||
GOCACHE="$(mktemp -d)" \
|
|
||||||
PATH="${pkgs.pkgsStatic.musl.bin}/bin:$PATH" \
|
|
||||||
DESTDIR="$out" \
|
|
||||||
- HAKUREI_VERSION="v${hakurei.version}" \
|
|
||||||
./all.sh
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -2,11 +2,11 @@ package hakurei-source {
|
|||||||
description = "hakurei source tree";
|
description = "hakurei source tree";
|
||||||
exclude = true;
|
exclude = true;
|
||||||
|
|
||||||
version* = "0.4.2";
|
version* = "0.4.3";
|
||||||
output = remoteTar {
|
output = remoteTar {
|
||||||
url = "https://git.gensokyo.uk/rosa/hakurei/archive/"+
|
url = "https://git.gensokyo.uk/rosa/hakurei/archive/"+
|
||||||
"v"+version+".tar.gz";
|
"v"+version+".tar.gz";
|
||||||
checksum = "jadgaOrxv5ABGvzQ_Rk0aPGz7U8K-427TbMhQNQ32scSizEnlR44Pu7NoWYWVZWq";
|
checksum = "1LqBJIcYcAFTVfydCahOm4hjjKhY953X9ars0eQj32hnpNncWFefuT6OJpZzIlZv";
|
||||||
compress = gzip;
|
compress = gzip;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -17,7 +17,6 @@ package hakurei {
|
|||||||
anitya = 388834;
|
anitya = 388834;
|
||||||
|
|
||||||
source = hakurei-source;
|
source = hakurei-source;
|
||||||
patches = [ "2a9aa3b4007a73a6c9d4608cb9a8822247881fd6.patch" ];
|
|
||||||
enterSource = true;
|
enterSource = true;
|
||||||
writable = true;
|
writable = true;
|
||||||
chmod = true;
|
chmod = true;
|
||||||
@@ -84,7 +83,6 @@ package hakurei-dist {
|
|||||||
website = "https://hakurei.app";
|
website = "https://hakurei.app";
|
||||||
|
|
||||||
source = hakurei-source;
|
source = hakurei-source;
|
||||||
patches = [ "2a9aa3b4007a73a6c9d4608cb9a8822247881fd6.patch" ];
|
|
||||||
enterSource = true;
|
enterSource = true;
|
||||||
writable = true;
|
writable = true;
|
||||||
chmod = true;
|
chmod = true;
|
||||||
@@ -132,7 +130,6 @@ package earlyinit {
|
|||||||
exclude = true;
|
exclude = true;
|
||||||
|
|
||||||
source = hakurei-source;
|
source = hakurei-source;
|
||||||
patches = [ "2a9aa3b4007a73a6c9d4608cb9a8822247881fd6.patch" ];
|
|
||||||
enterSource = true;
|
enterSource = true;
|
||||||
writable = true;
|
writable = true;
|
||||||
chmod = true;
|
chmod = true;
|
||||||
@@ -146,10 +143,8 @@ package earlyinit {
|
|||||||
exec = generic {
|
exec = generic {
|
||||||
inPlace = true;
|
inPlace = true;
|
||||||
build = `
|
build = `
|
||||||
mkdir -p /work/system/libexec/hakurei/
|
|
||||||
|
|
||||||
echo '# Building earlyinit.'
|
echo '# Building earlyinit.'
|
||||||
go build -trimpath -v -o /work/system/libexec/hakurei -ldflags="-s -w
|
go build -trimpath -v -o /work/ -ldflags="-s -w
|
||||||
-buildid=
|
-buildid=
|
||||||
-linkmode external
|
-linkmode external
|
||||||
-extldflags=-static
|
-extldflags=-static
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
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 /usr/src/initramfs-image/earlyinit 0555 0 0
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package initramfs-image {
|
||||||
|
description = "Rosa OS initramfs image";
|
||||||
|
version = unversioned;
|
||||||
|
exclude = true;
|
||||||
|
|
||||||
|
source = earlyinit;
|
||||||
|
files = {
|
||||||
|
"initramfs";
|
||||||
|
};
|
||||||
|
exec = generic {
|
||||||
|
build = "gen_init_cpio "+
|
||||||
|
"-t 4294967295 "+
|
||||||
|
"-c /usr/src/initramfs | "+
|
||||||
|
"zstd > /work/initramfs.zst";
|
||||||
|
};
|
||||||
|
|
||||||
|
inputs = [
|
||||||
|
zstd,
|
||||||
|
gen_init_cpio,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
package system-image {
|
||||||
|
description = "Rosa OS system image";
|
||||||
|
version = unversioned;
|
||||||
|
exclude = true;
|
||||||
|
|
||||||
|
source = earlyinit;
|
||||||
|
extra = [
|
||||||
|
musl,
|
||||||
|
mksh,
|
||||||
|
toybox,
|
||||||
|
|
||||||
|
kmod,
|
||||||
|
kernel,
|
||||||
|
firmware,
|
||||||
|
];
|
||||||
|
overlay = "/mnt";
|
||||||
|
|
||||||
|
exec = generic {
|
||||||
|
build = "mksquashfs /mnt/system /work/system.img";
|
||||||
|
};
|
||||||
|
|
||||||
|
inputs = [ squashfs-tools ];
|
||||||
|
}
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated file; DO NOT EDIT.
|
# Automatically generated file; DO NOT EDIT.
|
||||||
# Linux/x86 6.12.87 Kernel Configuration
|
# Linux/x86 6.12.90 Kernel Configuration
|
||||||
#
|
#
|
||||||
CONFIG_CC_VERSION_TEXT="clang version 22.1.5"
|
CONFIG_CC_VERSION_TEXT="clang version 22.1.6"
|
||||||
CONFIG_GCC_VERSION=0
|
CONFIG_GCC_VERSION=0
|
||||||
CONFIG_CC_IS_CLANG=y
|
CONFIG_CC_IS_CLANG=y
|
||||||
CONFIG_CLANG_VERSION=220105
|
CONFIG_CLANG_VERSION=220106
|
||||||
CONFIG_AS_IS_LLVM=y
|
CONFIG_AS_IS_LLVM=y
|
||||||
CONFIG_AS_VERSION=220105
|
CONFIG_AS_VERSION=220106
|
||||||
CONFIG_LD_VERSION=0
|
CONFIG_LD_VERSION=0
|
||||||
CONFIG_LD_IS_LLD=y
|
CONFIG_LD_IS_LLD=y
|
||||||
CONFIG_LLD_VERSION=220105
|
CONFIG_LLD_VERSION=220106
|
||||||
CONFIG_RUSTC_VERSION=0
|
CONFIG_RUSTC_VERSION=0
|
||||||
CONFIG_RUSTC_LLVM_VERSION=0
|
CONFIG_RUSTC_LLVM_VERSION=0
|
||||||
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
|
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated file; DO NOT EDIT.
|
# Automatically generated file; DO NOT EDIT.
|
||||||
# Linux/arm64 6.12.83 Kernel Configuration
|
# Linux/arm64 6.12.90 Kernel Configuration
|
||||||
#
|
#
|
||||||
CONFIG_CC_VERSION_TEXT="clang version 22.1.4"
|
CONFIG_CC_VERSION_TEXT="clang version 22.1.6"
|
||||||
CONFIG_GCC_VERSION=0
|
CONFIG_GCC_VERSION=0
|
||||||
CONFIG_CC_IS_CLANG=y
|
CONFIG_CC_IS_CLANG=y
|
||||||
CONFIG_CLANG_VERSION=220104
|
CONFIG_CLANG_VERSION=220106
|
||||||
CONFIG_AS_IS_LLVM=y
|
CONFIG_AS_IS_LLVM=y
|
||||||
CONFIG_AS_VERSION=220104
|
CONFIG_AS_VERSION=220106
|
||||||
CONFIG_LD_VERSION=0
|
CONFIG_LD_VERSION=0
|
||||||
CONFIG_LD_IS_LLD=y
|
CONFIG_LD_IS_LLD=y
|
||||||
CONFIG_LLD_VERSION=220104
|
CONFIG_LLD_VERSION=220106
|
||||||
CONFIG_RUSTC_VERSION=0
|
CONFIG_RUSTC_VERSION=0
|
||||||
CONFIG_RUSTC_LLVM_VERSION=0
|
CONFIG_RUSTC_LLVM_VERSION=0
|
||||||
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
|
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
|
||||||
@@ -13858,7 +13858,9 @@ CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
|
|||||||
# CONFIG_DEBUG_INFO_DWARF4 is not set
|
# CONFIG_DEBUG_INFO_DWARF4 is not set
|
||||||
# CONFIG_DEBUG_INFO_DWARF5 is not set
|
# CONFIG_DEBUG_INFO_DWARF5 is not set
|
||||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||||
CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
|
# CONFIG_DEBUG_INFO_COMPRESSED_NONE is not set
|
||||||
|
# CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set
|
||||||
|
CONFIG_DEBUG_INFO_COMPRESSED_ZSTD=y
|
||||||
# CONFIG_DEBUG_INFO_SPLIT is not set
|
# CONFIG_DEBUG_INFO_SPLIT is not set
|
||||||
# CONFIG_GDB_SCRIPTS is not set
|
# CONFIG_GDB_SCRIPTS is not set
|
||||||
CONFIG_FRAME_WARN=2048
|
CONFIG_FRAME_WARN=2048
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated file; DO NOT EDIT.
|
# Automatically generated file; DO NOT EDIT.
|
||||||
# Linux/riscv 6.12.80 Kernel Configuration
|
# Linux/riscv 6.12.90 Kernel Configuration
|
||||||
#
|
#
|
||||||
CONFIG_CC_VERSION_TEXT="clang version 22.1.2"
|
CONFIG_CC_VERSION_TEXT="clang version 22.1.6"
|
||||||
CONFIG_GCC_VERSION=0
|
CONFIG_GCC_VERSION=0
|
||||||
CONFIG_CC_IS_CLANG=y
|
CONFIG_CC_IS_CLANG=y
|
||||||
CONFIG_CLANG_VERSION=220102
|
CONFIG_CLANG_VERSION=220106
|
||||||
CONFIG_AS_IS_LLVM=y
|
CONFIG_AS_IS_LLVM=y
|
||||||
CONFIG_AS_VERSION=220102
|
CONFIG_AS_VERSION=220106
|
||||||
CONFIG_LD_VERSION=0
|
CONFIG_LD_VERSION=0
|
||||||
CONFIG_LD_IS_LLD=y
|
CONFIG_LD_IS_LLD=y
|
||||||
CONFIG_LLD_VERSION=220102
|
CONFIG_LLD_VERSION=220106
|
||||||
CONFIG_RUSTC_VERSION=0
|
CONFIG_RUSTC_VERSION=0
|
||||||
CONFIG_RUSTC_LLVM_VERSION=0
|
CONFIG_RUSTC_LLVM_VERSION=0
|
||||||
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
|
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
|
||||||
@@ -11123,7 +11123,9 @@ CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
|
|||||||
# CONFIG_DEBUG_INFO_DWARF4 is not set
|
# CONFIG_DEBUG_INFO_DWARF4 is not set
|
||||||
# CONFIG_DEBUG_INFO_DWARF5 is not set
|
# CONFIG_DEBUG_INFO_DWARF5 is not set
|
||||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||||
CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
|
# CONFIG_DEBUG_INFO_COMPRESSED_NONE is not set
|
||||||
|
# CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set
|
||||||
|
CONFIG_DEBUG_INFO_COMPRESSED_ZSTD=y
|
||||||
# CONFIG_GDB_SCRIPTS is not set
|
# CONFIG_GDB_SCRIPTS is not set
|
||||||
CONFIG_FRAME_WARN=2048
|
CONFIG_FRAME_WARN=2048
|
||||||
# CONFIG_STRIP_ASM_SYMS is not set
|
# CONFIG_STRIP_ASM_SYMS is not set
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ package kernel-source {
|
|||||||
website = "https://kernel.org";
|
website = "https://kernel.org";
|
||||||
exclude = true;
|
exclude = true;
|
||||||
|
|
||||||
version* = "6.12.87";
|
version* = "6.12.90";
|
||||||
output = remoteTar {
|
output = remoteTar {
|
||||||
url = "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/"+
|
url = "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/"+
|
||||||
"snapshot/linux-"+version+".tar.gz";
|
"snapshot/linux-"+version+".tar.gz";
|
||||||
checksum = "QTl5teIy0K5KsOLYGHQ3FbnPCZNRH2bySXVzghiOoHDdM3zAcSPUkmdly85lMzHx";
|
checksum = "l9d_2veqbj3RVDp8L6vhV7j2DOLQtzQUqnzPFuJBR_VD8a3k4mvBQRR1-LE-SWZJ";
|
||||||
compress = gzip;
|
compress = gzip;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -45,9 +45,9 @@ cat \
|
|||||||
checksum = arch {
|
checksum = arch {
|
||||||
default = "";
|
default = "";
|
||||||
|
|
||||||
amd64 = "lCmBNcMeUmXifg0vecKOPy3GAaFcJSmOPnf3wit9xYTDSTsFADPt1xxUFfmTn1fD";
|
amd64 = "FkIf0_SD4g3mK_VWa9FJURjLS66YmknYTh49uMDlDSnoQpq6BqBymAm47joDwdWi";
|
||||||
arm64 = "PlRxp4JzZeMGx7CScRlT1NBzc2NVyJlb8Gm8sa3ofFght9ZT101ZJhcIXiCkHSHM";
|
arm64 = "bJ6ZLJhDR3K9So9zLh5s31hQPm_27gyl7XDVmCgdvyJGKDnffCKdtlE0HuvEbvye";
|
||||||
riscv64 = "z0MI2uSA31k_HtIsqGoCy-Vcf3mYm_zBDR_jN1tntg2Fdvz6YTwCU9YlHbYnpNbx";
|
riscv64 = "bbZCVNS1ryP-XoW9Gwx3ugvhvOA6d5UuO6gE7-Gv82g_bQN1hk4GG0SXBo-otyqS";
|
||||||
};
|
};
|
||||||
inputs = [ rsync ];
|
inputs = [ rsync ];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#define LINUX_VERSION_CODE 396372
|
#define LINUX_VERSION_CODE 396378
|
||||||
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
|
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
|
||||||
#define LINUX_VERSION_MAJOR 6
|
#define LINUX_VERSION_MAJOR 6
|
||||||
#define LINUX_VERSION_PATCHLEVEL 12
|
#define LINUX_VERSION_PATCHLEVEL 12
|
||||||
#define LINUX_VERSION_SUBLEVEL 84
|
#define LINUX_VERSION_SUBLEVEL 90
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ package mesa {
|
|||||||
anitya = 1970;
|
anitya = 1970;
|
||||||
latest = anityaFallback;
|
latest = anityaFallback;
|
||||||
|
|
||||||
version* = "26.1.0";
|
version* = "26.1.1";
|
||||||
source = remoteGitLab {
|
source = remoteGitLab {
|
||||||
domain = "gitlab.freedesktop.org";
|
domain = "gitlab.freedesktop.org";
|
||||||
suffix = "mesa/mesa";
|
suffix = "mesa/mesa";
|
||||||
ref = "mesa-"+version;
|
ref = "mesa-"+version;
|
||||||
checksum = "zU0fjqevySBaoi_5SLW3e2UffmGeBdxOuHmAHTH68n2hV-sjYoqg30koLqFXuk5y";
|
checksum = "OFCxGSTBe7qbnbVdazIJBNMFaQ-ylD5aRzo-JstSAdA0-hvVdRwsZiovMBm2rMzp";
|
||||||
};
|
};
|
||||||
|
|
||||||
exec = meson {
|
exec = meson {
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ package nspr {
|
|||||||
anitya = 7953;
|
anitya = 7953;
|
||||||
exclude = true;
|
exclude = true;
|
||||||
|
|
||||||
version* = "4.38.2";
|
version* = "4.39";
|
||||||
output = remoteTar {
|
output = remoteTar {
|
||||||
url = "https://ftp.mozilla.org/pub/nspr/releases/v"+version+
|
url = "https://ftp.mozilla.org/pub/nspr/releases/v"+version+
|
||||||
"/src/nspr-"+version+".tar.gz";
|
"/src/nspr-"+version+".tar.gz";
|
||||||
checksum = "BcKpVmN6bdBaoZyzht_SpGHnO1CRN5YHeVyWW2skfCKIdhy3ppKe1zMh85QBEsV_";
|
checksum = "lgIlqiItMBCRTuz8griNqxtJzNBAoZU1020EVR94X2IiZpJ-NgLXouF7m1knNlDs";
|
||||||
compress = gzip;
|
compress = gzip;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -17,7 +17,7 @@ package nss {
|
|||||||
website = "https://firefox-source-docs.mozilla.org/security/nss/index.html";
|
website = "https://firefox-source-docs.mozilla.org/security/nss/index.html";
|
||||||
anitya = 2503;
|
anitya = 2503;
|
||||||
|
|
||||||
version* = "3.123.1";
|
version* = "3.124";
|
||||||
source = remoteGitHub {
|
source = remoteGitHub {
|
||||||
suffix = "nss-dev/nss";
|
suffix = "nss-dev/nss";
|
||||||
tag = "NSS_"+join {
|
tag = "NSS_"+join {
|
||||||
@@ -28,7 +28,7 @@ package nss {
|
|||||||
};
|
};
|
||||||
sep = "_";
|
sep = "_";
|
||||||
}+"_RTM";
|
}+"_RTM";
|
||||||
checksum = "g811Z_fc74ssg-s6BeXRG-ipSfJggD6hrxjVJxrOBIz98CE7piv0OLwzIRLMQpwR";
|
checksum = "p_TFOmKxMVV-ZHRY0QwzEReUOxSRjEExpWIuoA3Bzxj50uNCS8EgqfzcpaiGAkr6";
|
||||||
};
|
};
|
||||||
extra = [ nspr ];
|
extra = [ nspr ];
|
||||||
|
|
||||||
|
|||||||
@@ -252,11 +252,11 @@ package python-trove-classifiers {
|
|||||||
website = "https://pypi.org/p/trove-classifiers";
|
website = "https://pypi.org/p/trove-classifiers";
|
||||||
anitya = 88298;
|
anitya = 88298;
|
||||||
|
|
||||||
version* = "2026.5.7.17";
|
version* = "2026.5.22.10";
|
||||||
source = remoteGitHub {
|
source = remoteGitHub {
|
||||||
suffix = "pypa/trove-classifiers";
|
suffix = "pypa/trove-classifiers";
|
||||||
tag = version;
|
tag = version;
|
||||||
checksum = "1Fcps0gK9P4ofwGL8MISN9k1Q40-quxX7NDpIna50TmziBNrZy-0Vz0I9yIeHCoP";
|
checksum = "PgFh58qkPCee5SIN62a_8s5kYRrydXODZEqeSgMJItiLrT5kaz8senRGn5B1Hv56";
|
||||||
};
|
};
|
||||||
|
|
||||||
exec = pip {
|
exec = pip {
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ package spirv-headers {
|
|||||||
// upstream changed version scheme, anitya incapable of filtering them
|
// upstream changed version scheme, anitya incapable of filtering them
|
||||||
latest = anityaFilterSPIRV;
|
latest = anityaFilterSPIRV;
|
||||||
|
|
||||||
version* = "1.4.341.0";
|
version* = "1.4.350.0";
|
||||||
source = remoteGitHub {
|
source = remoteGitHub {
|
||||||
suffix = "KhronosGroup/SPIRV-Headers";
|
suffix = "KhronosGroup/SPIRV-Headers";
|
||||||
tag = "vulkan-sdk-"+version;
|
tag = "vulkan-sdk-"+version;
|
||||||
checksum = "0PL43-19Iaw4k7_D8J8BvoJ-iLgCVSYZ2ThgDPGfAJwIJFtre7l0cnQtLjcY-JvD";
|
checksum = "wFCZquDVL4HoE-kWbS_BHHb_d71EYR2A2kVp08oDutektpnQzhDP89wo821GgcpG";
|
||||||
};
|
};
|
||||||
|
|
||||||
exec = cmake {
|
exec = cmake {
|
||||||
|
|||||||
@@ -1,5 +1,31 @@
|
|||||||
package stage0-dist {
|
package rosa-stage0 {
|
||||||
description = "Rosa OS stage0 bootstrap seed";
|
description = "Rosa OS stage0 bootstrap seed";
|
||||||
|
version = unversioned;
|
||||||
|
exclude = true;
|
||||||
|
|
||||||
|
source = hakurei-source;
|
||||||
|
extra = [
|
||||||
|
llvm,
|
||||||
|
mksh,
|
||||||
|
toybox-early,
|
||||||
|
];
|
||||||
|
overlay = "/stage0";
|
||||||
|
exec = generic {
|
||||||
|
build = `
|
||||||
|
umask 377
|
||||||
|
tar \
|
||||||
|
-vjc \
|
||||||
|
-C /stage0 \
|
||||||
|
-f /work/stage0-`+triple+`.tar.bz2 \
|
||||||
|
.
|
||||||
|
`;
|
||||||
|
};
|
||||||
|
|
||||||
|
inputs = [ bzip2 ];
|
||||||
|
}
|
||||||
|
|
||||||
|
package stage0-dist {
|
||||||
|
description = "Rosa OS stage0 bootstrap seed (binary distribution)";
|
||||||
exclude = true;
|
exclude = true;
|
||||||
|
|
||||||
version* = "20260504";
|
version* = "20260504";
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package tllist {
|
||||||
|
description = "a C header file only implementation of a typed linked list";
|
||||||
|
website = "https://codeberg.org/dnkl/tllist";
|
||||||
|
anitya = 141661;
|
||||||
|
|
||||||
|
version* = "1.1.0";
|
||||||
|
source = remoteTar {
|
||||||
|
url = "https://codeberg.org/dnkl/tllist/archive/"+version+".tar.gz";
|
||||||
|
checksum = "EEgawChPB8hO7mW9dAzakBGWSRnrgK8pWhCF7Z5F_ycYEqOXxJPCWq6mFUi95U9d";
|
||||||
|
compress = gzip;
|
||||||
|
};
|
||||||
|
|
||||||
|
exec = meson {};
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package utf8proc {
|
||||||
|
description = "a clean C library for processing UTF-8 Unicode data";
|
||||||
|
website = "https://juliastrings.github.io/utf8proc";
|
||||||
|
anitya = 7455;
|
||||||
|
|
||||||
|
version* = "2.11.3";
|
||||||
|
source = remoteGitHub {
|
||||||
|
suffix = "JuliaStrings/utf8proc";
|
||||||
|
tag = "v"+version;
|
||||||
|
checksum = "LlmejkymQEhaMciSE17JSl3pAYdf6DdXNr0ucwclClsMCeq7l1dcgIJl1JmNTQVq";
|
||||||
|
};
|
||||||
|
|
||||||
|
exec = cmake {
|
||||||
|
cache = {
|
||||||
|
"UTF8PROC_ENABLE_TESTING": "ON";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ package util-linux {
|
|||||||
// release candidates confuse Anitya
|
// release candidates confuse Anitya
|
||||||
latest = anityaFallback;
|
latest = anityaFallback;
|
||||||
|
|
||||||
version* = "2.42";
|
version* = "2.42.1";
|
||||||
source = remoteTar {
|
source = remoteTar {
|
||||||
url = "https://www.kernel.org/pub/linux/utils/util-linux/"+
|
url = "https://www.kernel.org/pub/linux/utils/util-linux/"+
|
||||||
"v"+join {
|
"v"+join {
|
||||||
@@ -19,7 +19,7 @@ package util-linux {
|
|||||||
};
|
};
|
||||||
sep = ".";
|
sep = ".";
|
||||||
}+"/util-linux-"+version+".tar.gz";
|
}+"/util-linux-"+version+".tar.gz";
|
||||||
checksum = "Uy8Nxg9DsW5YwDoeaZeZTyQJ2YmnaaL_fSsQXsLUiFFUd7wnZeD_3SEaVO7ClJlk";
|
checksum = "f1c006mnFL9jTEsqnJn08hHqwcL8TpjCJNIToZNuGEPsLmEdNL87r8RzBT-nl9QB";
|
||||||
compress = gzip;
|
compress = gzip;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package xkbcommon {
|
||||||
|
description = "a library implementing the XKB specification for handling keyboard descriptions";
|
||||||
|
website = "https://xkbcommon.org";
|
||||||
|
anitya = 1780;
|
||||||
|
|
||||||
|
version* = "1.13.1";
|
||||||
|
source = remoteGitHub {
|
||||||
|
suffix = "xkbcommon/libxkbcommon";
|
||||||
|
tag = "xkbcommon-"+version;
|
||||||
|
checksum = "8L8-d1OT9vmCTR6y0fpG7IsSjelAdtDcaD9PRk7--49uEW5ZybD1-bniCxsQU_8Q";
|
||||||
|
};
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"HOME=/proc/nonexistent",
|
||||||
|
];
|
||||||
|
|
||||||
|
exec = meson {
|
||||||
|
setup = {
|
||||||
|
"Denable-x11": "false";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
inputs = [
|
||||||
|
m4,
|
||||||
|
bison,
|
||||||
|
|
||||||
|
libxml2,
|
||||||
|
wayland,
|
||||||
|
wayland-protocols,
|
||||||
|
xkeyboard-config,
|
||||||
|
];
|
||||||
|
|
||||||
|
runtime = [
|
||||||
|
libxml2,
|
||||||
|
wayland,
|
||||||
|
wayland-protocols,
|
||||||
|
];
|
||||||
|
}
|
||||||
+1
-21
@@ -1,14 +1,8 @@
|
|||||||
package rosa
|
package rosa
|
||||||
|
|
||||||
import (
|
|
||||||
"slices"
|
|
||||||
|
|
||||||
"hakurei.app/internal/pkg"
|
|
||||||
)
|
|
||||||
|
|
||||||
var _perl = H("perl")
|
var _perl = H("perl")
|
||||||
|
|
||||||
// MakeMakerHelper is the [Perl] MakeMaker helper.
|
// MakeMakerHelper builds projects using the included MakeMaker script.
|
||||||
type MakeMakerHelper struct {
|
type MakeMakerHelper struct {
|
||||||
// Whether to skip the check target.
|
// Whether to skip the check target.
|
||||||
SkipCheck bool
|
SkipCheck bool
|
||||||
@@ -49,17 +43,3 @@ make \
|
|||||||
script += "make DESTDIR=/work install\n"
|
script += "make DESTDIR=/work install\n"
|
||||||
return script
|
return script
|
||||||
}
|
}
|
||||||
|
|
||||||
// newViaPerlMakeMaker installs a perl module via Makefile.PL.
|
|
||||||
func (t Toolchain) newViaPerlMakeMaker(
|
|
||||||
name, version string,
|
|
||||||
source pkg.Artifact,
|
|
||||||
patches []KV,
|
|
||||||
extra ...ArtifactH,
|
|
||||||
) pkg.Artifact {
|
|
||||||
return t.NewPackage("perl-"+name, version, source, &PackageAttr{
|
|
||||||
Patches: patches,
|
|
||||||
}, (*MakeMakerHelper)(nil), slices.Concat(extra, P{
|
|
||||||
_perl,
|
|
||||||
})...)
|
|
||||||
}
|
|
||||||
|
|||||||
+1
-31
@@ -1,17 +1,11 @@
|
|||||||
package rosa
|
package rosa
|
||||||
|
|
||||||
import (
|
|
||||||
"slices"
|
|
||||||
|
|
||||||
"hakurei.app/internal/pkg"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
_python = H("python")
|
_python = H("python")
|
||||||
_pythonPyTest = H("python-pytest")
|
_pythonPyTest = H("python-pytest")
|
||||||
)
|
)
|
||||||
|
|
||||||
// PipHelper is the [Python] pip packaging helper.
|
// PipHelper installs python packages from source using pip.
|
||||||
type PipHelper struct {
|
type PipHelper struct {
|
||||||
// Path elements joined with source.
|
// Path elements joined with source.
|
||||||
Append []string
|
Append []string
|
||||||
@@ -94,27 +88,3 @@ pip3 install \
|
|||||||
'` + sourcePath.String() + `'
|
'` + sourcePath.String() + `'
|
||||||
` + script
|
` + script
|
||||||
}
|
}
|
||||||
|
|
||||||
// newPythonPackage registers a new [Python] package.
|
|
||||||
func (s *S) newPythonPackage(
|
|
||||||
name string, id int, description, website, version string,
|
|
||||||
source pkg.Artifact, attrP *PackageAttr, attr *PipHelper,
|
|
||||||
build P, extra ...ArtifactH,
|
|
||||||
) {
|
|
||||||
name = "python-" + name
|
|
||||||
s.MustRegister(name, func(t Toolchain) (*Metadata, pkg.Artifact) {
|
|
||||||
return &Metadata{
|
|
||||||
Name: name,
|
|
||||||
Description: description,
|
|
||||||
Website: website,
|
|
||||||
Version: version,
|
|
||||||
|
|
||||||
Dependencies: slices.Concat(P{_python}, extra),
|
|
||||||
|
|
||||||
ID: id,
|
|
||||||
}, t.NewPackage(name, version, source, attrP, attr, slices.Concat(
|
|
||||||
extra,
|
|
||||||
build,
|
|
||||||
)...)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|||||||
+1
-19
@@ -111,7 +111,7 @@ const (
|
|||||||
stageIntermediateGentoo
|
stageIntermediateGentoo
|
||||||
|
|
||||||
// stageStdGentoo is like Std, but bootstrapped from stageGentoo. This
|
// stageStdGentoo is like Std, but bootstrapped from stageGentoo. This
|
||||||
// toolchain creates the first [Stage0] distribution.
|
// toolchain creates the first stage0 distribution.
|
||||||
stageStdGentoo
|
stageStdGentoo
|
||||||
|
|
||||||
// stageEarly denotes the stage0 toolchain. Special care must be taken
|
// stageEarly denotes the stage0 toolchain. Special care must be taken
|
||||||
@@ -322,24 +322,6 @@ mkdir -vp /work/system/bin
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewStage0 returns a [pkg.Artifact] curing to a stage0 distribution.
|
|
||||||
func (t Toolchain) NewStage0() pkg.Artifact {
|
|
||||||
return t.New("stage0", 0, t.Append(nil,
|
|
||||||
H("bzip2"),
|
|
||||||
), nil, nil, `
|
|
||||||
umask 377
|
|
||||||
tar \
|
|
||||||
-vjc \
|
|
||||||
-C /stage0 \
|
|
||||||
-f /work/stage0-`+t.triple()+`.tar.bz2 \
|
|
||||||
.
|
|
||||||
`, pkg.Path(fhs.AbsRoot.Append("stage0"), false, t.Append(nil,
|
|
||||||
_llvm,
|
|
||||||
_mksh,
|
|
||||||
_toyboxEarly,
|
|
||||||
)...))
|
|
||||||
}
|
|
||||||
|
|
||||||
// HasStageEarly returns whether a stage0 distribution is available.
|
// HasStageEarly returns whether a stage0 distribution is available.
|
||||||
func (s *S) HasStageEarly() (ok bool) {
|
func (s *S) HasStageEarly() (ok bool) {
|
||||||
func() {
|
func() {
|
||||||
|
|||||||
+114
-10
@@ -1,6 +1,9 @@
|
|||||||
package rosa
|
package rosa
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"archive/tar"
|
||||||
|
"bytes"
|
||||||
|
"compress/gzip"
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
@@ -408,7 +411,7 @@ func (s *S) Collect() (handles P) {
|
|||||||
type deferredGit struct {
|
type deferredGit struct {
|
||||||
url string
|
url string
|
||||||
tag string
|
tag string
|
||||||
checksum string
|
checksum pkg.Checksum
|
||||||
}
|
}
|
||||||
|
|
||||||
// getFrame must be called before accessing s.
|
// getFrame must be called before accessing s.
|
||||||
@@ -658,13 +661,15 @@ func (s *S) getFrame() azalea.Frame {
|
|||||||
args azalea.FArgs,
|
args azalea.FArgs,
|
||||||
) (v any, set bool, err error) {
|
) (v any, set bool, err error) {
|
||||||
var a deferredGit
|
var a deferredGit
|
||||||
|
var checksum string
|
||||||
if err = args.Apply(map[unique.Handle[azalea.Ident]]any{
|
if err = args.Apply(map[unique.Handle[azalea.Ident]]any{
|
||||||
k("url"): &a.url,
|
k("url"): &a.url,
|
||||||
k("tag"): &a.tag,
|
k("tag"): &a.tag,
|
||||||
k("checksum"): &a.checksum,
|
k("checksum"): &checksum,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
a.checksum = mustDecode(checksum)
|
||||||
v = a
|
v = a
|
||||||
set = true
|
set = true
|
||||||
return
|
return
|
||||||
@@ -927,6 +932,7 @@ func (ctx *evalContext) pf(
|
|||||||
output pkg.Artifact
|
output pkg.Artifact
|
||||||
sourceA any
|
sourceA any
|
||||||
helper Helper
|
helper Helper
|
||||||
|
overlay string
|
||||||
|
|
||||||
inputs, runtimes, extra azalea.Array
|
inputs, runtimes, extra azalea.Array
|
||||||
)
|
)
|
||||||
@@ -955,6 +961,7 @@ func (ctx *evalContext) pf(
|
|||||||
k("inputs"): &inputs,
|
k("inputs"): &inputs,
|
||||||
k("runtime"): &runtimes,
|
k("runtime"): &runtimes,
|
||||||
k("extra"): &extra,
|
k("extra"): &extra,
|
||||||
|
k("overlay"): &overlay,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -986,13 +993,26 @@ func (ctx *evalContext) pf(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, h := range extraH {
|
if overlay == "" {
|
||||||
_, a := ctx.t.MustLoad(h)
|
for _, h := range extraH {
|
||||||
attr.Paths = append(attr.Paths, pkg.Path(
|
_, a := ctx.t.MustLoad(h)
|
||||||
AbsUsrSrc.Append("extra", h.String()),
|
attr.Paths = append(attr.Paths, pkg.Path(
|
||||||
attr.Writable,
|
AbsUsrSrc.Append("extra", h.String()),
|
||||||
a,
|
attr.Writable,
|
||||||
))
|
a,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var o pkg.ExecPath
|
||||||
|
if o.P, err = check.NewAbs(overlay); err != nil {
|
||||||
|
o.P = AbsUsrSrc.Append("extra", overlay)
|
||||||
|
}
|
||||||
|
o.A = make([]pkg.Artifact, len(extraH))
|
||||||
|
for i, h := range extraH {
|
||||||
|
_, a := ctx.t.MustLoad(h)
|
||||||
|
o.A[i] = a
|
||||||
|
}
|
||||||
|
attr.Paths = append(attr.Paths, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pair := range files {
|
for _, pair := range files {
|
||||||
@@ -1044,7 +1064,7 @@ func (ctx *evalContext) pf(
|
|||||||
source = p
|
source = p
|
||||||
|
|
||||||
case deferredGit:
|
case deferredGit:
|
||||||
source = ctx.t.newTagRemote(p.url, p.tag, p.checksum)
|
source = ctx.t.NewViaGit(p.url, "refs/tags/"+p.tag, p.checksum)
|
||||||
|
|
||||||
case azalea.Ident:
|
case azalea.Ident:
|
||||||
var _meta *Metadata
|
var _meta *Metadata
|
||||||
@@ -1173,6 +1193,90 @@ func (s *S) RegisterFS(fsys fs.FS) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetSource overrides the hakurei-source package with a cached tarball of fsys.
|
||||||
|
// The resulting IR is curable on the daemon. Must not be used concurrently with
|
||||||
|
// any other method.
|
||||||
|
func (s *S) SetSource(fsys fs.FS) error {
|
||||||
|
var buf bytes.Buffer
|
||||||
|
w, err := gzip.NewWriterLevel(&buf, gzip.BestSpeed)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
tw := tar.NewWriter(w)
|
||||||
|
|
||||||
|
if err = fs.WalkDir(fsys, ".", func(path string, d fs.DirEntry, err error) error {
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if d.IsDir() && d.Name() == ".git" {
|
||||||
|
return fs.SkipDir
|
||||||
|
}
|
||||||
|
|
||||||
|
var fi fs.FileInfo
|
||||||
|
if fi, err = d.Info(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var linkname string
|
||||||
|
if fi.Mode()&fs.ModeSymlink != 0 {
|
||||||
|
if linkname, err = fs.ReadLink(fsys, path); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var h *tar.Header
|
||||||
|
if h, err = tar.FileInfoHeader(fi, linkname); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
h.Name = path
|
||||||
|
|
||||||
|
if err = tw.WriteHeader(h); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if fi.Mode().IsRegular() {
|
||||||
|
var f io.ReadCloser
|
||||||
|
if f, err = fsys.Open(path); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = io.Copy(tw, f)
|
||||||
|
if _err := f.Close(); err == nil {
|
||||||
|
err = _err
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = tw.Close(); err != nil {
|
||||||
|
return err
|
||||||
|
} else if err = w.Close(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
const name = "hakurei-source"
|
||||||
|
a := pkg.NewFile("hakurei-src-current.tar.gz", buf.Bytes())
|
||||||
|
s.artifacts.Store(
|
||||||
|
H(name),
|
||||||
|
Artifact(func(t Toolchain) (*Metadata, pkg.Artifact) {
|
||||||
|
return &Metadata{
|
||||||
|
Name: name,
|
||||||
|
Description: "hakurei source tree (current)",
|
||||||
|
Version: "1.0.0-CURRENT",
|
||||||
|
Exclude: true,
|
||||||
|
}, pkg.NewTar(a, pkg.TarGzip)
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
s.DropCaches(s.Arch(), s.Flags())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// SetGentooStage3 sets the Gentoo stage3 tarball url and checksum. It panics
|
// SetGentooStage3 sets the Gentoo stage3 tarball url and checksum. It panics
|
||||||
// if given zero values or if these values have already been set.
|
// if given zero values or if these values have already been set.
|
||||||
func (s *S) SetGentooStage3(url string, checksum pkg.Checksum) {
|
func (s *S) SetGentooStage3(url string, checksum pkg.Checksum) {
|
||||||
|
|||||||
Reference in New Issue
Block a user