From 16a54d6b2bb9dccb72cf8457719fdaff75352b3b Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 7 Nov 2018 19:10:34 +0100 Subject: [PATCH 01/10] alacritty: add cf-private on darwin note: Undefined symbols for architecture x86_64: "_CFURLResourceIsReachable", referenced from: alacritty::config::Monitor::new::_$u7b$$u7b$closure$u7d$$u7d$::h8c82fbfba8a3a673 in alacritty-6a8d3226ed5c4bef.alacritty.9tpyu7jw-cgu.1.rcgu.o "_NSDefaultRunLoopMode", referenced from: alacritty::main::hd6e46019b2208595 in alacritty-6a8d3226ed5c4bef.alacritty.9tpyu7jw-cgu.1.rcgu.o ld: symbol(s) not found for architecture x86_64 clang-5.0: error: linker command failed with exit code 1 (use -v to see invocation) --- pkgs/applications/misc/alacritty/default.nix | 16 ++++++---------- pkgs/top-level/all-packages.nix | 1 + 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/pkgs/applications/misc/alacritty/default.nix b/pkgs/applications/misc/alacritty/default.nix index 594173f11c62..5237e02f15c0 100644 --- a/pkgs/applications/misc/alacritty/default.nix +++ b/pkgs/applications/misc/alacritty/default.nix @@ -18,6 +18,7 @@ libGL, xclip, # Darwin Frameworks + cf-private, AppKit, CoreFoundation, CoreGraphics, @@ -40,15 +41,6 @@ let libGL libXi ]; - darwinFrameworks = [ - AppKit - CoreFoundation - CoreGraphics - CoreServices - CoreText - Foundation - OpenGL - ]; in buildRustPackage rec { name = "alacritty-unstable-${version}"; version = "0.2.1"; @@ -71,7 +63,11 @@ in buildRustPackage rec { ]; buildInputs = rpathLibs - ++ lib.optionals stdenv.isDarwin darwinFrameworks; + ++ lib.optionals stdenv.isDarwin [ + AppKit CoreFoundation CoreGraphics CoreServices CoreText Foundation OpenGL + # Needed for CFURLResourceIsReachable symbols. + cf-private + ]; outputs = [ "out" "terminfo" ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cea917e174b0..574e727afbad 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -519,6 +519,7 @@ with pkgs; alacritty = callPackage ../applications/misc/alacritty { inherit (xorg) libXcursor libXxf86vm libXi; + inherit (darwin) cf-private; inherit (darwin.apple_sdk.frameworks) AppKit CoreFoundation CoreGraphics CoreServices CoreText Foundation OpenGL; }; From ee1c6f62f842837bc4c723bd799f892c557c0789 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 7 Nov 2018 19:15:43 +0100 Subject: [PATCH 02/10] darwin.trash: add cf-private Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_NSMutableArray", referenced from: objc-class-ref in trash-571f39.o "_OBJC_CLASS_$_NSURL", referenced from: objc-class-ref in trash-571f39.o "_OBJC_CLASS_$_NSUserDefaults", referenced from: objc-class-ref in trash-571f39.o objc-class-ref in HGCLIUtils-31f3b3.o ld: symbol(s) not found for architecture x86_64 --- pkgs/os-specific/darwin/trash/default.nix | 11 ++++++----- pkgs/top-level/darwin-packages.nix | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/pkgs/os-specific/darwin/trash/default.nix b/pkgs/os-specific/darwin/trash/default.nix index 7f327fcf3d7a..e1606383c0dc 100644 --- a/pkgs/os-specific/darwin/trash/default.nix +++ b/pkgs/os-specific/darwin/trash/default.nix @@ -1,4 +1,5 @@ -{ stdenv, fetchFromGitHub, frameworks, perl } : +{ stdenv, fetchFromGitHub, perl, cf-private, AppKit, Cocoa, ScriptingBridge }: + stdenv.mkDerivation rec { version = "0.9.1"; name = "trash-${version}"; @@ -10,11 +11,11 @@ stdenv.mkDerivation rec { sha256 = "0ylkf7jxfy1pj7i1s48w28kzqjdfd57m2pw0jycsgcj5bkzwll41"; }; - buildInputs = with frameworks; [ - Cocoa - AppKit - ScriptingBridge + buildInputs = [ perl + Cocoa AppKit ScriptingBridge + # Neded for OBJC_CLASS_$_NSMutableArray symbols. + cf-private ]; patches = [ ./trash.diff ]; diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix index 78ca0d20908d..b52afe98f7fa 100644 --- a/pkgs/top-level/darwin-packages.nix +++ b/pkgs/top-level/darwin-packages.nix @@ -66,7 +66,7 @@ in stubs = callPackages ../os-specific/darwin/stubs { }; - trash = callPackage ../os-specific/darwin/trash { inherit (darwin.apple_sdk) frameworks; }; + trash = darwin.callPackage ../os-specific/darwin/trash { }; usr-include = callPackage ../os-specific/darwin/usr-include { }; From b378760b081bee1125d16df92a18189019d25ccf Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 7 Nov 2018 19:18:17 +0100 Subject: [PATCH 03/10] emacs25: add cf-private on darwin and don't propagate frameworks Undefined symbols for architecture x86_64: "_CFNotificationCenterAddObserver", referenced from: _macfont_copy_available_families_cache in macfont.o "_CFNotificationCenterGetLocalCenter", referenced from: _macfont_copy_available_families_cache in macfont.o "_NSDefaultRunLoopMode", referenced from: _ns_send_appdefined in nsterm.o -[EmacsApp run] in nsterm.o "_OBJC_CLASS_$_NSArray", referenced from: objc-class-ref in nsterm.o objc-class-ref in nsmenu.o objc-class-ref in nsselect.o "_OBJC_CLASS_$_NSData", referenced from: objc-class-ref in nsimage.o "_OBJC_CLASS_$_NSDate", referenced from: objc-class-ref in nsterm.o "_OBJC_CLASS_$_NSDictionary", referenced from: objc-class-ref in macfont.o "_OBJC_CLASS_$_NSLocale", referenced from: objc-class-ref in nsterm.o "_OBJC_CLASS_$_NSMutableArray", referenced from: objc-class-ref in nsterm.o objc-class-ref in nsmenu.o "_OBJC_CLASS_$_NSMutableDictionary", referenced from: objc-class-ref in nsmenu.o objc-class-ref in nsselect.o "_OBJC_CLASS_$_NSMutableSet", referenced from: objc-class-ref in nsterm.o "_OBJC_CLASS_$_NSRunLoop", referenced from: objc-class-ref in nsmenu.o "_OBJC_CLASS_$_NSTimer", referenced from: objc-class-ref in nsterm.o objc-class-ref in nsmenu.o "_OBJC_CLASS_$_NSURL", referenced from: objc-class-ref in nsterm.o objc-class-ref in nsfns.o "_OBJC_CLASS_$_NSUserDefaults", referenced from: objc-class-ref in nsterm.o objc-class-ref in nsfns.o "_OBJC_EHTYPE_$_NSException", referenced from: GCC_except_table8 in nsterm.o GCC_except_table1 in nsselect.o ld: symbol(s) not found for architecture x86_64 --- pkgs/applications/editors/emacs/25.nix | 11 +++++++---- pkgs/top-level/all-packages.nix | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/editors/emacs/25.nix b/pkgs/applications/editors/emacs/25.nix index ee21bbbd9bd9..6576cd544729 100644 --- a/pkgs/applications/editors/emacs/25.nix +++ b/pkgs/applications/editors/emacs/25.nix @@ -1,7 +1,7 @@ { stdenv, lib, fetchurl, ncurses, xlibsWrapper, libXaw, libXpm, Xaw3d , pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif , libtiff, librsvg, gconf, libxml2, imagemagick, gnutls, libselinux -, alsaLib, cairo, acl, gpm, AppKit, GSS, ImageIO +, alsaLib, cairo, acl, gpm, cf-private, AppKit, GSS, ImageIO , withX ? !stdenv.isDarwin , withGTK2 ? false, gtk2 ? null , withGTK3 ? true, gtk3 ? null, gsettings-desktop-schemas ? null @@ -61,9 +61,12 @@ stdenv.mkDerivation rec { ++ lib.optional (withX && withGTK2) gtk2 ++ lib.optionals (withX && withGTK3) [ gtk3 gsettings-desktop-schemas ] ++ lib.optional (stdenv.isDarwin && withX) cairo - ++ lib.optionals (withX && withXwidgets) [ webkitgtk24x-gtk3 glib-networking ]; - - propagatedBuildInputs = lib.optionals stdenv.isDarwin [ AppKit GSS ImageIO ]; + ++ lib.optionals (withX && withXwidgets) [ webkitgtk24x-gtk3 glib-networking ] + ++ lib.optionals stdenv.isDarwin [ + AppKit GSS ImageIO + # Needed for CFNotificationCenterAddObserver symbols. + cf-private + ]; hardeningDisable = [ "format" ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 574e727afbad..18e5201be6bb 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16372,6 +16372,7 @@ with pkgs; imagemagick = null; acl = null; gpm = null; + inherit (darwin) cf-private; inherit (darwin.apple_sdk.frameworks) AppKit GSS ImageIO; }; From c60816c5232de8c9f4232eba2efc7dd27742e381 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 7 Nov 2018 19:33:15 +0100 Subject: [PATCH 04/10] emacsMacport: add cf-private Also remove incorrect emacs25Macport alias. Undefined symbols for architecture x86_64: "_CFNotificationCenterAddObserver", referenced from: _mac_term_init in macterm.o _macfont_copy_available_families_cache in macfont.o "_CFNotificationCenterGetDistributedCenter", referenced from: _mac_term_init in macterm.o "_CFNotificationCenterGetLocalCenter", referenced from: _macfont_copy_available_families_cache in macfont.o "_CFURLCopyResourcePropertyForKey", referenced from: _Fmac_file_alias_p in mac.o "_CFURLCreateBookmarkDataFromFile", referenced from: _Fmac_file_alias_p in mac.o "_CFURLCreateByResolvingBookmarkData", referenced from: _Fmac_file_alias_p in mac.o "_CFURLResourceIsReachable", referenced from: _mac_update_title_bar in macfns.o _mac_input_source_properties in macfns.o "_NSDefaultRunLoopMode", referenced from: -[NSApplication(Emacs) runTemporarilyWithBlock:] in macappkit.o ___57-[EmacsController handleQueuedNSEventsWithHoldingQuitIn:]_block_invoke in macappkit.o _mac_run_loop_run_once in macappkit.o ___mac_run_loop_run_once_block_invoke in macappkit.o ___37-[EmacsController(Menu) trackMenuBar]_block_invoke in macappkit.o ___create_and_show_dialog_block_invoke.2445 in macappkit.o ___mac_select_block_invoke in macappkit.o ... "_NSURLAttributeModificationDateKey", referenced from: _mac_document_create_with_url in macappkit.o "_OBJC_CLASS_$_NSArray", referenced from: objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSData", referenced from: l_OBJC_$_CATEGORY_NSData_$_Emacs in macappkit.o objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSDate", referenced from: objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSDictionary", referenced from: objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSMethodSignature", referenced from: l_OBJC_$_CATEGORY_NSMethodSignature_$_Emacs in macappkit.o objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSMutableArray", referenced from: l_OBJC_$_CATEGORY_NSMutableArray_$_Emacs in macappkit.o objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSMutableData", referenced from: objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSMutableDictionary", referenced from: objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSMutableSet", referenced from: objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSNull", referenced from: objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSRunLoop", referenced from: objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSSet", referenced from: objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSTimer", referenced from: objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSURL", referenced from: objc-class-ref in macappkit.o "_OBJC_CLASS_$_NSUserDefaults", referenced from: objc-class-ref in macappkit.o "_OBJC_EHTYPE_$_NSException", referenced from: GCC_except_table81 in macappkit.o GCC_except_table810 in macappkit.o "_kCFURLIsAliasFileKey", referenced from: _Fmac_file_alias_p in mac.o "_kCFURLIsSymbolicLinkKey", referenced from: _Fmac_file_alias_p in mac.o ld: symbol(s) not found for architecture x86_64 --- pkgs/applications/editors/emacs/macport.nix | 4 +++- pkgs/top-level/aliases.nix | 1 - pkgs/top-level/all-packages.nix | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/editors/emacs/macport.nix b/pkgs/applications/editors/emacs/macport.nix index 0876a71cbf73..7070ce597388 100644 --- a/pkgs/applications/editors/emacs/macport.nix +++ b/pkgs/applications/editors/emacs/macport.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, ncurses, pkgconfig, texinfo, libxml2, gnutls, gettext, autoconf, automake -, AppKit, Carbon, Cocoa, IOKit, OSAKit, Quartz, QuartzCore, WebKit +, cf-private, AppKit, Carbon, Cocoa, IOKit, OSAKit, Quartz, QuartzCore, WebKit , ImageCaptureCore, GSS, ImageIO # These may be optional }: @@ -33,6 +33,8 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses libxml2 gnutls texinfo gettext AppKit Carbon Cocoa IOKit OSAKit Quartz QuartzCore WebKit ImageCaptureCore GSS ImageIO # may be optional + # Needed for CFNotificationCenterAddObserver symbols. + cf-private ]; postUnpack = '' diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 8f5e866ede54..81544236136d 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -85,7 +85,6 @@ mapAliases ({ docbook_xml_xslt = docbook_xsl; # added 2018-04-25 double_conversion = double-conversion; # 2017-11-22 dwarf_fortress = dwarf-fortress; # added 2016-01-23 - emacs25Macport_25_1 = emacs25Macport; # added 2018-04-25 emacsMelpa = emacs25PackagesNg; # for backward compatibility emacsPackagesGen = emacsPackagesFor; # added 2018-08-18 emacsPackagesNgGen = emacsPackagesNgFor; # added 2018-08-18 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 18e5201be6bb..72a0dc8956be 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16382,8 +16382,8 @@ with pkgs; withGTK3 = false; })); - emacsMacport = emacs25Macport; - emacs25Macport = callPackage ../applications/editors/emacs/macport.nix { + emacsMacport = callPackage ../applications/editors/emacs/macport.nix { + inherit (darwin) cf-private; inherit (darwin.apple_sdk.frameworks) AppKit Carbon Cocoa IOKit OSAKit Quartz QuartzCore WebKit ImageCaptureCore GSS ImageIO; From 78623f492c3587aacc8100805a5b4d3487d5f140 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 7 Nov 2018 19:50:54 +0100 Subject: [PATCH 05/10] fltk: add cf-private on darwin Undefined symbols for architecture x86_64: "_NSDefaultRunLoopMode", referenced from: fl_open_display() in Fl_cocoa.o fl_ready() in Fl_cocoa.o fl_wait(double) in Fl_cocoa.o "_OBJC_CLASS_$_NSArray", referenced from: objc-class-ref in Fl_cocoa.o "_OBJC_CLASS_$_NSData", referenced from: objc-class-ref in Fl_Sys_Menu_Bar.o "_OBJC_CLASS_$_NSDate", referenced from: objc-class-ref in Fl_cocoa.o "_OBJC_CLASS_$_NSDictionary", referenced from: objc-class-ref in Fl_cocoa.o "_OBJC_CLASS_$_NSURL", referenced from: objc-class-ref in Fl_Native_File_Chooser_MAC.o ld: symbol(s) not found for architecture x86_64 --- pkgs/development/libraries/fltk/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/fltk/default.nix b/pkgs/development/libraries/fltk/default.nix index 405d80031e37..b1c798476ead 100644 --- a/pkgs/development/libraries/fltk/default.nix +++ b/pkgs/development/libraries/fltk/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, pkgconfig, xlibsWrapper, inputproto, libXi , freeglut, libGLU_combined, libjpeg, zlib, libXft, libpng -, darwin, libtiff, freetype +, libtiff, freetype, cf-private, Cocoa, AGL, GLUT }: let @@ -35,7 +35,7 @@ in stdenv.mkDerivation { propagatedBuildInputs = [ inputproto ] ++ (if stdenv.isDarwin - then (with darwin.apple_sdk.frameworks; [Cocoa AGL GLUT freetype libtiff]) + then [ Cocoa AGL GLUT freetype libtiff cf-private /* Needed for NSDefaultRunLoopMode */ ] else [ xlibsWrapper libXi freeglut ]); enableParallelBuilding = true; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 72a0dc8956be..84ca9cd8161e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9574,7 +9574,10 @@ with pkgs; flite = callPackage ../development/libraries/flite { }; - fltk13 = callPackage ../development/libraries/fltk { }; + fltk13 = callPackage ../development/libraries/fltk { + inherit (darwin) cf-private; + inherit (darwin.apple_sdk.frameworks) Cocoa AGL GLUT; + }; fltk = self.fltk13; flyway = callPackage ../development/tools/flyway { }; From 388a868d6db2e5fb7dac0cf7a7c22265262e32f3 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 7 Nov 2018 19:54:16 +0100 Subject: [PATCH 06/10] glfw: add cf-private on darwin Undefined symbols for architecture x86_64: "_NSDefaultRunLoopMode", referenced from: __glfwPlatformPollEvents in cocoa_window.m.o __glfwPlatformWaitEvents in cocoa_window.m.o __glfwPlatformWaitEventsTimeout in cocoa_window.m.o "_OBJC_CLASS_$_NSArray", referenced from: objc-class-ref in cocoa_window.m.o "_OBJC_CLASS_$_NSDate", referenced from: objc-class-ref in cocoa_window.m.o ld: symbol(s) not found for architecture x86_64 --- pkgs/development/libraries/glfw/3.x.nix | 8 ++++++-- pkgs/top-level/all-packages.nix | 5 ++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/glfw/3.x.nix b/pkgs/development/libraries/glfw/3.x.nix index 8d4d4d10038a..9cbc60dcef5a 100644 --- a/pkgs/development/libraries/glfw/3.x.nix +++ b/pkgs/development/libraries/glfw/3.x.nix @@ -1,5 +1,5 @@ { stdenv, lib, fetchFromGitHub, cmake, libGL, libXrandr, libXinerama, libXcursor, libX11 -, darwin, fixDarwinDylibNames +, cf-private, Cocoa, Kernel, fixDarwinDylibNames }: stdenv.mkDerivation rec { @@ -21,7 +21,11 @@ stdenv.mkDerivation rec { buildInputs = [ libX11 libXrandr libXinerama libXcursor - ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ Cocoa Kernel fixDarwinDylibNames ]); + ] ++ lib.optionals stdenv.isDarwin [ + Cocoa Kernel fixDarwinDylibNames + # Needed for NSDefaultRunLoopMode symbols. + cf-private + ]; cmakeFlags = [ "-DBUILD_SHARED_LIBS=ON" ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 84ca9cd8161e..0ec669de21ef 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9731,7 +9731,10 @@ with pkgs; glfw = glfw3; glfw2 = callPackage ../development/libraries/glfw/2.x.nix { }; - glfw3 = callPackage ../development/libraries/glfw/3.x.nix { }; + glfw3 = callPackage ../development/libraries/glfw/3.x.nix { + inherit (darwin) cf-private; + inherit (darwin.apple_sdk.frameworks) Cocoa Kernel; + }; glibc = callPackage ../development/libraries/glibc { installLocales = config.glibc.locales or false; From be9fc0d669641c7e3747c37b8419beb93fa5bc0e Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 7 Nov 2018 19:56:56 +0100 Subject: [PATCH 07/10] keybase: add cf-private on darwin Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_NSData", referenced from: objc-class-ref in _x002.o "_OBJC_CLASS_$_NSDictionary", referenced from: objc-class-ref in _x002.o "_OBJC_CLASS_$_NSURL", referenced from: objc-class-ref in _x002.o ld: symbol(s) not found for architecture x86_64 --- pkgs/tools/security/keybase/default.nix | 13 +++++++++---- pkgs/top-level/all-packages.nix | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pkgs/tools/security/keybase/default.nix b/pkgs/tools/security/keybase/default.nix index 555244bc38cd..720c382ebd67 100644 --- a/pkgs/tools/security/keybase/default.nix +++ b/pkgs/tools/security/keybase/default.nix @@ -1,6 +1,7 @@ -{ stdenv, lib, buildGoPackage, fetchFromGitHub -, AVFoundation ? null, AudioToolbox ? null, ImageIO ? null, CoreMedia ? null -, Foundation ? null, CoreGraphics ? null, MediaToolbox ? null }: +{ stdenv, lib, buildGoPackage, fetchFromGitHub, cf-private +, AVFoundation, AudioToolbox, ImageIO, CoreMedia +, Foundation, CoreGraphics, MediaToolbox +}: buildGoPackage rec { name = "keybase-${version}"; @@ -18,7 +19,11 @@ buildGoPackage rec { sha256 = "1sw6v3vf544vp8grw8p287cx078mr9v0v1wffcj6f9p9shlwj7ic"; }; - buildInputs = lib.optionals stdenv.isDarwin [ AVFoundation AudioToolbox ImageIO CoreMedia Foundation CoreGraphics MediaToolbox ]; + buildInputs = lib.optionals stdenv.isDarwin [ + AVFoundation AudioToolbox ImageIO CoreMedia Foundation CoreGraphics MediaToolbox + # Needed for OBJC_CLASS_$_NSData symbols. + cf-private + ]; buildFlags = [ "-tags production" ]; meta = with stdenv.lib; { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0ec669de21ef..537a1b8cdcf4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3594,6 +3594,7 @@ with pkgs; kexectools = callPackage ../os-specific/linux/kexectools { }; keybase = callPackage ../tools/security/keybase { + inherit (darwin) cf-private; # Reasoning for the inherited apple_sdk.frameworks: # 1. specific compiler errors about: AVFoundation, AudioToolbox, MediaToolbox # 2. the rest are added from here: https://github.com/keybase/client/blob/68bb8c893c5214040d86ea36f2f86fbb7fac8d39/go/chat/attachments/preview_darwin.go#L7 From 0b45d5b8f9091ea599ed3a961e275c34a5533b07 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 7 Nov 2018 20:01:58 +0100 Subject: [PATCH 08/10] libui: add cf-private on darwin Undefined symbols for architecture x86_64: "_NSDefaultRunLoopMode", referenced from: _uiMainStep in main.m.o "_OBJC_CLASS_$_NSDate", referenced from: objc-class-ref in main.m.o "_OBJC_CLASS_$_NSDictionary", referenced from: objc-class-ref in multilineentry.m.o "_OBJC_CLASS_$_NSMutableArray", referenced from: objc-class-ref in alloc.m.o objc-class-ref in box.m.o objc-class-ref in menu.m.o objc-class-ref in radiobuttons.m.o objc-class-ref in tab.m.o ld: symbol(s) not found for architecture x86_64 --- pkgs/development/libraries/libui/default.nix | 85 ++++++++++---------- pkgs/top-level/all-packages.nix | 5 +- 2 files changed, 46 insertions(+), 44 deletions(-) diff --git a/pkgs/development/libraries/libui/default.nix b/pkgs/development/libraries/libui/default.nix index 150e299ac422..dcc406accbd7 100644 --- a/pkgs/development/libraries/libui/default.nix +++ b/pkgs/development/libraries/libui/default.nix @@ -1,54 +1,53 @@ -{ stdenv, fetchgit, cmake, pkgconfig, gtk3, darwin }: +{ stdenv, fetchgit, cmake, pkgconfig, gtk3, cf-private, Cocoa }: let shortName = "libui"; version = "3.1a"; backend = if stdenv.isDarwin then "darwin" else "unix"; in - stdenv.mkDerivation rec { - name = "${shortName}-${version}"; - src = fetchgit { - url = "https://github.com/andlabs/libui.git"; - rev = "6ebdc96b93273c3cedf81159e7843025caa83058"; - sha256 = "1lpbfa298c61aarlzgp7vghrmxg1274pzxh1j9isv8x758gk6mfn"; - }; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ cmake ] ++ - (if backend == "darwin" then [darwin.apple_sdk.frameworks.Cocoa] - else if backend == "unix" then [gtk3] - else null); +stdenv.mkDerivation rec { + name = "${shortName}-${version}"; + src = fetchgit { + url = "https://github.com/andlabs/libui.git"; + rev = "6ebdc96b93273c3cedf81159e7843025caa83058"; + sha256 = "1lpbfa298c61aarlzgp7vghrmxg1274pzxh1j9isv8x758gk6mfn"; + }; - preConfigure = stdenv.lib.optionalString stdenv.isDarwin '' - sed -i 's/set(CMAKE_OSX_DEPLOYMENT_TARGET "10.8")//' ./CMakeLists.txt - ''; + nativeBuildInputs = [ cmake pkgconfig ]; + buildInputs = stdenv.lib.optional stdenv.isLinux gtk3 + ++ stdenv.lib.optionals stdenv.isDarwin [ Cocoa cf-private /* For NSDefaultRunLoopMode */ ]; - installPhase = '' - mkdir -p $out/{include,lib} - mkdir -p $out/lib/pkgconfig - '' + stdenv.lib.optionalString stdenv.isLinux '' - mv ./out/${shortName}.so.0 $out/lib/ - ln -s $out/lib/${shortName}.so.0 $out/lib/${shortName}.so - '' + stdenv.lib.optionalString stdenv.isDarwin '' - mv ./out/${shortName}.A.dylib $out/lib/ - ln -s $out/lib/${shortName}.A.dylib $out/lib/${shortName}.dylib - '' + '' - cp $src/ui.h $out/include - cp $src/ui_${backend}.h $out/include + preConfigure = stdenv.lib.optionalString stdenv.isDarwin '' + sed -i 's/set(CMAKE_OSX_DEPLOYMENT_TARGET "10.8")//' ./CMakeLists.txt + ''; - cp ${./libui.pc} $out/lib/pkgconfig/${shortName}.pc - substituteInPlace $out/lib/pkgconfig/${shortName}.pc \ - --subst-var-by out $out \ - --subst-var-by version "${version}" - ''; - postInstall = stdenv.lib.optionalString stdenv.isDarwin '' - install_name_tool -id $out/lib/${shortName}.A.dylib $out/lib/${shortName}.A.dylib - ''; + installPhase = '' + mkdir -p $out/{include,lib} + mkdir -p $out/lib/pkgconfig + '' + stdenv.lib.optionalString stdenv.isLinux '' + mv ./out/${shortName}.so.0 $out/lib/ + ln -s $out/lib/${shortName}.so.0 $out/lib/${shortName}.so + '' + stdenv.lib.optionalString stdenv.isDarwin '' + mv ./out/${shortName}.A.dylib $out/lib/ + ln -s $out/lib/${shortName}.A.dylib $out/lib/${shortName}.dylib + '' + '' + cp $src/ui.h $out/include + cp $src/ui_${backend}.h $out/include - meta = with stdenv.lib; { - homepage = https://github.com/andlabs/libui; - description = "Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports."; - license = licenses.mit; - platforms = platforms.unix; - }; - } + cp ${./libui.pc} $out/lib/pkgconfig/${shortName}.pc + substituteInPlace $out/lib/pkgconfig/${shortName}.pc \ + --subst-var-by out $out \ + --subst-var-by version "${version}" + ''; + postInstall = stdenv.lib.optionalString stdenv.isDarwin '' + install_name_tool -id $out/lib/${shortName}.A.dylib $out/lib/${shortName}.A.dylib + ''; + + meta = with stdenv.lib; { + homepage = https://github.com/andlabs/libui; + description = "Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports."; + license = licenses.mit; + platforms = platforms.unix; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 537a1b8cdcf4..d9f87c4d6f56 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11174,7 +11174,10 @@ with pkgs; libuecc = callPackage ../development/libraries/libuecc { }; - libui = callPackage ../development/libraries/libui { }; + libui = callPackage ../development/libraries/libui { + inherit (darwin) cf-private; + inherit (darwin.apple_sdk.frameworks) Cocoa; + }; libunistring = callPackage ../development/libraries/libunistring { }; From 33104363af240c6eef5297bd2b3f4648d5e09f3b Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 7 Nov 2018 20:23:49 +0100 Subject: [PATCH 09/10] noti: add cf-private on darwin Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_NSDate", referenced from: objc-class-ref in _x002.o "_OBJC_CLASS_$_NSRunLoop", referenced from: objc-class-ref in _x002.o ld: symbol(s) not found for architecture x86_64 --- pkgs/tools/misc/noti/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/misc/noti/default.nix b/pkgs/tools/misc/noti/default.nix index 23646abe7875..43165b4f54bb 100644 --- a/pkgs/tools/misc/noti/default.nix +++ b/pkgs/tools/misc/noti/default.nix @@ -1,4 +1,4 @@ -{ stdenv, buildGoPackage, fetchFromGitHub, Cocoa }: +{ stdenv, buildGoPackage, fetchFromGitHub, cf-private, Cocoa }: buildGoPackage rec { name = "noti-${version}"; @@ -11,7 +11,7 @@ buildGoPackage rec { sha256 = "1chsqfqk0pnhx5k2nr4c16cpb8m6zv69l1jvv4v4903zgfzcm823"; }; - buildInputs = stdenv.lib.optionals stdenv.isDarwin [ Cocoa ]; + buildInputs = stdenv.lib.optionals stdenv.isDarwin [ Cocoa cf-private /* For OBJC_CLASS_$_NSDate */ ]; # TODO: Remove this when we update apple_sdk NIX_CFLAGS_COMPILE = stdenv.lib.optionals stdenv.isDarwin [ "-fno-objc-arc" ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d9f87c4d6f56..d4a54fca911b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1549,6 +1549,7 @@ with pkgs; noteshrink = callPackage ../tools/misc/noteshrink { }; noti = callPackage ../tools/misc/noti { + inherit (darwin) cf-private; inherit (darwin.apple_sdk.frameworks) Cocoa; }; From 14e41fe461ae756a2e274d6dbf91ee9e58212fa6 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 7 Nov 2018 20:28:27 +0100 Subject: [PATCH 10/10] opencv: add cf-private on darwin Undefined symbols for architecture x86_64: "_NSDefaultRunLoopMode", referenced from: _cvWaitKey in window_cocoa.mm.o "_OBJC_CLASS_$_NSDate", referenced from: objc-class-ref in window_cocoa.mm.o objc-class-ref in cap_qtkit.mm.o "_OBJC_CLASS_$_NSDictionary", referenced from: objc-class-ref in window_cocoa.mm.o objc-class-ref in cap_qtkit.mm.o "_OBJC_CLASS_$_NSMutableDictionary", referenced from: objc-class-ref in window_cocoa.mm.o "_OBJC_CLASS_$_NSRunLoop", referenced from: objc-class-ref in cap_qtkit.mm.o "_OBJC_CLASS_$_NSTimer", referenced from: objc-class-ref in cap_qtkit.mm.o ld: symbol(s) not found for architecture x86_64 --- pkgs/development/libraries/opencv/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/opencv/default.nix b/pkgs/development/libraries/opencv/default.nix index 66a840fa2a9e..4532285e53dc 100644 --- a/pkgs/development/libraries/opencv/default.nix +++ b/pkgs/development/libraries/opencv/default.nix @@ -10,7 +10,7 @@ , enableFfmpeg ? false, ffmpeg , enableGStreamer ? false, gst_all_1 , enableEigen ? true, eigen -, darwin +, cf-private, Cocoa, QTKit }: let @@ -54,7 +54,7 @@ stdenv.mkDerivation rec { ++ lib.optional enableFfmpeg ffmpeg ++ lib.optionals enableGStreamer (with gst_all_1; [ gstreamer gst-plugins-base ]) ++ lib.optional enableEigen eigen - ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ Cocoa QTKit ]) + ++ lib.optionals stdenv.isDarwin [ Cocoa QTKit cf-private /* For NSDefaultRunLoopMode */ ] ; propagatedBuildInputs = lib.optional enablePython pythonPackages.numpy; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d4a54fca911b..6cbc98dcd42c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11626,6 +11626,8 @@ with pkgs; opencv = callPackage ../development/libraries/opencv { ffmpeg = ffmpeg_2; + inherit (darwin) cf-private; + inherit (darwin.apple_sdk.frameworks) Cocoa QTKit; }; opencv3 = callPackage ../development/libraries/opencv/3.x.nix {