Commit 60e9cffe authored by Artturin's avatar Artturin
Browse files

Merge branch 'master' into staging-next

parents 9533f44e dbb6ecc6
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -4,24 +4,31 @@

with pkgs;

let
  locationsJSON = import ./lib-function-locations.nix { inherit pkgs nixpkgs libsets; };
in
stdenv.mkDerivation {
  name = "nixpkgs-lib-docs";
  src = ../../lib;
  src = pkgs.lib.fileset.toSource {
    root = ../..;
    fileset = ../../lib;
  };

  buildInputs = [ nixdoc ];
  buildInputs = [ nixdoc nix ];
  installPhase = ''
    export NIX_STATE_DIR=$(mktemp -d)
    nix-instantiate --eval --strict --json ${./lib-function-locations.nix} \
      --arg nixpkgsPath "./." \
      --argstr revision ${nixpkgs.rev or "master"} \
      --argstr libsetsJSON ${pkgs.lib.escapeShellArg (builtins.toJSON libsets)} \
      > locations.json

    function docgen {
      name=$1
      baseName=$2
      description=$3
      # TODO: wrap lib.$name in <literal>, make nixdoc not escape it
      if [[ -e "../lib/$baseName.nix" ]]; then
        nixdoc -c "$name" -d "lib.$name: $description" -l ${locationsJSON} -f "$baseName.nix" > "$out/$name.md"
      if [[ -e "lib/$baseName.nix" ]]; then
        nixdoc -c "$name" -d "lib.$name: $description" -l locations.json -f "lib/$baseName.nix" > "$out/$name.md"
      else
        nixdoc -c "$name" -d "lib.$name: $description" -l ${locationsJSON} -f "$baseName/default.nix" > "$out/$name.md"
        nixdoc -c "$name" -d "lib.$name: $description" -l locations.json -f "lib/$baseName/default.nix" > "$out/$name.md"
      fi
      echo "$out/$name.md" >> "$out/index.md"
    }
+8 −9
Original line number Diff line number Diff line
{ pkgs, nixpkgs ? { }, libsets }:
{ nixpkgsPath, revision, libsetsJSON }:
let
  revision = pkgs.lib.trivial.revisionWithDefault (nixpkgs.rev or "master");
  lib = import (nixpkgsPath + "/lib");
  libsets = builtins.fromJSON libsetsJSON;

  libDefPos = prefix: set:
    builtins.concatMap
      (name: [{
        name = builtins.concatStringsSep "." (prefix ++ [name]);
        location = builtins.unsafeGetAttrPos name set;
      }] ++ nixpkgsLib.optionals
      }] ++ lib.optionals
        (builtins.length prefix == 0 && builtins.isAttrs set.${name})
        (libDefPos (prefix ++ [name]) set.${name})
      ) (builtins.attrNames set);
@@ -20,8 +21,6 @@ let
      })
      (builtins.map (x: x.name) libsets);

  nixpkgsLib = pkgs.lib;

  flattenedLibSubset = { subsetname, functions }:
  builtins.map
    (fn: {
@@ -38,13 +37,13 @@ let
      substr = builtins.substring prefixLen filenameLen filename;
      in substr;

  removeNixpkgs = removeFilenamePrefix (builtins.toString pkgs.path);
  removeNixpkgs = removeFilenamePrefix (builtins.toString nixpkgsPath);

  liblocations =
    builtins.filter
      (elem: elem.value != null)
      (nixpkgsLib.lists.flatten
        (locatedlibsets nixpkgsLib));
      (lib.lists.flatten
        (locatedlibsets lib));

  fnLocationRelative = { name, value }:
    {
@@ -72,4 +71,4 @@ let
    relativeLocs);

in
pkgs.writeText "locations.json" (builtins.toJSON jsonLocs)
jsonLocs
+19 −0
Original line number Diff line number Diff line
@@ -66,6 +66,25 @@ The following is an example expression using `buildGoModule`:

The function `buildGoPackage` builds legacy Go programs, not supporting Go modules.

::: {.warning}
`buildGoPackage` is deprecated and will be removed for the 25.05 release.
:::

### Migrating from `buildGoPackage` to `buildGoModule` {#buildGoPackage-migration}

Go modules, released 6y ago, are now widely adopted in the ecosystem.
Most upstream projects are using Go modules, and the tooling previously used for dependency management in Go is mostly deprecated, archived or at least unmaintained at this point.

In case a project doesn't have external dependencies or dependencies are vendored in a way understood by `go mod init`, migration can be done with a few changes in the package.

- Switch the builder from `buildGoPackage` to `buildGoModule`
- Remove `goPackagePath` and other attributes specific to `buildGoPackage`
- Set `vendorHash = null;`
- Run `go mod init <module name>` in `postPatch`

In case the package has external dependencies that aren't vendored or the build setup is more complex the upstream source might need to be patched.
Examples for the migration can be found in the [issue tracking migration withing nixpkgs](https://github.com/NixOS/nixpkgs/issues/318069).

### Example for `buildGoPackage` {#example-for-buildgopackage}

In the following is an example expression using `buildGoPackage`, the following arguments are of special significance to the function:
+38 −5
Original line number Diff line number Diff line
@@ -6634,6 +6634,12 @@
    githubId = 5741401;
    name = "Tim Windelschmidt";
  };
  fiq = {
    email = "raf+git@dreamthought.com";
    github = "fiq";
    githubId = 236293;
    name = "Raf Gemmail";
  };
  firefly-cpp = {
    email = "iztok@iztok-jr-fister.eu";
    github = "firefly-cpp";
@@ -11124,6 +11130,12 @@
    github = "kylehendricks";
    githubId = 981958;
  };
  kylelovestoad = {
    name = "kylelovestoad";
    github = "kylelovestoad";
    githubId = 20408518;
    email = "kylelovestoad+nixpkgs@protonmail.com";
  };
  kyleondy = {
    email = "kyle@ondy.org";
    github = "KyleOndy";
@@ -13175,6 +13187,13 @@
    github = "michaeldonovan";
    githubId = 14077230;
  };
  michaelglass = {
    email = "nixpkgs@mike.is";
    name = "Michael Glass";
    github = "michaelglass";
    githubId = 60136;
    keys = [ { fingerprint = "46AF 8625 D92A 219B 8E6D  B7F8 9CDD 3769 1649 1385"; } ];
  };
  michaelgrahamevans = {
    email = "michaelgrahamevans@gmail.com";
    name = "Michael Evans";
@@ -14060,6 +14079,7 @@
  };
  n8henrie = {
    name = "Nathan Henrie";
    email = "nate@n8henrie.com";
    github = "n8henrie";
    githubId = 1234956;
    "keys" = [ { "fingerprint" = "F21A 6194 C9DB 9899 CD09 E24E 434B 2C14 B8C3 3422"; } ];
@@ -16185,11 +16205,6 @@
    github = "polygon";
    githubId = 51489;
  };
  polykernel = {
    github = "polykernel";
    githubId = 81340136;
    name = "polykernel";
  };
  polyrod = {
    email = "dc1mdp@gmail.com";
    github = "polyrod";
@@ -18149,6 +18164,12 @@
    githubId = 4983935;
    keys = [ { fingerprint = "30BB FF3F AB0B BB3E 0435  F83C 8E8F F66E 2AE8 D970"; } ];
  };
  scientiac = {
    email = "iac@scientiac.space";
    name = "Spandan Guragain";
    github = "scientiac";
    githubId = 58177655;
  };
  scm2342 = {
    name = "Sven Mattsen";
    email = "nix@sven.cc";
@@ -21250,6 +21271,12 @@
    githubId = 245573;
    name = "Dmitry Kalinkin";
  };
  vglfr = {
    email = "vf.velt@gmail.com";
    github = "vglfr";
    githubId = 20283252;
    name = "vglfr";
  };
  vgskye = {
    name = "Skye Green";
    email = "me@skye.vg";
@@ -22195,6 +22222,12 @@
    githubId = 3705333;
    name = "Dmitry V.";
  };
  yash-garg = {
    email = "me@yashgarg.dev";
    github = "yash-garg";
    githubId = 33605526;
    name = "Yash Garg";
  };
  yavko = {
    name = "Yavor Kolev";
    email = "yavornkolev@gmail.com";
+1 −0
Original line number Diff line number Diff line
@@ -217,6 +217,7 @@
  ./programs/java.nix
  ./programs/joycond-cemuhook.nix
  ./programs/k3b.nix
  ./programs/kde-pim.nix
  ./programs/k40-whisperer.nix
  ./programs/kbdlight.nix
  ./programs/kclock.nix
Loading