diff --git a/internal/rosa/python.go b/internal/rosa/python.go index 323ad3f9..249e1c8b 100644 --- a/internal/rosa/python.go +++ b/internal/rosa/python.go @@ -100,26 +100,23 @@ pip3 install \ ))) } -// newViaPip is a helper for installing python dependencies via pip. -func newViaPip( - name, description, version, interpreter, abi, platform, checksum, prefix string, +// 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, ) Metadata { - wname := name + "-" + version + "-" + interpreter + "-" + abi + "-" + platform + ".whl" return Metadata{ f: func(t Toolchain) (pkg.Artifact, string) { - return t.New(name+"-"+version, 0, t.AppendPresets(nil, - slices.Concat(P{Python}, extra)..., - ), nil, nil, ` -pip3 install \ - --no-index \ - --prefix=/system \ - --root=/work \ - /usr/src/`+wname+` -`, pkg.Path(AbsUsrSrc.Append(wname), false, pkg.NewHTTPGet( - nil, prefix+wname, - mustDecode(checksum), - ))), version + 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 }, Name: "python-" + name, @@ -127,6 +124,8 @@ pip3 install \ Website: "https://pypi.org/project/" + name + "/", Dependencies: slices.Concat(P{Python}, extra), + + ID: id, } } @@ -167,49 +166,39 @@ func init() { } func init() { - artifactsM[PythonPygments] = newViaPip( - "pygments", + artifactsM[PythonPygments] = newPypi( + "pygments", 3986, " a syntax highlighting package written in Python", "2.19.2", "py3", "none", "any", "ak_lwTalmSr7W4Mjy2XBZPG9I6a0gwSy2pS87N8x4QEuZYif0ie9z0OcfRfi9msd", - "https://files.pythonhosted.org/packages/"+ - "c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/", ) - artifactsM[PythonPluggy] = newViaPip( - "pluggy", + 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", - "https://files.pythonhosted.org/packages/"+ - "54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/", ) - artifactsM[PythonPackaging] = newViaPip( - "packaging", + artifactsM[PythonPackaging] = newPypi( + "packaging", 60461, "reusable core utilities for various Python Packaging interoperability specifications", "26.0", "py3", "none", "any", "iVVXcqdwHDskPKoCFUlh2x8J0Gyq-bhO4ns9DvUJ7oJjeOegRYtSIvLV33Bki-pP", - "https://files.pythonhosted.org/packages/"+ - "b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/", ) - artifactsM[PythonIniConfig] = newViaPip( - "iniconfig", + artifactsM[PythonIniConfig] = newPypi( + "iniconfig", 114778, "a small and simple INI-file parser module", "2.3.0", "py3", "none", "any", "SDgs4S5bXi77aVOeKTPv2TUrS3M9rduiK4DpU0hCmDsSBWqnZcWInq9lsx6INxut", - "https://files.pythonhosted.org/packages/"+ - "cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/", ) - artifactsM[PythonPyTest] = newViaPip( - "pytest", + artifactsM[PythonPyTest] = newPypi( + "pytest", 3765, "the pytest framework", "9.0.2", "py3", "none", "any", "IM2wDbLke1EtZhF92zvAjUl_Hms1uKDtM7U8Dt4acOaChMnDg1pW7ib8U0wYGDLH", - "https://files.pythonhosted.org/packages/"+ - "3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/", PythonIniConfig, PythonPackaging, PythonPluggy,