From ac682e362c07929b2b30bfdf4f75cd1c5250d3e7 Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Sun, 28 Oct 2018 16:44:05 -0500 Subject: cctools: bump to latest commit Lots of our patches are no longer needed. This simplifies things a bunch. In addition, it now includes man pages. --- pkgs/os-specific/darwin/cctools/ld-tbd-v2.patch | 98 ---------------------- pkgs/os-specific/darwin/cctools/port.nix | 48 +++-------- pkgs/os-specific/darwin/cctools/support-ios.patch | 13 --- .../darwin/cctools/undo-unknown-triple.patch | 17 ---- 4 files changed, 11 insertions(+), 165 deletions(-) delete mode 100644 pkgs/os-specific/darwin/cctools/ld-tbd-v2.patch delete mode 100644 pkgs/os-specific/darwin/cctools/support-ios.patch delete mode 100644 pkgs/os-specific/darwin/cctools/undo-unknown-triple.patch (limited to 'pkgs/os-specific/darwin/cctools') diff --git a/pkgs/os-specific/darwin/cctools/ld-tbd-v2.patch b/pkgs/os-specific/darwin/cctools/ld-tbd-v2.patch deleted file mode 100644 index 9aae2be1d033..000000000000 --- a/pkgs/os-specific/darwin/cctools/ld-tbd-v2.patch +++ /dev/null @@ -1,98 +0,0 @@ -diff --git a/cctools/ld64/src/ld/parsers/textstub_dylib_file.cpp b/cctools/ld64/src/ld/parsers/textstub_dylib_file.cpp -index 09c0e12..ac6b085 100644 ---- a/cctools/ld64/src/ld/parsers/textstub_dylib_file.cpp -+++ b/cctools/ld64/src/ld/parsers/textstub_dylib_file.cpp -@@ -187,6 +187,7 @@ struct DynamicLibrary { - ld::File::ObjcConstraint _objcConstraint; - Options::Platform _platform; - std::vector _allowedClients; -+ std::vector _allowableClients; - std::vector _reexportedLibraries; - std::vector _symbols; - std::vector _classes; -@@ -246,6 +247,14 @@ class TBDFile { - }); - } - -+ void parseAllowableClients(DynamicLibrary& lib) { -+ if ( !hasOptionalToken("allowable-clients") ) -+ return; -+ parseFlowSequence([&](Token name) { -+ lib._allowableClients.emplace_back(name); -+ }); -+ } -+ - void parseReexportedDylibs(DynamicLibrary& lib) { - if ( !hasOptionalToken("re-exports") ) - return; -@@ -306,6 +315,21 @@ class TBDFile { - return false; - } - -+ void skipUUIDs(DynamicLibrary& lib) { -+ expectToken("uuids"); -+ while ( true ) { -+ auto token = next(); -+ if ( token == "]" ) -+ break; -+ } -+ } -+ -+ void skipParentUmbrella(DynamicLibrary& lib) { -+ if (!hasOptionalToken("parent-umbrella")) -+ return; -+ next(); -+ } -+ - void parsePlatform(DynamicLibrary& lib) { - expectToken("platform"); - -@@ -410,6 +434,7 @@ class TBDFile { - } - - parseAllowedClients(lib); -+ parseAllowableClients(lib); - parseReexportedDylibs(lib); - parseSymbols(lib); - if ( !hasOptionalToken("-") ) -@@ -455,17 +480,21 @@ class TBDFile { - return result.front(); - } - -- void parseDocument(DynamicLibrary& lib, std::string &requestedArchName) { -+ void parseDocument(DynamicLibrary& lib, std::string &requestedArchName, bool isTbdV2) { - auto selectedArchName = parseAndSelectArchitecture(requestedArchName); - if (selectedArchName.empty()) - throwf("invalid arch"); - -+ if(isTbdV2) -+ skipUUIDs(lib); - parsePlatform(lib); - parseInstallName(lib); - parseCurrentVersion(lib); - parseCompatibilityVersion(lib); - parseSwiftVersion(lib); - parseObjCConstraint(lib); -+ if(isTbdV2) -+ skipParentUmbrella(lib); - parseExportsBlock(lib, selectedArchName); - } - -@@ -476,7 +505,8 @@ public: - _tokenizer.reset(); - DynamicLibrary lib; - expectToken("---"); -- parseDocument(lib, requestedArchName); -+ auto isTbdV2 = hasOptionalToken("!tapi-tbd-v2"); -+ parseDocument(lib, requestedArchName, isTbdV2); - expectToken("..."); - return lib; - } -@@ -486,6 +516,7 @@ public: - auto token = next(); - if ( token != "---" ) - return false; -+ hasOptionalToken("!tapi-tbd-v2"); - return !parseAndSelectArchitecture(requestedArchName).empty(); - } - diff --git a/pkgs/os-specific/darwin/cctools/port.nix b/pkgs/os-specific/darwin/cctools/port.nix index bad17cf6de46..2bca1bcc1d75 100644 --- a/pkgs/os-specific/darwin/cctools/port.nix +++ b/pkgs/os-specific/darwin/cctools/port.nix @@ -1,18 +1,10 @@ -{ stdenv, fetchFromGitHub, autoconf, automake, libtool_2, autoreconfHook +{ stdenv, fetchFromGitHub, autoconf, automake, libtool, autoreconfHook , libcxxabi, libuuid, llvm , libobjc ? null, maloader ? null -, enableDumpNormalizedLibArgs ? false }: let - # We need to use an old version of cctools-port to support linking TBD files - # in the iOS SDK. Note that this only provides support for SDK versions up to - # 10.x. For 11.0 and higher we will need to upgrade to a newer cctools than the - # default version here, which can support the new TBD format via Apple's - # libtapi. - useOld = stdenv.targetPlatform.isiOS; - # The targetPrefix prepended to binary names to allow multiple binuntils on the # PATH to both be usable. targetPrefix = stdenv.lib.optionalString @@ -23,51 +15,31 @@ in # Non-Darwin alternatives assert (!stdenv.hostPlatform.isDarwin) -> maloader != null; -assert enableDumpNormalizedLibArgs -> (!useOld); - let baseParams = rec { name = "${targetPrefix}cctools-port-${version}"; - version = if useOld then "886" else "895"; + version = "895"; - src = fetchFromGitHub (if enableDumpNormalizedLibArgs then { - owner = "tpoechtrager"; - repo = "cctools-port"; - # master with https://github.com/tpoechtrager/cctools-port/pull/34 - rev = "8395d4b2c3350356e2fb02f5e04f4f463c7388df"; - sha256 = "10vbf1cfzx02q8chc77s84fp2kydjpx2y682mr6mrbb7sq5rwh8f"; - } else if useOld then { + src = fetchFromGitHub { owner = "tpoechtrager"; repo = "cctools-port"; - rev = "02f0b8ecd87a3951653d838a321ae744815e21a5"; - sha256 = "0bzyabzr5dvbxglr74d0kbrk2ij5x7s5qcamqi1v546q1had1wz1"; - } else { - owner = "tpoechtrager"; - repo = "cctools-port"; - rev = "2e569d765440b8cd6414a695637617521aa2375b"; # From branch 895-ld64-274.2 - sha256 = "0l45mvyags56jfi24rawms8j2ihbc45mq7v13pkrrwppghqrdn52"; - }); + rev = "07619027f8311fa61b4a549c75994b88739a82d8"; + sha256 = "12g94hhz5v5bmy2w0zb6fb4bjlmn992gygc60h9nai15kshj2spi"; + }; outputs = [ "out" "dev" ]; nativeBuildInputs = [ - autoconf automake libtool_2 - ] ++ stdenv.lib.optionals useOld [ - autoreconfHook + autoconf automake libtool autoreconfHook ]; buildInputs = [ libuuid ] ++ stdenv.lib.optionals stdenv.isDarwin [ llvm libcxxabi libobjc ]; patches = [ ./ld-rpath-nonfinal.patch ./ld-ignore-rpath-link.patch - ] ++ stdenv.lib.optionals useOld [ - # See https://github.com/tpoechtrager/cctools-port/issues/24. Remove when that's fixed. - ./undo-unknown-triple.patch - ./ld-tbd-v2.patch - ./support-ios.patch ]; - __propagatedImpureHostDeps = stdenv.lib.optionals (!useOld) [ + __propagatedImpureHostDeps = [ # As far as I can tell, otool from cctools is the only thing that depends on these two, and we should fix them "/usr/lib/libobjc.A.dylib" "/usr/lib/libobjc.dylib" @@ -78,7 +50,9 @@ let # TODO(@Ericson2314): Always pass "--target" and always targetPrefix. configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (stdenv.targetPlatform != stdenv.hostPlatform) "target"; - postPatch = '' + postPatch = stdenv.lib.optionalString stdenv.hostPlatform.isDarwin '' + substituteInPlace cctools/Makefile.am --replace libobjc2 "" + '' + '' sed -i -e 's/addStandardLibraryDirectories = true/addStandardLibraryDirectories = false/' cctools/ld64/src/ld/Options.cpp # FIXME: there are far more absolute path references that I don't want to fix right now diff --git a/pkgs/os-specific/darwin/cctools/support-ios.patch b/pkgs/os-specific/darwin/cctools/support-ios.patch deleted file mode 100644 index f78c6b63ac80..000000000000 --- a/pkgs/os-specific/darwin/cctools/support-ios.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/cctools/configure.ac b/cctools/configure.ac -index 56e8f24..0b4b3ff 100644 ---- a/cctools/configure.ac -+++ b/cctools/configure.ac -@@ -39,7 +39,7 @@ EXTRACXXFLAGS="" - WARNINGS="" - - case $host_os in -- darwin* ) -+ darwin* | ios*) - isdarwin=yes - AM_CONDITIONAL([ISDARWIN], [true]) - ;; diff --git a/pkgs/os-specific/darwin/cctools/undo-unknown-triple.patch b/pkgs/os-specific/darwin/cctools/undo-unknown-triple.patch deleted file mode 100644 index 7df9bdd16dab..000000000000 --- a/pkgs/os-specific/darwin/cctools/undo-unknown-triple.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/cctools/as/driver.c b/cctools/as/driver.c -index b06d085..c03397a 100644 ---- a/cctools/as/driver.c -+++ b/cctools/as/driver.c -@@ -363,12 +363,6 @@ char **envp) - /* Add -c or clang will run ld(1). */ - new_argv[j] = "-c"; - j++; -- /* cctools-port start */ -- new_argv[j] = "-target"; -- j++; -- new_argv[j] = "unknown-apple-darwin"; -- j++; -- /* cctools-port end */ - new_argv[j] = NULL; - if(execute(new_argv, verbose)) - exit(0); -- cgit 1.4.1