
xcbuild doesn’t handle dsymutil correctly. fuser.pl does not contain debug symbols, but xcbuild doesn’t handle this like xcodebuild does. So, just disable the debug information. We probably should do this in more places using xcbuild, but it requires some arbitrary patching.
39 lines
1.1 KiB
Nix
39 lines
1.1 KiB
Nix
{ stdenv, appleDerivation, xcbuildHook
|
|
, Libc, xnu, libutil-new }:
|
|
|
|
appleDerivation {
|
|
nativeBuildInputs = [ xcbuildHook ];
|
|
buildInputs = [ libutil-new ];
|
|
|
|
NIX_CFLAGS_COMPILE = "-I.";
|
|
NIX_LDFLAGS = "-lutil";
|
|
patchPhase = ''
|
|
# ugly hacks for missing headers
|
|
# most are bsd related - probably should make this a drv
|
|
unpackFile ${Libc.src}
|
|
unpackFile ${xnu.src}
|
|
mkdir System sys machine i386
|
|
cp xnu-*/bsd/sys/disklabel.h sys
|
|
cp xnu-*/bsd/machine/disklabel.h machine
|
|
cp xnu-*/bsd/i386/disklabel.h i386
|
|
cp -r xnu-*/bsd/sys System
|
|
cp -r Libc-*/uuid System
|
|
substituteInPlace diskdev_cmds.xcodeproj/project.pbxproj \
|
|
--replace 'DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";' ""
|
|
'';
|
|
installPhase = ''
|
|
install -D Products/Release/libdisk.a $out/lib/libdisk.a
|
|
rm Products/Release/libdisk.a
|
|
for f in Products/Release/*; do
|
|
if [ -f $f ]; then
|
|
install -D $f $out/bin/$(basename $f)
|
|
fi
|
|
done
|
|
'';
|
|
|
|
meta = {
|
|
platforms = stdenv.lib.platforms.darwin;
|
|
maintainers = with stdenv.lib.maintainers; [ matthewbauer ];
|
|
};
|
|
}
|