forked from mirrors/nixpkgs
Use requireFile for impure Xcode dependency
This commit is contained in:
parent
427689ec3c
commit
3ab9caa3fa
3 changed files with 47 additions and 50 deletions
|
@ -6,6 +6,7 @@
|
||||||
, wrapBintoolsWith
|
, wrapBintoolsWith
|
||||||
, wrapCCWith
|
, wrapCCWith
|
||||||
, buildIosSdk, targetIosSdkPkgs
|
, buildIosSdk, targetIosSdkPkgs
|
||||||
|
, xcode
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
@ -21,11 +22,10 @@ iosPlatformArch = { parsed, ... }: {
|
||||||
in
|
in
|
||||||
|
|
||||||
rec {
|
rec {
|
||||||
# TODO(kmicklas): Make a pure version of this for each supported SDK version.
|
|
||||||
sdk = rec {
|
sdk = rec {
|
||||||
name = "ios-sdk";
|
name = "ios-sdk";
|
||||||
type = "derivation";
|
type = "derivation";
|
||||||
outPath = "/Applications/Xcode.app/Contents/Developer/Platforms/iPhone${sdkType}.platform/Developer/SDKs/iPhone${sdkType}${version}.sdk";
|
outPath = xcode + "/Contents/Developer/Platforms/iPhone${sdkType}.platform/Developer/SDKs/iPhone${sdkType}${version}.sdk";
|
||||||
|
|
||||||
sdkType = if targetPlatform.isiPhoneSimulator then "Simulator" else "OS";
|
sdkType = if targetPlatform.isiPhoneSimulator then "Simulator" else "OS";
|
||||||
version = targetPlatform.sdkVer;
|
version = targetPlatform.sdkVer;
|
||||||
|
|
|
@ -1,52 +1,48 @@
|
||||||
{ stdenv, requireFile, xpwn }:
|
{ stdenv, requireFile }:
|
||||||
|
|
||||||
with stdenv.lib;
|
let requireXcode = version: sha256:
|
||||||
|
let
|
||||||
|
xip = "Xcode_" + version + ".xip";
|
||||||
|
# TODO(alexfmpe): Find out how to validate the .xip signature in Linux
|
||||||
|
unxip = if stdenv.isDarwin
|
||||||
|
then ''
|
||||||
|
open -W ${xip}
|
||||||
|
rm -rf ${xip}
|
||||||
|
''
|
||||||
|
else ''
|
||||||
|
xar -xf ${xip}
|
||||||
|
rm -rf ${xip}
|
||||||
|
pbzx -n Content | cpio -i
|
||||||
|
rm Content Metadata
|
||||||
|
'';
|
||||||
|
app = requireFile rec {
|
||||||
|
name = "Xcode.app";
|
||||||
|
url = "https://download.developer.apple.com/Developer_Tools/Xcode_" + version + "/" + xip;
|
||||||
|
hashMode = "recursive";
|
||||||
|
inherit sha256;
|
||||||
|
message = ''
|
||||||
|
Unfortunately, we cannot download ${name} automatically.
|
||||||
|
Please go to ${url}
|
||||||
|
to download it yourself, and add it to the Nix store by running the following commands."
|
||||||
|
Note: download (~ 5GB), extraction and storing of Xcode will take a while
|
||||||
|
|
||||||
let
|
${unxip}
|
||||||
osxVersion = "10.9";
|
nix-store --add-fixed --recursive sha256 Xcode.app
|
||||||
in stdenv.mkDerivation rec {
|
rm -rf Xcode.app
|
||||||
name = "xcode-${version}";
|
'';
|
||||||
version = "5.1";
|
};
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://developer.apple.com/downloads/;
|
||||||
|
description = "Apple's XCode SDK";
|
||||||
|
license = licenses.unfree;
|
||||||
|
platforms = platforms.darwin ++ platforms.linux;
|
||||||
|
};
|
||||||
|
|
||||||
src = requireFile {
|
in app.overrideAttrs ( oldAttrs: oldAttrs // { inherit meta; });
|
||||||
name = "xcode_${version}.dmg";
|
|
||||||
url = meta.homepage;
|
|
||||||
sha256 = "70bb550cc14eca80b9825f4ae9bfbf7f076bb75777311be428bc30a7eb7a6f7e";
|
|
||||||
};
|
|
||||||
|
|
||||||
phases = [ "unpackPhase" "patchPhase" "installPhase" "fixupPhase" ];
|
in {
|
||||||
outputs = [ "out" "toolchain" ];
|
xcode_8_1 = requireXcode "8.1" "18xjvfipwzia66gm3r9p770xdd4r375vak7chw5vgqnv9yyjiq2n";
|
||||||
|
xcode_8_2 = requireXcode "8.2" "13nd1zsfqcp9hwp15hndr0rsbb8rgprrz7zr2ablj4697qca06m2";
|
||||||
|
xcode_9_1 = requireXcode "9.1" "0ab1403wy84ys3yn26fj78cazhpnslmh3nzzp1wxib3mr1afjvic";
|
||||||
unpackCmd = let
|
xcode_9_2 = requireXcode "9.2" "1bgfgdp266cbbqf2axcflz92frzvhi0qw0jdkcw6r85kdpc8dj4c";
|
||||||
basePath = "Xcode.app/Contents/Developer/Platforms/MacOSX.platform";
|
|
||||||
sdkPath = "${basePath}/Developer/SDKs";
|
|
||||||
in ''
|
|
||||||
${xpwn}/bin/dmg extract "$curSrc" main.hfs > /dev/null
|
|
||||||
${xpwn}/bin/hfsplus main.hfs extractall "${sdkPath}" > /dev/null
|
|
||||||
'';
|
|
||||||
|
|
||||||
setSourceRoot = "sourceRoot=MacOSX${osxVersion}.sdk";
|
|
||||||
|
|
||||||
patches = optional (osxVersion == "10.9") ./gcc-fix-enum-attributes.patch;
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p "$out/share/sysroot"
|
|
||||||
cp -a * "$out/share/sysroot/"
|
|
||||||
ln -s "$out/share/sysroot/usr/lib" "$out/lib"
|
|
||||||
ln -s "$out/share/sysroot/usr/include" "$out/include"
|
|
||||||
|
|
||||||
mkdir -p "$toolchain"
|
|
||||||
pushd "$toolchain"
|
|
||||||
${xpwn}/bin/hfsplus "$(dirs +1)/../main.hfs" extractall \
|
|
||||||
Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr \
|
|
||||||
> /dev/null
|
|
||||||
popd
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
homepage = https://developer.apple.com/downloads/;
|
|
||||||
description = "Apple's XCode SDK";
|
|
||||||
license = stdenv.lib.licenses.unfree;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,7 @@ in
|
||||||
iosSdkPkgs = darwin.callPackage ../os-specific/darwin/ios-sdk-pkgs {
|
iosSdkPkgs = darwin.callPackage ../os-specific/darwin/ios-sdk-pkgs {
|
||||||
buildIosSdk = buildPackages.darwin.iosSdkPkgs.sdk;
|
buildIosSdk = buildPackages.darwin.iosSdkPkgs.sdk;
|
||||||
targetIosSdkPkgs = targetPackages.darwin.iosSdkPkgs;
|
targetIosSdkPkgs = targetPackages.darwin.iosSdkPkgs;
|
||||||
|
xcode = darwin.xcode_8_2;
|
||||||
inherit (pkgs.llvmPackages) clang-unwrapped;
|
inherit (pkgs.llvmPackages) clang-unwrapped;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -68,7 +69,7 @@ in
|
||||||
|
|
||||||
usr-include = callPackage ../os-specific/darwin/usr-include { };
|
usr-include = callPackage ../os-specific/darwin/usr-include { };
|
||||||
|
|
||||||
xcode = callPackage ../os-specific/darwin/xcode { };
|
inherit (callPackages ../os-specific/darwin/xcode { } ) xcode_8_1 xcode_8_2 xcode_9_1 xcode_9_2;
|
||||||
|
|
||||||
CoreSymbolication = callPackage ../os-specific/darwin/CoreSymbolication { };
|
CoreSymbolication = callPackage ../os-specific/darwin/CoreSymbolication { };
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue