635 Commits

Author SHA1 Message Date
Ross Smyth
89be9a6225 copyDesktopItems: Support derivations with structuredAttrs 2025-10-16 14:30:10 -04:00
NAHO
c8d4dabc43 pkgs: remove optional builtins prefixes from prelude functions
Remove optional builtins prefixes from prelude functions by running:

    builtins=(
      abort
      baseNameOf
      break
      derivation
      derivationStrict
      dirOf
      false
      fetchGit
      fetchMercurial
      fetchTarball
      fetchTree
      fromTOML
      import
      isNull
      map
      null
      placeholder
      removeAttrs
      scopedImport
      throw
      toString
      true
    )

    fd \
      --type file \
      . \
      pkgs \
      --exec-batch sed --in-place --regexp-extended "
        s/\<builtins\.($(
          printf '%s\n' "${builtins[@]}" |
            paste --delimiter '|' --serial -
        ))\>/\1/g
      "

    nix fmt
2025-10-04 19:02:37 +02:00
David McFarland
a56ff336a7 cygwin-dll-link.sh: init 2025-09-27 21:21:48 -03:00
Arnout Engelen
4108382f36 compress-man-pages: don't leak build timestamp into archive
without `-n`, gzip leaks the file timestamp into the compressed file,
which is likely to leak the build timestamp into the output.

This fixes #434930, a regression introduced in c5252e1 / #406922
2025-08-20 17:03:51 +02:00
Wolfgang Walther
535b720589 Merge branch 'master' into staging-next 2025-07-24 14:27:50 +02:00
Wolfgang Walther
5a0711127c treewide: run nixfmt 1.0.0 2025-07-24 13:55:40 +02:00
DavHau
a1154d6348 patch-shebangs: fix binary data corrupt after patching
This removes the recently introduced shell based implementation of `sponge` which wasn't capable of managing binary input.

Now, a tmpFile under $TMPDIR is created manually and later deleted

see: https://github.com/NixOS/nixpkgs/pull/414448#issuecomment-3041238623
2025-07-07 14:57:21 +07:00
DavHau
2029515f40 patchShebangs: fix crash on read-only files
Fixes a regression introduced by c1cc6ff0c0 where patchShebangs would crash if a file is read-only
2025-07-01 12:43:26 +07:00
Jörg Thalheim
6039e03bbd patch-shebangs.sh: fix for macos sandbox (#414448) 2025-06-27 18:59:59 +02:00
Guillaume Girol
b0d26fa2cd autoPatchelfHook: teach it to avoid objects created by separateDebugInfo
otherwise systemd fails to build because autoPatchelfHook patches libs
with debug objects and this creates circular dependencies from out to
debug (of course, debug depends on out)

example of faulty behavior:

searching for dependencies of /nix/store/c8cd7b82py02f0rkags351nhg82wwjm6-systemd-minimal-257.5/bin/systemd-delta
    libsystemd-shared-257.so -> found: /nix/store/icpqrawjhsw4fbi4i2hp7cxvf3kbzq7m-systemd-minimal-257.5-debug/lib/debug
    libc.so.6 -> found: /nix/store/7lyblga0bzjk0sl93vp4aiwbvb57vp2x-glibc-2.40-66/lib
2025-06-14 22:14:57 +02:00
Guillaume Girol
a924c0eb95 separateDebugInfo: add symlinks to executable and source for debuginfod support
A debuginfod support must be able to map a build-id to
- debug symbols
- the original elf file for which the debug symbols where separated
- the corresponding source files

Currently, hydra provides an index from build-id to the nar of the debug
output containing the debug symbols.

Add symlinks in these outputs so that we can recover the store path of
the source and original elf file. We can then fetch them by the normal
binary cache protocol.

About source files: to minimize storage demands, in the ideal case,
software would be built from the source store path $src and the
debuginfod server would just have to serve source files from this store
path. In practice, source files are sometimes patched as part of the
build. This commit stores the modified files in the debug output is a so
called source overlay so that the debuginfod serve can serve the patched
content of the file.

The checksum was chosen as follows (where big is 4GB of zeros):

$  hyperfine -L s sysv,bsd,crc,sha1,sha224,sha256,sha384,sha512,blake2b,sm3 'cksum -a {s} big'
Benchmark 1: cksum -a sysv big
  Time (mean ± σ):     854.5 ms ± 270.5 ms    [User: 245.3 ms, System: 601.8 ms]
  Range (min … max):   760.5 ms … 1623.8 ms    10 runs

  Warning: The first benchmarking run for this command was significantly slower than the rest (1.624 s). This could be caused by (filesystem) caches that were not filled until after the first run. You should consider using the '--warmup' option to fill those caches before the actual benchmark. Alternatively, use the '--prepare' option to clear the caches before each timing run.

Benchmark 2: cksum -a bsd big
  Time (mean ± σ):      5.838 s ±  0.045 s    [User: 5.118 s, System: 0.693 s]
  Range (min … max):    5.767 s …  5.897 s    10 runs

Benchmark 3: cksum -a crc big
  Time (mean ± σ):     829.9 ms ±  28.6 ms    [User: 274.5 ms, System: 551.0 ms]
  Range (min … max):   803.2 ms … 904.8 ms    10 runs

Benchmark 4: cksum -a sha1 big
  Time (mean ± σ):      2.553 s ±  0.010 s    [User: 1.912 s, System: 0.631 s]
  Range (min … max):    2.543 s …  2.575 s    10 runs

Benchmark 5: cksum -a sha224 big
  Time (mean ± σ):      2.716 s ±  0.018 s    [User: 2.054 s, System: 0.645 s]
  Range (min … max):    2.695 s …  2.743 s    10 runs

Benchmark 6: cksum -a sha256 big
  Time (mean ± σ):      2.751 s ±  0.029 s    [User: 2.057 s, System: 0.674 s]
  Range (min … max):    2.712 s …  2.812 s    10 runs

Benchmark 7: cksum -a sha384 big
  Time (mean ± σ):      5.600 s ±  0.049 s    [User: 4.820 s, System: 0.753 s]
  Range (min … max):    5.515 s …  5.683 s    10 runs

Benchmark 8: cksum -a sha512 big
  Time (mean ± σ):      5.543 s ±  0.021 s    [User: 4.751 s, System: 0.768 s]
  Range (min … max):    5.523 s …  5.579 s    10 runs

Benchmark 9: cksum -a blake2b big
  Time (mean ± σ):      5.091 s ±  0.025 s    [User: 4.306 s, System: 0.764 s]
  Range (min … max):    5.048 s …  5.125 s    10 runs

Benchmark 10: cksum -a sm3 big
  Time (mean ± σ):     14.220 s ±  0.120 s    [User: 13.376 s, System: 0.783 s]
  Range (min … max):   14.077 s … 14.497 s    10 runs

Summary
  cksum -a crc big ran
    1.03 ± 0.33 times faster than cksum -a sysv big
    3.08 ± 0.11 times faster than cksum -a sha1 big
    3.27 ± 0.11 times faster than cksum -a sha224 big
    3.31 ± 0.12 times faster than cksum -a sha256 big
    6.13 ± 0.21 times faster than cksum -a blake2b big
    6.68 ± 0.23 times faster than cksum -a sha512 big
    6.75 ± 0.24 times faster than cksum -a sha384 big
    7.03 ± 0.25 times faster than cksum -a bsd big
   17.13 ± 0.61 times faster than cksum -a sm3 big

unfortunately, crc (and sysv) are not supported by --check, so they are
disqualified. sha1 sha224 and sha256 are sensibly as fast as one
another, so let's use a non broken one, even though cryptographic
qualities are not needed here.
2025-06-14 22:14:55 +02:00
nixpkgs-ci[bot]
c3c7187bcf Merge staging-next into staging 2025-06-12 18:05:58 +00:00
nixpkgs-ci[bot]
f2f7b3ab09 Merge master into staging-next 2025-06-12 18:05:17 +00:00
Connor Baker
c02c4a4316 no-broken-symlinks: fail on links to /build (#411775) 2025-06-11 22:15:19 -07:00
Dominique Martinet
9b36201b94 no-broken-symlinks: fail on links to /build
The no-broken-symlinks hook does not fail if bad links exist out of
store, but /build is also a special directory for nix derivations: the
build directory in the builder mount namespace.

There should be no link to /build in the output derivation, so also
error on these directories (through $TMPDIR which default to that)

Closes #410508
2025-06-12 05:23:42 +09:00
Connor Baker
38a8232461 arrayUtilities: init
Signed-off-by: Connor Baker <ConnorBaker01@gmail.com>
2025-06-11 17:08:13 +00:00
DavHau
6b8e23b9f2 Revert "parallelRun, parallelMap: init"
This reverts commit 4d12b83ae0.

The stdin read lock mechnism can cause the whole process pool to lock up
indefinitely
2025-06-10 10:37:35 +07:00
DavHau
c419691ccb Revert "audit-tmpdir.sh: optimize - make use of parallelMap"
This reverts commit e230668356.
2025-06-10 10:37:24 +07:00
DavHau
c1cc6ff0c0 patch-shebangs.sh: fix for macos sandbox
fixes https://github.com/NixOS/nixpkgs/issues/343576
2025-06-06 14:40:04 +07:00
DavHau
e230668356 audit-tmpdir.sh: optimize - make use of parallelMap 2025-06-06 11:52:51 +07:00
DavHau
4d12b83ae0 parallelRun, parallelMap: init
These bash helpers make it trivial to write shell based setup hooks that utilize all cores.

This also makes it simpler to optimize existing hooks which are not yet utilizing all cores.

Existing hooks which already use `xargs -P` to parallelize their work, can be optimized further by replacing the xargs call with one of the functions added here , eg. `parallelRun` or `parallelMap`.

The new shell based functions `parallelRun` and `parallelMap` are superior to `xargs -P`, because:

- They perform better as they launch $NIX_BUILD_CORE workers, each handling many jobs, vs `xargss -P` usually launches a new process for each job (anything else is difficult to implement nicely with xargs).

- workers can be defined as shell functions, which allows using all declared shell variables and functions inside the worker (e.g isElf or isScript, etc.), vs. `xargs -P` forces the user to create a new shell process, which cannot re-use declared variables and functions.
2025-06-06 00:25:51 +07:00
DavHau
95c782bcde audit-tempdir.sh: optimize - execute checks in parallel
Improvement:
Checks calling patchelf and grep are executed in parallel with $NIX_BUILD_CORES

Tradeoff:
One more sub-shell is spawned for each file, only if that file is a script or an ELF file.
2025-05-23 10:40:34 +07:00
DavHau
8d022c6c7c compress-man-pages: optimize, use multiple cores
Decreases the time spent on gzipping man pages.

Decreases the number of processes launched per file from 2 to 1.
Launches multiple processes in parallel via xargs -P.

The behavior of the hook is unchanged.
gzip -f is now needed to retain the behavior of compressing hardlinkgs.
Previously '-f' was not needed because gzip compressed to stdout.

It removes the check checking if gzip failed, because there os no reason it should ever fail.
Even if it fails we probably want to fix the issue instead of silently not gzipping.
This check has been introduced via c06046e5ef.
No comment was given on why it would be necessary.
2025-05-14 14:52:35 +07:00
BirdeeHub
7b9c6346ff makeWrapper: --add-flag and --append-flag arguments
also:

manual: differences in makeWrapper implementations better explained

Update pkgs/by-name/ma/makeBinaryWrapper/make-binary-wrapper.sh

Co-authored-by: Naïm Camille Favier <n@monade.li>

Update pkgs/by-name/ma/makeBinaryWrapper/make-binary-wrapper.sh

Co-authored-by: Naïm Camille Favier <n@monade.li>

Update pkgs/by-name/ma/makeBinaryWrapper/make-binary-wrapper.sh

Co-authored-by: Naïm Camille Favier <n@monade.li>

Update pkgs/build-support/setup-hooks/make-wrapper.sh

Co-authored-by: Naïm Camille Favier <n@monade.li>

Update pkgs/build-support/setup-hooks/make-wrapper.sh

Co-authored-by: Naïm Camille Favier <n@monade.li>

Update pkgs/build-support/setup-hooks/make-wrapper.sh

Co-authored-by: Naïm Camille Favier <n@monade.li>

Update pkgs/by-name/ma/makeBinaryWrapper/make-binary-wrapper.sh

Co-authored-by: Naïm Camille Favier <n@monade.li>

Update pkgs/build-support/setup-hooks/make-wrapper.sh

Co-authored-by: Naïm Camille Favier <n@monade.li>

Update pkgs/by-name/ma/makeBinaryWrapper/make-binary-wrapper.sh

Co-authored-by: Naïm Camille Favier <n@monade.li>

Update pkgs/build-support/setup-hooks/make-wrapper.sh

Co-authored-by: Naïm Camille Favier <n@monade.li>
2025-04-25 12:57:29 -07:00
Rhys-T
3703e38135 noBrokenSymlinks: check for unreadable symlinks
Resolves #380681.
2025-03-05 15:46:37 -05:00
Emily
ed0a92c735 desktopToDarwinBundle: use ARGB format
Very belatedly, since we now only support macOS ≥ 11.3.

Co-authored-by: Karolis Stasaitis <contact@carlossless.io>
2025-03-02 17:17:36 +00:00
K900
ff319638c4 stdenv, cmake: drop --oldincludedir (#380400) 2025-02-11 17:15:33 +03:00
K900
61001472b4 separateDebugInfo: fix cleanup, refactor a little
- cleanup with --ignore-fail-on-non-empty
- extract destDir and destFile variables
- unnest all the subshells
2025-02-11 10:45:59 +03:00
Alyssa Ross
160c79845e wrapGAppsNoGuiHook: only use dconf if available
Better have as much as possible working than an eval failure.
2025-02-11 01:30:34 +01:00
K900
622b533437 patch-shebangs: fix env -S with only one argument (#378221) 2025-02-09 09:31:01 +03:00
Sergei Trofimovich
fe5e11faed stdenv, cmake: drop --oldincludedir
Without the change the build of upcoming `sqlite-3.49.0` will fail as:

    > Error: Unknown option --oldincludedir
    > Try: 'configure --help' for options

Looking at https://www.gnu.org/prep/standards/html_node/Directory-Variables.html
it feels like it's something that predates gcc and
it should be an alias to `--includedir=`.

Let's just drop the setting of `--oldincludedir=`
(and `cmake` equivalent).
2025-02-08 16:48:31 +00:00
nixpkgs-ci[bot]
c721a7fb35 Merge staging-next into staging 2025-02-03 18:05:46 +00:00
K900
945d2e2a7a Merge remote-tracking branch 'origin/master' into staging-next 2025-02-03 18:00:08 +03:00
Pol Dellaiera
b5066be9ef build-support: update writableTmpDirAsHome, use postHooks 2025-02-02 21:49:13 +01:00
Pol Dellaiera
3a28ae97ed build-support: update addBinToPathHook, use postHooks 2025-02-02 21:48:57 +01:00
K900
6a12ab0c22 separateDebugInfo: don't create broken symlinks 2025-02-01 15:19:19 +03:00
Philip Taron
b0c95d94cf no-broken-symlinks: clean up error log output (#378079) 2025-01-31 21:57:56 -08:00
Alyssa Ross
2f165766d1 Merge remote-tracking branch 'origin/master' into staging-next
Conflicts:
	pkgs/development/python-modules/diffusers/default.nix
2025-01-31 14:01:37 +01:00
Alyssa Ross
dffcaaaa64 Merge remote-tracking branch 'origin/master' into staging-next
Conflicts:
	pkgs/applications/virtualization/crosvm/default.nix
	pkgs/by-name/as/ast-grep/package.nix
	pkgs/by-name/ca/cargo-mobile2/package.nix
	pkgs/by-name/cl/clang-tidy-sarif/package.nix
	pkgs/by-name/gg/gg-jj/package.nix
	pkgs/by-name/gi/git-warp-time/package.nix
	pkgs/by-name/je/jellyfin-rpc/package.nix
	pkgs/by-name/ne/netbox2netshot/package.nix
	pkgs/by-name/sy/sydbox/package.nix
	pkgs/by-name/te/television/package.nix
	pkgs/development/python-modules/tinytuya/default.nix
2025-01-31 10:23:31 +01:00
Fabian Möller
c5b890c413 patch-shebangs: fix env -S with only one argument
In case `patchShebangs` encounters an `env -S` interpreter with only one
argument following, it would duplicate that argument and most likely invalidate
the resulting interpreter line.

Reproducer:

```nix
(import <nixpkgs> {}).writeTextFile {
  name = "patch-shebangs-env-s";
  text = ''
    #!/bin/env -S bash
  '';
  executable = true;
  checkPhase = ''
    patchShebangs $out
  '';
}
```

The resulting file would contain

```
#!/nix/store/pw…fk-coreutils-9.5/bin/env -S /nix/store/4f…g60-bash-5.2p37/bin/bash bash
```

instead of the correct

```
#!/nix/store/pw…fk-coreutils-9.5/bin/env -S /nix/store/4f…g60-bash-5.2p37/bin/bash
```
2025-01-31 08:29:56 +01:00
Pol Dellaiera
62d4ca6101 build-support: update addBinToPathHook hook 2025-01-30 22:15:10 +01:00
Connor Baker
5926f753b3 no-broken-symlinks: clean up error log output 2025-01-30 18:09:26 +00:00
Pol Dellaiera
f8110737ae build-support: add writableTmpDirAsHomeHook hook 2025-01-27 19:41:13 +01:00
Pol Dellaiera
87521c59b6 build-support: add addBinToPathHook hook 2025-01-27 19:41:13 +01:00
Connor Baker
b2416f4485 no-broken-symlinks: restrict checks to symlinks pointing inside the store 2025-01-23 15:59:18 -08:00
Connor Baker
34539b291c no-broken-symlinks: actually interpolate relative paths 2025-01-22 16:05:17 -08:00
Connor Baker
51b2764e9f no-broken-symlinks: provide only dontCheckForBrokenSymlinks and test against absolute symlinks 2025-01-22 11:05:13 -08:00
Connor Baker
ba1297b0d3 no-broken-symlinks: exit instead of returning 1 for cleaner log 2025-01-21 17:35:14 -08:00
Connor Baker
9b9badd957 no-broken-symlinks: check for reflexivity before dangling 2025-01-21 17:35:14 -08:00
Connor Baker
0ad7c9ee1e no-broken-symlinks: guard against double inclusions 2025-01-21 17:35:14 -08:00