forked from rosa/hakurei
Compare commits
34 Commits
b081629662
...
staging
| Author | SHA1 | Date | |
|---|---|---|---|
|
852f3a9b3d
|
|||
|
5e02dbdb0d
|
|||
|
6a3248d472
|
|||
|
67404c98d9
|
|||
|
b9bf69cfce
|
|||
|
4648f98272
|
|||
|
11d99439ac
|
|||
|
39e4c5b8ac
|
|||
|
e8f6db38b6
|
|||
|
20d5b71575
|
|||
|
e903e7f542
|
|||
|
1caa051f4d
|
|||
|
dcdc6f7f6d
|
|||
|
5ad6f26b46
|
|||
|
7ba75a79f4
|
|||
|
9ef84d3904
|
|||
|
3b7b6e51fb
|
|||
|
b1b4debb82
|
|||
|
021cbbc2a8
|
|||
|
a4a54a4a4d
|
|||
|
04a344aac6
|
|||
|
6b98156a3d
|
|||
|
753432cf09
|
|||
|
f8902e3679
|
|||
|
8ee53a5164
|
|||
|
3981d44757
|
|||
|
9fd67e47b4
|
|||
|
4dcec40156
|
|||
|
9a274c78a3
|
|||
|
5647c3a91f
|
|||
|
992139c75d
|
|||
|
57c69b533e
|
|||
|
6f0c2a80f2
|
|||
|
08dfefb28d
|
@@ -31,9 +31,6 @@ func (cache *cache) open() (err error) {
|
||||
return os.ErrInvalid
|
||||
}
|
||||
|
||||
if cache.base == "" {
|
||||
cache.base = "cache"
|
||||
}
|
||||
var base *check.Absolute
|
||||
if cache.base, err = filepath.Abs(cache.base); err != nil {
|
||||
return
|
||||
|
||||
@@ -99,10 +99,9 @@ func cancelIdent(
|
||||
var ident pkg.ID
|
||||
if _, err := io.ReadFull(conn, ident[:]); err != nil {
|
||||
return nil, false, errors.Join(err, conn.Close())
|
||||
} else if err = conn.Close(); err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
return &ident, cache.Cancel(unique.Make(ident)), nil
|
||||
ok := cache.Cancel(unique.Make(ident))
|
||||
return &ident, ok, conn.Close()
|
||||
}
|
||||
|
||||
// serve services connections from a [net.UnixListener].
|
||||
@@ -194,11 +193,11 @@ func serve(
|
||||
}
|
||||
|
||||
case specialAbort:
|
||||
log.Println("aborting all pending cures")
|
||||
cm.c.Abort()
|
||||
if _err := conn.Close(); _err != nil {
|
||||
log.Println(_err)
|
||||
}
|
||||
log.Println("aborting all pending cures")
|
||||
cm.c.Abort()
|
||||
}
|
||||
|
||||
return
|
||||
@@ -306,6 +305,7 @@ func cancelRemote(
|
||||
ctx context.Context,
|
||||
addr *net.UnixAddr,
|
||||
a pkg.Artifact,
|
||||
wait bool,
|
||||
) error {
|
||||
done, conn, err := dial(ctx, addr)
|
||||
if err != nil {
|
||||
@@ -324,13 +324,19 @@ func cancelRemote(
|
||||
} else if n != len(id) {
|
||||
return errors.Join(io.ErrShortWrite, conn.Close())
|
||||
}
|
||||
return conn.Close()
|
||||
if wait {
|
||||
if _, err = conn.Read(make([]byte, 1)); err == io.EOF {
|
||||
err = nil
|
||||
}
|
||||
}
|
||||
return errors.Join(err, conn.Close())
|
||||
}
|
||||
|
||||
// abortRemote aborts all [pkg.Artifact] curing on a daemon.
|
||||
func abortRemote(
|
||||
ctx context.Context,
|
||||
addr *net.UnixAddr,
|
||||
wait bool,
|
||||
) error {
|
||||
done, conn, err := dial(ctx, addr)
|
||||
if err != nil {
|
||||
@@ -339,5 +345,10 @@ func abortRemote(
|
||||
defer close(done)
|
||||
|
||||
err = writeSpecialHeader(conn, specialAbort)
|
||||
if wait && err == nil {
|
||||
if _, err = conn.Read(make([]byte, 1)); err == io.EOF {
|
||||
err = nil
|
||||
}
|
||||
}
|
||||
return errors.Join(err, conn.Close())
|
||||
}
|
||||
|
||||
@@ -106,11 +106,11 @@ func TestDaemon(t *testing.T) {
|
||||
}
|
||||
}()
|
||||
|
||||
if err = cancelRemote(ctx, &addr, pkg.NewFile("nonexistent", nil)); err != nil {
|
||||
if err = cancelRemote(ctx, &addr, pkg.NewFile("nonexistent", nil), true); err != nil {
|
||||
t.Fatalf("cancelRemote: error = %v", err)
|
||||
}
|
||||
|
||||
if err = abortRemote(ctx, &addr); err != nil {
|
||||
if err = abortRemote(ctx, &addr, true); err != nil {
|
||||
t.Fatalf("abortRemote: error = %v", err)
|
||||
}
|
||||
|
||||
|
||||
@@ -59,14 +59,7 @@ func main() {
|
||||
defer stop()
|
||||
|
||||
var cm cache
|
||||
defer func() {
|
||||
cm.Close()
|
||||
|
||||
if r := recover(); r != nil {
|
||||
fmt.Println(r)
|
||||
log.Fatal("consider scrubbing the on-disk cache")
|
||||
}
|
||||
}()
|
||||
defer func() { cm.Close() }()
|
||||
|
||||
var (
|
||||
flagQuiet bool
|
||||
@@ -77,11 +70,14 @@ func main() {
|
||||
msg.SwapVerbose(!flagQuiet)
|
||||
cm.ctx, cm.msg = ctx, msg
|
||||
cm.base = os.ExpandEnv(cm.base)
|
||||
if cm.base == "" {
|
||||
cm.base = "cache"
|
||||
}
|
||||
|
||||
addr.Net = "unix"
|
||||
addr.Name = os.ExpandEnv(addr.Name)
|
||||
if addr.Name == "" {
|
||||
addr.Name = "daemon"
|
||||
addr.Name = filepath.Join(cm.base, "daemon")
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -489,7 +485,7 @@ func main() {
|
||||
cc, cancel := context.WithDeadline(context.Background(), daemonDeadline())
|
||||
defer cancel()
|
||||
|
||||
if _err := cancelRemote(cc, &addr, a); _err != nil {
|
||||
if _err := cancelRemote(cc, &addr, a, false); _err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
}
|
||||
@@ -523,7 +519,7 @@ func main() {
|
||||
c.NewCommand(
|
||||
"abort",
|
||||
"Abort all pending cures on the daemon",
|
||||
func([]string) error { return abortRemote(ctx, &addr) },
|
||||
func([]string) error { return abortRemote(ctx, &addr, false) },
|
||||
)
|
||||
|
||||
{
|
||||
|
||||
@@ -129,20 +129,26 @@ const (
|
||||
PkgConfig
|
||||
Procps
|
||||
Python
|
||||
PythonFlitCore
|
||||
PythonHatchling
|
||||
PythonIniConfig
|
||||
PythonMako
|
||||
PythonMarkupSafe
|
||||
PythonPackaging
|
||||
PythonPathspec
|
||||
PythonPluggy
|
||||
PythonPyTest
|
||||
PythonPyYAML
|
||||
PythonPygments
|
||||
PythonSetuptools
|
||||
PythonSetuptoolsSCM
|
||||
PythonTroveClassifiers
|
||||
PythonVCSVersioning
|
||||
QEMU
|
||||
Rdfind
|
||||
Readline
|
||||
Rsync
|
||||
Sed
|
||||
Setuptools
|
||||
SPIRVHeaders
|
||||
SPIRVTools
|
||||
SquashfsTools
|
||||
|
||||
@@ -2,12 +2,12 @@ package rosa
|
||||
|
||||
import "hakurei.app/internal/pkg"
|
||||
|
||||
const kernelVersion = "6.12.81"
|
||||
const kernelVersion = "6.12.82"
|
||||
|
||||
var kernelSource = newTar(
|
||||
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/"+
|
||||
"snapshot/linux-"+kernelVersion+".tar.gz",
|
||||
"fBkNwf82DQXh74in6gaF2Jot7Vg-Vlcp9BUtCEipL9mvcM1EXLVFdV7FcrO20Eve",
|
||||
"pYr4Wlk0fagbnlws1SPUFaWtJtqxm9GtSilW0V5A7f_WRap9IMCZV22kZpV_G-zk",
|
||||
pkg.TarGzip,
|
||||
)
|
||||
|
||||
|
||||
@@ -10,26 +10,46 @@ import (
|
||||
func (t Toolchain) newMeson() (pkg.Artifact, string) {
|
||||
const (
|
||||
version = "1.11.0"
|
||||
checksum = "b7oo3U_cklhzsTfsyYsjPGyeEufiS-Pm06JPLzodseS125Ach62ZBly7R6dSDiAc"
|
||||
checksum = "QJolMPzypTiS65GReSNPPlkUjHI6b1EDpZ-avIk3n6b6TQ93KfUM57DVUpY97Hf7"
|
||||
)
|
||||
return t.New("meson-"+version, 0, []pkg.Artifact{
|
||||
t.Load(Zlib),
|
||||
t.Load(Python),
|
||||
t.Load(Setuptools),
|
||||
}, nil, nil, `
|
||||
cd /usr/src/meson
|
||||
chmod -R +w meson.egg-info
|
||||
python3 setup.py \
|
||||
install \
|
||||
--prefix=/system \
|
||||
--root=/work
|
||||
`, pkg.Path(AbsUsrSrc.Append("meson"), true, newFromGitHubRelease(
|
||||
return t.NewPackage("meson", version, newFromGitHub(
|
||||
"mesonbuild/meson",
|
||||
version,
|
||||
"meson-"+version+".tar.gz",
|
||||
checksum,
|
||||
pkg.TarGzip,
|
||||
))), version
|
||||
), &PackageAttr{
|
||||
Env: []string{
|
||||
"CMAKE_MAKE_PROGRAM=ninja",
|
||||
},
|
||||
}, &PipHelper{
|
||||
EnterSource: true,
|
||||
Check: `
|
||||
cd 'test cases'
|
||||
rm -rf \
|
||||
'common/32 has header' \
|
||||
'common/66 vcstag' \
|
||||
'common/153 wrap file should not failed' \
|
||||
'common/184 openmp' \
|
||||
'common/189 check header' \
|
||||
'linuxlike/6 subdir include order' \
|
||||
'linuxlike/9 compiler checks with dependencies' \
|
||||
'linuxlike/13 cmake dependency' \
|
||||
'frameworks/15 llvm' \
|
||||
'frameworks/29 blocks'
|
||||
cd ..
|
||||
|
||||
python3 ./run_project_tests.py \
|
||||
-v \
|
||||
` + jobsFlagE + ` \
|
||||
--failfast \
|
||||
--backend=ninja
|
||||
`,
|
||||
},
|
||||
PythonSetuptools,
|
||||
PkgConfig,
|
||||
CMake,
|
||||
Ninja,
|
||||
PythonPyTest,
|
||||
), version
|
||||
}
|
||||
func init() {
|
||||
artifactsM[Meson] = Metadata{
|
||||
|
||||
@@ -82,30 +82,24 @@ func init() {
|
||||
}
|
||||
}
|
||||
|
||||
func (t Toolchain) newBuildCATrust() (pkg.Artifact, string) {
|
||||
func init() {
|
||||
const (
|
||||
version = "0.5.1"
|
||||
checksum = "g9AqIksz-hvCUceSR7ZKwfqf8Y_UsJU_3_zLUIdc4IkxFVkgdv9kKVvhFjE4s1-7"
|
||||
checksum = "oxjnuIrPVMPvD6x8VFLqB7EdbfuhouGQdtPuHDpEHGzoyH5nkxqtYN9UthMY9noA"
|
||||
)
|
||||
artifactsM[buildcatrust] = newPythonPackage(
|
||||
"buildcatrust", 233988,
|
||||
"transform certificate stores between formats",
|
||||
"https://github.com/nix-community/buildcatrust",
|
||||
version, newFromGitHub(
|
||||
"nix-community/buildcatrust",
|
||||
"v"+version, checksum,
|
||||
), &PackageAttr{
|
||||
ScriptEarly: `
|
||||
rm buildcatrust/tests/test_nonhermetic.py
|
||||
`,
|
||||
}, nil, P{PythonFlitCore},
|
||||
)
|
||||
return t.newViaPip("buildcatrust", version,
|
||||
"https://github.com/nix-community/buildcatrust/releases/"+
|
||||
"download/v"+version+"/buildcatrust-"+version+"-py3-none-any.whl",
|
||||
checksum), version
|
||||
}
|
||||
func init() {
|
||||
artifactsM[buildcatrust] = Metadata{
|
||||
f: Toolchain.newBuildCATrust,
|
||||
|
||||
Name: "buildcatrust",
|
||||
Description: "transform certificate stores between formats",
|
||||
Website: "https://github.com/nix-community/buildcatrust",
|
||||
|
||||
Dependencies: P{
|
||||
Python,
|
||||
},
|
||||
|
||||
ID: 233988,
|
||||
}
|
||||
}
|
||||
|
||||
func (t Toolchain) newNSSCACert() (pkg.Artifact, string) {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package rosa
|
||||
|
||||
import (
|
||||
"path"
|
||||
"slices"
|
||||
"strings"
|
||||
|
||||
@@ -23,6 +22,32 @@ func (t Toolchain) newPython() (pkg.Artifact, string) {
|
||||
Writable: true,
|
||||
Chmod: true,
|
||||
|
||||
Patches: []KV{
|
||||
{"zipfile-no-default-strict_timestamps", `diff --git a/Lib/zipfile/__init__.py b/Lib/zipfile/__init__.py
|
||||
index 19aea290b58..51603ba9510 100644
|
||||
--- a/Lib/zipfile/__init__.py
|
||||
+++ b/Lib/zipfile/__init__.py
|
||||
@@ -617,7 +617,7 @@ def _decodeExtra(self, filename_crc):
|
||||
extra = extra[ln+4:]
|
||||
|
||||
@classmethod
|
||||
- def from_file(cls, filename, arcname=None, *, strict_timestamps=True):
|
||||
+ def from_file(cls, filename, arcname=None, *, strict_timestamps=False):
|
||||
"""Construct an appropriate ZipInfo for a file on the filesystem.
|
||||
|
||||
filename should be the path to a file or directory on the filesystem.
|
||||
@@ -1412,7 +1412,7 @@ class ZipFile:
|
||||
_windows_illegal_name_trans_table = None
|
||||
|
||||
def __init__(self, file, mode="r", compression=ZIP_STORED, allowZip64=True,
|
||||
- compresslevel=None, *, strict_timestamps=True, metadata_encoding=None):
|
||||
+ compresslevel=None, *, strict_timestamps=False, metadata_encoding=None):
|
||||
"""Open the ZIP file with mode read 'r', write 'w', exclusive create 'x',
|
||||
or append 'a'."""
|
||||
if mode not in ('r', 'w', 'x', 'a'):
|
||||
`},
|
||||
},
|
||||
|
||||
Env: []string{
|
||||
"EXTRATESTOPTS=-j0 -x " + strings.Join([]string{
|
||||
// requires internet access (http://www.pythontest.net/)
|
||||
@@ -36,7 +61,7 @@ func (t Toolchain) newPython() (pkg.Artifact, string) {
|
||||
"test_os",
|
||||
"test_subprocess",
|
||||
|
||||
// somehow picks up mtime of source code
|
||||
// patched out insane strict_timestamps default
|
||||
"test_zipfile",
|
||||
|
||||
// requires gcc
|
||||
@@ -81,47 +106,112 @@ func init() {
|
||||
}
|
||||
}
|
||||
|
||||
// newViaPip installs a pip wheel from a url.
|
||||
func (t Toolchain) newViaPip(
|
||||
name, version, url, checksum string,
|
||||
extra ...PArtifact,
|
||||
) pkg.Artifact {
|
||||
return t.New(name+"-"+version, 0, t.AppendPresets(nil,
|
||||
slices.Concat(P{Python}, extra)...,
|
||||
), nil, nil, `
|
||||
// PipHelper is the [Python] pip packaging helper.
|
||||
type PipHelper struct {
|
||||
// Path elements joined with source.
|
||||
Append []string
|
||||
// Whether to omit --no-build-isolation.
|
||||
BuildIsolation bool
|
||||
// Whether to enter source after install.
|
||||
EnterSource bool
|
||||
// Whether to install to build environment after install.
|
||||
Install bool
|
||||
// Whether to skip running tests.
|
||||
SkipCheck bool
|
||||
// Replaces pytest if non-empty.
|
||||
Check string
|
||||
// Runs after install.
|
||||
Script string
|
||||
}
|
||||
|
||||
var _ Helper = new(PipHelper)
|
||||
|
||||
// extra returns python, or pytest if defaults are assumed.
|
||||
func (attr *PipHelper) extra(int) P {
|
||||
if attr == nil || (!attr.SkipCheck && attr.Check == "") {
|
||||
return P{PythonPyTest}
|
||||
}
|
||||
return P{Python}
|
||||
}
|
||||
|
||||
// wantsChmod returns true.
|
||||
func (*PipHelper) wantsChmod() bool { return true }
|
||||
|
||||
// wantsWrite is equivalent to wantsChmod.
|
||||
func (attr *PipHelper) wantsWrite() bool { return attr.wantsChmod() }
|
||||
|
||||
// scriptEarly is a noop.
|
||||
func (*PipHelper) scriptEarly() string { return "" }
|
||||
|
||||
// createDir returns false.
|
||||
func (*PipHelper) createDir() bool { return false }
|
||||
|
||||
// wantsDir requests a new directory in TMPDIR.
|
||||
func (*PipHelper) wantsDir() string { return `"$(mktemp -d)"` }
|
||||
|
||||
// script generates the pip3 install command.
|
||||
func (attr *PipHelper) script(name string) string {
|
||||
if attr == nil {
|
||||
attr = new(PipHelper)
|
||||
}
|
||||
sourcePath := AbsUsrSrc.Append(name).Append(attr.Append...)
|
||||
|
||||
var extra string
|
||||
if !attr.BuildIsolation {
|
||||
extra += `
|
||||
--no-build-isolation \`
|
||||
}
|
||||
|
||||
var script string
|
||||
if attr.Install {
|
||||
script += `pip3 install \
|
||||
--no-index \
|
||||
--prefix=/system \
|
||||
--no-build-isolation \
|
||||
'` + sourcePath.String() + `'
|
||||
`
|
||||
}
|
||||
if attr.EnterSource {
|
||||
script += "cd '/usr/src/" + name + "'\n"
|
||||
}
|
||||
if !attr.SkipCheck {
|
||||
if attr.Check == "" {
|
||||
// some test suites fall apart when ran out-of-tree
|
||||
script += "(cd '" + sourcePath.String() + "' && pytest)\n"
|
||||
} else {
|
||||
script += attr.Check
|
||||
}
|
||||
}
|
||||
script += attr.Script
|
||||
|
||||
return `
|
||||
pip3 install \
|
||||
--no-index \
|
||||
--prefix=/system \
|
||||
--root=/work \
|
||||
'/usr/src/`+path.Base(url)+`'
|
||||
`, pkg.Path(AbsUsrSrc.Append(path.Base(url)), false, pkg.NewHTTPGet(
|
||||
nil, url,
|
||||
mustDecode(checksum),
|
||||
)))
|
||||
--root=/work \` + extra + `
|
||||
'` + sourcePath.String() + `'
|
||||
` + script
|
||||
}
|
||||
|
||||
// newPypi creates [Metadata] for a [pypi] package.
|
||||
//
|
||||
// [pypi]: https://pypi.org/
|
||||
func newPypi(
|
||||
name string, id int,
|
||||
description, version, interpreter, abi, platform, checksum string,
|
||||
extra ...PArtifact,
|
||||
// newPythonPackage creates [Metadata] for a [Python] package.
|
||||
func newPythonPackage(
|
||||
name string, id int, description, website, version string,
|
||||
source pkg.Artifact, attrP *PackageAttr, attr *PipHelper,
|
||||
build P, extra ...PArtifact,
|
||||
) Metadata {
|
||||
name = "python-" + name
|
||||
return Metadata{
|
||||
f: func(t Toolchain) (pkg.Artifact, string) {
|
||||
return t.newViaPip(name, version, "https://files.pythonhosted.org/"+path.Join(
|
||||
"packages",
|
||||
interpreter,
|
||||
string(name[0]),
|
||||
name,
|
||||
name+"-"+version+"-"+interpreter+"-"+abi+"-"+platform+".whl",
|
||||
), checksum, extra...), version
|
||||
return t.NewPackage(name, version, source, attrP, attr, slices.Concat(
|
||||
P{Python},
|
||||
extra,
|
||||
build,
|
||||
)...), version
|
||||
},
|
||||
|
||||
Name: "python-" + name,
|
||||
Name: name,
|
||||
Description: description,
|
||||
Website: "https://pypi.org/project/" + name + "/",
|
||||
Website: website,
|
||||
|
||||
Dependencies: slices.Concat(P{Python}, extra),
|
||||
|
||||
@@ -129,106 +219,327 @@ func newPypi(
|
||||
}
|
||||
}
|
||||
|
||||
func (t Toolchain) newSetuptools() (pkg.Artifact, string) {
|
||||
func init() {
|
||||
const (
|
||||
version = "82.0.1"
|
||||
checksum = "nznP46Tj539yqswtOrIM4nQgwLA1h-ApKX7z7ghazROCpyF5swtQGwsZoI93wkhc"
|
||||
)
|
||||
return t.New("setuptools-"+version, 0, t.AppendPresets(nil,
|
||||
Python,
|
||||
), nil, nil, `
|
||||
pip3 install \
|
||||
--no-index \
|
||||
--prefix=/system \
|
||||
--root=/work \
|
||||
/usr/src/setuptools
|
||||
`, pkg.Path(AbsUsrSrc.Append("setuptools"), true, newFromGitHub(
|
||||
"pypa/setuptools",
|
||||
"v"+version, checksum,
|
||||
))), version
|
||||
}
|
||||
func init() {
|
||||
artifactsM[Setuptools] = Metadata{
|
||||
f: Toolchain.newSetuptools,
|
||||
|
||||
Name: "python-setuptools",
|
||||
Description: "the autotools of the Python ecosystem",
|
||||
Website: "https://pypi.org/project/setuptools/",
|
||||
|
||||
Dependencies: P{
|
||||
Python,
|
||||
},
|
||||
|
||||
ID: 4021,
|
||||
}
|
||||
artifactsM[PythonSetuptools] = newPythonPackage(
|
||||
"setuptools", 4021,
|
||||
"the autotools of the Python ecosystem",
|
||||
"https://pypi.org/project/setuptools/",
|
||||
version, newFromGitHub(
|
||||
"pypa/setuptools",
|
||||
"v"+version, checksum,
|
||||
), nil, &PipHelper{
|
||||
// error: invalid command 'dist_info'
|
||||
BuildIsolation: true,
|
||||
// pytest circular dependency
|
||||
SkipCheck: true,
|
||||
}, nil)
|
||||
}
|
||||
|
||||
func init() {
|
||||
artifactsM[PythonPygments] = newPypi(
|
||||
"pygments", 3986,
|
||||
" a syntax highlighting package written in Python",
|
||||
"2.20.0", "py3", "none", "any",
|
||||
"qlyqX2YSXcV0Z8XgGaPttc_gkq-xsu_nYs6NFOcYnk-CX7qmcj45gG-h6DpwPIcO",
|
||||
const (
|
||||
version = "1.1.1"
|
||||
checksum = "rXZixTsZcRcIoUC1LvWrjySsiXSv5uhW6ng2P-yXZrbdj7FrSrDeJLCfC2b-ladV"
|
||||
)
|
||||
|
||||
artifactsM[PythonPluggy] = newPypi(
|
||||
"pluggy", 7500,
|
||||
"the core framework used by the pytest, tox, and devpi projects",
|
||||
"1.6.0", "py3", "none", "any",
|
||||
"2HWYBaEwM66-y1hSUcWI1MyE7dVVuNNRW24XD6iJBey4YaUdAK8WeXdtFMQGC-4J",
|
||||
artifactsM[PythonVCSVersioning] = newPythonPackage(
|
||||
"vcs-versioning", 389421,
|
||||
"core VCS versioning functionality extracted as a standalone library",
|
||||
"https://setuptools-scm.readthedocs.io/en/latest/",
|
||||
version, newFromGitHub(
|
||||
"pypa/setuptools-scm",
|
||||
"vcs-versioning-v"+version, checksum,
|
||||
), &PackageAttr{
|
||||
Env: []string{
|
||||
"SETUPTOOLS_SCM_PRETEND_VERSION=" + version,
|
||||
},
|
||||
}, &PipHelper{
|
||||
// upstream is monorepo of two packages (setuptools-scm)
|
||||
Append: []string{"vcs-versioning"},
|
||||
// pytest circular dependency
|
||||
SkipCheck: true,
|
||||
}, nil,
|
||||
PythonSetuptools,
|
||||
PythonPackaging,
|
||||
)
|
||||
}
|
||||
|
||||
artifactsM[PythonPackaging] = newPypi(
|
||||
func init() {
|
||||
const (
|
||||
version = "10.0.5"
|
||||
checksum = "vTN_TPd-b4Wbsw5WmAcsWjrs-FNXXznOeVTDnb54NtXve9Oy-eb2HPy-RG3FzNqp"
|
||||
)
|
||||
artifactsM[PythonSetuptoolsSCM] = newPythonPackage(
|
||||
"setuptools-scm", 7874,
|
||||
"extracts Python package versions from Git or Mercurial metadata",
|
||||
"https://setuptools-scm.readthedocs.io/en/latest/",
|
||||
version, newFromGitHub(
|
||||
"pypa/setuptools-scm",
|
||||
"setuptools-scm-v"+version, checksum,
|
||||
), &PackageAttr{
|
||||
Env: []string{
|
||||
"SETUPTOOLS_SCM_PRETEND_VERSION=" + version,
|
||||
},
|
||||
}, &PipHelper{
|
||||
// upstream is monorepo of two packages
|
||||
Append: []string{"setuptools-scm"},
|
||||
// pytest circular dependency
|
||||
SkipCheck: true,
|
||||
}, nil,
|
||||
PythonSetuptools,
|
||||
PythonVCSVersioning,
|
||||
)
|
||||
}
|
||||
|
||||
func init() {
|
||||
const (
|
||||
version = "3.12.0"
|
||||
checksum = "VcTsiGiDU1aPLbjSPe38f9OjJDCLcxFz9loObJqUI1ZxDHXAaQMxBpNyLz_G1Rff"
|
||||
)
|
||||
artifactsM[PythonFlitCore] = newPythonPackage(
|
||||
"flit-core", 44841,
|
||||
"a PEP 517 build backend for packages using Flit",
|
||||
"https://flit.pypa.io/",
|
||||
version, newFromGitHub(
|
||||
"pypa/flit",
|
||||
version, checksum,
|
||||
), nil, &PipHelper{
|
||||
// upstream has other unused packages with many dependencies
|
||||
Append: []string{"flit_core"},
|
||||
// pytest circular dependency
|
||||
SkipCheck: true,
|
||||
}, nil,
|
||||
)
|
||||
}
|
||||
|
||||
func init() {
|
||||
const (
|
||||
version = "26.1"
|
||||
checksum = "AOX4RBYPCMs2-vv8zSxQWANCK4XUbACRZWuR0ZHSiZ-fz_43IUXpMs_1-SZl8AVP"
|
||||
)
|
||||
artifactsM[PythonPackaging] = newPythonPackage(
|
||||
"packaging", 60461,
|
||||
"reusable core utilities for various Python Packaging interoperability specifications",
|
||||
"26.1", "py3", "none", "any",
|
||||
"6WZjBJeRb0eZZavxM8cLPcgD-ch-1FblsHoCFKC_9VUC5XAmd397LwliVhsnQcSN",
|
||||
"https://packaging.pypa.io/",
|
||||
version, newFromGitHub(
|
||||
"pypa/packaging",
|
||||
version, checksum,
|
||||
), nil, &PipHelper{
|
||||
// pytest circular dependency
|
||||
SkipCheck: true,
|
||||
}, P{PythonFlitCore},
|
||||
)
|
||||
}
|
||||
|
||||
artifactsM[PythonIniConfig] = newPypi(
|
||||
func init() {
|
||||
const (
|
||||
version = "1.0.4"
|
||||
checksum = "zAZbcIO-JnNhb-xMg76W2j0tn5b2MtavWjUpGpPjBmbrcRZDLoXBn8o8yJ3DUgCT"
|
||||
)
|
||||
artifactsM[PythonPathspec] = newPythonPackage(
|
||||
"pathspec", 23424,
|
||||
"utility library for gitignore style pattern matching of file paths",
|
||||
"https://github.com/cpburnz/python-pathspec",
|
||||
version, newFromGitHub(
|
||||
"cpburnz/python-pathspec",
|
||||
"v"+version, checksum,
|
||||
), nil, &PipHelper{
|
||||
// pytest circular dependency
|
||||
SkipCheck: true,
|
||||
}, P{PythonFlitCore},
|
||||
)
|
||||
}
|
||||
|
||||
func init() {
|
||||
const (
|
||||
version = "2026.1.14.14"
|
||||
checksum = "ADfyOvGq7wfOhW10xTVvTmcuY7ZXw8Xlqhz7AM6KULOEm42rpk_45hfcO2PgxOIe"
|
||||
)
|
||||
artifactsM[PythonTroveClassifiers] = newPythonPackage(
|
||||
"trove-classifiers", 88298,
|
||||
"canonical source for classifiers on PyPI",
|
||||
"https://pypi.org/p/trove-classifiers/",
|
||||
version, newFromGitHub(
|
||||
"pypa/trove-classifiers",
|
||||
version, checksum,
|
||||
), nil, &PipHelper{
|
||||
// pytest circular dependency
|
||||
SkipCheck: true,
|
||||
}, P{PythonSetuptools},
|
||||
)
|
||||
}
|
||||
|
||||
func init() {
|
||||
const (
|
||||
version = "1.6.0"
|
||||
checksum = "GiUgDkKjF8Xn1cmq6iMhTGXzcPIYeaJrvQpHBSAJapNVx4UyuiTXqd5eVlxSClJu"
|
||||
)
|
||||
artifactsM[PythonPluggy] = newPythonPackage(
|
||||
"pluggy", 7500,
|
||||
"the core framework used by the pytest, tox, and devpi projects",
|
||||
"https://pluggy.readthedocs.io/en/latest/",
|
||||
version, newFromGitHub(
|
||||
"pytest-dev/pluggy",
|
||||
version, checksum,
|
||||
), &PackageAttr{
|
||||
Env: []string{
|
||||
"SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PLUGGY=" + version,
|
||||
},
|
||||
}, &PipHelper{
|
||||
// pytest circular dependency
|
||||
SkipCheck: true,
|
||||
}, P{PythonSetuptoolsSCM},
|
||||
)
|
||||
}
|
||||
|
||||
func init() {
|
||||
const (
|
||||
version = "1.16.5"
|
||||
checksum = "V2eREtqZLZeV85yb4O-bfAJCUluHcQP76Qfs0QH5s7RF_Oc8xIP8jD0jl85qFyWk"
|
||||
)
|
||||
artifactsM[PythonHatchling] = newPythonPackage(
|
||||
"hatchling", 16137,
|
||||
"the extensible, standards compliant build backend used by Hatch",
|
||||
"https://hatch.pypa.io/latest/",
|
||||
version, newFromGitHub(
|
||||
"pypa/hatch",
|
||||
"hatch-v"+version, checksum,
|
||||
), nil, &PipHelper{
|
||||
// upstream has other unused packages with many dependencies
|
||||
Append: []string{"backend"},
|
||||
// pytest circular dependency
|
||||
SkipCheck: true,
|
||||
}, nil,
|
||||
PythonPackaging,
|
||||
PythonPathspec,
|
||||
PythonTroveClassifiers,
|
||||
PythonPluggy,
|
||||
)
|
||||
}
|
||||
|
||||
func init() {
|
||||
const (
|
||||
version = "2.20.0"
|
||||
checksum = "L-2P6vn7c_CNZYliE5CJAWLxO1ziDQVVkf8bnZbHj8aSCQ43oWv11wC9KzU9MeCa"
|
||||
)
|
||||
artifactsM[PythonPygments] = newPythonPackage(
|
||||
"pygments", 3986,
|
||||
"a syntax highlighting package written in Python",
|
||||
"https://pygments.org/",
|
||||
version, newFromGitHub(
|
||||
"pygments/pygments",
|
||||
version, checksum,
|
||||
), nil, &PipHelper{
|
||||
// pytest circular dependency
|
||||
SkipCheck: true,
|
||||
}, P{PythonHatchling},
|
||||
)
|
||||
}
|
||||
|
||||
func init() {
|
||||
const (
|
||||
version = "2.3.0"
|
||||
checksum = "mH7VBZaXcYatBPE3RQQZvSzz_Ay8IPPek60NpPHZulPq4ReAFUUsA4EPWfiyMknZ"
|
||||
)
|
||||
artifactsM[PythonIniConfig] = newPythonPackage(
|
||||
"iniconfig", 114778,
|
||||
"a small and simple INI-file parser module",
|
||||
"2.3.0", "py3", "none", "any",
|
||||
"SDgs4S5bXi77aVOeKTPv2TUrS3M9rduiK4DpU0hCmDsSBWqnZcWInq9lsx6INxut",
|
||||
"https://github.com/pytest-dev/iniconfig",
|
||||
version, newFromGitHub(
|
||||
"pytest-dev/iniconfig",
|
||||
"v"+version, checksum,
|
||||
), &PackageAttr{
|
||||
Env: []string{
|
||||
"SETUPTOOLS_SCM_PRETEND_VERSION_FOR_INICONFIG=" + version,
|
||||
},
|
||||
}, &PipHelper{
|
||||
// pytest circular dependency
|
||||
SkipCheck: true,
|
||||
}, P{PythonSetuptoolsSCM},
|
||||
)
|
||||
}
|
||||
|
||||
artifactsM[PythonPyTest] = newPypi(
|
||||
func init() {
|
||||
const (
|
||||
version = "9.0.3"
|
||||
checksum = "qfLL_znWhbJCDbNJvrx9H3-orJ86z4ifhaW0bIn21jl2sDP-FVoX_1yieOypArQe"
|
||||
)
|
||||
artifactsM[PythonPyTest] = newPythonPackage(
|
||||
"pytest", 3765,
|
||||
"the pytest framework",
|
||||
"9.0.3", "py3", "none", "any",
|
||||
"57WLrIVOfyoRDjt5qD6LGOaDcDCtzQnKDSTUb7GzHyJDtry_nGHHs4-0tW0tiIJr",
|
||||
"https://pytest.org",
|
||||
version, newFromGitHub(
|
||||
"pytest-dev/pytest",
|
||||
version, checksum,
|
||||
), &PackageAttr{
|
||||
Env: []string{
|
||||
"SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST=" + version,
|
||||
},
|
||||
}, &PipHelper{
|
||||
// many dependencies
|
||||
SkipCheck: true,
|
||||
}, P{PythonSetuptoolsSCM},
|
||||
PythonIniConfig,
|
||||
PythonPackaging,
|
||||
PythonPluggy,
|
||||
PythonPygments,
|
||||
)
|
||||
}
|
||||
|
||||
artifactsM[PythonMarkupSafe] = newPypi(
|
||||
func init() {
|
||||
const (
|
||||
version = "3.0.3"
|
||||
checksum = "txRGYdWE3his1lHHRI-lZADw0-ILvUg2l5OGdFHtFXIb_QowGxwdxHCUSJIgmjQs"
|
||||
)
|
||||
artifactsM[PythonMarkupSafe] = newPythonPackage(
|
||||
"markupsafe", 3918,
|
||||
"implements a text object that escapes characters so it is safe to use in HTML and XML",
|
||||
"3.0.3", "cp314", "cp314", "musllinux_1_2_"+linuxArch(),
|
||||
perArch[string]{
|
||||
"amd64": "E2mo9ig_FKgTpGon_8qqviSEULwhnmxTIqd9vfyNxNpK4yofVYM7eLW_VE-LKbtO",
|
||||
"arm64": "iG_hqsncOs8fA7bCaAg0x9XenXWlo9sqblyPcSG7yA9sfGLvM9KZznCpwWfOCwFC",
|
||||
"riscv64": "7DI7U0M3jvr7U4uZml25GLw3m3EvMubCtNukZmss1gkVJ_DVkhV5DgX3Wt_sztbv",
|
||||
}.unwrap(),
|
||||
)
|
||||
|
||||
artifactsM[PythonMako] = newPypi(
|
||||
"mako", 3915,
|
||||
"a template library written in Python",
|
||||
"1.3.11", "py3", "none", "any",
|
||||
"WJ_hxYI-nNiuDiM6QhfAG84uO5U-M2aneB0JS9AQ2J2Oi6YXAbBxIdOeOEng6CoS",
|
||||
PythonMarkupSafe,
|
||||
)
|
||||
|
||||
artifactsM[PythonPyYAML] = newPypi(
|
||||
"pyyaml", 4123,
|
||||
"a YAML parser and emitter for Python",
|
||||
"6.0.3", "cp314", "cp314", "musllinux_1_2_"+linuxArch(),
|
||||
perArch[string]{
|
||||
"amd64": "4_jhCFpUNtyrFp2HOMqUisR005u90MHId53eS7rkUbcGXkoaJ7JRsY21dREHEfGN",
|
||||
"arm64": "sQ818ZYSmC7Vj9prIPx3sEYqSDhZlWvLbgHV9w4GjxsfQ63ZSzappctKM7Lb0Whw",
|
||||
}.unwrap(),
|
||||
"https://markupsafe.palletsprojects.com/",
|
||||
version, newFromGitHub(
|
||||
"pallets/markupsafe",
|
||||
version, checksum,
|
||||
), nil, &PipHelper{
|
||||
// ModuleNotFoundError: No module named 'markupsafe'
|
||||
Install: true,
|
||||
}, P{PythonSetuptools},
|
||||
)
|
||||
}
|
||||
|
||||
func init() {
|
||||
const (
|
||||
version = "1.3.11"
|
||||
checksum = "HbNreFhqmvmplmIa6h5TVnkwYYlPnsxBzkTXEA-esyx04GzybjTb7OU8Go07Kfyz"
|
||||
)
|
||||
artifactsM[PythonMako] = newPythonPackage(
|
||||
"mako", 3915,
|
||||
"a template library written in Python",
|
||||
"https://www.makotemplates.org/",
|
||||
version, newFromGitHub(
|
||||
"sqlalchemy/mako",
|
||||
"rel_"+strings.Join(strings.SplitN(version, ".", 3), "_"),
|
||||
checksum,
|
||||
), nil, nil, P{PythonSetuptools},
|
||||
PythonMarkupSafe,
|
||||
)
|
||||
}
|
||||
|
||||
func init() {
|
||||
const (
|
||||
version = "6.0.3"
|
||||
checksum = "7wDv0RW9chBdu9l5Q4Hun5F2HHdo105ZSIixwdFPKbEYbftW9YxmsegfL-zafnbJ"
|
||||
)
|
||||
artifactsM[PythonPyYAML] = newPythonPackage(
|
||||
"pyyaml", 4123,
|
||||
"a YAML parser and emitter for Python",
|
||||
"https://pyyaml.org/",
|
||||
version, newFromGitHub(
|
||||
"yaml/pyyaml",
|
||||
version, checksum,
|
||||
), nil, &PipHelper{
|
||||
// ModuleNotFoundError: No module named 'yaml'
|
||||
Install: true,
|
||||
}, P{PythonSetuptools},
|
||||
)
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ package rosa
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"log"
|
||||
"path"
|
||||
"runtime"
|
||||
"slices"
|
||||
@@ -28,7 +27,7 @@ const (
|
||||
func mustDecode(s string) pkg.Checksum {
|
||||
var fallback = pkg.Checksum{}
|
||||
if s == "" {
|
||||
log.Println(
|
||||
println(
|
||||
"falling back to",
|
||||
pkg.Encode(fallback),
|
||||
"for unpopulated checksum",
|
||||
|
||||
Reference in New Issue
Block a user