nixpkgs/pkgs/build-support
Alyssa Ross 470e6130b3
rust: fix overriding rust flags on musl
If RUSTFLAGS is set in the environment, Cargo will ignore rustflags
settings in its TOML configuration.  So setting RUSTFLAGS=-g (like
separateDebugInfo does) to generate debug info breaks
dynamically-linked Rust packages on musl.  This breakage is visible
for any packages that call into C dynamic libraries.  If the binary is
linked directly to a C dynamic library, it will fail to build, and if
it depends on a Rust library which links a C dynamic library, it will
segfault at runtime when it tries to call a function from the C
library.  I noticed this because pkgsMusl.crosvm is broken for this
reason, since it sets separateDebugInfo = true.

It shouldn't be possible to end up with broken binaries just by using
RUSTFLAGS to do something innocuous like enable debug info, so I think
that, even though we liked the approach of modiyfing .cargo/config
better at the time, it's become clear that it's too brittle, and we
should bite the bullet and patch the compiler instead when targetting
musl.  It does not appear to be necessary to modify the compiler at
all when cross-compiling /from/ dynamically-linked Musl to another
target, so I'm only checking whether the target system is
dynamically-linked Musl when deciding whether to make the modification
to the compiler.

This reverts commit c2eaaae50d
("cargoSetupHook: pass host config flags"), and implements the
compiler patching approach instead.
2023-03-16 02:29:46 +00: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 mkCoqDerivation: findlib is an optional input 2023-02-28 10:59:42 +00:00
deterministic-uname deterministic-uname: add missing whitespace 2023-01-31 14:55:11 +02:00
dhall
docker dockerTools: Preprocess layers list before unpack to handle repeated layers 2023-02-06 12:19:29 -06:00
dotnet Merge pull request #218849 from Atemu/buildDotnetModule-put-dep-file-path-in-fetch-script 2023-03-06 17:46:32 +01:00
emacs emacs: remove warning of xargs when doing AOT native-comp 2022-10-04 02:53:55 +08:00
expand-response-params
fake-nss fake-nss: Add support for extra passwd and group lines 2022-10-04 00:05:34 +02:00
fetchbitbucket
fetchbower
fetchbzr fetchbzr: set cache directory to tmpdir 2023-03-01 04:20:00 +00: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 fetchNextcloudApp: rewrite with fetchzip & applyPatches 2022-09-26 20:32:33 +02:00
fetchpatch fetchpatch: add decode test 2023-03-11 21:39:29 +00: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 portableService: tooling to create portable service images 2022-09-22 20:11:25 +02:00
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 rust: fix overriding rust flags on musl 2023-03-16 02:29:46 +00:00
setup-hooks Merge pull request #219683 from symphorien/separatedebuginfo_static 2023-03-12 17:02:03 +00: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 replaceDependency: use runCommandLocal 2023-03-01 14:36:49 +02:00
setup-systemd-units.nix
source-from-head-fun.nix
trivial-builders.nix trivial-builders.writeShellApplication: use unwrapped shellcheck 2023-03-07 21:18:48 +02:00