From a28c729766b1ed47e62b8c43b5d87a52c5b78922 Mon Sep 17 00:00:00 2001 From: Artyom Shalkhakov Date: Mon, 17 Nov 2014 17:32:49 +0600 Subject: [PATCH] gnustep: init Adding new library: gnustep-startup, which packages the core libraries necessary for GNUstep: gnustep-make, gnustep-base, gnustep-gui, gnustep-backend. --- lib/maintainers.nix | 1 + .../libraries/gnustep-startup/default.nix | 83 +++++++++++++++++++ .../libraries/libobjc2/default.nix | 49 +++++++++++ .../libraries/libobjc2/removeCXXtests.patch | 20 +++++ pkgs/top-level/all-packages.nix | 7 ++ 5 files changed, 160 insertions(+) create mode 100644 pkgs/development/libraries/gnustep-startup/default.nix create mode 100644 pkgs/development/libraries/libobjc2/default.nix create mode 100644 pkgs/development/libraries/libobjc2/removeCXXtests.patch diff --git a/lib/maintainers.nix b/lib/maintainers.nix index af43ae639ea..fde07ca493f 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -39,6 +39,7 @@ aristid = "Aristid Breitkreuz "; arobyn = "Alexei Robyn "; artuuge = "Artur E. Ruuge "; + ashalkhakov = "Artyom Shalkhakov "; asppsa = "Alastair Pharo "; astsmtl = "Alexander Tsamutali "; aszlig = "aszlig "; diff --git a/pkgs/development/libraries/gnustep-startup/default.nix b/pkgs/development/libraries/gnustep-startup/default.nix new file mode 100644 index 00000000000..77a9fa439cc --- /dev/null +++ b/pkgs/development/libraries/gnustep-startup/default.nix @@ -0,0 +1,83 @@ +{ stdenv, fetchurl, pkgconfig +, aspell +, cups +, audiofile, portaudio +, clang, libobjc2 +, libjpeg, libtiff, libpng, giflib, libungif +, libxml2, libxslt, libiconv +, libffi +, gnutls, libgcrypt +, icu +, xlibs, x11 +, freetype +, which +}: + +let + version = "0.32.0"; +in +stdenv.mkDerivation rec { + name = "gnustep-core-${version}"; + + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-startup-${version}.tar.gz"; + sha256 = "1f24lggaind43jhp6gy5zspljbha5l2gnys1ddxjdxkiwqfkznc6"; + }; + + buildInputs = [ clang libobjc2 cups audiofile portaudio aspell libjpeg libtiff libpng giflib libungif libxml2 libxslt libiconv gnutls libgcrypt icu pkgconfig x11 libffi freetype which ]; + # TODO: what's this for? +# nativeBuildInputs = [ ]; +# propagatedBuildInputs = [ ]; + + buildPhase = '' + ./InstallGNUstep --batch --prefix=$out + ''; + + # TODO: add: + # . $out/System/Library/Makefiles/GNUstep.sh + # to bashrc prior to building any GNUstep package + # TODO: could simply make the installPhase = ""; + installPhase = '' + echo Do not forget to source $out/System/Library/Makefiles/GNUstep.sh! + ''; + + meta = { + description = "GNUstep is a free, object-oriented, cross-platform development environment that strives for simplicity and elegance. GNUstep is based on and strives to be completely compatible with the Cocoa specification developed by Apple (Previously NeXT Software, Inc.)."; + + longDescription = '' + GNUstep is... + + ...an object-oriented tool development kit + + GNUstep-make and GNUstep-base make up the core libraries contain + a complete system for writing non-graphic tools in Objective-C. The + make package allows you to setup a simple and powerful system for + building, installing and packaging your tools. The base package + includes all the classes necessary for writing an incredible array of + tools, from wrappers for system tools to tools for communicating with + web and other types of servers. + + ...and a graphical development kit + + The core libraries contain classes for developing a complete + graphical application for almost any purpose. Along with our + object-oriented, graphical development applications, + ProjectCenter and Gorm it's simple to write very complex + commercial applications in weeks or months, rather than years + (or often, never) in the case of other development environments. + + ...and a cross platform development environment + + GNUstep can, currently, allow you to build applications on + GNU/Linux, Windows, FreeBSD, OpenBSD, NetBSD, Solaris and any + POSIX compliant UNIX based operating system. + ''; + + homepage = http://gnustep.org/; + + license = stdenv.lib.licenses.lgpl2Plus; + + maintainers = with stdenv.lib.maintainers; [ ashalkhakov ]; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/pkgs/development/libraries/libobjc2/default.nix b/pkgs/development/libraries/libobjc2/default.nix new file mode 100644 index 00000000000..a3f45b5cc23 --- /dev/null +++ b/pkgs/development/libraries/libobjc2/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchurl, + clang, + cmake +}: + +let + version = "1.7"; +in +stdenv.mkDerivation rec { + name = "libobjc2-${version}"; + src = fetchurl { + url = "http://download.gna.org/gnustep/libobjc2-1.7.tar.bz2"; + sha256 = "1h9wkm1x9wrzd3alm99bx710lrs9nb8h2x5jpxbqwgbgzzv4l6rs"; + }; + buildInputs = [ clang cmake ]; + + # since we don't support Objective-C++, we don't interoperate + # with C++ either + patches = [ ./removeCXXtests.patch ]; + + # build phase: + # mkdir Build + # cd Build + # cmake .. + # make -j8 + # make install + # + # probably useful: + cmakeFlags = [ "-DCMAKE_INSTALL_LIBDIR=lib" ]; + # + # cmakeDir = "../src"; # Build? +# postInstall = '' +# mkdir Build +# cd Build +# cmake -DCMAKE_INSTALL_PREFIX=$out -DGNUSTEP_INSTALL_TYPE=NONE .. +# make install +# ''; + + meta = { + description = "Objective-C runtime for use with GNUstep"; + + homepage = http://gnustep.org/; + + license = stdenv.lib.licenses.mit; + + maintainers = with stdenv.lib.maintainers; [ ashalkhakov ]; + platforms = stdenv.lib.platforms.all; + }; +} \ No newline at end of file diff --git a/pkgs/development/libraries/libobjc2/removeCXXtests.patch b/pkgs/development/libraries/libobjc2/removeCXXtests.patch new file mode 100644 index 00000000000..48c17c1d760 --- /dev/null +++ b/pkgs/development/libraries/libobjc2/removeCXXtests.patch @@ -0,0 +1,20 @@ +diff -c libobjc2-1.7/Test/CMakeLists.txt libobjc2-1.7-patched/Test/CMakeLists.txt +*** libobjc2-1.7/Test/CMakeLists.txt 2014-11-17 13:38:30.000000000 +0600 +--- libobjc2-1.7-patched/Test/CMakeLists.txt 2014-11-17 13:38:56.000000000 +0600 +*************** +*** 49,54 **** + endforeach() + + # Tests that are more than a single file. +! addtest_flags(CXXExceptions "-O0" "CXXException.m;CXXException.cc") +! addtest_flags(CXXExceptions_optimised "-O3" "CXXException.m;CXXException.cc") + +--- 49,54 ---- + endforeach() + + # Tests that are more than a single file. +! #addtest_flags(CXXExceptions "-O0" "CXXException.m;CXXException.cc") +! #addtest_flags(CXXExceptions_optimised "-O3" "CXXException.m;CXXException.cc") + +Only in libobjc2-1.7-patched/Test: CMakeLists.txt~ +Common subdirectories: libobjc2-1.7/Test/RuntimeTest.xcodeproj and libobjc2-1.7-patched/Test/RuntimeTest.xcodeproj diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e5ee0608839..45f410c770a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7586,6 +7586,11 @@ in gnome-sharp = callPackage ../development/libraries/gnome-sharp {}; + gnustep_startup = callPackage ../development/libraries/gnustep-startup/default.nix { + stdenv = clangStdenv; + giflib = giflib_4_1; + }; + granite = callPackage ../development/libraries/granite { }; gtk2 = callPackage ../development/libraries/gtk+/2.x.nix { @@ -8388,6 +8393,8 @@ in libnxml = callPackage ../development/libraries/libnxml { }; + libobjc2 = callPackage ../development/libraries/libobjc2 { stdenv = clangStdenv; }; + libodfgen = callPackage ../development/libraries/libodfgen { }; libofa = callPackage ../development/libraries/libofa { };