gnustep: packageg libs separately

Packing gnustep libs separately, with no use of gnustep-startup. Also,
fixed a bug in WindowMaker package (some imaging dependencies were not supplied).
This commit is contained in:
Artyom Shalkhakov 2014-12-01 16:56:13 +06:00 committed by Matthew Bauer
parent a28c729766
commit 52d17a5f41
13 changed files with 437 additions and 3 deletions

View File

@ -0,0 +1,31 @@
{ stdenv, fetchurl, gnustep_startup }:
let
version = "1.2.18";
in
stdenv.mkDerivation rec {
name = "gorm-${version}";
src = fetchurl {
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
'';
meta = {
description = "Gorm stands for Graphical Object Relationship Modeller and is an easy-to-use interface designer for GNUstep";
homepage = http://www.gnustep.org/experience/Gorm.html;
license = stdenv.lib.licenses.lgpl2Plus;
maintainers = with stdenv.lib.maintainers; [ ashalkhakov ];
platforms = stdenv.lib.platforms.all;
broken = true;
};
}

View File

@ -0,0 +1,31 @@
{ stdenv, fetchurl, gnustep_startup }:
let
version = "0.6.2";
in
stdenv.mkDerivation rec {
name = "projectcenter-${version}";
src = fetchurl {
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
'';
meta = {
description = "ProjectCenter is GNUstep's integrated development environment (IDE) and allows a rapid development and easy managment of ProjectCenter running on GNUstep applications, tools and frameworks.";
homepage = http://www.gnustep.org/experience/ProjectCenter.html;
license = stdenv.lib.licenses.lgpl2Plus;
maintainers = with stdenv.lib.maintainers; [ ashalkhakov ];
platforms = stdenv.lib.platforms.all;
broken = true;
};
}

View File

@ -0,0 +1,77 @@
{ buildEnv
, cairo
, clang
, fetchurl
, gnustep_base, gnustep_make, gnustep_gui
, xlibs
, x11
, freetype
, pkgconfig
, stdenv
}:
let
version = "0.24.0";
in
stdenv.mkDerivation rec {
name = "gnustep-back-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-back-0.24.0.tar.gz";
sha256 = "0qixbilkkrqxrhhj9hnp7ygd5gs23b3qbbgk3gaxj73d0xqfvhjz";
};
buildInputs = [ cairo clang freetype gnustep_base gnustep_make gnustep_gui pkgconfig x11 ];
propagatedBuildInputs = [ ];
GNUSTEP_env = buildEnv {
name = "gnustep-back-env";
paths = [ gnustep_make 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-tools.patch ];
dontBuild = true;
installPhase = ''
export ADDITIONAL_INCLUDE_DIRS=${GNUSTEP_env}/include
./configure
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 = {
description = "GNUstep-back is a generic backend for GNUstep.";
homepage = http://gnustep.org/;
license = stdenv.lib.licenses.lgpl2Plus;
maintainers = with stdenv.lib.maintainers; [ ashalkhakov ];
platforms = stdenv.lib.platforms.all;
};
}

View File

@ -0,0 +1,15 @@
diff -c gnustep-back-0.24.0/Tools/GNUmakefile.preamble gnustep-back-0.24.0.patched/Tools/GNUmakefile.preamble
--- gnustep-back-0.24.0/Tools/GNUmakefile.preamble 2013-07-04 22:44:28.000000000 +0600
+++ gnustep-back-0.24.0.patched/Tools/GNUmakefile.preamble 2014-12-01 16:40:37.000000000 +0600
@@ -52,6 +52,9 @@
# Additional libraries when linking applications
#ADDITIONAL_GUI_LIBS +=
+# Additional libraries when linking tools
+gpbs_TOOL_LIBS += -lgnustep-gui -lgnustep-base $(SYSTEM_LIBS)
+
#
# Flags dealing with installing and uninstalling
#
Diff finished. Mon Dec 1 16:41:02 2014

View File

@ -0,0 +1,85 @@
{ aspell, audiofile
, buildEnv
, clang, cups
, fetchurl
, gmp, gnustep_make, gnutls
, libffi
, libjpeg, libtiff, libpng, giflib, libungif
, libxml2, libxslt, libiconv
, libobjc2, libgcrypt
, icu
, pkgconfig, portaudio
, stdenv
, which
}:
let
version = "1.24.7";
in
stdenv.mkDerivation rec {
name = "gnustep-base-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-base-1.24.7.tar.gz";
sha256 = "0qhphw61ksyzf04a4apmvx8000alws6d92x8ila1mi5bapcpv41s";
};
buildInputs = [
aspell audiofile
clang cups
gmp gnustep_make gnutls
libffi
libjpeg libtiff libpng giflib libungif
libxml2 libxslt libiconv
libobjc2 libgcrypt
icu
pkgconfig portaudio
which
];
propagatedBuildInputs = [
aspell audiofile
cups
gmp gnutls
libffi
libjpeg libtiff libpng giflib libungif
libxml2 libxslt libiconv
libobjc2 libgcrypt
icu
portaudio
];
GNUSTEP_env = buildEnv {
name = "gnustep-make-env";
paths = [ gnustep_make ];
};
GNUSTEP_MAKEFILES = "${GNUSTEP_env}/share/GNUstep/Makefiles";
GNUSTEP_INSTALLATION_DOMAIN = "SYSTEM";
patches = [ ./fixup-base-makefile-installdir.patch ];
dontBuild = true;
installPhase = ''
./configure --disable-importing-config-file
make
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 = {
description = "GNUstep-base is an implementation of AppKit and Foundation libraries of OPENSTEP and Cocoa.";
homepage = http://gnustep.org/;
license = stdenv.lib.licenses.lgpl2Plus;
maintainers = with stdenv.lib.maintainers; [ ashalkhakov ];
platforms = stdenv.lib.platforms.all;
};
}

View File

@ -0,0 +1,29 @@
--- gnustep-base-1.24.7/Makefile.postamble 2011-07-15 19:53:45.000000000 +0600
+++ gnustep-base-1.24.7.patched/Makefile.postamble 2014-11-29 22:25:07.000000000 +0600
@@ -38,13 +38,13 @@
# Things to do after compiling
# after-all::
-$(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional:
- $(ECHO_CREATING)$(MKDIRS) $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional$(END_ECHO)
+$(DESTDIR_GNUSTEP_MAKEFILES)/Additional:
+ $(ECHO_CREATING)$(MKDIRS) $(DESTDIR_GNUSTEP_MAKEFILES)/Additional$(END_ECHO)
# Things to do before installing
-before-install:: $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional
+before-install:: $(DESTDIR_GNUSTEP_MAKEFILES)/Additional
$(ECHO_NOTHING)$(INSTALL_DATA) base.make \
- $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO)
+ $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO)
# Things to do after installing
# after-install::
@@ -54,7 +54,7 @@
# Things to do after uninstalling
after-uninstall::
- $(ECHO_NOTHING)rm -f $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO)
+ $(ECHO_NOTHING)rm -f $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO)
# Things to do before cleaning
# before-clean::

View File

@ -0,0 +1,73 @@
{ buildEnv
, clang
, fetchurl
, gnustep_base, gnustep_make
#, xlibs, x11, freetype
#, pkgconfig
, stdenv }:
let
version = "0.24.0";
in
stdenv.mkDerivation rec {
name = "gnustep-gui-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-gui-0.24.0.tar.gz";
sha256 = "0d6jzfcyacxjzrr2p398ysvs1akv1fcmngfzxxbfxa947miydjxg";
};
buildInputs = [ clang gnustep_base gnustep_make ];
propagatedBuildInputs = [ ];
GNUSTEP_env = buildEnv {
name = "gnustep-gui-env";
paths = [ gnustep_make gnustep_base ];
pathsToLink = [ "/bin" "/sbin" "/include" "/lib" "/share" ];
};
GNUSTEP_MAKEFILES = "${GNUSTEP_env}/share/GNUstep/Makefiles";
GNUSTEP_INSTALLATION_DOMAIN = "SYSTEM";
ADDITIONAL_CPPFLAGS = "-DGNUSTEP";
patches = [ ./fixup-gui-makefile-installdir.patch ./fixup-gui-tools-preamble.patch ./fixup-gui-textconverters-preamble.patch ];
dontBuild = true;
installPhase = ''
export ADDITIONAL_INCLUDE_DIRS=${GNUSTEP_env}/include
./configure
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 = {
description = "GNUstep-gui is a GUI class library of GNUstep.";
homepage = http://gnustep.org/;
license = stdenv.lib.licenses.lgpl2Plus;
maintainers = with stdenv.lib.maintainers; [ ashalkhakov ];
platforms = stdenv.lib.platforms.all;
};
}

View File

@ -0,0 +1,28 @@
--- gnustep-gui-0.24.0/GNUmakefile.postamble 2010-05-17 22:38:59.000000000 +0600
+++ gnustep-gui-0.24.0.patched/GNUmakefile.postamble 2014-12-01 13:44:05.000000000 +0600
@@ -40,20 +40,20 @@
# The following rule is important mainly for packaging, because in that case
# you install into a fake system tree, and the directory is not there.
#
-$(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional:
- $(MKDIRS) $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional
+$(DESTDIR_GNUSTEP_MAKEFILES)/Additional:
+ $(MKDIRS) $(DESTDIR_GNUSTEP_MAKEFILES)/Additional
# Things to do before installing
-before-install:: $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional
+before-install:: $(DESTDIR_GNUSTEP_MAKEFILES)/Additional
$(INSTALL_DATA) gui.make \
- $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/gui.make
+ $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/gui.make
# Things to do after installing
# after-install::
# Things to do before uninstalling
before-uninstall::
- rm -f $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/gui.make
+ rm -f $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/gui.make
# Things to do after uninstalling
# after-uninstall::

View File

@ -0,0 +1,11 @@
--- gnustep-gui-0.24.0/TextConverters/RTF/GNUmakefile.preamble 2008-06-10 10:01:49.000000000 +0600
+++ gnustep-gui-0.24.0.patched/TextConverters/RTF/GNUmakefile.preamble 2014-12-01 13:02:11.000000000 +0600
@@ -49,7 +49,7 @@
ADDITIONAL_INCLUDE_DIRS +=-I../../Headers/Additions -I../../Headers
# Additional LDFLAGS to pass to the linker
-#ADDITIONAL_LDFLAGS +=
+ADDITIONAL_LDFLAGS += -lgnustep-gui
# Additional library directories the linker should search
ADDITIONAL_LIB_DIRS += -L../../Source/$(GNUSTEP_OBJ_DIR)

View File

@ -0,0 +1,14 @@
--- gnustep-gui-0.24.0/Tools/GNUmakefile.preamble 2006-02-22 12:43:48.000000000 +0600
+++ gnustep-gui-0.24.0.patched/Tools/GNUmakefile.preamble 2014-12-01 12:52:41.000000000 +0600
@@ -32,9 +32,11 @@
ADDITIONAL_LIB_DIRS += -L../Source/$(GNUSTEP_OBJ_DIR) -L../Model/$(GNUSTEP_OBJ_DIR)
# Additional libraries when linking tools
+make_services_TOOL_LIBS += -lgnustep-base
gpbs_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS)
set_show_service_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS)
gopen_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS)
+gclose_TOOL_LIBS += -lgnustep-base
gcloseall_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS)
GSspell_TOOL_LIBS += $(ADDITIONAL_DEPENDS)

View File

@ -3,6 +3,7 @@
, cups
, audiofile, portaudio
, clang, libobjc2
, gmp
, libjpeg, libtiff, libpng, giflib, libungif
, libxml2, libxslt, libiconv
, libffi
@ -25,9 +26,8 @@ stdenv.mkDerivation rec {
};
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 = [ ];
# 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
@ -36,6 +36,12 @@ stdenv.mkDerivation rec {
# 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!

View File

@ -0,0 +1,23 @@
{ stdenv, fetchurl, clang, which, libobjc2 }:
let
version = "2.6.6";
in
stdenv.mkDerivation rec {
name = "gnustep-make-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-2.6.6.tar.gz";
sha256 = "07cqr8x17bia9w6clbmiv7ay6r9nplrjz2cyzinv4w7zfpc19vxw";
};
configureFlags = "--with-layout=fhs-system";
buildInputs = [ clang which libobjc2 ];
meta = {
description = "GNUstep-make is a build manager for GNUstep.";
homepage = http://gnustep.org/;
license = stdenv.lib.licenses.lgpl2Plus;
maintainers = with stdenv.lib.maintainers; [ ashalkhakov ];
platforms = stdenv.lib.platforms.all;
};
}

View File

@ -6444,6 +6444,11 @@ in
gnumake42 = callPackage ../development/tools/build-managers/gnumake/4.2 { };
gnumake = self.gnumake42;
gnustep_back = callPackage ../development/libraries/gnustep-back { stdenv = clangStdenv; };
gnustep_base = callPackage ../development/libraries/gnustep-base { stdenv = clangStdenv; giflib = giflib_4_1; };
gnustep_make = callPackage ../development/tools/build-managers/gnustep-make { stdenv = clangStdenv; };
gnustep_gui = callPackage ../development/libraries/gnustep-gui { stdenv = clangStdenv; };
gob2 = callPackage ../development/tools/misc/gob2 { };
gocd-agent = callPackage ../development/tools/continuous-integration/gocd-agent { };
@ -7590,6 +7595,12 @@ in
stdenv = clangStdenv;
giflib = giflib_4_1;
};
gorm = callPackage ../applications/editors/gorm/default.nix {
stdenv = clangStdenv;
};
projectcenter = callPackage ../applications/editors/projectcenter/default.nix {
stdenv = clangStdenv;
};
granite = callPackage ../development/libraries/granite { };