about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/maintainers.nix1
-rw-r--r--pkgs/development/libraries/gnustep-startup/default.nix83
-rw-r--r--pkgs/development/libraries/libobjc2/default.nix49
-rw-r--r--pkgs/development/libraries/libobjc2/removeCXXtests.patch20
-rw-r--r--pkgs/top-level/all-packages.nix7
5 files changed, 160 insertions, 0 deletions
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index af43ae639ea6..fde07ca493f5 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -39,6 +39,7 @@
   aristid = "Aristid Breitkreuz <aristidb@gmail.com>";
   arobyn = "Alexei Robyn <shados@shados.net>";
   artuuge = "Artur E. Ruuge <artuuge@gmail.com>";
+  ashalkhakov = "Artyom Shalkhakov <artyom.shalkhakov@gmail.com>";
   asppsa = "Alastair Pharo <asppsa@gmail.com>";
   astsmtl = "Alexander Tsamutali <astsmtl@yandex.ru>";
   aszlig = "aszlig <aszlig@redmoonstudios.org>";
diff --git a/pkgs/development/libraries/gnustep-startup/default.nix b/pkgs/development/libraries/gnustep-startup/default.nix
new file mode 100644
index 000000000000..77a9fa439ccb
--- /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 000000000000..a3f45b5cc230
--- /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 000000000000..48c17c1d7602
--- /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 e5ee0608839f..45f410c770a2 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 { };