mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 15:03:28 +00:00
Merge pull request #294347 from lolbinarycat/meta.repository
stdenv: add meta.repository field
This commit is contained in:
commit
2809c84cfb
@ -47,6 +47,10 @@ Release branch. Used to specify that a package is not going to receive updates t
|
||||
|
||||
The package’s 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/`
|
||||
|
@ -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 =
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user