Skip to content

Commit

Permalink
ipxe: fix build by fixing -idirafter ordering
Browse files Browse the repository at this point in the history
`ipxe` build broke after NixOS#210004
where we started dropping default libc include path and switched to
`-idirafter` way of specifying libc headers.

Unfortunately the way it's implemented it injects `-idirafter` after
user's flags, not before. That allows users to inject their paths before
libc include paths, not after (as it would notmally happen).

The change works it around for `ipxe` by pulling `-idirafter` libc flags
before user's flags.
  • Loading branch information
trofi committed Jan 28, 2023
1 parent 277d34f commit a9e6a5c
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions pkgs/tools/misc/ipxe/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,16 @@ stdenv.mkDerivation rec {
substituteInPlace src/util/genfsimg --replace " syslinux " " true "
''; # calling syslinux on a FAT image isn't going to work

# Workaround '-idirafter' ordering bug in staging-next:
# https://github.com/NixOS/nixpkgs/pull/210004
# where libc '-idirafter' gets added after user's idirafter and
# breaks.
# TODO(trofi): remove it in staging once fixed in cc-wrapper.
preConfigure = ''
export NIX_CFLAGS_COMPILE_BEFORE_${lib.replaceStrings ["-" "."] ["_" "_"] buildPackages.stdenv.hostPlatform.config}=$(< ${buildPackages.stdenv.cc}/nix-support/libc-cflags)
export NIX_CFLAGS_COMPILE_BEFORE_${lib.replaceStrings ["-" "."] ["_" "_"] stdenv.hostPlatform.config}=$(< ${stdenv.cc}/nix-support/libc-cflags)
'';

# not possible due to assembler code
hardeningDisable = [ "pic" "stackprotector" ];

Expand Down

0 comments on commit a9e6a5c

Please sign in to comment.