Merge pull request #24838 from matthewbauer/ibtool

pinentry_mac: use xcbuild
This commit is contained in:
Daniel Peebles 2017-04-12 22:20:57 -04:00 committed by GitHub
commit f21a6940da
11 changed files with 171 additions and 65 deletions

View File

@ -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;
};
}

View File

@ -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;
};
}

View File

@ -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/;

View File

@ -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)

View File

@ -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

View File

@ -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 ''

View File

@ -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;
};
}

View File

@ -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.
'';
};
}

View File

@ -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 = {

View File

@ -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 {};
}

View File

@ -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 = ''