Unverified Commit 2809c84c authored by a-n-n-a-l-e-e's avatar a-n-n-a-l-e-e Committed by GitHub
Browse files

Merge pull request #294347 from lolbinarycat/meta.repository

stdenv: add meta.repository field
parents d544d176 7e1443ab
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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/`
+2 −1
Original line number Diff line number Diff line
@@ -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 =
+27 −1
Original line number Diff line number Diff line
@@ -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.