Compare commits

..
52 Commits
Author SHA1 Message Date
cat d9803e5be7 release: 0.4.7
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-21 18:40:42 +09:00
cat a28e01b863 internal/rosa/package/mesa: 26.2.0 to 26.2.1
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-21 13:47:28 +09:00
cat 84ab8daf6a internal/rosa/package/tamago: 1.26.6 to 1.27.0
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-21 13:50:49 +09:00
cat 2ca57764a3 internal/rosa/package/git: disable flaky test
This one blew up on the aarch64 builder, seems very low probability of failure. Disabling anyway.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-21 13:40:22 +09:00
cat f189cc25c6 test: synchronise before copying from vm
The swaymsg calls do not wait for process to terminate.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 19:32:29 +09:00
cat fa7e06ebd6 internal/rosa/package/kernel: 6.18.44 to 6.18.45
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 19:11:03 +09:00
cat 142152f6b8 Revert "internal/rosa/package/elfutils: 0.195 to 0.196"
Does not compile on arm:

In file included from /usr/src/elfutils/backends/aarch64_initreg.c:36:
/system/include/linux/uio.h:17:8: error: redefinition of 'iovec'
   17 | struct iovec
      |        ^
/system/include/bits/alltypes.h:363:8: note: previous definition is here
  363 | struct iovec { void *iov_base; size_t iov_len; };
      |        ^
1 error generated.

This reverts commit 5313ea627b.
2026-08-20 18:45:20 +09:00
cat b3ac03059f internal/rosa/package/python: remove broken tests from mako
The two bumps somehow broke these tests.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:39:01 +09:00
cat cbd95294ba go: 1.27
This fixes test cases affected by jsonv2 changes.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 19:05:29 +09:00
cat ace59607f2 internal/pkg: eliminate gzip-derived identifiers
These test cases are fragile to changes in package compress/gzip.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:19:38 +09:00
cat 692c28ad29 internal/rosa/package/x: xwayland 24.1.13 to 26.0.99.901
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:17:59 +09:00
cat df04ad592e internal/rosa/package/x: xserver 21.1.24 to 26.0.99.901
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:17:36 +09:00
cat 7737fd03ae internal/rosa/package/tamago: 1.26.5 to 1.26.6
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:17:05 +09:00
cat 476945da23 internal/rosa/package/nss: 3.126.1 to 3.127
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:16:34 +09:00
cat 85860c858a internal/rosa/package/libpsl: 0.23.2 to 0.23.3
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:16:00 +09:00
cat 60a62ae5f7 internal/rosa/package/libevdev: 1.13.6 to 1.13.7
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:15:30 +09:00
cat 5313ea627b internal/rosa/package/elfutils: 0.195 to 0.196
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:15:02 +09:00
cat 5352598c68 internal/rosa/package/python: pygments 2.20.0 to 2.21.0
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:14:36 +09:00
cat 9331a5cbeb internal/rosa/package/python: vcs-versioning 2.2.4 to 2.3.1
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:14:11 +09:00
cat 9b675c45ff internal/rosa/package/strace: 7.1 to 7.2
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:13:30 +09:00
cat 5cf1d70c7b internal/rosa/package/go: 1.26.6 to 1.27.0
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-20 18:12:32 +09:00
cat e58b6eb171 internal/rosa/package: net-tools
These are nice to have, but will not be included in the base system.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-15 16:18:44 +09:00
cat 1625aaee80 internal/rosa/package/nss: 3.126 to 3.126.1
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-14 16:19:17 +09:00
cat 203ce6864b internal/rosa/package/go: 1.26.5 to 1.26.6
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-14 16:18:55 +09:00
cat 050051e593 internal/rosa/package/procps: 4.0.6 to 4.0.7
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-13 20:09:27 +09:00
cat 530b63ca70 internal/rosa/package/harfbuzz: 14.3.0 to 14.3.1
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-13 20:09:06 +09:00
cat 8821d34b10 internal/pkg: deduplicate unwrapped input errors
This avoids repeating errors belonging to multiple instances of the same artifact in different locations in memory.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-12 22:34:12 +09:00
cat 054a8813d7 internal/rosa/package/qemu: disable broken tests
The copy-before-write test was failing on a Haswell machine, although it seems to work pretty reliably on the Zen 3 workstation and RK3588.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-12 19:01:49 +09:00
cat 1bc16b51a6 cmd/hakurei: terminate specified instance
This is theoretically susceptible to the PID race, but such an event is statistically impossible, and not exploitable in the intended use case, regardless.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-12 18:03:54 +09:00
cat 3718c044c4 internal/rosa/package/qemu: use system meson
This also enables meson colour and fixes test suite invocation.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-12 17:57:57 +09:00
cat 07e92db918 internal/rosa/package/dbus: xdg-dbus-proxy 0.1.7 to 0.1.8
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-12 16:29:07 +09:00
cat d2ee7cb551 internal/rosa/package/qemu: 11.0.3 to 11.1.0
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-12 16:28:47 +09:00
cat 39e757a84d internal/rosa/package/python: wheel 0.47.0 to 0.48.0
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-12 16:28:18 +09:00
cat a431f16e6f internal/pkg: in-flight error resolution
The DCE is a slow and overcomplicated solution to a simple problem. This change replaces the DCE by resolving errors in-flight.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-12 16:21:47 +09:00
cat 1f45d44e7f internal/rosa/package/python: hatchling 1.17.1 to 1.18.0
This has gained another dependency, pulling in the fourth python build system we have had to package.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-11 21:43:19 +09:00
cat 92d01752ab internal/rosa/package/python: poetry-core tomlkit
This is the fourth python build system required to package meson. Required by tomlkit which is now required by hatchling (yet another build system).

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-11 21:42:09 +09:00
cat 82bf46d23f internal/rosa/package: replace pkg-config
This replaces pkg-config with pkgconf for most packages.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-11 21:27:09 +09:00
cat 2abcb99ea2 internal/rosa/package: pkgconf
This replaces pkg-config for packages later than meson.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-11 21:23:11 +09:00
cat 2218efc0cf internal/rosa: improve nil-exec error reporting
This panics with a more descriptive error instead of relying on the SIGSEGV handler.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-11 20:40:00 +09:00
cat 30c5525d7b internal/rosa/package/libpsl: 0.23.1 to 0.23.2
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-11 14:39:44 +09:00
cat bf6d1ada71 internal/rosa/package/libexpat: 2.8.2 to 2.8.3
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-11 14:39:16 +09:00
cat 16294a35ee internal/rosa/package/googletest: 1.17.0 to 1.18.0
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-11 14:38:56 +09:00
cat 22756af8fb internal/rosa/package/firmware: 20260622 to 20260810
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-11 14:38:36 +09:00
cat 739ae4a7cf internal/rosa/package/meson: 1.11.2 to 1.12.0
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-11 14:38:13 +09:00
cat eec89c4519 internal/rosa/package/kernel: 6.18.43 to 6.18.44
Typo fix of rkisp1_ext_param_buffer_version caused world rebuild.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-11 00:08:47 +09:00
cat 7193656b6a internal/rosa: improve helper bindings
This uses more intuitive names for some arguments and inverts their default value. Slices and nil-capable strings replace skip arguments.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-10 21:55:47 +09:00
cat 7d86e19c07 internal/rosa/azalea: implement nil identifier
This also implements a nil-capable string type.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-10 21:36:21 +09:00
cat f1ffb180bc internal/rosa: optionally block packages from early stages
This helps avoid inadvertently increasing bootstrap input count.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-10 17:50:36 +09:00
cat 7f690145e3 internal/rosa/package/hakurei: 0.4.5 to 0.4.6
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-09 21:21:39 +09:00
cat c79ae7aed6 release: 0.4.6
Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-09 20:48:28 +09:00
cat 396ae2ba2a cmd/dist: replace readme with license
The readme document is pretty useless for anything other than the website, so replace it with something more relevant.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-09 20:40:52 +09:00
cat 1e85dca9e2 internal/rosa/package/python: setuptools 83.0.0 to 84.0.0
This has also turned into AI slop at some point, although its quality was never great to begin with. This may be a candidate to pin and ignore.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-08-09 19:13:05 +09:00
31 changed files with 117 additions and 572 deletions
+1 -1
View File
@@ -1 +1 @@
v0.4.6 v0.4.7
+1 -1
View File
@@ -66,7 +66,7 @@ func TestEncodeJSON(t *testing.T) {
want string want string
}{ }{
{"marshaler", errorJSONMarshaler{}, {"marshaler", errorJSONMarshaler{},
`cannot encode json for main.errorJSONMarshaler: unique error 3735928559 injected by the test suite`}, `cannot encode json for *main.errorJSONMarshaler: unique error 3735928559 injected by the test suite`},
{"default", func() {}, {"default", func() {},
`cannot write json: json: unsupported type: func()`}, `cannot write json: json: unsupported type: func()`},
} }
+1 -1
View File
@@ -1,3 +1,3 @@
module hakurei.app module hakurei.app
go 1.26 go 1.27
+8 -6
View File
@@ -36,6 +36,12 @@ func TestDecompress(t *testing.T) {
return (pkg.Checksum)(h.Sum(nil)) return (pkg.Checksum)(h.Sum(nil))
}() }()
gh := pkg.NewDecompress(pkg.NewHTTPGet(
&client,
"file:///testdata",
testdataChecksum,
), pkg.Gzip)
checkWithCache(t, []cacheTestCase{ checkWithCache(t, []cacheTestCase{
{"decompress", 0, nil, func(t *testing.T, base *check.Absolute, c *pkg.Cache) { {"decompress", 0, nil, func(t *testing.T, base *check.Absolute, c *pkg.Cache) {
cureMany(t, c, []cureStep{ cureMany(t, c, []cureStep{
@@ -48,11 +54,7 @@ func TestDecompress(t *testing.T) {
Want: pkg.Checksum{0xfd}, Want: pkg.Checksum{0xfd},
}}, }},
{"gzip", pkg.NewDecompress(pkg.NewHTTPGet( {"gzip", gh, ignorePathname, expectsChecksum(sha512.Sum384([]byte{0})), pkg.WNew, nil},
&client,
"file:///testdata",
testdataChecksum,
), pkg.Gzip), ignorePathname, expectsChecksum(sha512.Sum384([]byte{0})), pkg.WNew, nil},
}) })
}, expectsFS{ }, expectsFS{
".": {Mode: fs.ModeDir | 0700}, ".": {Mode: fs.ModeDir | 0700},
@@ -61,7 +63,7 @@ func TestDecompress(t *testing.T) {
"checksum/" + pkg.Encode(sha512.Sum384([]byte{0})): {Mode: 0400, Data: []byte{0}}, "checksum/" + pkg.Encode(sha512.Sum384([]byte{0})): {Mode: 0400, Data: []byte{0}},
"identifier": {Mode: fs.ModeDir | 0700}, "identifier": {Mode: fs.ModeDir | 0700},
"identifier/mae-iR_9LFT_BOEJ2IRzKsAlI754SalMjjt95fZeMd3gEyAzsrvuOXnXN0bFZJi4": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/vsAhtPNo4waRNOASwrQwcIPTqb3SBuJOXw2G4T1mNmVZM-wrQTRllmgXqcIIoRcX")}, "identifier/" + pkg.Encode(pkg.NewIR().Ident(gh).Value()): {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/vsAhtPNo4waRNOASwrQwcIPTqb3SBuJOXw2G4T1mNmVZM-wrQTRllmgXqcIIoRcX")},
"substitute": {Mode: fs.ModeDir | 0700}, "substitute": {Mode: fs.ModeDir | 0700},
"work": {Mode: fs.ModeDir | 0700}, "work": {Mode: fs.ModeDir | 0700},
+10 -29
View File
@@ -3,7 +3,6 @@ package pkg_test
import ( import (
"archive/tar" "archive/tar"
"bytes" "bytes"
"compress/gzip"
"crypto/sha512" "crypto/sha512"
"errors" "errors"
"io/fs" "io/fs"
@@ -80,8 +79,8 @@ func TestTar(t *testing.T) {
"checksum/" + wantEncode + "/work": {Mode: fs.ModeDir | 0500}, "checksum/" + wantEncode + "/work": {Mode: fs.ModeDir | 0500},
"identifier": {Mode: fs.ModeDir | 0700}, "identifier": {Mode: fs.ModeDir | 0700},
"identifier/7OZ5ErCxUJyRnaaFvUKhTryjsJAoOBUR2MZpUB1DD57jRa09Xxsh9BUs0dM9z5uH": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantEncode)}, "identifier/snWp53xxNdx6cV5KSJqzyVWzLlTsFd8udOisIu8Rgxly09mGcxufYCoQ5CQrHDyZ": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantEncode)},
"identifier/paWdPW_BowV3345c4GP4xxSNgxVs_7F09m9m7OaH5XbyuI3dTGZ-kFPOXFbwgr5O": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantEncode)}, "identifier/v9DUj2R4YK_3ae0m9VuUYI-HJysDDCENu1k10thxioycRzFH1Qejw5bBGukm4IdL": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantEncode)},
"substitute": {Mode: fs.ModeDir | 0700}, "substitute": {Mode: fs.ModeDir | 0700},
@@ -104,8 +103,8 @@ func TestTar(t *testing.T) {
"checksum/" + wantExpandEncode + "/libedac.so": {Mode: fs.ModeSymlink | 0777, Data: []byte("/proc/nonexistent/libedac.so")}, "checksum/" + wantExpandEncode + "/libedac.so": {Mode: fs.ModeSymlink | 0777, Data: []byte("/proc/nonexistent/libedac.so")},
"identifier": {Mode: fs.ModeDir | 0700}, "identifier": {Mode: fs.ModeDir | 0700},
"identifier/1g2Tcg7pOJkZFxlKploBm4U0vIyMYbxDkcwwydwsF9BMs-w-knFJS41jnqOt16jT": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantExpandEncode)}, "identifier/1SuvgGltcsgqps9tWqjULG8RCdpx_6KVWXdsMd5xPKvdtysOxqpE-3bLu4j0WpGk": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantExpandEncode)},
"identifier/7OZ5ErCxUJyRnaaFvUKhTryjsJAoOBUR2MZpUB1DD57jRa09Xxsh9BUs0dM9z5uH": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantExpandEncode)}, "identifier/snWp53xxNdx6cV5KSJqzyVWzLlTsFd8udOisIu8Rgxly09mGcxufYCoQ5CQrHDyZ": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantExpandEncode)},
"substitute": {Mode: fs.ModeDir | 0700}, "substitute": {Mode: fs.ModeDir | 0700},
@@ -132,16 +131,7 @@ func checkTarHTTP(
if err := w.Close(); err != nil { if err := w.Close(); err != nil {
t.Fatalf("Close: error = %v", err) t.Fatalf("Close: error = %v", err)
} }
testdata = buf.String()
var zbuf bytes.Buffer
gw := gzip.NewWriter(&zbuf)
if _, err := gw.Write(buf.Bytes()); err != nil {
t.Fatalf("Write: error = %v", err)
}
if err := gw.Close(); err != nil {
t.Fatalf("Close: error = %v", err)
}
testdata = zbuf.String()
} }
testdataChecksum := func() pkg.Checksum { testdataChecksum := func() pkg.Checksum {
@@ -208,28 +198,19 @@ func checkTarHTTP(
defer newDestroyArtifactFunc(&tarDirType)(t, base, c) defer newDestroyArtifactFunc(&tarDirType)(t, base, c)
cureMany(t, c, []cureStep{ cureMany(t, c, []cureStep{
{"file", pkg.NewTar(pkg.NewDecompress(pkg.NewHTTPGet( {"file", pkg.NewTar(pkg.NewHTTPGet(
&client, &client,
"file:///testdata", "file:///testdata",
testdataChecksum, testdataChecksum,
), pkg.Gzip)), ignorePathname, want, pkg.WNew, nil},
{"directory", pkg.NewTar(pkg.NewDecompress(
&tarDir,
pkg.Gzip,
)), ignorePathname, want, pkg.WNew, nil}, )), ignorePathname, want, pkg.WNew, nil},
{"multiple entries", pkg.NewTar(pkg.NewDecompress( {"directory", pkg.NewTar(&tarDir), ignorePathname, want, pkg.WNew, nil},
&tarDirMulti,
pkg.Gzip, {"multiple entries", pkg.NewTar(&tarDirMulti), nil, nil, pkg.WNew, errors.New(
)), nil, nil, pkg.WNew, errors.New(
"input directory does not contain a single regular file", "input directory does not contain a single regular file",
)}, )},
{"bad type", pkg.NewTar(pkg.NewDecompress( {"bad type", pkg.NewTar(&tarDirType), nil, nil, pkg.WNew, errors.New(
&tarDirType,
pkg.Gzip,
)), nil, nil, pkg.WNew, errors.New(
"input directory does not contain a single regular file", "input directory does not contain a single regular file",
)}, )},
+1 -1
View File
@@ -55,7 +55,7 @@ func TestDispatch(t *testing.T) {
}), }),
}, },
}, true, []string{`{"kind":"fatal","message":"rejecting coldboot loop","error":"unique error 51966 injected by the test suite"} }, true, []string{`{"kind":"fatal","message":"rejecting coldboot loop","error":"unique error 51966 injected by the test suite"}
`, `{"kind":"inconsistent","message":"processed inconsistent uevent","error":{"fault":1,"event":{"action":"add","devpath":"\u0000","env":{"V":"\ufffd"},"seqnum":2,"subsystem":""},"object":{"state":1,"devpath":"\u0000","subsystem":"","env":{"V":"\ufffd"}}}} `, `{"kind":"inconsistent","message":"processed inconsistent uevent","error":{"fault":1,"event":{"action":"add","devpath":"\u0000","env":{"V":"` + "\ufffd" + `"},"seqnum":2,"subsystem":""},"object":{"state":1,"devpath":"\u0000","subsystem":"","env":{"V":"` + "\ufffd" + `"}}}}
`}, `dispatch: rejecting coldboot loop: unique error 51966 injected by the test suite `}, `dispatch: rejecting coldboot loop: unique error 51966 injected by the test suite
dispatch: processed inconsistent uevent: duplicate add event on devpath "\x00" dispatch: processed inconsistent uevent: duplicate add event on devpath "\x00"
`, nil}, `, nil},
+6 -86
View File
@@ -6,7 +6,6 @@ import (
"errors" "errors"
"io" "io"
"strconv" "strconv"
"strings"
"text/scanner" "text/scanner"
) )
@@ -303,7 +302,6 @@ func (ScanError) Error() string {
// Parse parses expressions from r. // Parse parses expressions from r.
func Parse(r io.Reader) (e []any, err error) { func Parse(r io.Reader) (e []any, err error) {
r = insertDelimiters(r)
var p parser var p parser
p.s.Init(r) p.s.Init(r)
@@ -313,7 +311,12 @@ func Parse(r io.Reader) (e []any, err error) {
scanner.ScanRawStrings | scanner.ScanRawStrings |
scanner.ScanComments | scanner.ScanComments |
scanner.SkipComments scanner.SkipComments
p.s.IsIdentRune = isIdentRune p.s.IsIdentRune = func(ch rune, i int) bool {
if i == 0 && ch >= '0' && ch <= '9' {
return false
}
return ch > 0 && ch < rune(len(idents)) && idents[ch]
}
defer func() { defer func() {
v := recover() v := recover()
@@ -343,86 +346,3 @@ func Parse(r io.Reader) (e []any, err error) {
} }
return return
} }
func isIdentRune(ch rune, i int) bool {
if i == 0 && ch >= '0' && ch <= '9' {
return false
}
return ch > 0 && ch < rune(len(idents)) && idents[ch]
}
func insertDelimiters(r io.Reader) io.Reader {
var s scanner.Scanner
s.Init(r)
s.Mode = scanner.ScanIdents |
scanner.ScanInts |
scanner.ScanStrings |
scanner.ScanRawStrings |
scanner.ScanComments |
scanner.SkipComments
s.Whitespace = 0
s.IsIdentRune = isIdentRune
var b strings.Builder
nldelim := false
delim := new(runeStack)
for tok := s.Scan(); tok != scanner.EOF; tok = s.Scan() {
switch tok {
case '{', '[':
nldelim = false
if tok == '{' {
delim.Push(';')
} else {
delim.Push(',')
}
b.WriteRune(tok)
case scanner.String, scanner.RawString, scanner.Int, scanner.Ident:
b.WriteString(s.TokenText())
nldelim = true
case '+', ':', '=', ',', ';':
nldelim = false
b.WriteRune(tok)
case '\n':
if nldelim {
b.WriteRune(delim.Peek())
nldelim = false
}
case '}', ']':
if nldelim {
b.WriteRune(delim.Peek())
}
delim.Pop()
nldelim = true
b.WriteRune(tok)
default:
b.WriteRune(tok)
}
}
return strings.NewReader(b.String())
}
type runeStack struct {
arr []rune
}
func (s *runeStack) Push(r rune) {
s.arr = append(s.arr, r)
}
func (s *runeStack) Peek() rune {
if s.Length() > 0 {
return s.arr[s.Length()-1]
}
return '\n'
}
func (s *runeStack) Pop() rune {
v := s.Peek()
if s.Length() > 1 {
s.arr = s.arr[:s.Length()-1]
} else {
s.arr = make([]rune, 0)
}
return v
}
func (s *runeStack) Length() int {
return len(s.arr)
}
+5 -191
View File
@@ -11,10 +11,7 @@ import (
) )
//go:embed testdata/gcc.az //go:embed testdata/gcc.az
var gccSample string var sample string
//go:embed testdata/mesa.az
var mesaSample string
func TestParse(t *testing.T) { func TestParse(t *testing.T) {
t.Parallel() t.Parallel()
@@ -64,57 +61,8 @@ func TestParse(t *testing.T) {
{"missing array delimiter", `[ v0 v1 ]`, nil, TokenError{',', scanner.Ident}}, {"missing array delimiter", `[ v0 v1 ]`, nil, TokenError{',', scanner.Ident}},
{"truncated array", `[ "\x00"`, nil, {"truncated array", `[ "\x00"`, nil,
ExprError(scanner.EOF)}, ExprError(scanner.EOF)},
{"array of func", "[\nf {\n v = v\n v2 =\n v2\n }\n g {\n w = w\n w2 = w2\n}\n]\n", []any{Array{
Val{Func{ {"gcc", sample, []any{Func{
Ident: Ident("f"),
Args: []Arg{
{K: []Ident{Ident("v")}, V: Val{Ident("v")}},
{K: []Ident{Ident("v2")}, V: Val{Ident("v2")}},
},
}},
Val{Func{
Ident: Ident("g"),
Args: []Arg{
{K: []Ident{Ident("w")}, V: Val{Ident("w")}},
{K: []Ident{Ident("w2")}, V: Val{Ident("w2")}},
},
}},
}}, nil},
{"mixed semicolons and newlines", `
f {
a = 4;
b = 2
c = [
a,
b
c
d, e
]
d = {
"a": b;
"c": d
}; e = 2
}`,
[]any{Func{
Ident: Ident("f"),
Args: []Arg{
{K: []Ident{Ident("a")}, V: Val{Int(4)}},
{K: []Ident{Ident("b")}, V: Val{Int(2)}},
{K: []Ident{Ident("c")}, V: Val{Array{
Val{Ident("a")},
Val{Ident("b")},
Val{Ident("c")},
Val{Ident("d")},
Val{Ident("e")},
}}},
{K: []Ident{Ident("d")}, V: Val{[]KV{
{K: String("a"), V: Val{Ident("b")}},
{K: String("c"), V: Val{Ident("d")}},
}}},
{K: []Ident{Ident("e")}, V: Val{Int(2)}},
},
}}, nil},
{"gcc", gccSample, []any{Func{
Ident: Ident("gcc"), Ident: Ident("gcc"),
Package: true, Package: true,
@@ -191,140 +139,6 @@ f {
}}}, }}},
}, },
}}, nil}, }}, nil},
{"mesa", mesaSample, []any{Func{
Ident: Ident("mesa"),
Package: true,
Args: []Arg{
{K: []Ident{Ident("description")}, V: Val{String("open source implementations of OpenGL, OpenGL ES, Vulkan, OpenCL, and more")}},
{K: []Ident{Ident("website")}, V: Val{String("https://mesa3d.org")}},
{K: []Ident{Ident("anitya")}, V: Val{Int(1970)}},
{K: []Ident{Ident("latest")}, V: Val{Ident("anityaFallback")}},
{K: []Ident{Ident("version")}, V: Val{String("26.2.0")}, R: true},
{K: []Ident{Ident("source")}, V: Val{Func{
Ident: Ident("remoteGitLab"),
Args: []Arg{
{K: []Ident{Ident("domain")}, V: Val{String("gitlab.freedesktop.org")}},
{K: []Ident{Ident("suffix")}, V: Val{String("mesa/mesa")}},
{K: []Ident{Ident("ref")}, V: Val{String("mesa-"), Ident("version")}},
{K: []Ident{Ident("checksum")}, V: Val{String("UPnIdpo5wUsE938GXY-YyYDzfF62enRoEzCYRyLLPvzBhBbP4wZ8nDiKsjivcs5v")}},
},
}}},
{K: []Ident{Ident("exec")}, V: Val{Func{Ident: Ident("meson"), Args: []Arg{
{K: []Ident{Ident("setup")}, V: Val{[]KV{
{K: String("platforms"), V: Val{String("x11,wayland")}},
{K: String("video-codecs"), V: Val{String("all")}},
{K: String("glvnd"), V: Val{String("enabled")}},
{K: String("gbm"), V: Val{String("enabled")}},
{K: String("egl"), V: Val{String("enabled")}},
{K: String("gallium-drivers"), V: Val{Func{
Ident: Ident("join"),
Args: []Arg{
{K: []Ident{Ident("elems")}, V: Val{Array{
Val{String("asahi")},
Val{String("crocus")},
Val{String("etnaviv")},
Val{String("freedreno")},
Val{String("i915")},
Val{String("iris")},
Val{String("lima")},
Val{String("llvmpipe")},
Val{String("nouveau")},
Val{String("panfrost")},
Val{String("r300")},
Val{String("r600")},
Val{String("radeonsi")},
Val{String("softpipe")},
Val{String("svga")},
Val{String("tegra")},
Val{String("v3d")},
Val{String("vc4")},
Val{String("virgl")},
Val{String("zink")}}}},
{K: []Ident{Ident("sep")}, V: Val{String(",")}},
},
}}},
{K: String("vulkan-drivers"), V: Val{Func{
Ident: Ident("join"),
Args: []Arg{
{K: []Ident{Ident("elems")}, V: Val{Array{
Val{String("amd")},
Val{String("broadcom")},
Val{String("freedreno")},
Val{String("intel")},
Val{String("intel_hasvk")},
Val{String("panfrost")},
Val{String("swrast")},
Val{String("virtio")},
Val{String("imagination")},
Val{String("asahi")},
Val{String("gfxstream")},
}}},
{K: []Ident{Ident("sep")}, V: Val{String(",")}}},
}}},
{K: String("vulkan-layers"), V: Val{Func{
Ident: Ident("join"),
Args: []Arg{
{K: []Ident{Ident("elems")}, V: Val{Array{
Val{String("device-select")},
Val{String("intel-nullhw")},
Val{String("overlay")},
Val{String("screenshot")},
Val{String("anti-lag")},
Val{String("vram-report-limit")},
}}},
{K: []Ident{Ident("sep")}, V: Val{String(",")}}},
}}},
{K: String("freedreno-kmds"), V: Val{String("msm,virtio")}},
{K: String("amdgpu-virtio"), V: Val{String("true")}}},
}},
}}}},
{K: []Ident{Ident("inputs")}, V: Val{Array{
Val{Ident("m4")},
Val{Ident("python-packaging")},
Val{Ident("python-mako")},
Val{Ident("python-pyyaml")},
Val{Ident("python-pycparser")},
Val{Ident("glslang")},
Val{Ident("spirv-llvm-translator")},
Val{Ident("zlib")},
Val{Ident("zstd")},
Val{Ident("gzip")},
Val{Ident("ncurses")},
Val{Ident("libglvnd")},
Val{Ident("libexpat")},
Val{Ident("libva")},
Val{Ident("libdrm")},
Val{Ident("elfutils")},
Val{Ident("bison")},
Val{Ident("flex")},
Val{Ident("lm_sensors")},
Val{Ident("libconfig")},
Val{Ident("libdisplay-info")},
Val{Ident("wayland")},
Val{Ident("wayland-protocols")},
Val{Ident("libxshmfence")},
Val{Ident("libXxf86vm")},
Val{Ident("libXrandr")},
Val{Ident("libxcb-keysyms")},
Val{Ident("libpng")},
Val{Ident("libarchive")},
Val{Ident("kernel-headers")},
}}},
{K: []Ident{Ident("runtime")}, V: Val{Array{
Val{Ident("llvm")},
Val{Ident("libdrm")},
Val{Ident("elfutils")},
Val{Ident("lm_sensors")},
Val{Ident("libdisplay-info")},
Val{Ident("wayland")},
Val{Ident("libxshmfence")},
Val{Ident("libXxf86vm")},
Val{Ident("libXrandr")},
Val{Ident("libxcb-keysyms")},
Val{Ident("libpng")}}}},
},
}}, nil},
} }
for _, tc := range testCases { for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
@@ -342,14 +156,14 @@ f {
} }
func BenchmarkParse(b *testing.B) { func BenchmarkParse(b *testing.B) {
r := strings.NewReader(gccSample) r := strings.NewReader(sample)
for b.Loop() { for b.Loop() {
if _, err := Parse(r); err != nil { if _, err := Parse(r); err != nil {
b.Fatal(err) b.Fatal(err)
} }
b.StopTimer() b.StopTimer()
r.Reset(gccSample) r.Reset(sample)
b.StartTimer() b.StartTimer()
} }
} }
+2 -2
View File
@@ -294,7 +294,7 @@ func TestEvaluateGCC(t *testing.T) {
t.Parallel() t.Parallel()
var gcc Func var gcc Func
if e, err := Parse(strings.NewReader(gccSample)); err != nil { if e, err := Parse(strings.NewReader(sample)); err != nil {
t.Fatal(err) t.Fatal(err)
} else { } else {
gcc = e[0].(Func) gcc = e[0].(Func)
@@ -421,7 +421,7 @@ func TestEvaluateGCC(t *testing.T) {
func BenchmarkEvaluate(b *testing.B) { func BenchmarkEvaluate(b *testing.B) {
var gcc Func var gcc Func
if e, err := Parse(strings.NewReader(gccSample)); err != nil { if e, err := Parse(strings.NewReader(sample)); err != nil {
b.Fatal(err) b.Fatal(err)
} else { } else {
gcc = e[0].(Func) gcc = e[0].(Func)
+35 -35
View File
@@ -1,19 +1,19 @@
package gcc { package gcc {
description = "The GNU Compiler Collection" description = "The GNU Compiler Collection";
website = "https://www.gnu.org/software/gcc" website = "https://www.gnu.org/software/gcc";
anitya = 6502 anitya = 6502;
version# = "16.1.0" version# = "16.1.0";
source = remoteTar { source = remoteTar {
url = "https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/"+ url = "https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/"+
"gcc-"+version+"/gcc-"+version+".tar.gz" "gcc-"+version+"/gcc-"+version+".tar.gz";
checksum = "4ASoWbxaA2FW7PAB0zzHDPC5XnNhyaAyjtDPpGzceSLeYnEIXsNYZR3PA_Zu5P0K" checksum = "4ASoWbxaA2FW7PAB0zzHDPC5XnNhyaAyjtDPpGzceSLeYnEIXsNYZR3PA_Zu5P0K";
compress = gzip compress = gzip;
} };
patches = [ patches = [
"musl-off64_t-loff_t.patch" "musl-off64_t-loff_t.patch",
"musl-legacy-lfs.patch" "musl-legacy-lfs.patch",
] ];
// GCC spends most of its time in its many configure scripts, however // GCC spends most of its time in its many configure scripts, however
// it also saturates the CPU for a consequential amount of time. // it also saturates the CPU for a consequential amount of time.
@@ -21,37 +21,37 @@ package gcc {
exec = make { exec = make {
configure = { configure = {
"disable-multilib" "disable-multilib";
"enable-default-pie" "enable-default-pie";
"disable-nls" "disable-nls";
"with-gnu-as" "with-gnu-as";
"with-gnu-ld" "with-gnu-ld";
"with-system-zlib" "with-system-zlib";
"enable-languages": "c,c++,go" "enable-languages": "c,c++,go";
"with-native-system-header-dir": "/system/include" "with-native-system-header-dir": "/system/include";
"with-multilib-list": arch { "with-multilib-list": arch {
amd64, arm64 = "''" amd64, arm64 = "''";
default = unset default = unset;
} };
} };
make = [ make = [
"BOOT_CFLAGS='-O2 -g'" "BOOT_CFLAGS='-O2 -g'",
noop { key = value } + "\x00" noop { key = value; } + "\x00",
"bootstrap" "bootstrap",
] ];
// This toolchain is hacked to pieces, it is not expected to ever work // This toolchain is hacked to pieces, it is not expected to ever work
// well in its current state. That does not matter as long as the // well in its current state. That does not matter as long as the
// toolchain it produces passes its own test suite. // toolchain it produces passes its own test suite.
skip-check = true skip-check = true;
} };
inputs = [ inputs = [
binutils binutils,
mpc mpc,
zlib zlib,
libucontext libucontext,
kernel-headers kernel-headers,
] ];
} }
-139
View File
@@ -1,139 +0,0 @@
package mesa {
description = "open source implementations of OpenGL, OpenGL ES, Vulkan, OpenCL, and more"
website = "https://mesa3d.org"
anitya = 1970
latest = anityaFallback
version# = "26.2.0"
source = remoteGitLab {
domain = "gitlab.freedesktop.org"
suffix = "mesa/mesa"
ref = "mesa-"+version
checksum = "UPnIdpo5wUsE938GXY-YyYDzfF62enRoEzCYRyLLPvzBhBbP4wZ8nDiKsjivcs5v"
}
exec = meson {
setup = {
"platforms": "x11,wayland"
"video-codecs": "all"
"glvnd": "enabled"
"gbm": "enabled"
"egl": "enabled"
"gallium-drivers": join {
elems = [
"asahi" // Apple AGX
"crocus" // Intel legacy
"etnaviv" // Vivante GPU designs (mostly NXP/Marvell SoCs)
"freedreno" // Qualcomm Adreno (all Qualcomm SoCs)
"i915" // Intel extra legacy
"iris" // new Intel (Broadwell+)
"lima" // ARM Mali 4xx
"llvmpipe" // software renderer
"nouveau" // Nvidia
"panfrost" // ARM Mali Midgard and up (T/G series)
"r300" // very old AMD
"r600" // less old AMD
"radeonsi" // new AMD (GCN+)
"softpipe" // older software renderer
"svga" // VMWare virtualized GPU
"tegra" // Nvidia Tegra SoCs
"v3d" // Broadcom VC5 (Raspberry Pi 4)
"vc4" // Broadcom VC4 (Raspberry Pi 0-3)
"virgl" // QEMU virtualized GPU (aka VirGL)
"zink" // generic OpenGL over Vulkan, experimental
// d3d12: WSL emulated GPU (aka Dozen)
// ethosu: accelerator
// rocket: accelerator
]
sep = ","
}
"vulkan-drivers": join {
elems = [
"amd" // AMD (aka RADV)
"broadcom" // Broadcom VC5 (Raspberry Pi 4, aka V3D)
"freedreno" // Qualcomm Adreno (all Qualcomm SoCs)
"intel" // new Intel (aka ANV)
"intel_hasvk" // Intel Haswell/Broadwell, "legacy" Vulkan driver (https://www.phoronix.com/news/Intel-HasVK-Drop-Dead-Code)
"panfrost" // ARM Mali Midgard and up (T/G series)
"swrast" // software renderer (aka Lavapipe)
"virtio" // QEMU virtualized GPU (aka VirGL)
"imagination" // PowerVR Rogue
"asahi" // Apple AGX
"gfxstream" // Android virtualized GPU
// nouveau: Nouveau (aka NVK), requires rust
// microsoft-experimental: WSL virtualized GPU (aka DZN/Dozen)
// kosmickrisp: macOS-specific
]
sep = ","
}
"vulkan-layers": join {
elems = [
"device-select"
"intel-nullhw"
"overlay"
"screenshot"
"anti-lag"
"vram-report-limit"
]
sep = ","
}
"freedreno-kmds": "msm,virtio"
"amdgpu-virtio": "true"
}
}
inputs = [
m4
python-packaging
python-mako
python-pyyaml
python-pycparser
glslang
spirv-llvm-translator
zlib
zstd
gzip
ncurses
libglvnd
libexpat
libva
libdrm
elfutils
bison
flex
lm_sensors
libconfig
libdisplay-info
wayland
wayland-protocols
libxshmfence
libXxf86vm
libXrandr
libxcb-keysyms
libpng
libarchive
kernel-headers
]
runtime = [
llvm
libdrm
elfutils
lm_sensors
libdisplay-info
wayland
libxshmfence
libXxf86vm
libXrandr
libxcb-keysyms
libpng
]
}
+2 -2
View File
@@ -56,8 +56,8 @@ ln -s \
func init() { func init() {
const ( const (
version = "1.25.12" version = "1.25.14"
checksum = "XNrGD_boJl2-El_a_T3BuTcMin_WPoU-FGddcNG8dcXA8n2QuxZB7kaUaCWu60QX" checksum = "QKYjKzziCmD1eboU__Oi8VjqbPjaHrHAI9ceWyF3D9ORm7cPHN8muZuiGsoLKjCJ"
) )
meta := Metadata{ meta := Metadata{
Name: "go-bootstrap", Name: "go-bootstrap",
+1
View File
@@ -62,6 +62,7 @@ disable_test t4200-rerere
disable_test t5515-fetch-merge-logic disable_test t5515-fetch-merge-logic
disable_test t4124-apply-ws-rule disable_test t4124-apply-ws-rule
disable_test t3404-rebase-interactive disable_test t3404-rebase-interactive
disable_test t7527-builtin-fsmonitor
`; `;
check = [ check = [
@@ -3,18 +3,13 @@ package go {
website = "https://go.dev"; website = "https://go.dev";
anitya = 1227; anitya = 1227;
version# = "1.26.6"; version# = "1.27.0";
source = remoteTar { source = remoteTar {
url = "https://go.dev/dl/go"+version+".src.tar.gz"; url = "https://go.dev/dl/go"+version+".src.tar.gz";
checksum = "BJQz9rGJ7ElMsZGURH7lw48Hw0x88RwdQJpINMomtgGCMK3AtwGCxDRkLE9REh5r"; checksum = "Ookl2vP6KMfJuxaxX6nXZ1gnL43wZPl5GjpVsrI7IJiB4b3xr1PbnbYIOJ8v5jzG";
compress = gzip; compress = gzip;
}; };
patches = [
// https://go.dev/issue/77674
"746640.patch",
];
env = [ env = [
"CC=cc", "CC=cc",
"GOCACHE=/tmp/gocache", "GOCACHE=/tmp/gocache",
-29
View File
@@ -1,29 +0,0 @@
From 45929774c3d5c084cc478afba63c77cf67a68bd7 Mon Sep 17 00:00:00 2001
From: khr@golang.org <khr@golang.org>
Date: Wed, 18 Feb 2026 09:09:57 -0800
Subject: [PATCH] internal/runtime/gc/scan: require popcnt for x86
The GOAMD64=v1 test disables popcnt instructions, which is a feature
this package's amd64 assembly uses.
Fixes #77674
Change-Id: I7be9bb665838f5da50275f96ef3df398412bb44a
Reviewed-on: https://go-review.googlesource.com/c/go/+/746640
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Keith Randall <khr@google.com>
Auto-Submit: Keith Randall <khr@golang.org>
---
diff --git a/src/internal/runtime/gc/scan/scan_amd64.go b/src/internal/runtime/gc/scan/scan_amd64.go
index c03021c7d4..544b237770 100644
--- a/src/internal/runtime/gc/scan/scan_amd64.go
+++ b/src/internal/runtime/gc/scan/scan_amd64.go
@@ -39,4 +39,5 @@ var avx512ScanPackedReqsMet = cpu.X86.HasAVX512VL &&
cpu.X86.HasGFNI &&
cpu.X86.HasAVX512BITALG &&
cpu.X86.HasAVX512DQ && // for kmovb, see #79871
- cpu.X86.HasAVX512VBMI
+ cpu.X86.HasAVX512VBMI &&
+ cpu.X86.HasPOPCNT
+1 -1
View File
@@ -1,6 +1,6 @@
# #
# Automatically generated file; DO NOT EDIT. # Automatically generated file; DO NOT EDIT.
# Linux/x86 6.18.44 Kernel Configuration # Linux/x86 6.18.45 Kernel Configuration
# #
CONFIG_CC_VERSION_TEXT="clang version 22.1.8" CONFIG_CC_VERSION_TEXT="clang version 22.1.8"
CONFIG_GCC_VERSION=0 CONFIG_GCC_VERSION=0
+1 -1
View File
@@ -1,6 +1,6 @@
# #
# Automatically generated file; DO NOT EDIT. # Automatically generated file; DO NOT EDIT.
# Linux/arm64 6.18.44 Kernel Configuration # Linux/arm64 6.18.45 Kernel Configuration
# #
CONFIG_CC_VERSION_TEXT="clang version 22.1.8" CONFIG_CC_VERSION_TEXT="clang version 22.1.8"
CONFIG_GCC_VERSION=0 CONFIG_GCC_VERSION=0
+2 -2
View File
@@ -3,11 +3,11 @@ package kernel-source {
website = "https://kernel.org"; website = "https://kernel.org";
exclude = true; exclude = true;
version# = "6.18.44"; version# = "6.18.45";
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 = "yNPGMl3A-EgU6LgD37PAcXIa9iUtP-AmoJuQozfGRSq6Eg1Eq4fdbpKy3iWewU9_"; checksum = "yI15OXBcDSWVnozq7ilLiiKMbn2xGIuZWa73luYAjcHK12e8R9n_n_am43hnhNAZ";
compress = gzip; compress = gzip;
}; };
} }
+1 -1
View File
@@ -1,6 +1,6 @@
# #
# Automatically generated file; DO NOT EDIT. # Automatically generated file; DO NOT EDIT.
# Linux/riscv 6.18.44 Kernel Configuration # Linux/riscv 6.18.45 Kernel Configuration
# #
CONFIG_CC_VERSION_TEXT="clang version 22.1.8" CONFIG_CC_VERSION_TEXT="clang version 22.1.8"
CONFIG_GCC_VERSION=0 CONFIG_GCC_VERSION=0
+2 -2
View File
@@ -3,12 +3,12 @@ package libevdev {
website = "https://www.freedesktop.org/software/libevdev"; website = "https://www.freedesktop.org/software/libevdev";
anitya = 20540; anitya = 20540;
version# = "1.13.6"; version# = "1.13.7";
source = remoteGitLab { source = remoteGitLab {
domain = "gitlab.freedesktop.org"; domain = "gitlab.freedesktop.org";
suffix = "libevdev/libevdev"; suffix = "libevdev/libevdev";
ref = "libevdev-"+version; ref = "libevdev-"+version;
checksum = "HJbLafbpqPaKvQitt0t484DiHPeg3t_CNv-45MluNUT66vYIdF7FSfrK0vSpUCdi"; checksum = "zmN9kkbYkrwr1YdzeMxlZIuiMkRQ9-mZ9DTcBufMckYWUq2IutSt9ZtRE4Agl75D";
}; };
exec = meson { exec = meson {
+2 -2
View File
@@ -3,12 +3,12 @@ package libpsl {
website = "https://rockdaboot.github.io/libpsl"; website = "https://rockdaboot.github.io/libpsl";
anitya = 7305; anitya = 7305;
version# = "0.23.2"; version# = "0.23.3";
source = remoteGitHubRelease { source = remoteGitHubRelease {
suffix = "rockdaboot/libpsl"; suffix = "rockdaboot/libpsl";
tag = version; tag = version;
name = "libpsl-"+version+".tar.gz"; name = "libpsl-"+version+".tar.gz";
checksum = "-XIKaQK0QoyzXpwezyvGzDdIBCUTqPyd8jU6axIusrnma-qsYxhLUO1Oycwcelr2"; checksum = "DlEm2FHGDe3KaZxWxTgApEVIvxN5nTVs5-XsfomnO9a0EfsS46l7hZZPKGCS2uIf";
compress = gzip; compress = gzip;
}; };
+2 -2
View File
@@ -4,12 +4,12 @@ package mesa {
anitya = 1970; anitya = 1970;
latest = anityaFallback; latest = anityaFallback;
version# = "26.2.0"; version# = "26.2.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 = "UPnIdpo5wUsE938GXY-YyYDzfF62enRoEzCYRyLLPvzBhBbP4wZ8nDiKsjivcs5v"; checksum = "WZYAysQFZt8KMFAxQheKFZHarR1isgOeSw4LyfqAcmaHwXMCLiVao6eGuEuhJTJv";
}; };
exec = meson { exec = meson {
+2 -2
View File
@@ -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.126.1"; version# = "3.127";
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 = "3J7o7P3KlE8Cen4fzHLwvDKA1rrcJ84yBTniJHcIBw59LPT-7Q0NxL2CC4BKGW3F"; checksum = "lzeKROXahSWqIgxYtm29lTxIfo-nmNYaS-cE-FFKp1C58wIBhmGhwVsRh-4xiQi7";
}; };
extra = [ nspr ]; extra = [ nspr ];
+5 -4
View File
@@ -197,11 +197,11 @@ package python-vcs-versioning {
website = "https://setuptools-scm.readthedocs.io/en/latest"; website = "https://setuptools-scm.readthedocs.io/en/latest";
anitya = 389421; anitya = 389421;
version# = "2.2.4"; version# = "2.3.1";
source = remoteGitHub { source = remoteGitHub {
suffix = "pypa/setuptools-scm"; suffix = "pypa/setuptools-scm";
tag = "vcs-versioning-v"+version; tag = "vcs-versioning-v"+version;
checksum = "HJ63LCMRd-KkXI1dWwBzK1AwkmjNZGISbhaJ7TbAlbI2eC55aX6i640n3Rt4RUMY"; checksum = "rcbu8LlWlY6jmhC95pfnEKgGQuRxHY8_Pvo2jjmlJWSlyHSs1tFIRQ_FoMfi8YXo";
}; };
env = [ env = [
@@ -449,11 +449,11 @@ package python-pygments {
website = "https://pygments.org"; website = "https://pygments.org";
anitya = 3986; anitya = 3986;
version# = "2.20.0"; version# = "2.21.0";
source = remoteGitHub { source = remoteGitHub {
suffix = "pygments/pygments"; suffix = "pygments/pygments";
tag = version; tag = version;
checksum = "L-2P6vn7c_CNZYliE5CJAWLxO1ziDQVVkf8bnZbHj8aSCQ43oWv11wC9KzU9MeCa"; checksum = "a9lSiHKLk_wA_rhaSaegYFhslE7L8GdqtIsbU3nbAk9A0xxkw0KvZOSNle4FZENu";
}; };
exec = pip { exec = pip {
@@ -568,6 +568,7 @@ package python-mako {
checksum = "OYVVx9PxvZLSvA1C-lX-xElq5TvThYRElzDDKUHYU1tZMM7XlCtHSMGmdgqlbYxd"; checksum = "OYVVx9PxvZLSvA1C-lX-xElq5TvThYRElzDDKUHYU1tZMM7XlCtHSMGmdgqlbYxd";
}; };
early = "rm test/test_exceptions.py";
exec = pip {}; exec = pip {};
inputs = [ inputs = [
+2 -2
View File
@@ -3,11 +3,11 @@ package strace {
website = "https://strace.io"; website = "https://strace.io";
anitya = 4897; anitya = 4897;
version# = "7.1"; version# = "7.2";
source = remoteGit { source = remoteGit {
url = "https://github.com/strace/strace.git"; url = "https://github.com/strace/strace.git";
tag = "v"+version; tag = "v"+version;
checksum = "vGwgAAi_mGsoICDYHK9Vhbn2hBR0JIoUEkCKhLA2JHFg8NFvGsYEWGIafdnsN0_v"; checksum = "_vIfkx9C8Q-F4Q1WE1jBMPFeDv3f2h-L1BTCokKqw3G993H2i5NYtBArIDo2Sx_O";
}; };
patches = [ patches = [
"tests-musl.patch", "tests-musl.patch",
+2 -5
View File
@@ -3,11 +3,11 @@ package tamago {
website = "https://github.com/usbarmory/tamago-go"; website = "https://github.com/usbarmory/tamago-go";
anitya = 388872; anitya = 388872;
version# = "1.26.5"; version# = "1.27.0";
source = remoteGitHub { source = remoteGitHub {
suffix = "usbarmory/tamago-go"; suffix = "usbarmory/tamago-go";
tag = "tamago-go"+version; tag = "tamago-go"+version;
checksum = "QESl24dveM1jniFx_PkPGbxQe7daHcnMlMQXC1MXz6EEmxSeYyrI-tMLi0NEu8QE"; checksum = "PV8a5fccqZifVUG7HJ6jTFk_0x6YIu1BSgYByCdJoTllm4NuQc9-Ngk_nuS7Nb3i";
}; };
env = [ env = [
@@ -29,9 +29,6 @@ chmod -R +w ..
sed -i \ sed -i \
's,/lib/ld-musl-` + linuxArch + `.so.1,/system/bin/linker,' \ 's,/lib/ld-musl-` + linuxArch + `.so.1,/system/bin/linker,' \
cmd/link/internal/` + arch + `/obj.go cmd/link/internal/` + arch + `/obj.go
sed -i \
's/cpu.X86.HasAVX512VBMI/& \&\& cpu.X86.HasPOPCNT/' \
internal/runtime/gc/scan/scan_amd64.go
rm \ rm \
os/root_unix_test.go \ os/root_unix_test.go \
+4 -4
View File
@@ -695,12 +695,12 @@ package xserver {
website = "https://gitlab.freedesktop.org/xorg/xserver"; website = "https://gitlab.freedesktop.org/xorg/xserver";
anitya = 5250; anitya = 5250;
version# = "21.1.24"; version# = "26.0.99.901";
source = remoteGitLab { source = remoteGitLab {
domain = "gitlab.freedesktop.org"; domain = "gitlab.freedesktop.org";
suffix = "xorg/xserver"; suffix = "xorg/xserver";
ref = "xorg-server-"+version; ref = "xorg-server-"+version;
checksum = "ueBiwKIOHZkSmJPzxAeze_SJHt4QxEHQTk1kMkic-GYxC7Fs41ckwgVzcwr2N3ca"; checksum = "2Liwqj-tu_NuD8BuWZR0PyYVJ_A0nj_sgx-LZWtdVpKAKQHtN-dSWCl-IPVOlcHG";
}; };
exec = meson { exec = meson {
@@ -773,12 +773,12 @@ package xwayland {
website = "https://gitlab.freedesktop.org/xorg/xserver"; website = "https://gitlab.freedesktop.org/xorg/xserver";
anitya = 180949; anitya = 180949;
version# = "24.1.13"; version# = "26.0.99.901";
source = remoteGitLab { source = remoteGitLab {
domain = "gitlab.freedesktop.org"; domain = "gitlab.freedesktop.org";
suffix = "xorg/xserver"; suffix = "xorg/xserver";
ref = "xwayland-"+version; ref = "xwayland-"+version;
checksum = "dZpEGlcPJ72TBCtnR1mvquvN4iUypGvGJ4tN9hpa-ljux28EkSCQRlQHLPRijz36"; checksum = "Vgtnwme2HU3CCeLE_xNScV_uJ55kPMremaOyVWRUFaRpwpaOQxsNB2fde_9Rx5zm";
}; };
bin = [ "bash" ]; bin = [ "bash" ];
+6 -6
View File
@@ -7,11 +7,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1780361225, "lastModified": 1787146702,
"narHash": "sha256-wnV9ttf4fPWNonBIQmvlrSlNpQYgx5HgWWd007mwIFA=", "narHash": "sha256-YbRcLdU/yK4gWsQg7V8WTKZHfXL33g8+wSFUX3wyevs=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e28654b71096e08c019d4861ca26acb646f583d8", "rev": "173b7e8d40fdc8c296a9c99854314f17a3a1704c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -23,11 +23,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1780453794, "lastModified": 1787101114,
"narHash": "sha256-bXMRa9VTsHSPXL4Cw8R6JJLQeY3Y/IP4+YJCYVmQ7FY=", "narHash": "sha256-gwrPcFf/rDjHPaVflbDZ040ZDmBTRj/7+s8ZmE2SaIM=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "6b316287bae2ee04c9b93c8c858d930fd07d7338", "rev": "b18a4b905f8d028dc4476412e6d6891728695379",
"type": "github" "type": "github"
}, },
"original": { "original": {
+2 -2
View File
@@ -99,7 +99,7 @@
hakurei = pkgs.pkgsStatic.callPackage ./package.nix { hakurei = pkgs.pkgsStatic.callPackage ./package.nix {
inherit (pkgs) inherit (pkgs)
# passthru.buildInputs # passthru.buildInputs
go_1_26 go_1_27
clang clang
# nativeBuildInputs # nativeBuildInputs
@@ -180,7 +180,7 @@
let let
# this is used for interactive vm testing during development, where tests might be broken # this is used for interactive vm testing during development, where tests might be broken
package = self.packages.${pkgs.stdenv.hostPlatform.system}.hakurei.override { package = self.packages.${pkgs.stdenv.hostPlatform.system}.hakurei.override {
buildGo126Module = previousArgs: pkgs.pkgsStatic.buildGo126Module (previousArgs // { doCheck = false; }); buildGo127Module = previousArgs: pkgs.pkgsStatic.buildGo127Module (previousArgs // { doCheck = false; });
}; };
in in
{ {
+6 -6
View File
@@ -1,7 +1,7 @@
{ {
lib, lib,
stdenv, stdenv,
buildGo126Module, buildGo127Module,
makeBinaryWrapper, makeBinaryWrapper,
xdg-dbus-proxy, xdg-dbus-proxy,
pkg-config, pkg-config,
@@ -20,7 +20,7 @@
fuse3, fuse3,
# for passthru.buildInputs # for passthru.buildInputs
go_1_26, go_1_27,
clang, clang,
xorgproto, xorgproto,
@@ -32,7 +32,7 @@
withStatic ? stdenv.hostPlatform.isStatic, withStatic ? stdenv.hostPlatform.isStatic,
}: }:
buildGo126Module rec { buildGo127Module rec {
pname = "hakurei"; pname = "hakurei";
version = with lib.strings; removePrefix "v" (trim (builtins.readFile ../cmd/dist/VERSION)); version = with lib.strings; removePrefix "v" (trim (builtins.readFile ../cmd/dist/VERSION));
@@ -55,7 +55,7 @@ buildGo126Module rec {
]; ];
nativeBuildInputs = [ nativeBuildInputs = [
go_1_26 go_1_27
pkg-config pkg-config
wayland-scanner wayland-scanner
]; ];
@@ -126,10 +126,10 @@ buildGo126Module rec {
''; '';
passthru = { passthru = {
go = go_1_26; go = go_1_27;
targetPkgs = [ targetPkgs = [
go_1_26 go_1_27
clang clang
xorgproto xorgproto
util-linux util-linux
+2
View File
@@ -46,8 +46,10 @@ def wait_for_window(pattern):
def collect_state_ui(name): def collect_state_ui(name):
swaymsg(f"exec hakurei ps > '/tmp/{name}.ps'") swaymsg(f"exec hakurei ps > '/tmp/{name}.ps'")
machine.wait_for_file(f"/tmp/{name}.ps")
machine.copy_from_vm(f"/tmp/{name}.ps", "") machine.copy_from_vm(f"/tmp/{name}.ps", "")
swaymsg(f"exec hakurei --json ps > '/tmp/{name}.json'") swaymsg(f"exec hakurei --json ps > '/tmp/{name}.json'")
machine.wait_for_file(f"/tmp/{name}.json")
machine.copy_from_vm(f"/tmp/{name}.json", "") machine.copy_from_vm(f"/tmp/{name}.json", "")
machine.screenshot(name) machine.screenshot(name)