From fe0d5a54c1d27e7d628aec25f4ce7eded64905dd Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Thu, 19 Nov 2020 17:14:51 +0900 Subject: darwin/apple-sdk-11.0: inject an sdk for macOS 11 --- .../darwin/apple-sdk-11.0/apple_sdk.nix | 147 +++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix (limited to 'pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix') diff --git a/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix b/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix new file mode 100644 index 00000000000..8e464b1d4fc --- /dev/null +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix @@ -0,0 +1,147 @@ +{ lib, stdenvNoCC, buildPackages, fetchurl, xar, cpio, pkgs, python3, pbzx, MacOSX-SDK }: + +# TODO: reorganize to make this just frameworks, and move libs to default.nix + +let + stdenv = stdenvNoCC; + + standardFrameworkPath = name: private: + "/System/Library/${lib.optionalString private "Private"}Frameworks/${name}.framework"; + + mkDepsRewrites = deps: + let + mergeRewrites = x: y: { + prefix = lib.mergeAttrs (x.prefix or {}) (y.prefix or {}); + const = lib.mergeAttrs (x.const or {}) (y.const or {}); + }; + + rewriteArgs = { prefix ? {}, const ? {} }: lib.concatLists ( + (lib.mapAttrsToList (from: to: [ "-p" "${from}:${to}" ]) prefix) ++ + (lib.mapAttrsToList (from: to: [ "-c" "${from}:${to}" ]) const) + ); + + rewrites = depList: lib.fold mergeRewrites {} + (map (dep: dep.tbdRewrites) + (lib.filter (dep: dep ? tbdRewrites) depList)); + in + lib.escapeShellArgs (rewriteArgs (rewrites (builtins.attrValues deps))); + + mkFramework = { name, deps, private ? false }: + let self = stdenv.mkDerivation { + pname = "apple-${lib.optionalString private "private-"}framework-${name}"; + version = MacOSX-SDK.version; + + dontUnpack = true; + + # because we copy files from the system + preferLocalBuild = true; + + disallowedRequisites = [ MacOSX-SDK ]; + + nativeBuildInputs = [ buildPackages.darwin.rewrite-tbd ]; + + installPhase = '' + mkdir -p $out/Library/Frameworks + + cp -r ${MacOSX-SDK}${standardFrameworkPath name private} $out/Library/Frameworks + + # Fix and check tbd re-export references + chmod u+w -R $out + find $out -name '*.tbd' -type f | while read tbd; do + echo "Fixing re-exports in $tbd" + rewrite-tbd \ + -p ${standardFrameworkPath name private}/:$out/Library/Frameworks/${name}.framework/ \ + ${mkDepsRewrites deps} \ + -r ${builtins.storeDir} \ + "$tbd" + done + ''; + + propagatedBuildInputs = builtins.attrValues deps; + + passthru = { + tbdRewrites = { + prefix."${standardFrameworkPath name private}/" = "${self}/Library/Frameworks/${name}.framework/"; + }; + }; + + meta = with lib; { + description = "Apple SDK framework ${name}"; + maintainers = with maintainers; [ copumpkin ]; + platforms = platforms.darwin; + }; + }; + in self; + + framework = name: deps: mkFramework { inherit name deps; private = false; }; + privateFramework = name: deps: mkFramework { inherit name deps; private = true; }; +in rec { + libs = { + xpc = stdenv.mkDerivation { + name = "apple-lib-xpc"; + dontUnpack = true; + + installPhase = '' + mkdir -p $out/include + pushd $out/include >/dev/null + cp -r "${MacOSX-SDK}/usr/include/xpc" $out/include/xpc + cp "${MacOSX-SDK}/usr/include/launch.h" $out/include/launch.h + popd >/dev/null + ''; + }; + + Xplugin = stdenv.mkDerivation { + name = "apple-lib-Xplugin"; + dontUnpack = true; + + propagatedBuildInputs = with frameworks; [ + OpenGL ApplicationServices Carbon IOKit CoreGraphics CoreServices CoreText + ]; + + installPhase = '' + mkdir -p $out/include $out/lib + ln -s "${MacOSX-SDK}/include/Xplugin.h" $out/include/Xplugin.h + cp ${MacOSX-SDK}/usr/lib/libXplugin.1.tbd $out/lib + ln -s libXplugin.1.tbd $out/lib/libXplugin.tbd + ''; + }; + + utmp = stdenv.mkDerivation { + name = "apple-lib-utmp"; + dontUnpack = true; + + installPhase = '' + mkdir -p $out/include + pushd $out/include >/dev/null + ln -s "${MacOSX-SDK}/include/utmp.h" + ln -s "${MacOSX-SDK}/include/utmpx.h" + popd >/dev/null + ''; + }; + + libDER = stdenv.mkDerivation { + name = "apple-lib-libDER"; + dontUnpack = true; + installPhase = '' + mkdir -p $out/include + cp -r ${MacOSX-SDK}/usr/include/libDER $out/include + ''; + }; + }; + + overrides = super: {}; + + bareFrameworks = ( + lib.mapAttrs framework (import ./frameworks.nix { + inherit frameworks libs; + inherit (pkgs.darwin) libobjc Libsystem; + inherit (pkgs.darwin.apple_sdk) libnetwork; + }) + ) // ( + lib.mapAttrs privateFramework (import ./private-frameworks.nix { + inherit frameworks; + }) + ); + + frameworks = bareFrameworks // overrides bareFrameworks; +} -- cgit 1.4.1 From d2c96703397a909fa9108d33a225da87684aea8f Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Fri, 29 Jan 2021 14:39:23 +0900 Subject: darwin: add CoreFoundation to the build when explicitly required --- pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix | 6 +++++- .../os-specific/darwin/apple-sdk-11.0/cf-setup-hook.sh | 6 ++++++ pkgs/top-level/darwin-packages.nix | 18 +++++++++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 pkgs/os-specific/darwin/apple-sdk-11.0/cf-setup-hook.sh (limited to 'pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix') diff --git a/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix b/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix index 8e464b1d4fc..a4242405b41 100644 --- a/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix @@ -129,7 +129,11 @@ in rec { }; }; - overrides = super: {}; + overrides = super: { + CoreFoundation = lib.overrideDerivation super.CoreFoundation (drv: { + setupHook = ./cf-setup-hook.sh; + }); + }; bareFrameworks = ( lib.mapAttrs framework (import ./frameworks.nix { diff --git a/pkgs/os-specific/darwin/apple-sdk-11.0/cf-setup-hook.sh b/pkgs/os-specific/darwin/apple-sdk-11.0/cf-setup-hook.sh new file mode 100644 index 00000000000..3b08c51d196 --- /dev/null +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/cf-setup-hook.sh @@ -0,0 +1,6 @@ +forceLinkCoreFoundationFramework() { + NIX_CFLAGS_COMPILE="-F@out@/Library/Frameworks${NIX_CFLAGS_COMPILE:+ }${NIX_CFLAGS_COMPILE-}" + NIX_LDFLAGS+=" @out@/Library/Frameworks/CoreFoundation.framework/CoreFoundation" +} + +preConfigureHooks+=(forceLinkCoreFoundationFramework) diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix index 5c49aecd2a5..a43cdc80a9d 100644 --- a/pkgs/top-level/darwin-packages.nix +++ b/pkgs/top-level/darwin-packages.nix @@ -162,7 +162,23 @@ impure-cmds // appleSourcePackages // chooseLibs // { # TODO: make swift-corefoundation build with apple_sdk_11_0.Libsystem CF = if useAppleSDKLibs - then apple_sdk.frameworks.CoreFoundation + then + # This attribute (CF) is included in extraBuildInputs in the stdenv. This + # is typically the open source project. When a project refers to + # "CoreFoundation" it has an extra setup hook to force impure system + # CoreFoundation into the link step. + # + # In this branch, we only have a single "CoreFoundation" to choose from. + # To be compatible with the existing convention, we define + # CoreFoundation with the setup hook, and CF as the same package but + # with the setup hook removed. + # + # This may seem unimportant, but without it packages (e.g., bacula) will + # fail with linker errors referring ___CFConstantStringClassReference. + # It's not clear to me why some packages need this extra setup. + lib.overrideDerivation apple_sdk.frameworks.CoreFoundation (drv: { + setupHook = null; + }) else callPackage ../os-specific/darwin/swift-corelibs/corefoundation.nix { }; # As the name says, this is broken, but I don't want to lose it since it's a direction we want to go in -- cgit 1.4.1 From 9e6417f2a4e0431dc1c9cb86bd38161c4f0f53a2 Mon Sep 17 00:00:00 2001 From: Domen Kožar Date: Tue, 1 Jun 2021 11:19:52 +0200 Subject: fix tarball job evaluation for aarch64-darwin --- .../compilers/adoptopenjdk-bin/jdk-darwin-base.nix | 2 ++ .../compilers/llvm/11/clang/default.nix | 5 +++++ pkgs/development/compilers/llvm/11/default.nix | 24 +++++++++++++++++----- .../darwin/apple-sdk-11.0/apple_sdk.nix | 18 ++++++++++++++++ .../darwin/apple-sdk-11.0/private-frameworks.nix | 1 + pkgs/servers/irc/inspircd/default.nix | 2 +- pkgs/tools/networking/acme-client/default.nix | 3 +-- pkgs/top-level/all-packages.nix | 2 +- 8 files changed, 48 insertions(+), 9 deletions(-) (limited to 'pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix') diff --git a/pkgs/development/compilers/adoptopenjdk-bin/jdk-darwin-base.nix b/pkgs/development/compilers/adoptopenjdk-bin/jdk-darwin-base.nix index 71a55c68290..bcd3309fc39 100644 --- a/pkgs/development/compilers/adoptopenjdk-bin/jdk-darwin-base.nix +++ b/pkgs/development/compilers/adoptopenjdk-bin/jdk-darwin-base.nix @@ -6,6 +6,8 @@ , setJavaClassPath }: +assert (stdenv.isDarwin && stdenv.isx86_64); + let cpuName = stdenv.hostPlatform.parsed.cpu.name; result = stdenv.mkDerivation { name = if sourcePerArch.packageType == "jdk" diff --git a/pkgs/development/compilers/llvm/11/clang/default.nix b/pkgs/development/compilers/llvm/11/clang/default.nix index f23394a8b75..74078c1ac66 100644 --- a/pkgs/development/compilers/llvm/11/clang/default.nix +++ b/pkgs/development/compilers/llvm/11/clang/default.nix @@ -2,6 +2,7 @@ , buildLlvmTools , fixDarwinDylibNames , enableManpages ? false +, enablePolly ? false }: let @@ -39,8 +40,12 @@ let ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen" "-DCLANG_TABLEGEN=${buildLlvmTools.libclang.dev}/bin/clang-tblgen" + ] ++ lib.optionals enablePolly [ + "-DWITH_POLLY=ON" + "-DLINK_POLLY_INTO_TOOLS=ON" ]; + patches = [ ./purity.patch # https://reviews.llvm.org/D51899 diff --git a/pkgs/development/compilers/llvm/11/default.nix b/pkgs/development/compilers/llvm/11/default.nix index 3c6d767561e..1aad123fba9 100644 --- a/pkgs/development/compilers/llvm/11/default.nix +++ b/pkgs/development/compilers/llvm/11/default.nix @@ -68,16 +68,30 @@ let # we need to reintroduce `outputUnspecified` to get the expected behavior e.g. of lib.get* llvm = tools.libllvm.out // { outputUnspecified = true; }; + libllvm-polly = callPackage ./llvm { + inherit llvm_meta; + enablePolly = true; + }; + + llvm-polly = tools.libllvm-polly.lib // { outputUnspecified = true; }; + libclang = callPackage ./clang { inherit clang-tools-extra_src llvm_meta; }; clang-unwrapped = tools.libclang.out // { outputUnspecified = true; }; - # disabled until recommonmark supports sphinx 3 - #Llvm-manpages = lowPrio (tools.libllvm.override { - # enableManpages = true; - # python3 = pkgs.python3; # don't use python-boot - #}); + + clang-polly-unwrapped = callPackage ./clang { + inherit llvm_meta; + inherit clang-tools-extra_src; + libllvm = tools.libllvm-polly; + enablePolly = true; + }; + + llvm-manpages = lowPrio (tools.libllvm.override { + enableManpages = true; + python3 = pkgs.python3; # don't use python-boot + }); clang-manpages = lowPrio (tools.libclang.override { enableManpages = true; diff --git a/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix b/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix index a4242405b41..14945380e20 100644 --- a/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix @@ -119,6 +119,20 @@ in rec { ''; }; + sandbox = stdenv.mkDerivation { + name = "apple-lib-sandbox"; + + dontUnpack = true; + dontBuild = true; + + installPhase = '' + mkdir -p $out/include $out/lib + ln -s "${MacOSX-SDK}/usr/include/sandbox.h" $out/include/sandbox.h + cp "${MacOSX-SDK}/usr/lib/libsandbox.1.tbd" $out/lib + ln -s libsandbox.1.tbd $out/lib/libsandbox.tbd + ''; + }; + libDER = stdenv.mkDerivation { name = "apple-lib-libDER"; dontUnpack = true; @@ -133,6 +147,10 @@ in rec { CoreFoundation = lib.overrideDerivation super.CoreFoundation (drv: { setupHook = ./cf-setup-hook.sh; }); + + # This framework doesn't exist in newer SDKs (somewhere around 10.13), but + # there are references to it in nixpkgs. + QuickTime = throw "QuickTime framework not available"; }; bareFrameworks = ( diff --git a/pkgs/os-specific/darwin/apple-sdk-11.0/private-frameworks.nix b/pkgs/os-specific/darwin/apple-sdk-11.0/private-frameworks.nix index 48b373bbd22..bb4300d623a 100644 --- a/pkgs/os-specific/darwin/apple-sdk-11.0/private-frameworks.nix +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/private-frameworks.nix @@ -14,4 +14,5 @@ URLFormatting = {}; SignpostMetrics = {}; PassKitCore = {}; + SkyLight = {}; } diff --git a/pkgs/servers/irc/inspircd/default.nix b/pkgs/servers/irc/inspircd/default.nix index 561151bfa75..59fb4d4e769 100644 --- a/pkgs/servers/irc/inspircd/default.nix +++ b/pkgs/servers/irc/inspircd/default.nix @@ -23,7 +23,7 @@ let # checking, only whitelist licenses used by notable # libcs in nixpkgs (musl and glibc). compatible = lib: drv: - lib.any (lic: lic == drv.meta.license) [ + lib.any (lic: lic == (drv.meta.license or {})) [ lib.licenses.mit # musl lib.licenses.lgpl2Plus # glibc ]; diff --git a/pkgs/tools/networking/acme-client/default.nix b/pkgs/tools/networking/acme-client/default.nix index 728fde4b1e4..f20d4eefb47 100644 --- a/pkgs/tools/networking/acme-client/default.nix +++ b/pkgs/tools/networking/acme-client/default.nix @@ -1,6 +1,5 @@ { lib, stdenv , fetchurl -, apple_sdk ? null , libbsd , libressl , pkg-config @@ -18,7 +17,7 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ pkg-config ]; - buildInputs = [ libbsd libressl ] ++ optional stdenv.isDarwin apple_sdk.sdk; + buildInputs = [ libbsd libressl ]; makeFlags = [ "PREFIX=${placeholder "out"}" ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9f46af73ea7..4ceb48488c7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -786,7 +786,7 @@ in aescrypt = callPackage ../tools/misc/aescrypt { }; - acme-client = callPackage ../tools/networking/acme-client { inherit (darwin) apple_sdk; stdenv = gccStdenv; }; + acme-client = callPackage ../tools/networking/acme-client { stdenv = gccStdenv; }; amass = callPackage ../tools/networking/amass { }; -- cgit 1.4.1 From 430ac9b8303638aef0e45316d469b6312858a74d Mon Sep 17 00:00:00 2001 From: Jonathan Ringer Date: Sun, 6 Jun 2021 12:01:57 -0700 Subject: apple_sdk_11: alias JavaVM Apple removed JavaVM but JavaNativeFoundation seems to be the replacement. Should be safe to substitute usage of JavaVM with JavaNativeFoundation. --- pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix | 3 +++ 1 file changed, 3 insertions(+) (limited to 'pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix') diff --git a/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix b/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix index 14945380e20..6e987c5dfb4 100644 --- a/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix @@ -151,6 +151,9 @@ in rec { # This framework doesn't exist in newer SDKs (somewhere around 10.13), but # there are references to it in nixpkgs. QuickTime = throw "QuickTime framework not available"; + + # Seems to be appropriate given https://developer.apple.com/forums/thread/666686 + JavaVM = super.JavaNativeFoundation; }; bareFrameworks = ( -- cgit 1.4.1