stdenv: add meta.repository field

This commit is contained in:
binarycat 2024-03-08 14:55:52 -05:00
parent c07e41ca09
commit 7e1443abbb
3 changed files with 33 additions and 2 deletions

View file

@ -45,6 +45,10 @@ Release branch. Used to specify that a package is not going to receive updates t
The packages homepage. Example: `https://www.gnu.org/software/hello/manual/`
### `repository` {#var-meta-repository}
A webpage where the package's source code can be viewed. `https` links are preferred if available. Automatically set to a default value if the package uses a `fetchFrom*` fetcher for its `src`. Example: `https://github.com/forthy42/gforth`
### `downloadPage` {#var-meta-downloadPage}
The page where a link to the current version can be found. Example: `https://ftp.gnu.org/gnu/hello/`

View file

@ -71,7 +71,8 @@ in
if version == "8.11.0+0.11.1" then version
else builtins.replaceStrings [ "+" ] [ "." ] version
}.tbz";
sha256 = release."${version}".sha256;
# abort/syntax error will fail package set eval, but throw is "fine"
sha256 = release."${version}".sha256 or (throw "Unknown version '${version}'");
};
patches =

View file

@ -296,6 +296,10 @@ let
str
];
downloadPage = str;
repository = union [
(listOf str)
str
];
changelog = union [
(listOf str)
str
@ -444,7 +448,29 @@ let
let
outputs = attrs.outputs or [ "out" ];
in
{
optionalAttrs (attrs ? src.meta.homepage || attrs ? srcs && isList attrs.srcs && any (src: src ? meta.homepage) attrs.srcs) {
# should point to an http-browsable source tree, if available.
# fetchers like fetchFromGitHub set it automatically.
# this could be handled a lot easier if we nulled it instead
# of having it be undefined, but that wouldn't match the
# other attributes.
repository = let
getSrcs = attrs:
if attrs ? src
then
[ attrs.src ]
else
lib.filter (src: src ? meta.homepage) attrs.srcs;
getHomePages = srcs: map (src: src.meta.homepage) srcs;
unlist = list:
if lib.length list == 1
then
lib.elemAt list 0
else
list;
in
unlist (getHomePages (getSrcs attrs));
} // {
# `name` derivation attribute includes cross-compilation cruft,
# is under assert, and is sanitized.
# Let's have a clean always accessible version here.