tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
darwin.cctools-apple: init at 973.0.1-609
Dmitry Kalinkin
4 years ago
64b7c29d
e1b353e8
+133
3 changed files
expand all
collapse all
unified
split
pkgs
os-specific
darwin
cctools
apple.nix
cctools-add-missing-vtool-libstuff-dep.patch
top-level
darwin-packages.nix
+118
pkgs/os-specific/darwin/cctools/apple.nix
···
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
···
1
+
{ lib, stdenv, fetchurl, symlinkJoin, xcbuildHook, tcsh, libobjc, libtapi, libunwind, llvm, memstreamHook, xar }:
2
+
3
+
let
4
+
5
+
cctools = stdenv.mkDerivation rec {
6
+
pname = "cctools";
7
+
version = "973.0.1";
8
+
9
+
src = fetchurl {
10
+
url = "https://opensource.apple.com/tarballs/cctools/cctools-${version}.tar.gz";
11
+
hash = "sha256-r/6tsyyfi3R/0cLl+lN/B9ZaOaVF+Z7vJ6xj4LzSgiQ=";
12
+
};
13
+
14
+
patches = [
15
+
./cctools-add-missing-vtool-libstuff-dep.patch
16
+
];
17
+
18
+
postPatch = ''
19
+
for file in libstuff/writeout.c misc/libtool.c misc/lipo.c; do
20
+
substituteInPlace "$file" \
21
+
--replace '__builtin_available(macOS 10.12, *)' '0'
22
+
done
23
+
substituteInPlace libmacho/swap.c \
24
+
--replace '#ifndef RLD' '#if 1'
25
+
'';
26
+
27
+
nativeBuildInputs = [ xcbuildHook memstreamHook ];
28
+
buildInputs = [ libobjc llvm ];
29
+
30
+
xcbuildFlags = [
31
+
"MACOSX_DEPLOYMENT_TARGET=10.12"
32
+
];
33
+
34
+
doCheck = true;
35
+
checkPhase = ''
36
+
runHook preCheck
37
+
38
+
Products/Release/libstuff_test
39
+
rm Products/Release/libstuff_test
40
+
41
+
runHook postCheck
42
+
'';
43
+
44
+
installPhase = ''
45
+
runHook preInstall
46
+
47
+
rm -rf "$out/usr"
48
+
mkdir -p "$out/bin"
49
+
find Products/Release -maxdepth 1 -type f -perm 755 -exec cp {} "$out/bin/" \;
50
+
cp -r include "$out/"
51
+
52
+
ln -s ./nm-classic "$out"/bin/nm
53
+
ln -s ./otool-classic "$out"/bin/otool
54
+
55
+
runHook postInstall
56
+
'';
57
+
};
58
+
59
+
ld64 = stdenv.mkDerivation rec {
60
+
pname = "ld64";
61
+
version = "609";
62
+
63
+
src = fetchurl {
64
+
url = "https://opensource.apple.com/tarballs/ld64/ld64-${version}.tar.gz";
65
+
hash = "sha256-SqQ7SqmK+uOPijzxOTqtkEu3qYmcth6H7rrQ03R1Q+4=";
66
+
};
67
+
68
+
postPatch = ''
69
+
substituteInPlace ld64.xcodeproj/project.pbxproj \
70
+
--replace "/bin/csh" "${tcsh}/bin/tcsh" \
71
+
--replace 'F9E8D4BE07FCAF2A00FD5801 /* PBXBuildRule */,' "" \
72
+
--replace 'F9E8D4BD07FCAF2000FD5801 /* PBXBuildRule */,' ""
73
+
74
+
sed -i src/ld/Options.cpp -e '1iconst char ldVersionString[] = "${version}";'
75
+
'';
76
+
77
+
nativeBuildInputs = [ xcbuildHook ];
78
+
buildInputs = [
79
+
libtapi
80
+
libunwind
81
+
llvm
82
+
xar
83
+
];
84
+
85
+
installPhase = ''
86
+
runHook preInstall
87
+
88
+
mkdir -p "$out/bin"
89
+
find Products/Release-assert -maxdepth 1 -type f -perm 755 -exec cp {} "$out/bin/" \;
90
+
91
+
runHook postInstall
92
+
'';
93
+
};
94
+
95
+
in
96
+
97
+
symlinkJoin rec {
98
+
name = "cctools-${version}";
99
+
version = "${cctools.version}-${ld64.version}";
100
+
101
+
paths = [
102
+
cctools
103
+
ld64
104
+
];
105
+
106
+
# workaround for the fetch-tarballs script
107
+
passthru = {
108
+
inherit (cctools) src;
109
+
ld64_src = ld64.src;
110
+
};
111
+
112
+
meta = with lib; {
113
+
description = "MacOS Compiler Tools";
114
+
homepage = "http://www.opensource.apple.com/source/cctools/";
115
+
license = licenses.apsl20;
116
+
platforms = platforms.darwin;
117
+
};
118
+
}
+11
pkgs/os-specific/darwin/cctools/cctools-add-missing-vtool-libstuff-dep.patch
···
0
0
0
0
0
0
0
0
0
0
0
···
1
+
diff -ru a/cctools.xcodeproj/project.pbxproj b/cctools.xcodeproj/project.pbxproj
2
+
--- a/cctools.xcodeproj/project.pbxproj 2021-02-24 20:30:55.000000000 -0500
3
+
+++ b/cctools.xcodeproj/project.pbxproj 2022-01-31 20:01:09.000000000 -0500
4
+
@@ -2558,6 +2558,7 @@
5
+
isa = PBXFrameworksBuildPhase;
6
+
buildActionMask = 2147483647;
7
+
files = (
8
+
+ DE97E92421F3B86100C7947D /* libstuff.a in Frameworks */,
9
+
);
10
+
runOnlyForDeploymentPostprocessing = 0;
11
+
};
+4
pkgs/top-level/darwin-packages.nix
···
98
stdenv = if stdenv.isDarwin then stdenv else pkgs.libcxxStdenv;
99
};
100
0
0
0
0
101
# TODO: remove alias.
102
cf-private = self.apple_sdk.frameworks.CoreFoundation;
103
···
98
stdenv = if stdenv.isDarwin then stdenv else pkgs.libcxxStdenv;
99
};
100
101
+
cctools-apple = callPackage ../os-specific/darwin/cctools/apple.nix {
102
+
stdenv = if stdenv.isDarwin then stdenv else pkgs.libcxxStdenv;
103
+
};
104
+
105
# TODO: remove alias.
106
cf-private = self.apple_sdk.frameworks.CoreFoundation;
107