Skip to content

Commit

Permalink
osx_private_sdk: reduce output size and remove it from runtime closures
Browse files Browse the repository at this point in the history
  • Loading branch information
domenkozar committed Oct 30, 2017
1 parent 0e4be9e commit 92382e8
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 30 deletions.
Expand Up @@ -6,7 +6,7 @@ appleDerivation {
libsecurity_cdsa_plugin
];
patchPhase = ''
cp ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/usr/local/include/sandbox_private.h .
cp ${osx_private_sdk}/include/sandbox_private.h .
substituteInPlace sandbox_private.h --replace '<sandbox.h>' '"${apple_sdk.sdk}/include/sandbox.h"'
substituteInPlace lib/AtomicFile.cpp --replace '<sandbox.h>' '"sandbox_private.h"'
'';
Expand Down
Expand Up @@ -10,7 +10,7 @@ name: version: sha256: args: let

patchPhase = ''
# allows including <Security/some-private-header.h>
ln -s ${pkgs.darwin.osx_private_sdk}/PrivateSDK10.9.sparse.sdk/System/Library/Frameworks/Security.framework/Versions/A/PrivateHeaders Security
ln -s ${pkgs.darwin.osx_private_sdk}/include/SecurityPrivateHeaders Security
grep -Rl MacErrors.h . | while read file; do
substituteInPlace "''$file" --replace \
Expand Down
Expand Up @@ -18,9 +18,9 @@ appleDerivation {
substituteInPlace lib/SecCertificate.cpp --replace '#include <Security/SecCertificatePriv.h>' ""
cp ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/usr/include/xpc/private.h xpc
cp ${osx_private_sdk}/include/xpc/private.h xpc
cp ${apple_sdk.sdk}/include/xpc/*.h xpc
cp ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/usr/local/include/sandbox_private.h lib/sandbox.h
cp ${osx_private_sdk}/include/sandbox_private.h lib/sandbox.h
substituteInPlace lib/SecItemPriv.h \
--replace "extern CFTypeRef kSecAttrAccessGroup" "extern const CFTypeRef kSecAttrAccessGroup" \
Expand Down
Expand Up @@ -18,8 +18,8 @@ appleDerivation {
'<IOKit/pwr_mgt/IOPMLibPrivate.h>' \
'"${IOKit}/Library/Frameworks/IOKit.framework/Headers/pwr_mgt/IOPMLibPrivate.h"'
cp ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/usr/include/security_utilities/utilities_dtrace.h lib
cp -R ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/usr/local/include/bsm lib
substituteInPlace lib/dtrace.mk --replace "/usr/sbin/dtrace" "${dtrace}/bin/dtrace"
cp -R ${osx_private_sdk}/include/bsm lib
'' + stdenv.lib.optionalString (!stdenv.cc.nativeLibc) ''
substituteInPlace lib/vproc++.cpp --replace /usr/local/include/vproc_priv.h ${stdenv.libc}/include/vproc_priv.h
'';
Expand Down
23 changes: 5 additions & 18 deletions pkgs/os-specific/darwin/cf-private/default.nix
@@ -1,31 +1,18 @@
{ stdenv, osx_private_sdk, CF }:

let
headers = [
"CFAvailability.h"
"CFAttributedString.h"
"CFFileDescriptor.h"
"CFFileSecurity.h"
"CFNotificationCenter.h"
"CFStringTokenizer.h"
"CFURLEnumerator.h"
"CFURL.h"
"CoreFoundation.h"
];

in stdenv.mkDerivation {
stdenv.mkDerivation {
name = "${CF.name}-private";
phases = [ "installPhase" "fixupPhase" ];
installPhase = ''
dest=$out/Library/Frameworks/CoreFoundation.framework/Headers
mkdir -p $dest
pushd $dest
for file in ${CF}/Library/Frameworks/CoreFoundation.framework/Headers/*; do
ln -s $file
done
cp -R ${osx_private_sdk}/CocoaFoundationHeaders/* $dest/
for file in ${CF}/Library/Frameworks/CoreFoundation.framework/Headers/*; do
cp $file .
done
popd
install -m 0644 ${osx_private_sdk}/PrivateSDK10.10.sparse.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/{${stdenv.lib.concatStringsSep "," headers}} $dest
'';

setupHook = ./setup-hook.sh;
Expand Down
25 changes: 20 additions & 5 deletions pkgs/os-specific/darwin/osx-private-sdk/default.nix
@@ -1,8 +1,23 @@
{ stdenv, fetchFromGitHub }:

fetchFromGitHub {
owner = "samdmarshall";
repo = "OSXPrivateSDK";
rev = "f4d52b60e86b496abfaffa119a7d299562d99783";
sha256 = "0bv0884yxpvk2ishxj8gdy1w6wb0gwfq55q5qjp0s8z0z7f63zqh";
stdenv.mkDerivation {
name = "OSXPrivateSDK";

src = fetchFromGitHub {
owner = "samdmarshall";
repo = "OSXPrivateSDK";
rev = "f4d52b60e86b496abfaffa119a7d299562d99783";
sha256 = "0bv0884yxpvk2ishxj8gdy1w6wb0gwfq55q5qjp0s8z0z7f63zqh";
};

# NOTE: we install only headers that are really needed to keep closure sie
# reasonable.
installPhase = ''
mkdir -p $out/include
cp PrivateSDK10.10.sparse.sdk/usr/local/include/sandbox/private.h $out/include/sandbox_private.h
cp -R PrivateSDK10.10.sparse.sdk/System/Library/Frameworks/Security.framework/Versions/A/PrivateHeaders $out/include/SecurityPrivateHeaders
cp -R PrivateSDK10.10.sparse.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers $out/include/CoreFoundationPrivateHeaders
cp -R PrivateSDK10.10.sparse.sdk/usr/include/xpc $out/include/
cp -R PrivateSDK10.10.sparse.sdk/usr/local/include/bsm $out/include/bsm
'';
}
2 changes: 1 addition & 1 deletion pkgs/os-specific/darwin/security-tool/default.nix
Expand Up @@ -17,7 +17,7 @@ stdenv.mkDerivation rec {

patchPhase = ''
# copied from libsecurity_generic
ln -s ${osx_private_sdk}/PrivateSDK10.9.sparse.sdk/System/Library/Frameworks/Security.framework/Versions/A/PrivateHeaders Security
cp -R ${osx_private_sdk}/include/SecurityPrivateHeaders Security
substituteInPlace cmsutil.c --replace \
'<CoreServices/../Frameworks/CarbonCore.framework/Headers/MacErrors.h>' \
Expand Down

0 comments on commit 92382e8

Please sign in to comment.