diff options
Diffstat (limited to 'nixpkgs/pkgs/os-specific/darwin')
24 files changed, 675 insertions, 317 deletions
diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-sdk/cf-setup-hook.sh b/nixpkgs/pkgs/os-specific/darwin/apple-sdk/cf-setup-hook.sh index 86c241cd0f56..bbf9625e6557 100644 --- a/nixpkgs/pkgs/os-specific/darwin/apple-sdk/cf-setup-hook.sh +++ b/nixpkgs/pkgs/os-specific/darwin/apple-sdk/cf-setup-hook.sh @@ -3,7 +3,7 @@ linkSystemCoreFoundationFramework() { # gross! many symbols (such as _OBJC_CLASS_$_NSArray) are defined in system CF, but not # in the opensource release # if the package needs private headers, we assume they also want to link with system CF - NIX_LDFLAGS+=" /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation" + NIX_LDFLAGS+=" @out@/Library/Frameworks/CoreFoundation.framework/CoreFoundation" } preConfigureHooks+=(linkSystemCoreFoundationFramework) diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-sdk/default.nix b/nixpkgs/pkgs/os-specific/darwin/apple-sdk/default.nix index 89c13d0b92d7..97523cf15a8d 100644 --- a/nixpkgs/pkgs/os-specific/darwin/apple-sdk/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/apple-sdk/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, xar, cpio, pkgs, python3, pbzx, lib }: +{ stdenv, fetchurl, xar, cpio, pkgs, python3, pbzx, lib, darwin-stubs, print-reexports }: let version = "10.12"; in @@ -42,7 +42,12 @@ let rmdir System pushd lib - ln -s -L /usr/lib/libcups*.dylib . + cp ${darwin-stubs}/usr/lib/libcups*.tbd . + ln -s libcups.2.tbd libcups.tbd + ln -s libcupscgi.1.tbd libcupscgi.tbd + ln -s libcupsimage.2.tbd libcupsimage.tbd + ln -s libcupsmime.1.tbd libcupsmime.tbd + ln -s libcupsppdc.1.tbd libcupsppdc.tbd popd ''; @@ -53,6 +58,12 @@ let }; }; + mkFrameworkSubs = name: deps: + let + deps' = deps // { "${name}" = placeholder "out"; }; + substArgs = lib.concatMap (x: [ "--subst-var-by" x deps'."${x}" ]) (lib.attrNames deps'); + in lib.escapeShellArgs substArgs; + framework = name: deps: stdenv.mkDerivation { name = "apple-framework-${name}"; @@ -63,11 +74,14 @@ let disallowedRequisites = [ sdk ]; + nativeBuildInputs = [ print-reexports ]; + + extraTBDFiles = []; + installPhase = '' linkFramework() { local path="$1" local nested_path="$1" - local dest="$out/Library/Frameworks/$path" if [ "$path" == "JavaNativeFoundation.framework" ]; then local nested_path="JavaVM.framework/Versions/A/Frameworks/JavaNativeFoundation.framework" fi @@ -80,21 +94,29 @@ let current=A fi - mkdir -p "$dest" - pushd "$dest" >/dev/null + local dest="$out/Library/Frameworks/$path" - # Keep track of if this is a child or a child rescue as with - # ApplicationServices in the 10.9 SDK - local isChild=0 + mkdir -p "$dest/Versions/$current" + pushd "$dest/Versions/$current" >/dev/null if [ -d "${sdk.out}/Library/Frameworks/$nested_path/Versions/$current/Headers" ]; then - isChild=1 cp -R "${sdk.out}/Library/Frameworks/$nested_path/Versions/$current/Headers" . elif [ -d "${sdk.out}/Library/Frameworks/$name.framework/Versions/$current/Headers" ]; then current="$(readlink "/System/Library/Frameworks/$name.framework/Versions/Current")" cp -R "${sdk.out}/Library/Frameworks/$name.framework/Versions/$current/Headers" . fi - ln -s -L "/System/Library/Frameworks/$nested_path/Versions/$current/$name" + + local tbd_source=${darwin-stubs}/System/Library/Frameworks/$nested_path/Versions/$current + if [ "${name}" != "Kernel" ]; then + # The Kernel.framework has headers but no actual library component. + cp -v $tbd_source/*.tbd . + fi + + if [ -d "$tbd_source/Libraries" ]; then + mkdir Libraries + cp -v $tbd_source/Libraries/*.tbd Libraries/ + fi + ln -s -L "/System/Library/Frameworks/$nested_path/Versions/$current/Resources" if [ -f "/System/Library/Frameworks/$nested_path/module.map" ]; then @@ -110,17 +132,45 @@ let linkFramework "$childpath" done - if [ -d "$dest/Versions/$current" ]; then - mv $dest/Versions/$current/* . - fi + pushd ../.. >/dev/null + ln -s "$current" Versions/Current + ln -s Versions/Current/* . + popd >/dev/null popd >/dev/null } linkFramework "${name}.framework" + + # linkFramework is recursive, the rest of the processing is not. + + local tbd_source=${darwin-stubs}/System/Library/Frameworks/${name}.framework + for tbd in $extraTBDFiles; do + local tbd_dest_dir=$out/Library/Frameworks/${name}.framework/$(dirname "$tbd") + mkdir -p "$tbd_dest_dir" + cp -v "$tbd_source/$tbd" "$tbd_dest_dir" + done + + # Fix and check tbd re-export references + find $out -name '*.tbd' | while read tbd; do + echo "Fixing re-exports in $tbd" + substituteInPlace "$tbd" ${mkFrameworkSubs name deps} + + echo "Checking re-exports in $tbd" + print-reexports "$tbd" | while read target; do + local expected="''${target%.dylib}.tbd" + if ! [ -e "$expected" ]; then + echo -e "Re-export missing:\n\t$target\n\t(expected $expected)" + echo -e "While processing\n\t$tbd" + exit 1 + else + echo "Re-exported target $target ok" + fi + done + done ''; - propagatedBuildInputs = deps; + propagatedBuildInputs = builtins.attrValues deps; # don't use pure CF for dylibs that depend on frameworks setupHook = ./framework-setup-hook.sh; @@ -139,6 +189,17 @@ let platforms = platforms.darwin; }; }; + + tbdOnlyFramework = name: { private ? true }: stdenv.mkDerivation { + name = "apple-framework-${name}"; + dontUnpack = true; + installPhase = '' + mkdir -p $out/Library/Frameworks/ + cp -r ${darwin-stubs}/System/Library/${lib.optionalString private "Private"}Frameworks/${name}.framework \ + $out/Library/Frameworks + # NOTE there's no re-export checking here, this is probably wrong + ''; + }; in rec { libs = { xpc = stdenv.mkDerivation { @@ -168,7 +229,8 @@ in rec { installPhase = '' mkdir -p $out/include $out/lib ln -s "${lib.getDev sdk}/include/Xplugin.h" $out/include/Xplugin.h - ln -s "/usr/lib/libXplugin.1.dylib" $out/lib/libXplugin.dylib + cp ${darwin-stubs}/usr/lib/libXplugin.1.tbd $out/lib + ln -s libXplugin.1.tbd $out/lib/libXplugin.tbd ''; }; @@ -193,6 +255,10 @@ in rec { ]; }); + Carbon = stdenv.lib.overrideDerivation super.Carbon (drv: { + extraTBDFiles = [ "Versions/A/Frameworks/HTMLRendering.framework/Versions/A/HTMLRendering.tbd" ]; + }); + CoreFoundation = stdenv.lib.overrideDerivation super.CoreFoundation (drv: { setupHook = ./cf-setup-hook.sh; }); @@ -210,6 +276,10 @@ in rec { setupHook = ./private-frameworks-setup-hook.sh; }); + IMServicePlugIn = stdenv.lib.overrideDerivation super.IMServicePlugIn (drv: { + extraTBDFiles = [ "Versions/A/Frameworks/IMServicePlugInSupport.framework/Versions/A/IMServicePlugInSupport.tbd" ]; + }); + Security = stdenv.lib.overrideDerivation super.Security (drv: { setupHook = ./security-setup-hook.sh; }); @@ -228,7 +298,14 @@ in rec { cp ${lib.getDev sdk}/include/simd/*.h $out/include/simd/ ''; }); - }; + + WebKit = stdenv.lib.overrideDerivation super.WebKit (drv: { + extraTBDFiles = [ + "Versions/A/Frameworks/WebCore.framework/Versions/A/WebCore.tbd" + "Versions/A/Frameworks/WebKitLegacy.framework/Versions/A/WebKitLegacy.tbd" + ]; + }); + } // lib.genAttrs [ "ContactsPersistence" "UIFoundation" "GameCenter" ] (x: tbdOnlyFramework x {}); bareFrameworks = stdenv.lib.mapAttrs framework (import ./frameworks.nix { inherit frameworks libs; diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-sdk/frameworks.nix b/nixpkgs/pkgs/os-specific/darwin/apple-sdk/frameworks.nix index 02e2421f3472..d3b00e6a6a68 100644 --- a/nixpkgs/pkgs/os-specific/darwin/apple-sdk/frameworks.nix +++ b/nixpkgs/pkgs/os-specific/darwin/apple-sdk/frameworks.nix @@ -5,123 +5,125 @@ { frameworks, libs, libobjc, }: with frameworks; with libs; { - AGL = [ Carbon OpenGL ]; - AVFoundation = [ ApplicationServices CoreGraphics ]; - AVKit = []; - Accounts = []; - AddressBook = [ Carbon ]; - AppKit = [ AudioToolbox AudioUnit Foundation QuartzCore ]; - AppKitScripting = []; - AppleScriptKit = []; - AppleScriptObjC = []; - AudioToolbox = [ CoreAudio CoreMIDI ]; - AudioUnit = [ AudioToolbox Carbon CoreAudio ]; - AudioVideoBridging = [ Foundation ]; - Automator = []; - CFNetwork = []; - CalendarStore = []; - Cocoa = [ AppKit ]; - Collaboration = []; + AGL = { inherit Carbon OpenGL; }; + AVFoundation = { inherit ApplicationServices CoreGraphics CoreMedia MediaToolbox; }; + AVKit = {}; + Accounts = {}; + AddressBook = { inherit libobjc Carbon ContactsPersistence; }; + AppKit = { inherit ApplicationServices AudioToolbox AudioUnit Foundation QuartzCore UIFoundation; }; + AppKitScripting = {}; + AppleScriptKit = {}; + AppleScriptObjC = {}; + AudioToolbox = { inherit CoreAudio CoreMIDI; }; + AudioUnit = { inherit AudioToolbox Carbon CoreAudio; }; + AudioVideoBridging = { inherit Foundation; }; + Automator = {}; + CFNetwork = {}; + CalendarStore = {}; + Cocoa = { inherit AppKit CoreData; }; + Collaboration = {}; # Impure version of CoreFoundation, this should not be used unless another # framework includes headers that are not available in the pure version. - CoreFoundation = []; - CoreAudio = [ IOKit ]; - CoreAudioKit = [ AudioUnit ]; - CoreData = []; - CoreGraphics = [ Accelerate IOKit IOSurface SystemConfiguration ]; - CoreImage = []; - CoreLocation = []; - CoreMIDI = []; - CoreMIDIServer = []; - CoreMedia = [ ApplicationServices AudioToolbox AudioUnit CoreAudio CoreGraphics CoreVideo ]; - CoreMediaIO = [ CoreMedia ]; - CoreText = [ CoreGraphics ]; - CoreVideo = [ ApplicationServices CoreGraphics IOSurface OpenGL ]; - CoreWLAN = [ SecurityFoundation ]; - DVDPlayback = []; - DirectoryService = []; - DiscRecording = [ CoreServices IOKit ]; - DiscRecordingUI = []; - DiskArbitration = [ IOKit ]; - EventKit = []; - ExceptionHandling = []; - FWAUserLib = []; - ForceFeedback = [ IOKit ]; - Foundation = [ libobjc CoreFoundation Security ApplicationServices SystemConfiguration ]; - GLKit = []; - GLUT = [ OpenGL ]; - GSS = []; - GameController = []; - GameKit = [ Foundation ]; - Hypervisor = []; - ICADevices = [ Carbon IOBluetooth ]; - IMServicePlugIn = []; - IOBluetoothUI = [ IOBluetooth ]; - IOKit = []; - IOSurface = [ IOKit xpc ]; - ImageCaptureCore = []; - ImageIO = [ CoreGraphics ]; - InputMethodKit = [ Carbon ]; - InstallerPlugins = []; - InstantMessage = []; - JavaFrameEmbedding = []; - JavaNativeFoundation = []; - JavaRuntimeSupport = []; - JavaScriptCore = []; - Kerberos = []; - Kernel = [ IOKit ]; - LDAP = []; - LatentSemanticMapping = [ Carbon ]; - LocalAuthentication = []; - MapKit = []; - MediaAccessibility = [ CoreGraphics CoreText QuartzCore ]; - MediaPlayer = []; - MediaToolbox = [ AudioToolbox AudioUnit CoreMedia ]; - Metal = []; - MetalKit = [ ModelIO Metal ]; - ModelIO = [ ]; - NetFS = []; - OSAKit = [ Carbon ]; - OpenAL = []; - OpenCL = [ IOSurface OpenGL ]; - OpenGL = []; - PCSC = [ CoreData ]; - PreferencePanes = []; - PubSub = []; - QTKit = [ CoreMediaIO CoreMedia MediaToolbox QuickTime VideoToolbox ]; - QuickLook = [ ApplicationServices ]; - SceneKit = []; - ScreenSaver = []; - Scripting = []; - ScriptingBridge = []; - Security = [ IOKit ]; - SecurityFoundation = []; - SecurityInterface = [ Security ]; - ServiceManagement = [ Security ]; - Social = []; - SpriteKit = []; - StoreKit = []; - SyncServices = []; - SystemConfiguration = [ Security ]; - TWAIN = [ Carbon ]; - Tcl = []; - VideoDecodeAcceleration = [ CoreVideo ]; - VideoToolbox = [ CoreMedia CoreVideo ]; - WebKit = [ ApplicationServices Carbon JavaScriptCore OpenGL ]; + CoreFoundation = {}; + CoreAudio = { inherit IOKit; }; + CoreAudioKit = { inherit AudioUnit; }; + CoreData = {}; + CoreGraphics = { inherit Accelerate IOKit IOSurface SystemConfiguration; }; + CoreImage = {}; + CoreLocation = {}; + CoreMIDI = {}; + CoreMIDIServer = { inherit CoreMIDI; }; + CoreMedia = { inherit ApplicationServices AudioToolbox AudioUnit CoreAudio CoreGraphics CoreVideo; }; + CoreMediaIO = { inherit CoreMedia; }; + CoreText = { inherit CoreGraphics; }; + CoreVideo = { inherit ApplicationServices CoreGraphics IOSurface OpenGL; }; + CoreWLAN = { inherit SecurityFoundation; }; + DVDPlayback = {}; + DirectoryService = {}; + DiscRecording = { inherit libobjc CoreServices IOKit; }; + DiscRecordingUI = {}; + DiskArbitration = { inherit IOKit; }; + EventKit = {}; + ExceptionHandling = {}; + FWAUserLib = {}; + ForceFeedback = { inherit IOKit; }; + Foundation = { inherit libobjc CoreFoundation Security ApplicationServices SystemConfiguration; }; + GLKit = {}; + GLUT = { inherit OpenGL; }; + GSS = {}; + GameCenter = {}; + GameController = {}; + GameKit = { inherit Cocoa Foundation GameCenter GameController GameplayKit Metal MetalKit ModelIO SceneKit SpriteKit; }; + GameplayKit = {}; + Hypervisor = {}; + ICADevices = { inherit libobjc Carbon IOBluetooth; }; + IMServicePlugIn = {}; + IOBluetoothUI = { inherit IOBluetooth; }; + IOKit = {}; + IOSurface = { inherit IOKit xpc; }; + ImageCaptureCore = {}; + ImageIO = { inherit CoreGraphics; }; + InputMethodKit = { inherit Carbon; }; + InstallerPlugins = {}; + InstantMessage = {}; + JavaFrameEmbedding = {}; + JavaNativeFoundation = {}; + JavaRuntimeSupport = {}; + JavaScriptCore = { inherit libobjc; }; + Kerberos = {}; + Kernel = { inherit IOKit; }; + LDAP = {}; + LatentSemanticMapping = { inherit Carbon; }; + LocalAuthentication = {}; + MapKit = {}; + MediaAccessibility = { inherit CoreGraphics CoreText QuartzCore; }; + MediaPlayer = {}; + MediaToolbox = { inherit AudioToolbox AudioUnit CoreMedia; }; + Metal = {}; + MetalKit = { inherit ModelIO Metal; }; + ModelIO = {}; + NetFS = {}; + OSAKit = { inherit Carbon; }; + OpenAL = {}; + OpenCL = { inherit IOSurface OpenGL; }; + OpenGL = {}; + PCSC = { inherit CoreData; }; + PreferencePanes = {}; + PubSub = {}; + QTKit = { inherit CoreMediaIO CoreMedia MediaToolbox QuickTime VideoToolbox; }; + QuickLook = { inherit ApplicationServices; }; + SceneKit = {}; + ScreenSaver = {}; + Scripting = {}; + ScriptingBridge = {}; + Security = { inherit IOKit; }; + SecurityFoundation = {}; + SecurityInterface = { inherit Security SecurityFoundation; }; + ServiceManagement = { inherit Security; }; + Social = {}; + SpriteKit = {}; + StoreKit = {}; + SyncServices = {}; + SystemConfiguration = { inherit Security; }; + TWAIN = { inherit Carbon; }; + Tcl = {}; + VideoDecodeAcceleration = { inherit CoreVideo; }; + VideoToolbox = { inherit CoreMedia CoreVideo; }; + WebKit = { inherit libobjc ApplicationServices Carbon JavaScriptCore OpenGL; }; # Umbrellas - Accelerate = [ CoreWLAN IOBluetooth ]; - ApplicationServices = [ CoreServices CoreText ImageIO ]; - Carbon = [ ApplicationServices CoreServices Foundation IOKit Security QuartzCore ]; - CoreBluetooth = []; + Accelerate = { inherit CoreWLAN IOBluetooth; }; + ApplicationServices = { inherit CoreGraphics CoreServices CoreText ImageIO; }; + Carbon = { inherit libobjc ApplicationServices CoreServices Foundation IOKit Security QuartzCore; }; + CoreBluetooth = {}; # TODO: figure out which part of the umbrella depends on CoreFoundation and move it there. - CoreServices = [ CFNetwork CoreFoundation CoreAudio CoreData DiskArbitration Security NetFS OpenDirectory ServiceManagement ]; - IOBluetooth = [ IOKit ]; - JavaVM = []; - OpenDirectory = []; - Quartz = [ QuickLook QTKit ]; - QuartzCore = [ ApplicationServices CoreVideo OpenCL CoreImage Metal ]; - QuickTime = [ ApplicationServices AudioUnit Carbon CoreAudio CoreServices OpenGL QuartzCore ]; + CoreServices = { inherit CFNetwork CoreFoundation CoreAudio CoreData DiskArbitration Security NetFS OpenDirectory ServiceManagement; }; + IOBluetooth = { inherit CoreBluetooth IOKit; }; + JavaVM = {}; + OpenDirectory = {}; + Quartz = { inherit QuartzCore QuickLook QTKit; }; + QuartzCore = { inherit libobjc ApplicationServices CoreVideo OpenCL CoreImage Metal; }; + QuickTime = { inherit ApplicationServices AudioUnit Carbon CoreAudio CoreServices OpenGL QuartzCore; }; - vmnet = []; + vmnet = {}; } diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-sdk/print-reexports/default.nix b/nixpkgs/pkgs/os-specific/darwin/apple-sdk/print-reexports/default.nix new file mode 100644 index 000000000000..85e11096f06a --- /dev/null +++ b/nixpkgs/pkgs/os-specific/darwin/apple-sdk/print-reexports/default.nix @@ -0,0 +1,17 @@ +{ stdenv, libyaml }: + +stdenv.mkDerivation { + name = "print-reexports"; + src = stdenv.lib.sourceFilesBySuffices ./. [".c"]; + + buildInputs = [ libyaml ]; + + buildPhase = '' + $CC -lyaml -o $name main.c + ''; + + installPhase = '' + mkdir -p $out/bin + mv $name $out/bin + ''; +} diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-sdk/print-reexports/main.c b/nixpkgs/pkgs/os-specific/darwin/apple-sdk/print-reexports/main.c new file mode 100644 index 000000000000..df46e3f18e89 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/darwin/apple-sdk/print-reexports/main.c @@ -0,0 +1,148 @@ +/** + * Display the list of re-exported libraries from a TAPI v2 .tbd file, one per + * line on stdout. + * + * TAPI files are the equivalent of library files for the purposes of linking. + * Like dylib files, they may re-export other libraries. In upstream usage + * these refer to the absolute paths of dylibs, and are resolved to .tbd files + * in combination with the syslibroot option. In nixpkgs, the .tbd files refer + * directly to other .tbd files without a syslibroot. Note that each .tbd file + * contains an install name, so the re-exported path does not affect the final + * result. + * + * In nixpkgs each framework is a distinct store path and some frameworks + * re-export other frameworks. The re-exported names are rewritten to refer to + * the store paths of dependencies via textual substitution. This utility is + * used to emit every file that is listed as a re-exported library, which + * allows the framework builder to verify their existence. + */ + +#include <stdio.h> +#include <sys/errno.h> +#include <yaml.h> + +static yaml_node_t *get_mapping_entry(yaml_document_t *document, yaml_node_t *mapping, const char *name) { + if (!mapping) { + fprintf(stderr, "get_mapping_entry: mapping is null\n"); + return NULL; + } + + for ( + yaml_node_pair_t *pair = mapping->data.mapping.pairs.start; + pair < mapping->data.mapping.pairs.top; + ++pair + ) { + yaml_node_t *key = yaml_document_get_node(document, pair->key); + + if (!key) { + fprintf(stderr, "get_mapping_entry: key (%i) is null\n", pair->key); + return NULL; + } + + if (key->type != YAML_SCALAR_NODE) { + fprintf(stderr, "get_mapping_entry: key is not a scalar\n"); + return NULL; + } + + if (strncmp((const char *)key->data.scalar.value, name, key->data.scalar.length) != 0) { + continue; + } + + return yaml_document_get_node(document, pair->value); + } + + return NULL; +} + +static int emit_reexports(yaml_document_t *document) { + yaml_node_t *root = yaml_document_get_root_node(document); + + yaml_node_t *exports = get_mapping_entry(document, root, "exports"); + + if (!exports) { + fprintf(stderr, "emit_reexports: no exports found\n"); + return 0; + } + + if (exports->type != YAML_SEQUENCE_NODE) { + fprintf(stderr, "emit_reexports, value is not a sequence\n"); + return 0; + } + + for ( + yaml_node_item_t *export = exports->data.sequence.items.start; + export < exports->data.sequence.items.top; + ++export + ) { + yaml_node_t *export_node = yaml_document_get_node(document, *export); + + yaml_node_t *reexports = get_mapping_entry(document, export_node, "re-exports"); + + if (!reexports) { + continue; + } + + for ( + yaml_node_item_t *reexport = reexports->data.sequence.items.start; + reexport < reexports->data.sequence.items.top; + ++reexport + ) { + yaml_node_t *val = yaml_document_get_node(document, *reexport); + + if (val->type != YAML_SCALAR_NODE) { + fprintf(stderr, "item is not a scalar\n"); + return 0; + } + + fwrite(val->data.scalar.value, val->data.scalar.length, 1, stdout); + putchar('\n'); + } + } + + return 1; +} + +int main(int argc, char **argv) { + int result = 0; + + if (argc != 2) { + fprintf(stderr, "Invalid usage\n"); + result = 2; + goto done; + } + + FILE *f = fopen(argv[1], "r"); + if (!f) { + perror("opening input file"); + result = errno; + goto done; + } + + yaml_parser_t yaml_parser; + if (!yaml_parser_initialize(&yaml_parser)) { + fprintf(stderr, "Failed to initialize yaml parser\n"); + result = 1; + goto err_file; + } + + yaml_parser_set_input_file(&yaml_parser, f); + + yaml_document_t yaml_document; + + if(!yaml_parser_load(&yaml_parser, &yaml_document)) { + fprintf(stderr, "Failed to load yaml file\n"); + result = 1; + goto err_yaml; + } + + emit_reexports(&yaml_document); + +err_yaml: + yaml_parser_delete(&yaml_parser); + +err_file: + fclose(f); + +done: + return result; +} diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/IOKit/default.nix b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/IOKit/default.nix index 4b82209f176c..a945409ed7a0 100644 --- a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/IOKit/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/IOKit/default.nix @@ -1,4 +1,4 @@ -{ stdenv, appleDerivation, IOKitSrcs, xnu }: +{ stdenv, appleDerivation, IOKitSrcs, xnu, darwin-stubs }: # Someday it'll make sense to split these out into their own packages, but today is not that day. appleDerivation { @@ -14,12 +14,15 @@ appleDerivation { ]; installPhase = '' - ###### IMPURITIES mkdir -p $out/Library/Frameworks/IOKit.framework - pushd $out/Library/Frameworks/IOKit.framework - ln -s /System/Library/Frameworks/IOKit.framework/IOKit - ln -s /System/Library/Frameworks/IOKit.framework/Resources - popd + + ###### IMPURITIES + ln -s /System/Library/Frameworks/IOKit.framework/Resources \ + $out/Library/Frameworks/IOKit.framework + + ###### STUBS + cp ${darwin-stubs}/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit.tbd \ + $out/Library/Frameworks/IOKit.framework ###### HEADERS diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/Libsystem/default.nix b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/Libsystem/default.nix index 99d670028032..24526f05f062 100644 --- a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/Libsystem/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/Libsystem/default.nix @@ -1,7 +1,7 @@ { stdenv, appleDerivation, cpio, xnu, Libc, Libm, libdispatch, cctools, Libinfo , dyld, Csu, architecture, libclosure, CarbonHeaders, ncurses, CommonCrypto , copyfile, removefile, libresolv, Libnotify, libplatform, libpthread -, mDNSResponder, launchd, libutil, hfs, darling }: +, mDNSResponder, launchd, libutil, hfs, darling, darwin-stubs }: appleDerivation { dontBuild = true; @@ -88,52 +88,18 @@ appleDerivation { # The startup object files cp ${Csu}/lib/* $out/lib - # We can't re-exported libsystem_c and libsystem_kernel directly, - # so we link against the central library here. - mkdir -p $out/lib/system - ld -macosx_version_min 10.7 -arch x86_64 -dylib \ - -o $out/lib/system/libsystem_c.dylib \ - /usr/lib/libSystem.dylib \ - -reexported_symbols_list ${./system_c_symbols} - - ld -macosx_version_min 10.7 -arch x86_64 -dylib \ - -o $out/lib/system/libsystem_kernel.dylib \ - /usr/lib/libSystem.dylib \ - -reexported_symbols_list ${./system_kernel_symbols} - - # The umbrella libSystem also exports some symbols, - # but we don't want to pull in everything from the other libraries. - ld -macosx_version_min 10.7 -arch x86_64 -dylib \ - -o $out/lib/libSystem_internal.dylib \ - /usr/lib/libSystem.dylib \ - -reexported_symbols_list ${./system_symbols} - - # We used to determine these impurely based on the host system, but then when we got some 10.12 Hydra boxes, - # one of them accidentally built this derivation, referenced libsystem_symptoms.dylib, which doesn't exist on - # 10.11, and then broke all subsequent builds on 10.11. By picking a 10.11 compatible subset of the libraries, - # we avoid scary impurity issues like that. - libs=$(cat ${./reexported_libraries} | grep -v '^#') - - for i in $libs; do - if [ "$i" != "/usr/lib/system/libsystem_kernel.dylib" ] && [ "$i" != "/usr/lib/system/libsystem_c.dylib" ]; then - args="$args -reexport_library $i" - fi - done - - ld -macosx_version_min 10.7 -arch x86_64 -dylib \ - -o $out/lib/libSystem.B.dylib \ - -compatibility_version 1.0 \ - -current_version 1226.10.1 \ - -reexport_library $out/lib/system/libsystem_c.dylib \ - -reexport_library $out/lib/system/libsystem_kernel.dylib \ - -reexport_library $out/lib/libSystem_internal.dylib \ - $args + cp -vr \ + ${darwin-stubs}/usr/lib/libSystem.B.tbd \ + ${darwin-stubs}/usr/lib/system \ + $out/lib - ln -s libSystem.B.dylib $out/lib/libSystem.dylib + substituteInPlace $out/lib/libSystem.B.tbd \ + --replace "/usr/lib/system/" "$out/lib/system/" + ln -s libSystem.B.tbd $out/lib/libSystem.tbd # Set up links to pretend we work like a conventional unix (Apple's design, not mine!) for name in c dbm dl info m mx poll proc pthread rpcsvc util gcc_s.10.4 gcc_s.10.5; do - ln -s libSystem.dylib $out/lib/lib$name.dylib + ln -s libSystem.tbd $out/lib/lib$name.tbd done # This probably doesn't belong here, but we want to stay similar to glibc, which includes resolv internally... @@ -144,13 +110,13 @@ appleDerivation { chmod +w $out/lib/libresolv.9.dylib install_name_tool \ -id $out/lib/libresolv.9.dylib \ - -change "$resolv_libSystem" $out/lib/libSystem.dylib \ + -change "$resolv_libSystem" /usr/lib/libSystem.dylib \ $out/lib/libresolv.9.dylib ln -s libresolv.9.dylib $out/lib/libresolv.dylib ''; meta = with stdenv.lib; { - description = "The Mac OS libc/libSystem (impure symlinks to binaries with pure headers)"; + description = "The Mac OS libc/libSystem (tapi library with pure headers)"; maintainers = with maintainers; [ copumpkin gridaphobe ]; platforms = platforms.darwin; license = licenses.apsl20; diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/Security/boot.nix b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/Security/boot.nix index e04142b8b11e..b819057f0c1a 100644 --- a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/Security/boot.nix +++ b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/Security/boot.nix @@ -1,4 +1,4 @@ -{ appleDerivation }: +{ appleDerivation, darwin-stubs }: appleDerivation { phases = [ "unpackPhase" "installPhase" ]; @@ -12,14 +12,15 @@ appleDerivation { ]; installPhase = '' - ###### IMPURITIES mkdir -p $out/Library/Frameworks/Security.framework - pushd $out/Library/Frameworks/Security.framework - ln -s /System/Library/Frameworks/Security.framework/Security - ln -s /System/Library/Frameworks/Security.framework/Resources - ln -s /System/Library/Frameworks/Security.framework/PlugIns - ln -s /System/Library/Frameworks/Security.framework/XPCServices - popd + + ###### IMPURITIES + ln -s /System/Library/Frameworks/Security.framework/{Resources,Plugins,XPCServices} \ + $out/Library/Frameworks/Security.framework + + ###### STUBS + cp ${darwin-stubs}/System/Library/Frameworks/Security.framework/Versions/A/Security.tbd \ + $out/Library/Frameworks/Security.framework ###### HEADERS diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/adv_cmds/default.nix b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/adv_cmds/default.nix index 0cbd7d81b902..6113eed007e5 100644 --- a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/adv_cmds/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/adv_cmds/default.nix @@ -3,27 +3,22 @@ appleDerivation { # We can't just run the root build, because https://github.com/facebook/xcbuild/issues/264 + patchPhase = '' + substituteInPlace adv_cmds.xcodeproj/project.pbxproj \ + --replace '/usr/lib/libtermcap.dylib' 'libncurses.dylib' + ''; + # pkill requires special private headers that are unavailable in # NixPkgs. These ones are needed: # - xpc/xpxc.h # - os/base_private.h # - _simple.h # We disable it here for now. TODO: build pkill inside adv_cmds - - # We also disable locale here because of some issues with a missing - # "lstdc++". - patchPhase = '' - substituteInPlace adv_cmds.xcodeproj/project.pbxproj \ - --replace "FD201DC214369B4200906237 /* pkill.c in Sources */," "" \ - --replace "FDF278D60FC6204E00D7A3C6 /* locale.cc in Sources */," "" \ - --replace '/usr/lib/libtermcap.dylib' 'libncurses.dylib' - ''; - buildPhase = '' targets=$(xcodebuild -list \ | awk '/Targets:/{p=1;print;next} p&&/^\s*$/{p=0};p' \ | tail -n +2 | sed 's/^[ \t]*//' \ - | grep -v -e Desktop -e Embedded -e mklocale -e colldef) + | grep -v -e Desktop -e Embedded -e mklocale -e pkill -e pgrep -e colldef) for i in $targets; do xcodebuild SYMROOT=$PWD/Products OBJROOT=$PWD/Intermediates -target $i @@ -34,7 +29,7 @@ appleDerivation { installPhase = '' for f in Products/Release/*; do if [ -f $f ]; then - install -D $file $out/bin/$(basename $f) + install -D $f $out/bin/$(basename $f) fi done diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/developer_cmds/default.nix b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/developer_cmds/default.nix index 21971ea2e284..cfd13b1b0498 100644 --- a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/developer_cmds/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/developer_cmds/default.nix @@ -1,11 +1,18 @@ -{ stdenv, appleDerivation, xcbuildHook }: +{ stdenv, appleDerivation, xcbuildHook, llvmPackages }: appleDerivation { nativeBuildInputs = [ xcbuildHook ]; - patchPhase = '' + patches = [ + # The following copied from + # https://github.com/Homebrew/homebrew-core/commit/712ed3e948868e17f96b7e59972b5f45d4faf688 + # is needed to build libvirt. + ./rpcgen-support-hyper-and-quad-types.patch + ]; + + postPatch = '' substituteInPlace rpcgen/rpc_main.c \ - --replace "/usr/bin/cpp" "${stdenv.cc}/bin/cpp" + --replace "/usr/bin/cpp" "${llvmPackages.clang-unwrapped}/bin/clang-cpp" ''; # temporary install phase until xcodebuild has "install" support diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/developer_cmds/rpcgen-support-hyper-and-quad-types.patch b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/developer_cmds/rpcgen-support-hyper-and-quad-types.patch new file mode 100644 index 000000000000..481cf0f3e055 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/developer_cmds/rpcgen-support-hyper-and-quad-types.patch @@ -0,0 +1,66 @@ +diff --git a/rpcgen/rpc_parse.c b/rpcgen/rpc_parse.c +index 52edc9f..db0c1f1 100644 +--- a/rpcgen/rpc_parse.c ++++ b/rpcgen/rpc_parse.c +@@ -580,6 +580,10 @@ get_type(prefixp, typep, dkind) + *typep = "long"; + (void) peekscan(TOK_INT, &tok); + break; ++ case TOK_HYPER: ++ *typep = "int64_t"; ++ (void) peekscan(TOK_INT, &tok); ++ break; + case TOK_VOID: + if (dkind != DEF_UNION && dkind != DEF_PROGRAM) { + error("voids allowed only inside union and program definitions with one argument"); +@@ -592,6 +596,7 @@ get_type(prefixp, typep, dkind) + case TOK_INT: + case TOK_FLOAT: + case TOK_DOUBLE: ++ case TOK_QUAD: + case TOK_BOOL: + *typep = tok.str; + break; +@@ -622,6 +627,11 @@ unsigned_dec(typep) + *typep = "u_long"; + (void) peekscan(TOK_INT, &tok); + break; ++ case TOK_HYPER: ++ get_token(&tok); ++ *typep = "u_int64_t"; ++ (void) peekscan(TOK_INT, &tok); ++ break; + case TOK_INT: + get_token(&tok); + *typep = "u_int"; +diff --git a/rpcgen/rpc_scan.c b/rpcgen/rpc_scan.c +index a8df441..4130107 100644 +--- a/rpcgen/rpc_scan.c ++++ b/rpcgen/rpc_scan.c +@@ -419,8 +419,10 @@ static token symbols[] = { + {TOK_UNSIGNED, "unsigned"}, + {TOK_SHORT, "short"}, + {TOK_LONG, "long"}, ++ {TOK_HYPER, "hyper"}, + {TOK_FLOAT, "float"}, + {TOK_DOUBLE, "double"}, ++ {TOK_QUAD, "quadruple"}, + {TOK_STRING, "string"}, + {TOK_PROGRAM, "program"}, + {TOK_VERSION, "version"}, +diff --git a/rpcgen/rpc_scan.h b/rpcgen/rpc_scan.h +index bac2be4..e4c57c8 100644 +--- a/rpcgen/rpc_scan.h ++++ b/rpcgen/rpc_scan.h +@@ -66,9 +66,11 @@ enum tok_kind { + TOK_INT, + TOK_SHORT, + TOK_LONG, ++ TOK_HYPER, + TOK_UNSIGNED, + TOK_FLOAT, + TOK_DOUBLE, ++ TOK_QUAD, + TOK_OPAQUE, + TOK_CHAR, + TOK_STRING, \ No newline at end of file diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix index 0532c88b66b9..72ef086f5990 100644 --- a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix @@ -1,6 +1,6 @@ { stdenv, appleDerivation, lib -, enableStatic ? stdenv.targetPlatform.isiOS -, enableShared ? !stdenv.targetPlatform.isiOS +, enableStatic ? stdenv.hostPlatform.isStatic +, enableShared ? !stdenv.hostPlatform.isStatic }: appleDerivation { diff --git a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/objc4/default.nix b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/objc4/default.nix index a7cedaaea114..2fc4afa77d9f 100644 --- a/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/objc4/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/apple-source-releases/objc4/default.nix @@ -1,4 +1,4 @@ -{ appleDerivation }: +{ appleDerivation, darwin-stubs }: appleDerivation { phases = [ "unpackPhase" "installPhase" ]; @@ -14,7 +14,8 @@ appleDerivation { installPhase = '' mkdir -p $out/include/objc $out/lib - ln -s /usr/lib/libobjc.dylib $out/lib/libobjc.dylib + cp ${darwin-stubs}/usr/lib/libobjc.A.tbd $out/lib/libobjc.A.tbd + ln -s libobjc.A.tbd $out/lib/libobjc.tbd cp runtime/OldClasses.subproj/List.h $out/include/objc/List.h cp runtime/NSObjCRuntime.h $out/include/objc/NSObjCRuntime.h cp runtime/NSObject.h $out/include/objc/NSObject.h diff --git a/nixpkgs/pkgs/os-specific/darwin/cctools/port.nix b/nixpkgs/pkgs/os-specific/darwin/cctools/port.nix index 0c25f225291e..64f1490a7a79 100644 --- a/nixpkgs/pkgs/os-specific/darwin/cctools/port.nix +++ b/nixpkgs/pkgs/os-specific/darwin/cctools/port.nix @@ -17,92 +17,90 @@ in # Non-Darwin alternatives assert (!stdenv.hostPlatform.isDarwin) -> maloader != null; -let - baseParams = rec { - name = "${targetPrefix}cctools-port"; - version = "927.0.2"; - - src = fetchFromGitHub { - owner = "tpoechtrager"; - repo = "cctools-port"; - rev = "8239a5211bcf07d6b9d359782e1a889ec1d7cce5"; - sha256 = "0h8b1my0wf1jyjq63wbiqkl2clgxsf87f6i4fjhqs431fzlq8sac"; - }; - - outputs = [ "out" "dev" "man" ]; - - nativeBuildInputs = [ autoconf automake libtool autoreconfHook installShellFiles ]; - buildInputs = [ libuuid ] - ++ stdenv.lib.optionals stdenv.isDarwin [ libcxxabi libobjc ] - ++ stdenv.lib.optional enableTapiSupport libtapi; - - patches = [ ./ld-ignore-rpath-link.patch ./ld-rpath-nonfinal.patch ]; - - __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" +stdenv.mkDerivation { + pname = "${targetPrefix}cctools-port"; + version = "949.0.1"; + + src = fetchFromGitHub { + owner = "tpoechtrager"; + repo = "cctools-port"; + rev = "43f32a4c61b5ba7fde011e816136c550b1b3146f"; + sha256 = "10yc5smiczzm62q6ijqccc58bwmfhc897f3bwa5i9j98csqsjj0k"; + }; + + outputs = [ "out" "dev" "man" ]; + + nativeBuildInputs = [ autoconf automake libtool autoreconfHook installShellFiles ]; + buildInputs = [ libuuid ] + ++ stdenv.lib.optionals stdenv.isDarwin [ libcxxabi libobjc ] + ++ stdenv.lib.optional enableTapiSupport libtapi; + + patches = [ ./ld-ignore-rpath-link.patch ./ld-rpath-nonfinal.patch ]; + + __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" + ]; + + enableParallelBuilding = true; + + # TODO(@Ericson2314): Always pass "--target" and always targetPrefix. + configurePlatforms = [ "build" "host" ] + ++ stdenv.lib.optional (stdenv.targetPlatform != stdenv.hostPlatform) "target"; + configureFlags = [ "--disable-clang-as" ] + ++ stdenv.lib.optionals enableTapiSupport [ + "--enable-tapi-support" + "--with-libtapi=${libtapi}" ]; - enableParallelBuilding = true; - - # TODO(@Ericson2314): Always pass "--target" and always targetPrefix. - configurePlatforms = [ "build" "host" ] - ++ stdenv.lib.optional (stdenv.targetPlatform != stdenv.hostPlatform) "target"; - configureFlags = [ "--disable-clang-as" ] - ++ stdenv.lib.optionals enableTapiSupport [ - "--enable-tapi-support" - "--with-libtapi=${libtapi}" - ]; - - 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 - substituteInPlace cctools/configure.ac \ - --replace "-isystem /usr/local/include -isystem /usr/pkg/include" "" \ - --replace "-L/usr/local/lib" "" \ - - substituteInPlace cctools/include/Makefile \ - --replace "/bin/" "" - - patchShebangs tools - sed -i -e 's/which/type -P/' tools/*.sh - - # Workaround for https://www.sourceware.org/bugzilla/show_bug.cgi?id=11157 - cat > cctools/include/unistd.h <<EOF - #ifdef __block - # undef __block - # include_next "unistd.h" - # define __block __attribute__((__blocks__(byref))) - #else - # include_next "unistd.h" - #endif - EOF - - cd cctools - ''; - - preInstall = '' - pushd include - make DSTROOT=$out/include RC_OS=common install - popd - - installManPage ar/ar.{1,5} - ''; - - passthru = { - inherit targetPrefix; - }; - - meta = { - broken = !stdenv.targetPlatform.isDarwin; # Only supports darwin targets - homepage = "http://www.opensource.apple.com/source/cctools/"; - description = "MacOS Compiler Tools (cross-platform port)"; - license = stdenv.lib.licenses.apsl20; - maintainers = with stdenv.lib.maintainers; [ matthewbauer ]; - }; + 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 + substituteInPlace cctools/configure.ac \ + --replace "-isystem /usr/local/include -isystem /usr/pkg/include" "" \ + --replace "-L/usr/local/lib" "" \ + + substituteInPlace cctools/include/Makefile \ + --replace "/bin/" "" + + patchShebangs tools + sed -i -e 's/which/type -P/' tools/*.sh + + # Workaround for https://www.sourceware.org/bugzilla/show_bug.cgi?id=11157 + cat > cctools/include/unistd.h <<EOF + #ifdef __block + # undef __block + # include_next "unistd.h" + # define __block __attribute__((__blocks__(byref))) + #else + # include_next "unistd.h" + #endif + EOF + + cd cctools + ''; + + preInstall = '' + pushd include + make DSTROOT=$out/include RC_OS=common install + popd + + installManPage ar/ar.{1,5} + ''; + + passthru = { + inherit targetPrefix; + }; + + meta = { + broken = !stdenv.targetPlatform.isDarwin; # Only supports darwin targets + homepage = "http://www.opensource.apple.com/source/cctools/"; + description = "MacOS Compiler Tools (cross-platform port)"; + license = stdenv.lib.licenses.apsl20; + maintainers = with stdenv.lib.maintainers; [ matthewbauer ]; }; -in stdenv.mkDerivation baseParams +} diff --git a/nixpkgs/pkgs/os-specific/darwin/darwin-stubs/default.nix b/nixpkgs/pkgs/os-specific/darwin/darwin-stubs/default.nix new file mode 100644 index 000000000000..f7f083e32f43 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/darwin/darwin-stubs/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation { + pname = "darwin-stubs"; + version = "10.12"; + + src = fetchFromGitHub { + owner = "NixOS"; + repo = "darwin-stubs"; + rev = "80b3d4a57d3454c975eefd984c804dbd76f04ef2"; + sha256 = "0sslg4rmskms8ixixv1gvnrvvvmn723vbfjj6mcn24fj2ncg38y7"; + }; + + dontBuild = true; + + installPhase = '' + mkdir $out + cp -vr stubs/$version/* $out + ''; +} diff --git a/nixpkgs/pkgs/os-specific/darwin/discrete-scroll/default.nix b/nixpkgs/pkgs/os-specific/darwin/discrete-scroll/default.nix index e72402b77933..f38bf8d81322 100644 --- a/nixpkgs/pkgs/os-specific/darwin/discrete-scroll/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/discrete-scroll/default.nix @@ -31,5 +31,6 @@ stdenv.mkDerivation rec { homepage = "https://github.com/emreyolcu/discrete-scroll"; platforms = platforms.darwin; license = licenses.mit; + maintainers = with lib.maintainers; [ bb2020 ]; }; } diff --git a/nixpkgs/pkgs/os-specific/darwin/libtapi/default.nix b/nixpkgs/pkgs/os-specific/darwin/libtapi/default.nix index 182d1db3bfd5..a6bc16d42f91 100644 --- a/nixpkgs/pkgs/os-specific/darwin/libtapi/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/libtapi/default.nix @@ -1,30 +1,48 @@ -{ lib, stdenv, fetchFromGitHub, cmake, python3, clang_6 }: +{ lib, stdenv, fetchFromGitHub, cmake, python3, ncurses }: + +stdenv.mkDerivation rec { + pname = "libtapi"; + version = "1000.10.8"; # determined by looking at VERSION.txt -stdenv.mkDerivation { - name = "libtapi-1000.10.8"; src = fetchFromGitHub { owner = "tpoechtrager"; repo = "apple-libtapi"; - rev = "cd9885b97fdff92cc41e886bba4a404c42fdf71b"; - sha256 = "1a19h39a48agvnmal99n9j1fjadiqwib7hfzmn342wmgh9z3vk0g"; + rev = "3cb307764cc5f1856c8a23bbdf3eb49dfc6bea48"; + sha256 = "1zb10p6xkls8x7wsdwgy9c0v16z97rfkgidii9ffq5rfczgvrhjh"; }; + sourceRoot = "source/src/llvm"; + nativeBuildInputs = [ cmake python3 ]; - buildInputs = [ clang_6.cc ]; + # ncurses is required here to avoid a reference to bootstrap-tools, which is + # not allowed for the stdenv. + buildInputs = [ ncurses ]; + + cmakeFlags = [ "-DLLVM_INCLUDE_TESTS=OFF" ]; + + # fixes: fatal error: 'clang/Basic/Diagnostic.h' file not found + # adapted from upstream + # https://github.com/tpoechtrager/apple-libtapi/blob/3cb307764cc5f1856c8a23bbdf3eb49dfc6bea48/build.sh#L58-L60 preConfigure = '' - cd src/llvm + INCLUDE_FIX="-I $PWD/projects/clang/include" + INCLUDE_FIX+=" -I $PWD/build/projects/clang/include" + + cmakeFlagsArray+=(-DCMAKE_CXX_FLAGS="$INCLUDE_FIX") ''; - cmakeFlags = [ "-DLLVM_INCLUDE_TESTS=OFF" ]; + buildFlags = [ "clangBasic" "libtapi" ]; - buildFlags = [ "libtapi" ]; + installTargets = [ "install-libtapi" "install-tapi-headers" ]; - installTarget = "install-libtapi"; + postInstall = lib.optionalString stdenv.isDarwin '' + install_name_tool -id $out/lib/libtapi.dylib $out/lib/libtapi.dylib + ''; meta = with lib; { + description = "Replaces the Mach-O Dynamic Library Stub files in Apple's SDKs to reduce the size"; + homepage = "https://github.com/tpoechtrager/apple-libtapi"; license = licenses.apsl20; maintainers = with maintainers; [ matthewbauer ]; }; - } diff --git a/nixpkgs/pkgs/os-specific/darwin/osx-cpu-temp/default.nix b/nixpkgs/pkgs/os-specific/darwin/osx-cpu-temp/default.nix new file mode 100644 index 000000000000..1e8a56154f34 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/darwin/osx-cpu-temp/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub +, IOKit +}: + +stdenv.mkDerivation rec { + pname = "osx-cpu-temp"; + version = "unstable-2020-12-04"; + + src = fetchFromGitHub rec { + name = "osx-cpu-temp-source"; + owner = "lavoiesl"; + repo = pname; + rev = "6ec951be449badcb7fb84676bbc2c521e600e844"; + sha256 = "1nlibgr55bpln6jbdf8vqcp0fj9zv9343vflb7s9w0yh33fsbg9d"; + }; + + buildInputs = [ IOKit ]; + + installPhase = '' + mkdir -p $out/bin + cp osx-cpu-temp $out/bin + ''; + + meta = with stdenv.lib; { + description = "Outputs current CPU temperature for OSX."; + homepage = "https://github.com/lavoiesl/osx-cpu-temp"; + license = licenses.gpl2; + maintainers = with maintainers; [ virusdave ]; + platforms = platforms.darwin; + }; +} diff --git a/nixpkgs/pkgs/os-specific/darwin/osxsnarf/default.nix b/nixpkgs/pkgs/os-specific/darwin/osxsnarf/default.nix index d9a0de6c7f16..e31271ed2b97 100644 --- a/nixpkgs/pkgs/os-specific/darwin/osxsnarf/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/osxsnarf/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { makeFlags = [ "prefix=${placeholder "out"}" ]; meta = with lib; { - description = "A Plan 9-inspired way to share your OS X clipboard."; + description = "A Plan 9-inspired way to share your OS X clipboard"; homepage = "https://github.com/eraserhd/osxsnarf"; license = licenses.unlicense; platforms = platforms.darwin; diff --git a/nixpkgs/pkgs/os-specific/darwin/reattach-to-user-namespace/default.nix b/nixpkgs/pkgs/os-specific/darwin/reattach-to-user-namespace/default.nix index 768ca6cf9c97..685837768504 100644 --- a/nixpkgs/pkgs/os-specific/darwin/reattach-to-user-namespace/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/reattach-to-user-namespace/default.nix @@ -1,12 +1,14 @@ -{ stdenv, fetchurl }: +{ stdenv, fetchFromGitHub }: stdenv.mkDerivation rec { pname = "reattach-to-user-namespace"; - version = "2.8"; + version = "2.9"; - src = fetchurl { - url = "https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/archive/v${version}.tar.gz"; - sha256 = "0xxxdd26rcplhpvi2vy6crxadk3d1qkq4xry10lwq6dyya2jf6wb"; + src = fetchFromGitHub { + owner = "ChrisJohnsen"; + repo = "tmux-MacOSX-pasteboard"; + rev = "v${version}"; + sha256 = "1qgimh58hcx5f646gj2kpd36ayvrdkw616ad8cb3lcm11kg0ag79"; }; buildFlags = [ "ARCHES=x86_64" ]; diff --git a/nixpkgs/pkgs/os-specific/darwin/spacebar/default.nix b/nixpkgs/pkgs/os-specific/darwin/spacebar/default.nix index 7af7e408223a..6d47499b8350 100644 --- a/nixpkgs/pkgs/os-specific/darwin/spacebar/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/spacebar/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "spacebar"; - version = "1.1.1"; + version = "1.2.1"; src = fetchFromGitHub { owner = "cmacrae"; repo = pname; rev = "v${version}"; - sha256 = "1x0wzm380nv81j26jqqg4y4dwanydnpdsca41ndw6xyj9zlv73f7"; + sha256 = "0f5ddn3sx13rwwh0nfl784160s8ml3m5593d5fz2b1996aznzrsx"; }; buildInputs = [ Carbon Cocoa ScriptingBridge ]; diff --git a/nixpkgs/pkgs/os-specific/darwin/xcode/default.nix b/nixpkgs/pkgs/os-specific/darwin/xcode/default.nix index 1144232fba21..34e3b2dfeeae 100644 --- a/nixpkgs/pkgs/os-specific/darwin/xcode/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/xcode/default.nix @@ -53,5 +53,6 @@ in lib.makeExtensible (self: { xcode_10_2_1 = requireXcode "10.2.1" "11sdb54nr0x7kp987qq839x6k5gdx7vqdxjiy5xm5279n1n47bmg"; xcode_10_3 = requireXcode "10.3" "1i628vfn6zad81fsz3zpc6z15chhskvyp8qnajp2wnpzvrwl6ngb"; xcode_11 = requireXcode "11" "1r03j3kkp4blfp2kqpn538w3dx57ms930fj8apjkq6dk7fv3jcqh"; - xcode = self."xcode_${lib.replaceStrings ["."] ["_"] (if stdenv.targetPlatform.useiOSPrebuilt then stdenv.targetPlatform.xcodeVer else "10.3")}"; + xcode_11_3_1 = requireXcode "11.3.1" "1p6nicj91kr6ad3rmycahd1i7z4hj7ccjs93ixsiximjzaahx3q4"; + xcode = self."xcode_${lib.replaceStrings ["."] ["_"] (if (stdenv.targetPlatform ? xcodeVer) then stdenv.targetPlatform.xcodeVer else "11.3.1")}"; }) diff --git a/nixpkgs/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix b/nixpkgs/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix index e8302a82555f..45e1f1eab4fa 100644 --- a/nixpkgs/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix +++ b/nixpkgs/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix @@ -12,7 +12,7 @@ let -minSdkVersion = "9.0"; +minSdkVersion = targetPlatform.minSdkVersion or "9.0"; iosPlatformArch = { parsed, ... }: { armv7a = "armv7"; @@ -37,6 +37,10 @@ rec { bintools = binutils-unwrapped; extraBuildCommands = '' echo "-arch ${iosPlatformArch targetPlatform}" >> $out/nix-support/libc-ldflags + '' + stdenv.lib.optionalString (sdk.platform == "iPhoneSimulator") '' + echo "-platform_version ios-sim ${minSdkVersion} ${sdk.version}" >> $out/nix-support/libc-ldflags + '' + stdenv.lib.optionalString (sdk.platform == "iPhoneOS") '' + echo "-platform_version ios ${minSdkVersion} ${sdk.version}" >> $out/nix-support/libc-ldflags ''; }; diff --git a/nixpkgs/pkgs/os-specific/darwin/yabai/default.nix b/nixpkgs/pkgs/os-specific/darwin/yabai/default.nix index 742a3948707e..d4471da4781f 100644 --- a/nixpkgs/pkgs/os-specific/darwin/yabai/default.nix +++ b/nixpkgs/pkgs/os-specific/darwin/yabai/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "yabai"; - version = "3.3.0"; + version = "3.3.4"; src = fetchFromGitHub { owner = "koekeishiya"; repo = pname; rev = "v${version}"; - sha256 = "0y4idivqkmi3xsc8yjdzh1b15qzgyqlw7ifs26v3dc91lkjhfc4x"; + sha256 = "1pvyjdxgy7yxxz4x87f8an0dlxvxbnmv5kya8hkzw2na453ihvab"; }; buildInputs = [ Carbon Cocoa ScriptingBridge xxd ]; |