nixpkgs/pkgs/build-support
Rahul Butani b41933a1be
bintools-wrapper: specify SHA1 as the build-id hash style explicitly
NixOS/nixpkgs#146275 has more discussion on this; the abridged version
is that `lld` defaults to using `--build-id=fast` while GNU `ld` defaults
to `--build-id=sha1`. These differ in length and so
`separate-debug-info.sh`, as of this writing, errors on `lld`'s shorter
`--build-id=fast`-generated hashes.

`lld` offers the following `build-id` styles:
  - UUID (random; fast but bad for reproducibility)
  - fast (xxhash; fast but shorter hashes)
  - user provided hexstring
  - SHA1
  - MD5

GNU `ld` supports the latter three options, `mold` supports all of these
plus SHA256.

UUID is out because it's not reproducible, fast isn't supported by GNU
`ld`

Using a nix provided (sourced from the output base hash) hash as the
`build-id` seems tempting but would require a little extra work
(we have to include some characteristic of the binary being hashed
so that binaries within a derivation still have unique hashes; it
seems easy to get this wrong; i.e. a path based approach would make
two otherwise identical binaries that reside at different paths have
different `build-id` hashes)

That leaves SHA1 and MD5 and GNU `ld` already defaults to the former.

This commit adds `$NIX_BUILD_ID_STYLE` as an escape hatch, in case any
packages have strong opinions about which hash to use.

----

Note that if/when NixOS/nixpkgs#146275 goes through, this change can be
reverted if linker speed is a priority.
2023-02-25 12:49:40 -06:00
..
add-opengl-runpath
agda Merge remote-tracking branch 'origin/master' into haskell-updates 2023-02-18 21:56:57 +01:00
alternatives treewide: use optionalString 2023-02-13 21:52:34 +01:00
appimage Merge pull request #203598 from symphorien/appimage-owd 2022-12-02 20:12:49 +00:00
binary-cache Introduce mkBinaryCache function 2023-02-07 16:16:07 -08:00
bintools-wrapper bintools-wrapper: specify SHA1 as the build-id hash style explicitly 2023-02-25 12:49:40 -06:00
build-bazel-package treewide: use optionalString 2023-02-13 21:52:34 +01:00
build-fhs-userenv treewide: use optionalString 2023-02-13 21:52:34 +01:00
build-fhs-userenv-bubblewrap Merge pull request #215837 from K900/fhsenv-x11-socket-permissions 2023-02-16 12:25:04 +03:00
build-graalvm-native-image buildGraalvmNativeImage: allow overriding attributes 2023-02-18 12:38:09 +00:00
build-setupcfg treewide: use lib.optionals 2023-02-14 19:11:59 +01:00
buildenv
cc-wrapper Merge pull request #216232 from amjoseph-nixpkgs/pr/cc-wrapper/useCcForLibs 2023-02-21 19:41:25 +00:00
coq
deterministic-uname deterministic-uname: add missing whitespace 2023-01-31 14:55:11 +02:00
dhall
docker dockerTools: make gzipped docker images faster to update by rsync 2022-12-23 13:22:16 +01:00
dotnet Merge staging-next into staging 2023-02-15 06:01:44 +00:00
emacs
expand-response-params
fake-nss
fetchbitbucket
fetchbower
fetchbzr treewide: remove usages of header and stopNest 2023-01-16 00:08:12 +02:00
fetchcvs treewide: remove usages of header and stopNest 2023-01-16 00:08:12 +02:00
fetchdarcs treewide: remove usages of header and stopNest 2023-01-16 00:08:12 +02:00
fetchdocker treewide: use optionalString 2023-02-13 21:52:34 +01:00
fetchfirefoxaddon treewide: remove usages of header and stopNest 2023-01-16 00:08:12 +02:00
fetchfossil treewide: use optionalString 2023-02-13 21:52:34 +01:00
fetchgit treewide: use optionalString 2023-02-13 21:52:34 +01:00
fetchgitea
fetchgithub fetchGitHub: inherit owner and repo for use with rocmUpdateScript 2022-12-10 13:35:47 -06:00
fetchgitiles
fetchgitlab fetchFromGitLab: don't passthruAttrs fetchGit specific attrs to fetchUrl 2022-10-29 19:12:07 +03:00
fetchgitlocal
fetchgx
fetchhg treewide: use optionalString 2023-02-13 21:52:34 +01:00
fetchipfs treewide: source .attrs in builders 2022-12-08 21:09:02 +02:00
fetchmavenartifact fetchMavenArtifact: add classifier to filename 2023-02-02 19:23:58 -08:00
fetchmtn treewide: remove usages of header and stopNest 2023-01-16 00:08:12 +02:00
fetchnextcloudapp
fetchpatch treewide: use optionalString 2023-02-13 21:52:34 +01:00
fetchpypi fetchPypi: move to top level 2023-01-21 08:21:33 +01:00
fetchrepoorcz
fetchrepoproject
fetchs3
fetchsavannah
fetchsourcehut
fetchsvn treewide: remove usages of header and stopNest 2023-01-16 00:08:12 +02:00
fetchsvnrevision
fetchsvnssh treewide: remove usages of header and stopNest 2023-01-16 00:08:12 +02:00
fetchurl treewide: remove usages of header and stopNest 2023-01-16 00:08:12 +02:00
fetchzip Merge pull request #191355 from GenericNerdyUsername/fetchzip-include-hidden 2022-12-16 18:08:36 +01:00
flutter treewide: move NIX_CFLAGS_COMPILE to the env attrset 2023-02-22 21:23:04 +02:00
go Merge staging-next into staging 2023-02-07 00:02:46 +00:00
icon-conv-tools
install-shell-files
java
kernel make-initrd-ng: document wrapped file behavior 2023-02-20 07:02:55 -05:00
libredirect libredirect: fix build on musl libc 2023-02-06 10:18:52 -08:00
make-darwin-bundle
make-desktopitem
make-hardcode-gsettings-patch makeHardcodeGsettingsPatch: Support other constructors 2022-12-19 17:38:57 +01:00
make-pkgconfigitem makePkgconfigItem: fix cross 2022-12-30 14:51:17 +02:00
make-startupitem
mkshell mkShell: set preferLocalBuild by default 2023-02-22 11:53:51 +01:00
mono-dll-fixer
nix-gitignore
node Merge master into staging-next 2023-02-20 12:01:32 +00:00
nuke-references treewide: use optionalString 2023-02-13 21:52:34 +01:00
ocaml buildDunePackage: default to strictDeps = true 2023-02-03 08:59:34 +01:00
oci-tools
pkg-config-wrapper Merge pull request #207294 from happyalu/staging 2023-01-24 00:02:25 +01:00
portable-service
prefer-remote-fetch
references-by-popularity dockerTools: prefer local builds 2022-11-18 09:31:53 -05:00
release treewide: use optionalString 2023-02-13 21:52:34 +01:00
remove-references-to
replace-secret
rust Merge master into staging-next 2023-02-16 18:01:12 +00:00
setup-hooks Merge pull request #215715 from Artturin/removegirworkarounds2 2023-02-18 20:12:57 +02:00
singularity-tools apptainer, singularity: fix defaultPath and reflect upstream changes 2023-02-08 18:03:11 +08:00
snap
src-only srcOnly: prevent phases being skipped 2023-01-06 19:02:50 +01:00
substitute
substitute-files
templaterpm
testers meta.pkgConfigModules: Init convention 2023-02-03 09:37:31 -05:00
trivial-builders tests.trivial-builders.linkFarm: init 2022-11-15 11:47:36 -05:00
vm build-support/vm/deb/deb-closure: quote generated urls 2023-02-20 01:38:31 +01:00
wrapper-common build-support: Quote expansions inside ${…} 2022-12-02 04:59:43 -05:00
writers writers: fix typo in comment 2023-01-05 20:26:25 -08:00
build-maven.nix
build-pecl.nix feat: add passthru flags in PHP extension builder 2022-12-29 18:19:12 +01:00
closure-info.nix
make-impure-test.nix makeImpureTest: init function for hardware tests 2022-11-22 16:54:32 +01:00
plugins.nix
replace-dependency.nix
setup-systemd-units.nix
source-from-head-fun.nix
trivial-builders.nix add docs for makeSetupHook 2023-02-07 21:02:02 +02:00