diff --git a/pkgs/development/libraries/NSPlist/default.nix b/pkgs/development/libraries/NSPlist/default.nix new file mode 100644 index 000000000000..bfee99619840 --- /dev/null +++ b/pkgs/development/libraries/NSPlist/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchFromGitHub, cmake }: + +stdenv.mkDerivation { + name = "NSPlist-713decf"; + + src = fetchFromGitHub { + owner = "matthewbauer"; + repo = "NSPlist"; + rev = "713decf06c1ef6c39a707bc99eb45ac9925f2b8a"; + sha256 = "0v4yfiwfd08hmh2ydgy6pnmlzjbd96k78dsla9pfd56ka89aw74r"; + }; + + buildInputs = [ cmake ]; + + meta = with stdenv.lib; { + maintainers = with maintainers; [ matthewbauer ]; + description = "Parses .plist files"; + license = licenses.mit; + platforms = platforms.unix; + }; +} diff --git a/pkgs/development/libraries/PlistCpp/default.nix b/pkgs/development/libraries/PlistCpp/default.nix new file mode 100644 index 000000000000..f7703b731b99 --- /dev/null +++ b/pkgs/development/libraries/PlistCpp/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchFromGitHub, cmake, boost, NSPlist, pugixml }: + +stdenv.mkDerivation { + name = "PlistCpp-11615d"; + + src = fetchFromGitHub { + owner = "matthewbauer"; + repo = "PlistCpp"; + rev = "11615deab3369356a182dabbf5bae30574967264"; + sha256 = "10jn6bvm9vn6492zix2pd724v5h4lccmkqg3lxfw8r0qg3av0yzv"; + }; + + buildInputs = [ cmake boost NSPlist pugixml ]; + + + meta = with stdenv.lib; { + maintainers = with maintainers; [ matthewbauer ]; + description = "CPP bindings for Plist"; + license = licenses.mit; + platforms = platforms.unix; + }; +} diff --git a/pkgs/development/libraries/pugixml/default.nix b/pkgs/development/libraries/pugixml/default.nix index 8c40ff2be20b..d9d0afa2bde8 100644 --- a/pkgs/development/libraries/pugixml/default.nix +++ b/pkgs/development/libraries/pugixml/default.nix @@ -18,9 +18,6 @@ stdenv.mkDerivation rec { sed -ire '/PUGIXML_HAS_LONG_LONG/ s/^\/\///' src/pugiconfig.hpp ''; - patches = [] - ++ stdenv.lib.optionals stdenv.isDarwin [ ./no-long-long.patch ]; - meta = with stdenv.lib; { description = "Light-weight, simple and fast XML parser for C++ with XPath support"; homepage = http://pugixml.org/; diff --git a/pkgs/development/libraries/pugixml/no-long-long.patch b/pkgs/development/libraries/pugixml/no-long-long.patch deleted file mode 100644 index 46c54e85a1d0..000000000000 --- a/pkgs/development/libraries/pugixml/no-long-long.patch +++ /dev/null @@ -1,19 +0,0 @@ -Get rid of long-long feature. This breaks on AppleClang compilers. ---- -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 40a7ab0..c84f0f7 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -26,9 +26,9 @@ else() - endif() - - # Enable C++11 long long for compilers that are capable of it --if(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STRLESS 3.1) -- target_compile_features(pugixml PUBLIC cxx_long_long_type) --endif() -+# if(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STRLESS 3.1) -+# target_compile_features(pugixml PUBLIC cxx_long_long_type) -+# endif() - - set_target_properties(pugixml PROPERTIES VERSION 1.7 SOVERSION 1) - diff --git a/pkgs/development/tools/xcbuild/platform.nix b/pkgs/development/tools/xcbuild/platform.nix index 34fc5b0f6202..31692d9bee68 100644 --- a/pkgs/development/tools/xcbuild/platform.nix +++ b/pkgs/development/tools/xcbuild/platform.nix @@ -101,6 +101,54 @@ let Name = "$(EXECUTABLE_NAME)"; }; } + { + Identifier = "com.apple.package-type.wrapper"; + Type = "PackageType"; + Name = "Wrapper"; + DefaultBuildSettings = { + WRAPPER_SUFFIX = ".bundle"; + WRAPPER_NAME = "$(WRAPPER_PREFIX)$(PRODUCT_NAME)$(WRAPPER_SUFFIX)"; + CONTENTS_FOLDER_PATH = "$(WRAPPER_NAME)/Contents"; + EXECUTABLE_NAME = "$(EXECUTABLE_PREFIX)$(PRODUCT_NAME)$(EXECUTABLE_VARIANT_SUFFIX)$(EXECUTABLE_SUFFIX)"; + EXECUTABLE_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/MacOS"; + EXECUTABLE_PATH = "$(EXECUTABLE_FOLDER_PATH)/$(EXECUTABLE_NAME)"; + INFOPLIST_PATH = "$(CONTENTS_FOLDER_PATH)/Info.plist"; + INFOSTRINGS_PATH = "$(LOCALIZED_RESOURCES_FOLDER_PATH)/InfoPlist.strings"; + PKGINFO_PATH = "$(CONTENTS_FOLDER_PATH)/PkgInfo"; + PBDEVELOPMENTPLIST_PATH = "$(CONTENTS_FOLDER_PATH)/pbdevelopment.plist"; + VERSIONPLIST_PATH = "$(CONTENTS_FOLDER_PATH)/version.plist"; + PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers"; + PRIVATE_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/PrivateHeaders"; + EXECUTABLES_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Executables"; + FRAMEWORKS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Frameworks"; + SHARED_FRAMEWORKS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/SharedFrameworks"; + SHARED_SUPPORT_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/SharedSupport"; + UNLOCALIZED_RESOURCES_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Resources"; + LOCALIZED_RESOURCES_FOLDER_PATH = "$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/$(DEVELOPMENT_LANGUAGE).lproj"; + DOCUMENTATION_FOLDER_PATH = "$(LOCALIZED_RESOURCES_FOLDER_PATH)/Documentation"; + PLUGINS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/PlugIns"; + SCRIPTS_FOLDER_PATH = "$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/Scripts"; + }; + ProductReference = { + FileType = "wrapper.cfbundle"; + Name = "$(WRAPPER_NAME)"; + IsLaunchable = "NO"; + }; + } + { + Identifier = "com.apple.package-type.wrapper.application"; + Type = "PackageType"; + BasedOn = "com.apple.package-type.wrapper"; + Name = "Application Wrapper"; + DefaultBuildSettings = { + GENERATE_PKGINFO_FILE = "YES"; + }; + ProductReference = { + FileType = "wrapper.application"; + Name = "$(WRAPPER_NAME)"; + IsLaunchable = "YES"; + }; + } ]; # Based off of the MacOSX Product Types.xcpsec file. All @@ -125,6 +173,39 @@ let Name = "Dynamic Library"; PackageTypes = [ "com.apple.package-type.mach-o-dylib" ]; } + { + Type = "ProductType"; + Identifier = "com.apple.product-type.bundle"; + Name = "Bundle"; + DefaultBuildProperties = { + FULL_PRODUCT_NAME = "$(WRAPPER_NAME)"; + MACH_O_TYPE = "mh_bundle"; + WRAPPER_PREFIX = ""; + WRAPPER_SUFFIX = ".$(WRAPPER_EXTENSION)"; + WRAPPER_EXTENSION = "bundle"; + WRAPPER_NAME = "$(WRAPPER_PREFIX)$(PRODUCT_NAME)$(WRAPPER_SUFFIX)"; + FRAMEWORK_FLAG_PREFIX = "-framework"; + LIBRARY_FLAG_PREFIX = "-l"; + LIBRARY_FLAG_NOSPACE = "YES"; + STRIP_STYLE = "non-global"; + }; + PackageTypes = [ "com.apple.package-type.wrapper" ]; + IsWrapper = "YES"; + HasInfoPlist = "YES"; + HasInfoPlistStrings = "YES"; + } + { + Identifier = "com.apple.product-type.application"; + Type = "ProductType"; + BasedOn = "com.apple.product-type.bundle"; + Name = "Application"; + DefaultBuildProperties = { + MACH_O_TYPE = "mh_execute"; + WRAPPER_SUFFIX = ".$(WRAPPER_EXTENSION)"; + WRAPPER_EXTENSION = "app"; + }; + PackageTypes = [ "com.apple.package-type.wrapper.application" ]; + } ]; in diff --git a/pkgs/development/tools/xcbuild/toolchain.nix b/pkgs/development/tools/xcbuild/toolchain.nix index 4313f0051473..9e34360909f9 100644 --- a/pkgs/development/tools/xcbuild/toolchain.nix +++ b/pkgs/development/tools/xcbuild/toolchain.nix @@ -1,6 +1,7 @@ {stdenv, writeText, toolchainName, xcbuild, fetchurl , llvm, cctools, gcc, bootstrap_cmds, binutils -, yacc, flex, m4, unifdef, gperf, indent, ctags, makeWrapper}: +, yacc, flex, m4, unifdef, gperf, indent, ctags, makeWrapper +, xib2nib}: let @@ -89,6 +90,8 @@ stdenv.mkDerivation { ln -s ${cctools}/bin/pagestuff ln -s ${cctools}/bin/ranlib ln -s ${cctools}/bin/redo_prebinding + + ln -s ${xib2nib}/bin/ibtool '' + # No point including the entire gcc closure if we don't already have it (if stdenv.cc.isClang then '' diff --git a/pkgs/development/tools/xib2nib/default.nix b/pkgs/development/tools/xib2nib/default.nix new file mode 100644 index 000000000000..d585a35b0bc5 --- /dev/null +++ b/pkgs/development/tools/xib2nib/default.nix @@ -0,0 +1,22 @@ +{ stdenv, callPackage, fetchFromGitHub, pugixml, boost, PlistCpp }: + +stdenv.mkDerivation { + name = "xib2nib-730e177"; + + src = fetchFromGitHub { + owner = "matthewbauer"; + repo = "xib2nib"; + rev = "97c6a53aab83d919805efcae33cf80690e953d1e"; + sha256 = "08442f4xg7racknj35nr56a4c62gvdgdw55pssbkn2qq0rfzziqq"; + }; + + buildInputs = [ PlistCpp pugixml boost ]; + makeFlags = [ "PREFIX=$(out)" ]; + + meta = with stdenv.lib; { + maintainers = with maintainers; [ matthewbauer ]; + description = "Compiles CocoaTouch .xib files into .nib"; + license = licenses.mit; + platforms = platforms.unix; + }; +} diff --git a/pkgs/os-specific/darwin/install_name_tool/default.nix b/pkgs/os-specific/darwin/install_name_tool/default.nix deleted file mode 100644 index 581eb31cc71c..000000000000 --- a/pkgs/os-specific/darwin/install_name_tool/default.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ stdenv }: - -assert stdenv.isDarwin; - -stdenv.mkDerivation { - name = "install_name_tool"; - src = "/usr/bin/install_name_tool"; - - unpackPhase = "true"; - dontBuild = true; - - installPhase = '' - mkdir -p "$out"/bin - ln -s "$src" "$out"/bin - ''; - - meta = with stdenv.lib; { - description = "Change dynamic shared library install names"; - homepage = https://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man1/install_name_tool.1.html; - maintainers = with maintainers; [ lovek323 ]; - platforms = platforms.darwin; - - longDescription = '' - Install_name_tool changes the dynamic shared library install names and or - adds, changes or deletes the rpaths recorded in a Mach-O binary. - ''; - }; -} - diff --git a/pkgs/tools/security/pinentry-mac/default.nix b/pkgs/tools/security/pinentry-mac/default.nix index 7116d1777d6d..4cba1c7e6172 100644 --- a/pkgs/tools/security/pinentry-mac/default.nix +++ b/pkgs/tools/security/pinentry-mac/default.nix @@ -1,20 +1,22 @@ -{ fetchurl, stdenv }: +{ fetchurl, stdenv, fetchFromGitHub, xcbuild, libiconv, Cocoa, ncurses }: stdenv.mkDerivation rec { name = "pinentry-mac-0.9.4"; - src = fetchurl { - url = "https://github.com/GPGTools/pinentry-mac/archive/v0.9.4.tar.gz"; - sha256 = "037ebb010377d3a3879ae2a832cefc4513f5c397d7d887d7b86b4e5d9a628271"; + src = fetchFromGitHub { + owner = "matthewbauer"; + repo = "pinentry-mac"; + rev = "d60aa902644a1f0126ec50e79937423a3a7c3bc4"; + sha256 = "0xp4rdyj0mw6gg1z1wraggb1qlkjb5845mibrz3nj0l692da52nq"; }; - postPatch = '' - substituteInPlace ./Makefile --replace "xcodebuild" "/usr/bin/xcodebuild" - ''; + buildInputs = [ xcbuild libiconv Cocoa ncurses ]; + + dontUseXcbuild = true; installPhase = '' mkdir -p $out/Applications - mv build/Release/pinentry-mac.app $out/Applications + mv pinentry-mac-*/Build/Products/Release/pinentry-mac.app $out/Applications ''; passthru = { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e20c102ea900..01fb1fa9ff81 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -555,8 +555,6 @@ with pkgs; reattach-to-user-namespace = callPackage ../os-specific/darwin/reattach-to-user-namespace {}; - install_name_tool = callPackage ../os-specific/darwin/install_name_tool { }; - xcodeenv = callPackage ../development/mobile/xcodeenv { }; titaniumenv = callPackage ../development/mobile/titaniumenv { @@ -3492,7 +3490,9 @@ with pkgs; libcap = if stdenv.isDarwin then null else libcap; }; - pinentry_mac = callPackage ../tools/security/pinentry-mac { }; + pinentry_mac = callPackage ../tools/security/pinentry-mac { + inherit (darwin.apple_sdk.frameworks) Cocoa; + }; pingtcp = callPackage ../tools/networking/pingtcp { }; @@ -18482,4 +18482,11 @@ with pkgs; ghc-standalone-archive = callPackage ../os-specific/darwin/ghc-standalone-archive { inherit (darwin) cctools; }; messenger-for-desktop = callPackage ../applications/networking/instant-messengers/messenger-for-desktop {}; + + NSPlist = callPackage ../development/libraries/NSPlist {}; + + PlistCpp = callPackage ../development/libraries/PlistCpp {}; + + xib2nib = callPackage ../development/tools/xib2nib {}; + } diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e13978469345..b8862bb65f07 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -28909,8 +28909,7 @@ EOF }; propagatedBuildInputs = with self; [ cffi ]; - buildInputs = [ pkgs.libspotify ] - ++ stdenv.lib.optional stdenv.isDarwin pkgs.install_name_tool; + buildInputs = [ pkgs.libspotify ]; # python zip complains about old timestamps preConfigure = ''