From 5db3f3ee61428047dfe4cc2365814124af8dc52c Mon Sep 17 00:00:00 2001 From: Artyom Shalkhakov Date: Mon, 1 Dec 2014 20:59:49 +0600 Subject: [PATCH] gnustep: remove gnustep-startup Removing gnustep-startup (not needed anymore). Adding Gorm and ProjectCenter applications (these mostly work, provided the environment is set up manually). --- pkgs/applications/editors/gorm/default.nix | 53 +++++++++-- .../editors/projectcenter/default.nix | 55 ++++++++++-- .../projectcenter/fixup-preamble.patch | 14 +++ .../libraries/gnustep-startup/default.nix | 89 ------------------- pkgs/top-level/all-packages.nix | 4 - 5 files changed, 108 insertions(+), 107 deletions(-) create mode 100644 pkgs/applications/editors/projectcenter/fixup-preamble.patch delete mode 100644 pkgs/development/libraries/gnustep-startup/default.nix diff --git a/pkgs/applications/editors/gorm/default.nix b/pkgs/applications/editors/gorm/default.nix index ccd038534a7..fd0b88322cd 100644 --- a/pkgs/applications/editors/gorm/default.nix +++ b/pkgs/applications/editors/gorm/default.nix @@ -1,5 +1,6 @@ -{ stdenv, fetchurl, gnustep_startup }: - +{ buildEnv +, stdenv, fetchurl, gnustep_base, gnustep_make, gnustep_back, gnustep_gui +}: let version = "1.2.18"; in @@ -10,11 +11,49 @@ stdenv.mkDerivation rec { url = "ftp://ftp.gnustep.org/pub/gnustep/dev-apps/gorm-${version}.tar.gz"; sha256 = "1vpzvmsnynlq5dv6rw9vbk1zzsim6z7b2kprrlm8dknyq0r1sdrq"; }; - - buildInputs = [ gnustep_startup ]; - buildPhase = '' - . ${gnustep_startup}/System/Library/Makefiles/GNUstep.sh - make + GNUSTEP_env = buildEnv { + name = "gnustep-gorm-env"; + paths = [ gnustep_make gnustep_back gnustep_base gnustep_gui ]; + pathsToLink = [ "/bin" "/sbin" "/include" "/lib" "/share" ]; + }; + GNUSTEP_MAKEFILES = "${GNUSTEP_env}/share/GNUstep/Makefiles"; + GNUSTEP_INSTALLATION_DOMAIN = "SYSTEM"; + ADDITIONAL_CPPFLAGS = "-DGNUSTEP"; + + buildInputs = [ gnustep_base gnustep_back gnustep_make gnustep_gui ]; + dontBuild = true; + installPhase = '' + export ADDITIONAL_INCLUDE_DIRS=${GNUSTEP_env}/include + make \ + GNUSTEP_SYSTEM_APPS=$GNUSTEP_env/lib/GNUstep/Applications \ + GNUSTEP_SYSTEM_ADMIN_APPS=$GNUSTEP_env/lib/GNUstep/Applications \ + GNUSTEP_SYSTEM_WEB_APPS=$GNUSTEP_env/lib/GNUstep/WebApplications \ + GNUSTEP_SYSTEM_TOOLS=$GNUSTEP_env/bin \ + GNUSTEP_SYSTEM_ADMIN_TOOLS=$GNUSTEP_env/sbin \ + GNUSTEP_SYSTEM_LIBRARY=$GNUSTEP_env/lib/GNUstep \ + GNUSTEP_SYSTEM_HEADERS=$GNUSTEP_env/include \ + GNUSTEP_SYSTEM_LIBRARIES=$GNUSTEP_env/lib \ + GNUSTEP_SYSTEM_DOC=$GNUSTEP_env/share/GNUstep/Documentation \ + GNUSTEP_SYSTEM_DOC_MAN=$GNUSTEP_env/share/man \ + GNUSTEP_SYSTEM_DOC_INFO=$GNUSTEP_env/share/info \ + GNUSTEP_SYSTEM_LIBRARIES=$GNUSTEP_env/lib \ + messages=yes + make install \ + GNUSTEP_INSTALLATION_DOMAIN=SYSTEM \ + GNUSTEP_SYSTEM_APPS=$out/lib/GNUstep/Applications \ + GNUSTEP_SYSTEM_ADMIN_APPS=$out/lib/GNUstep/Applications \ + GNUSTEP_SYSTEM_WEB_APPS=$out/lib/GNUstep/WebApplications \ + GNUSTEP_SYSTEM_TOOLS=$out/bin \ + GNUSTEP_SYSTEM_ADMIN_TOOLS=$out/sbin \ + GNUSTEP_SYSTEM_LIBRARY=$out/lib/GNUstep \ + GNUSTEP_SYSTEM_HEADERS=$out/include \ + GNUSTEP_SYSTEM_LIBRARIES=$out/lib \ + GNUSTEP_SYSTEM_DOC=$out/share/GNUstep/Documentation \ + GNUSTEP_SYSTEM_DOC_MAN=$out/share/man \ + GNUSTEP_SYSTEM_DOC_INFO=$out/share/info \ + GNUSTEP_SYSTEM_LIBRARIES=$out/lib \ + GNUSTEP_HEADERS=$out/include \ + DESTDIR_GNUSTEP_MAKEFILES=$out/share/GNUstep/Makefiles ''; meta = { diff --git a/pkgs/applications/editors/projectcenter/default.nix b/pkgs/applications/editors/projectcenter/default.nix index 2b403dffc70..56c4a0535c2 100644 --- a/pkgs/applications/editors/projectcenter/default.nix +++ b/pkgs/applications/editors/projectcenter/default.nix @@ -1,5 +1,7 @@ -{ stdenv, fetchurl, gnustep_startup }: - +{ buildEnv +, stdenv, fetchurl +, gnustep_base, gnustep_make, gnustep_back, gnustep_gui +}: let version = "0.6.2"; in @@ -9,12 +11,51 @@ stdenv.mkDerivation rec { url = "ftp://ftp.gnustep.org/pub/gnustep/dev-apps/ProjectCenter-${version}.tar.gz"; sha256 = "0wwlbpqf541apw192jb633d634zkpjhcrrkd1j80y9hihphll465"; }; - - buildInputs = [ gnustep_startup ]; - buildPhase = '' - . $gnustep_startup/GNUstep/System/Library/Makefiles/GNUstep.sh - make + GNUSTEP_env = buildEnv { + name = "gnustep-projectcenter-env"; + paths = [ gnustep_make gnustep_back gnustep_base gnustep_gui ]; + pathsToLink = [ "/bin" "/sbin" "/include" "/lib" "/share" ]; + }; + GNUSTEP_MAKEFILES = "${GNUSTEP_env}/share/GNUstep/Makefiles"; + GNUSTEP_INSTALLATION_DOMAIN = "SYSTEM"; + ADDITIONAL_CPPFLAGS = "-DGNUSTEP"; + + patches = [ ./fixup-preamble.patch ]; + buildInputs = [ gnustep_base gnustep_back gnustep_make gnustep_gui ]; + dontBuild = true; + + installPhase = '' + export ADDITIONAL_INCLUDE_DIRS=${GNUSTEP_env}/include + make \ + GNUSTEP_SYSTEM_APPS=$GNUSTEP_env/lib/GNUstep/Applications \ + GNUSTEP_SYSTEM_ADMIN_APPS=$GNUSTEP_env/lib/GNUstep/Applications \ + GNUSTEP_SYSTEM_WEB_APPS=$GNUSTEP_env/lib/GNUstep/WebApplications \ + GNUSTEP_SYSTEM_TOOLS=$GNUSTEP_env/bin \ + GNUSTEP_SYSTEM_ADMIN_TOOLS=$GNUSTEP_env/sbin \ + GNUSTEP_SYSTEM_LIBRARY=$GNUSTEP_env/lib/GNUstep \ + GNUSTEP_SYSTEM_HEADERS=$GNUSTEP_env/include \ + GNUSTEP_SYSTEM_LIBRARIES=$GNUSTEP_env/lib \ + GNUSTEP_SYSTEM_DOC=$GNUSTEP_env/share/GNUstep/Documentation \ + GNUSTEP_SYSTEM_DOC_MAN=$GNUSTEP_env/share/man \ + GNUSTEP_SYSTEM_DOC_INFO=$GNUSTEP_env/share/info \ + GNUSTEP_SYSTEM_LIBRARIES=$GNUSTEP_env/lib \ + messages=yes + make install \ + GNUSTEP_INSTALLATION_DOMAIN=SYSTEM \ + GNUSTEP_SYSTEM_APPS=$out/lib/GNUstep/Applications \ + GNUSTEP_SYSTEM_ADMIN_APPS=$out/lib/GNUstep/Applications \ + GNUSTEP_SYSTEM_WEB_APPS=$out/lib/GNUstep/WebApplications \ + GNUSTEP_SYSTEM_TOOLS=$out/bin \ + GNUSTEP_SYSTEM_ADMIN_TOOLS=$out/sbin \ + GNUSTEP_SYSTEM_LIBRARY=$out/lib/GNUstep \ + GNUSTEP_SYSTEM_HEADERS=$out/include \ + GNUSTEP_SYSTEM_LIBRARIES=$out/lib \ + GNUSTEP_SYSTEM_DOC=$out/share/GNUstep/Documentation \ + GNUSTEP_SYSTEM_DOC_MAN=$out/share/man \ + GNUSTEP_SYSTEM_DOC_INFO=$out/share/info \ + GNUSTEP_SYSTEM_LIBRARIES=$out/lib \ + GNUSTEP_HEADERS=$out/include ''; meta = { diff --git a/pkgs/applications/editors/projectcenter/fixup-preamble.patch b/pkgs/applications/editors/projectcenter/fixup-preamble.patch new file mode 100644 index 00000000000..3fe19a6a58b --- /dev/null +++ b/pkgs/applications/editors/projectcenter/fixup-preamble.patch @@ -0,0 +1,14 @@ +diff -c ProjectCenter-0.6.2/GNUmakefile.preamble ProjectCenter-0.6.2.patched/GNUmakefile.preamble +--- ProjectCenter-0.6.2/GNUmakefile.preamble 2010-08-08 03:56:04.000000000 +0600 ++++ artyom/ProjectCenter-0.6.2.patched/GNUmakefile.preamble 2014-12-01 20:08:31.000000000 +0600 +@@ -39,7 +39,7 @@ + ADDITIONAL_INCLUDE_DIRS += -I./ -I./Headers + + # Additional LDFLAGS to pass to the linker +-ADDITIONAL_LDFLAGS += ++ADDITIONAL_LDFLAGS += -lgnustep-base -lgnustep-gui + + # Additional library directories the linker should search + ADDITIONAL_LIB_DIRS += -L./Framework/ProjectCenter.framework/$(GNUSTEP_TARGET_LDIR) + +Diff finished. Mon Dec 1 20:08:50 2014 diff --git a/pkgs/development/libraries/gnustep-startup/default.nix b/pkgs/development/libraries/gnustep-startup/default.nix deleted file mode 100644 index d45fa8fda9b..00000000000 --- a/pkgs/development/libraries/gnustep-startup/default.nix +++ /dev/null @@ -1,89 +0,0 @@ -{ stdenv, fetchurl, pkgconfig -, aspell -, cups -, audiofile, portaudio -, clang, libobjc2 -, gmp -, 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: libobjc2 is a propagated (compile-time/runtime) dependency - propagatedBuildInputs = [ libobjc2 cups audiofile portaudio aspell libjpeg libtiff libpng giflib libungif libxml2 libxslt libgcrypt icu gmp libiconv gnutls icu libffi ]; - - buildPhase = '' - ./InstallGNUstep --batch --prefix=$out - ''; - - # TODO: add: - # . $out/System/Library/Makefiles/GNUstep.sh - # to bashrc prior to building any GNUstep package - # TODO: need a development environment for GNUstep packages - # - it would set various settings appropriately - # - similarly to what Python is doing - # ~/proj/nix/nixpkgs/pkgs/top-level/python-packages.nix: wrapPython? - # - buildPythonPackage: ~/proj/nix/nixpkgs/pkgs/development/python-modules/generic/default.nix - # - # 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0e0ca28a652..6dc478945c8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7591,10 +7591,6 @@ in gnome-sharp = callPackage ../development/libraries/gnome-sharp {}; - gnustep_startup = callPackage ../development/libraries/gnustep-startup/default.nix { - stdenv = clangStdenv; - giflib = giflib_4_1; - }; gorm = callPackage ../applications/editors/gorm/default.nix { stdenv = clangStdenv; };