Merge pull request #16762 from matthewbauer/gnustep2

Add "gnustep" to nixpkgs
This commit is contained in:
Joachim F 2016-08-17 23:38:56 +02:00 committed by GitHub
commit c2bfce8de8
33 changed files with 1536 additions and 67 deletions

View File

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

View File

@ -340,6 +340,7 @@
./services/networking/freenet.nix
./services/networking/gale.nix
./services/networking/gateone.nix
./services/networking/gdomap.nix
./services/networking/git-daemon.nix
./services/networking/gnunet.nix
./services/networking/gogoclient.nix

View File

@ -0,0 +1,32 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.gdomap;
in
{
#
# interface
#
options = {
services.gdomap = {
enable = mkEnableOption "GNUstep Distributed Objects name server";
};
};
#
# implementation
#
config = mkIf config.services.gdomap.enable {
# NOTE: gdomap runs as root
# TODO: extra user for gdomap?
systemd.services.gdomap = {
description = "gdomap server";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
path = [ pkgs.gnustep.base ];
serviceConfig.ExecStart = "${pkgs.gnustep.base}/bin/gdomap -f";
};
};
}

View File

@ -0,0 +1,22 @@
{ gsmakeDerivation
, cairo
, fetchurl
, base, gui
, x11
, freetype
, pkgconfig
}:
let
version = "0.25.0";
in
gsmakeDerivation {
name = "gnustep-back-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-back-${version}.tar.gz";
sha256 = "14gs1b32ahnihd7mwpjrws2b8hl11rl1wl24a7651d3z2l7f6xj2";
};
buildInputs = [ cairo base gui freetype pkgconfig x11 ];
meta = {
description = "A generic backend for GNUstep";
};
}

View File

@ -0,0 +1,14 @@
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
#

View File

@ -0,0 +1,38 @@
{ aspell, audiofile
, gsmakeDerivation
, cups
, fetchurl
, gmp, gnutls
, libffi
, libjpeg, libtiff, libpng, giflib, libungif
, libxml2, libxslt, libiconv
, libobjc, libgcrypt
, icu
, pkgconfig, portaudio
}:
let
version = "1.24.9";
in
gsmakeDerivation {
name = "gnustep-base-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-base-${version}.tar.gz";
sha256 = "1vvjlbqmlwr82b4pf8c62rxjgz475bmg0x2yd0bbkia6yvwhk585";
};
nativeBuildInputs = [ pkgconfig ];
propagatedBuildInputs = [
aspell audiofile
cups
gmp gnutls
libffi
libjpeg libtiff libpng giflib libungif
libxml2 libxslt libiconv
libobjc libgcrypt
icu
portaudio
];
patches = [ ./fixup-paths.patch ];
meta = {
description = "An implementation of AppKit and Foundation libraries of OPENSTEP and Cocoa";
};
}

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,373 @@
diff -r -u gnustep-base-1.24.7/Makefile.postamble gnustep-base-1.24.7.patched/Makefile.postamble
--- 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::
diff -r -u gnustep-base-1.24.7/Source/NSPathUtilities.m gnustep-base-1.24.7.patched/Source/NSPathUtilities.m
--- gnustep-base-1.24.7/Source/NSPathUtilities.m 2014-01-14 13:21:10.000000000 +0600
+++ gnustep-base-1.24.7.patched/Source/NSPathUtilities.m 2015-01-25 13:59:37.000000000 +0600
@@ -153,16 +153,27 @@
static NSString *gnustepLocalUsersDir = nil;
static NSString *gnustepSystemApps = nil;
+static NSArray *gnustepSystemAppsNix = nil;
static NSString *gnustepSystemAdminApps = nil;
+static NSArray *gnustepSystemAdminAppsNix = nil;
static NSString *gnustepSystemWebApps = nil;
+static NSArray *gnustepSystemWebAppsNix = nil;
static NSString *gnustepSystemTools = nil;
+static NSArray *gnustepSystemToolsNix = nil;
static NSString *gnustepSystemAdminTools = nil;
+static NSArray *gnustepSystemAdminToolsNix = nil;
static NSString *gnustepSystemLibrary = nil;
+static NSArray *gnustepSystemLibraryNix = nil;
static NSString *gnustepSystemLibraries = nil;
+static NSArray *gnustepSystemLibrariesNix = nil;
static NSString *gnustepSystemHeaders = nil;
+static NSArray *gnustepSystemHeadersNix = nil;
static NSString *gnustepSystemDocumentation = nil;
+static NSArray *gnustepSystemDocumentationNix = nil;
static NSString *gnustepSystemDocumentationInfo = nil;
+static NSArray *gnustepSystemDocumentationInfoNix = nil;
static NSString *gnustepSystemDocumentationMan = nil;
+static NSArray *gnustepSystemDocumentationManNix = nil;
static NSString *gnustepNetworkApps = nil;
static NSString *gnustepNetworkAdminApps = nil;
@@ -258,6 +269,18 @@
}\
})
+/* Like ASSIGN_PATH, but permits multiple components in a path
+ */
+#define ASSIGN_PATH_NIX(var, dictionary, key) ({\
+ id val = getPathConfigNix(dictionary, key);\
+ if (val != nil)\
+ {\
+ RELEASE(var);\
+ var = RETAIN(val);\
+ [dictionary removeObjectForKey: key];\
+ }\
+})
+
/* Like ASSIGN_PATH(), but permits the result to be a relative path as that
* is what we normally use (the path is within the user's home directory).
*/
@@ -368,7 +391,7 @@
/* Get a full path string */
static inline NSString *
getPath(NSString *path)
-{
+{
if ([path hasPrefix: @"./"] == YES)
{
path = [gnustepConfigPath stringByAppendingPathComponent:
@@ -383,6 +406,33 @@
return path;
}
+static inline NSArray *
+getPathConfigNix(NSDictionary *dict, NSString *key)
+{
+ NSArray *res = nil;
+ NSMutableArray *paths = nil;
+ NSString *path;
+#if defined(__MINGW_)
+ NSString *sep = @";";
+#else
+ NSString *sep = @":";
+#endif
+
+ path = [dict objectForKey: key];
+ if (path != nil)
+ {
+ if ([path rangeOfString:sep].location != NSNotFound)
+ {
+ res = [path componentsSeparatedByString:sep];
+ }
+ else
+ {
+ res = [[NSArray alloc] initWithObjects:path, nil];
+ }
+ }
+ return res;
+}
+
/* Get a full path string from a dictionary */
static inline NSString *
getPathConfig(NSDictionary *dict, NSString *key)
@@ -468,6 +518,29 @@
ASSIGN_PATH(gnustepSystemDocumentationInfo, c,
@"GNUSTEP_SYSTEM_DOC_INFO");
+ ASSIGN_PATH_NIX(gnustepSystemAppsNix, c,
+ @"NIX_GNUSTEP_SYSTEM_APPS");
+ ASSIGN_PATH_NIX(gnustepSystemAdminAppsNix, c,
+ @"NIX_GNUSTEP_SYSTEM_ADMIN_APPS");
+ ASSIGN_PATH_NIX(gnustepSystemWebAppsNix, c,
+ @"NIX_GNUSTEP_SYSTEM_WEB_APPS");
+ ASSIGN_PATH_NIX(gnustepSystemToolsNix, c,
+ @"NIX_GNUSTEP_SYSTEM_TOOLS");
+ ASSIGN_PATH_NIX(gnustepSystemAdminToolsNix, c,
+ @"NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS");
+ ASSIGN_PATH_NIX(gnustepSystemLibraryNix, c,
+ @"NIX_GNUSTEP_SYSTEM_LIBRARY");
+ ASSIGN_PATH_NIX(gnustepSystemLibrariesNix, c,
+ @"NIX_GNUSTEP_SYSTEM_LIBRARIES");
+ ASSIGN_PATH_NIX(gnustepSystemHeadersNix, c,
+ @"NIX_GNUSTEP_SYSTEM_HEADERS");
+ ASSIGN_PATH_NIX(gnustepSystemDocumentationNix, c,
+ @"NIX_GNUSTEP_SYSTEM_DOC");
+ ASSIGN_PATH_NIX(gnustepSystemDocumentationManNix, c,
+ @"NIX_GNUSTEP_SYSTEM_DOC_MAN");
+ ASSIGN_PATH_NIX(gnustepSystemDocumentationInfoNix, c,
+ @"NIX_GNUSTEP_SYSTEM_DOC_INFO");
+
ASSIGN_PATH(gnustepNetworkApps, c,
@"GNUSTEP_NETWORK_APPS");
ASSIGN_PATH(gnustepNetworkAdminApps, c,
@@ -1235,6 +1308,18 @@
DESTROY(gnustepSystemDocumentationMan);
DESTROY(gnustepSystemDocumentationInfo);
+ DESTROY(gnustepSystemAppsNix);
+ DESTROY(gnustepSystemAdminAppsNix);
+ DESTROY(gnustepSystemWebAppsNix);
+ DESTROY(gnustepSystemToolsNix);
+ DESTROY(gnustepSystemAdminToolsNix);
+ DESTROY(gnustepSystemLibraryNix);
+ DESTROY(gnustepSystemLibrariesNix);
+ DESTROY(gnustepSystemHeadersNix);
+ DESTROY(gnustepSystemDocumentationNix);
+ DESTROY(gnustepSystemDocumentationManNix);
+ DESTROY(gnustepSystemDocumentationInfoNix);
+
DESTROY(gnustepNetworkApps);
DESTROY(gnustepNetworkAdminApps);
DESTROY(gnustepNetworkWebApps);
@@ -2183,6 +2268,27 @@
if ([add_dir length] > 0 && [paths containsObject: add_dir] == NO) \
[paths addObject: add_dir]; \
}
+#define ADD_PATH_NIX(mask, base_dirs, add_dir) \
+if ((domainMask & mask) && (base_dirs != nil)) \
+{ \
+ NSEnumerator *e = [base_dirs objectEnumerator]; \
+ NSString *dir = nil; \
+ while (dir = [e nextObject]) { \
+ path = [dir stringByAppendingPathComponent: add_dir]; \
+ if ([path length] > 0 && [paths containsObject: path] == NO) \
+ [paths addObject: path]; \
+ } \
+}
+#define ADD_PLATFORM_PATH_NIX(mask, add_dirs) \
+if ((domainMask & mask) && (add_dirs != nil)) \
+{ \
+ NSEnumerator *e = [add_dirs objectEnumerator]; \
+ NSString *dir = nil; \
+ while (dir = [e nextObject]) { \
+ if ([dir length] > 0 && [paths containsObject: dir] == NO) \
+ [paths addObject:dir]; \
+ } \
+}
switch (directoryKey)
{
@@ -2191,11 +2297,13 @@
ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserApps);
ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalApps);
ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkApps);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAppsNix);
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemApps);
ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserAdminApps);
ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalAdminApps);
ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkAdminApps);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminAppsNix);
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemAdminApps);
}
break;
@@ -2205,6 +2313,7 @@
ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserApps);
ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalApps);
ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkApps);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAppsNix);
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemApps);
}
break;
@@ -2214,6 +2323,7 @@
ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserApps);
ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalApps);
ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkApps);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAppsNix);
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemApps);
/* I imagine if ever wanted a separate Demo directory, the
@@ -2231,6 +2341,7 @@
case NSCoreServicesDirectory:
{
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, @"CoreServices");
ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, @"CoreServices");
}
break;
@@ -2248,6 +2359,7 @@
ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserApps);
ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalApps);
ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkApps);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAppsNix);
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemApps);
}
break;
@@ -2257,6 +2369,7 @@
ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserAdminApps);
ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalAdminApps);
ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkAdminApps);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminAppsNix);
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemAdminApps);
}
break;
@@ -2266,6 +2379,7 @@
ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserLibrary);
ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalLibrary);
ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkLibrary);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix);
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemLibrary);
}
break;
@@ -2281,6 +2395,7 @@
ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserLibrary);
ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalLibrary);
ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkLibrary);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix);
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemLibrary);
}
break;
@@ -2418,6 +2533,7 @@
ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserDocumentation);
ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalDocumentation);
ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkDocumentation);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemDocumentationNix);
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemDocumentation);
}
break;
@@ -2449,6 +2565,7 @@
ADD_PATH(NSUserDomainMask, gnustepUserLibrary, @"Caches");
ADD_PATH(NSLocalDomainMask, gnustepLocalLibrary, @"Caches");
ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibrary, @"Caches");
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, @"Caches");
ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, @"Caches");
}
break;
@@ -2460,6 +2577,8 @@
@"ApplicationSupport");
ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibrary,
@"ApplicationSupport");
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix,
+ @"ApplicationSupport");
ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary,
@"ApplicationSupport");
}
@@ -2471,6 +2590,7 @@
ADD_PATH(NSUserDomainMask, gnustepUserLibrary, @"Frameworks");
ADD_PATH(NSLocalDomainMask, gnustepLocalLibrary, @"Frameworks");
ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibrary, @"Frameworks");
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, @"Frameworks");
ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, @"Frameworks");
}
break;
@@ -2480,6 +2600,7 @@
ADD_PATH(NSUserDomainMask, gnustepUserLibrary, @"Fonts");
ADD_PATH(NSLocalDomainMask, gnustepLocalLibrary, @"Fonts");
ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibrary, @"Fonts");
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, @"Fonts");
ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, @"Fonts");
}
break;
@@ -2518,6 +2639,12 @@
if (part)
ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibraries, part);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemLibrariesNix);
+ if (full)
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibrariesNix, full);
+ if (part)
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibrariesNix, part);
+
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemLibraries);
if (full)
ADD_PATH(NSSystemDomainMask, gnustepSystemLibraries, full);
@@ -2560,6 +2687,12 @@
if (part)
ADD_PATH(NSNetworkDomainMask, gnustepNetworkTools, part);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemToolsNix);
+ if (full)
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemToolsNix, full);
+ if (part)
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemToolsNix, part);
+
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemTools);
if (full)
ADD_PATH(NSSystemDomainMask, gnustepSystemTools, full);
@@ -2602,6 +2735,18 @@
if (part)
ADD_PATH(NSNetworkDomainMask, gnustepNetworkAdminTools, part);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix);
+ if (full)
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix, full);
+ if (part)
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix, part);
+
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix);
+ if (full)
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix, full);
+ if (part)
+ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix, part);
+
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemAdminTools);
if (full)
ADD_PATH(NSSystemDomainMask, gnustepSystemAdminTools, full);
@@ -2615,6 +2760,7 @@
ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserWebApps);
ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalWebApps);
ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkWebApps);
+ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemWebAppsNix);
ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemWebApps);
}
break;
@@ -2622,6 +2768,8 @@
#undef ADD_PATH
#undef ADD_PLATFORM_PATH
+#undef ADD_PATH_NIX
+#undef ADD_PLATFORM_PATH_NIX
count = [paths count];
for (i = 0; i < count; i++)

View File

@ -0,0 +1,21 @@
{ pkgs, newScope }:
let
callPackage = newScope self;
self = rec {
stdenv = pkgs.clangStdenv;
gsmakeDerivation = callPackage ./make/gsmakeDerivation.nix {};
gorm = callPackage ./gorm {};
projectcenter = callPackage ./projectcenter {};
system_preferences = callPackage ./systempreferences {};
libobjc = callPackage ./libobjc2 {};
make = callPackage ./make {};
back = callPackage ./back {};
base = callPackage ./base { giflib = pkgs.giflib_4_1; };
gui = callPackage ./gui {};
gworkspace = callPackage ./gworkspace {};
};
in self

View File

@ -0,0 +1,17 @@
{ fetchurl, base, back, gsmakeDerivation, gui }:
let
version = "1.2.22";
in
gsmakeDerivation {
name = "gorm-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/dev-apps/gorm-${version}.tar.gz";
sha256 = "1mq5n65xd9bc4kppx19iijsgpz4crvhg7bfwbi9k78j159vclnmi";
};
buildInputs = [ base back gui ];
meta = {
description = "Graphical Object Relationship Modeller is an easy-to-use interface designer for GNUstep";
};
}

View File

@ -0,0 +1,27 @@
diff -ru gorm-1.2.20/GNUmakefile gorm-1.2.20.patched/GNUmakefile
--- gorm-1.2.20/GNUmakefile 2010-05-30 12:55:26.000000000 +0600
+++ gorm-1.2.20.patched/GNUmakefile 2014-12-10 22:21:18.000000000 +0600
@@ -24,6 +24,23 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
+ifeq ($(GNUSTEP_MAKEFILES),)
+ GNUSTEP_MAKEFILES := $(shell gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null)
+ ifeq ($(GNUSTEP_MAKEFILES),)
+ $(warning )
+ $(warning Unable to obtain GNUSTEP_MAKEFILES setting from gnustep-config!)
+ $(warning Perhaps gnustep-make is not properly installed,)
+ $(warning so gnustep-config is not in your PATH.)
+ $(warning )
+ $(warning Your PATH is currently $(PATH))
+ $(warning )
+ endif
+endif
+
+ifeq ($(GNUSTEP_MAKEFILES),)
+ $(error You need to set GNUSTEP_MAKEFILES before compiling!)
+endif
+
PACKAGE_NAME = gorm
export PACKAGE_NAME
include $(GNUSTEP_MAKEFILES)/common.make

View File

@ -0,0 +1,16 @@
{ gsmakeDerivation, fetchurl, base }:
let
version = "0.25.0";
in
gsmakeDerivation {
name = "gnustep-gui-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-gui-${version}.tar.gz";
sha256 = "10jf3xir59qzbhhl0bvs9wdw40fsmvv6mdv5akdkia1rnck60xf5";
};
buildInputs = [ base ];
patches = [ ./fixup-all.patch ];
meta = {
description = "A GUI class library of GNUstep";
};
}

View File

@ -0,0 +1,56 @@
diff -r -u gnustep-gui-0.24.0/GNUmakefile.postamble gnustep-gui-0.24.0.patched/GNUmakefile.postamble
--- 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::
diff -r -u gnustep-gui-0.24.0/TextConverters/RTF/GNUmakefile.preamble gnustep-gui-0.24.0.patched/TextConverters/RTF/GNUmakefile.preamble
--- 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)
diff -r -u gnustep-gui-0.24.0/Tools/GNUmakefile.preamble gnustep-gui-0.24.0.patched/Tools/GNUmakefile.preamble
--- 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

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

@ -0,0 +1,23 @@
{ back, base, gui, gsmakeDerivation
, fetchurl
, sqlite
, system_preferences
}:
let
version = "0.9.3";
in
gsmakeDerivation {
name = "gworkspace-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/usr-apps/gworkspace-${version}.tar.gz";
sha256 = "0jchqwb0dj522j98jqlqlib44jppax39zx2zqyzdwiz4qjl470r3";
};
# additional dependencies:
# - PDFKit framework from http://gap.nongnu.org/
# - TODO: to --enable-gwmetadata, need libDBKit as well as sqlite!
buildInputs = [ back base gui system_preferences ];
configureFlags = [ "--with-inotify" ];
meta = {
description = "A workspace manager for GNUstep";
};
}

View File

@ -0,0 +1,28 @@
{ stdenv, lib, fetchFromGitHub, cmake }:
let
version = "1.8.1";
in
stdenv.mkDerivation rec {
name = "libobjc2-${version}";
src = fetchFromGitHub {
owner = "gnustep";
repo = "libobjc2";
rev = "v${version}";
sha256 = "12v9pjg97h56mb114cqd22q1pdwhmxrgdw5hal74ddlrhiq1nzvi";
};
buildInputs = [ cmake ];
cmakeFlags = [ "-DCMAKE_INSTALL_LIBDIR=lib" ];
meta = with lib; {
description = "Objective-C runtime for use with GNUstep";
homepage = http://gnustep.org/;
license = licenses.mit;
maintainers = with maintainers; [ ashalkhakov matthewbauer ];
platforms = platforms.unix;
};
}

View File

@ -0,0 +1,126 @@
# These GNUSTEP_*_ROOT variables are obsolete, and will be removed.
#GNUSTEP_SYSTEM_ROOT=/nix/store/ky64z3j9l18wjcssb9pxnc792ihh3bvw-gnustep-make-2.6.6/System
#GNUSTEP_LOCAL_ROOT=/nix/store/ky64z3j9l18wjcssb9pxnc792ihh3bvw-gnustep-make-2.6.6/Local
#GNUSTEP_NETWORK_ROOT=/nix/store/ky64z3j9l18wjcssb9pxnc792ihh3bvw-gnustep-make-2.6.6/Network
# The name of the user config file. This file can override
# some settings in this file. Usually used by users that want
# to install things into their GNUstep user domain and/or have
# many such domains.
GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf
# The name of the user directory, if any. This is obsolete,
# and will be removed.
GNUSTEP_USER_DIR=GNUstep
# The name of the user directory where defaults (eg, preferences) are
# stored. If it does not start with a '/', it will be considered
# relative to the user home directory.
GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults
# This is where the gnustep-make Makefiles are installed.
# Traditionally, this is /usr/GNUstep/System/Library/Makefiles
GNUSTEP_MAKEFILES=@gnustepMakefiles@
# This is where the user home directories are. Only used to provide
# NSUserDirectory in gnustep-base. Never used anywhere else.
GNUSTEP_SYSTEM_USERS_DIR=/home
GNUSTEP_NETWORK_USERS_DIR=/home
GNUSTEP_LOCAL_USERS_DIR=/home
# This is where System GUI Applications get installed.
# Traditionally it is /usr/GNUstep/System/Applications.
GNUSTEP_SYSTEM_APPS=@systemApps@
# This is where System GUI Applications that only the
# Administrator can use get installed.
# Traditionally it is /usr/GNUstep/System/Applications/Admin.
GNUSTEP_SYSTEM_ADMIN_APPS=@systemAdminApps@
# This is where System Web Applications (GSWeb, SOPE) get
# installed.
# Traditionally it is /usr/GNUstep/System/Library/WebApplications.
GNUSTEP_SYSTEM_WEB_APPS=@systemWebApps@
# This is where System Command-Line Tools get installed.
# Traditionally it is /usr/GNUstep/System/Tools.
GNUSTEP_SYSTEM_TOOLS=@systemTools@
# This is where System Command-Line Tools that only the
# Administrator can use get installed. Important: this
# should not be in the PATH of normal users.
# Traditionally it is /usr/GNUstep/System/Tools/Admin.
GNUSTEP_SYSTEM_ADMIN_TOOLS=@systemAdminTools@
# This is where System resources get installed. This directory will
# contain a lot of executable code since *step traditionally likes to
# bundle executables and resources together.
# Traditionally it is /usr/GNUstep/System/Library.
GNUSTEP_SYSTEM_LIBRARY=@systemLibrary@
# This is where System headers get installed. They are the
# library .h headers.
# Traditionally it is /usr/GNUstep/System/Library/Headers.
GNUSTEP_SYSTEM_HEADERS=@systemHeaders@
# This is where System libraries get installed. By libraries we mean
# the shared/static object files that you can link into programs.
# Traditionally it is /usr/GNUstep/System/Library/Libraries.
GNUSTEP_SYSTEM_LIBRARIES=@systemLibraries@
# This is where System documentation get installed. This is known
# not to contain any executable, so we keep it separate.
# Traditionally it is /usr/GNUstep/System/Library/Documentation.
GNUSTEP_SYSTEM_DOC=@systemDoc@
# This is where System man pages get installed.
# Traditionally it is /usr/GNUstep/System/Library/Documentation/man.
GNUSTEP_SYSTEM_DOC_MAN=@systemDocMan@
# This is where System info pages get installed.
# Traditionally it is /usr/GNUstep/System/Library/Documentation/info.
GNUSTEP_SYSTEM_DOC_INFO=@systemDocInfo@
GNUSTEP_NETWORK_APPS=@systemApps@
GNUSTEP_NETWORK_ADMIN_APPS=@systemAdminApps@
GNUSTEP_NETWORK_WEB_APPS=@systemWebApps@
GNUSTEP_NETWORK_TOOLS=@systemTools@
GNUSTEP_NETWORK_ADMIN_TOOLS=@systemAdminTools@
GNUSTEP_NETWORK_LIBRARY=@systemLibrary@
GNUSTEP_NETWORK_HEADERS=@systemHeaders@
GNUSTEP_NETWORK_LIBRARIES=@systemLibraries@
GNUSTEP_NETWORK_DOC=@systemDoc@
GNUSTEP_NETWORK_DOC_MAN=@systemDocMan@
GNUSTEP_NETWORK_DOC_INFO=@systemDocInfo@
GNUSTEP_LOCAL_APPS=@systemApps@
GNUSTEP_LOCAL_ADMIN_APPS=@systemAdminApps@
GNUSTEP_LOCAL_WEB_APPS=@systemWebApps@
GNUSTEP_LOCAL_TOOLS=@systemTools@
GNUSTEP_LOCAL_ADMIN_TOOLS=@systemAdminTools@
GNUSTEP_LOCAL_LIBRARY=@systemLibrary@
GNUSTEP_LOCAL_HEADERS=@systemHeaders@
GNUSTEP_LOCAL_LIBRARIES=@systemLibraries@
GNUSTEP_LOCAL_DOC=@systemDoc@
GNUSTEP_LOCAL_DOC_MAN=@systemDocMan@
GNUSTEP_LOCAL_DOC_INFO=@systemDocInfo@
# Important: settings in the User should normally be relative paths,
# and will be interpreted as relative to the user's directory. This
# allows each user to have their own domain to install things. You
# can set them to be absolute, mostly if you want to disable them
# by setting them equal to the ones in the Network domain.
GNUSTEP_USER_DIR_APPS=GNUstep/Applications
GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin
GNUSTEP_USER_DIR_WEB_APPS=GNUstep/WebApplications
GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools
GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin
GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library
GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers
GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries
GNUSTEP_USER_DIR_DOC=GNUstep/Library/Documentation
GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Library/Documentation/man
GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Library/Documentation/info

View File

@ -0,0 +1,122 @@
source $stdenv/setup
preConfigure() {
. $GNUSTEP_MAKEFILES/GNUstep.sh
}
wrapGSMake() {
local program="$1"
local config="$2"
local wrapped="$(dirname $program)/.$(basename $program)-wrapped"
mv "$program" "$wrapped"
cat > "$program"<<EOF
#! $SHELL -e
export GNUSTEP_CONFIG_FILE="$config"
exec "$wrapped" "\$@" "\${extraFlagsArray[@]}"
EOF
chmod +x "$program"
}
postInstall() {
local conf="$out/share/.GNUstep.conf"
mkdir -p "$out/share"
touch $conf
# add the current package to the paths
local tmp="$out/lib/GNUstep/Applications"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_APPS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$tmp"
fi
tmp="$out/lib/GNUstep/Applications"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$tmp"
fi
tmp="$out/lib/GNUstep/WebApplications"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_WEB_APPS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$tmp"
fi
tmp="$out/bin"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$tmp"
fi
tmp="$out/sbin"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$tmp"
fi
tmp="$out/lib/GNUstep"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARY" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$tmp"
fi
tmp="$out/include"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_HEADERS" in *"${tmp}"*) false;; *) true;; esac; then
if [ -z "$NIX_GNUSTEP_SYSTEM_HEADERS" ]; then
export NIX_GNUSTEP_SYSTEM_HEADERS="$tmp"
else
export NIX_GNUSTEP_SYSTEM_HEADERS+=" $tmp"
fi
fi
tmp="$out/lib"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARIES" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$tmp"
fi
tmp="$out/share/GNUstep/Documentation"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$tmp"
fi
tmp="$out/share/man"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_MAN" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$tmp"
fi
tmp="$out/share/info"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_INFO" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$tmp"
fi
# write the config file
echo GNUSTEP_MAKEFILES=$GNUSTEP_MAKEFILES >> $conf
if [ -n "$NIX_GNUSTEP_SYSTEM_APPS" ]; then
echo NIX_GNUSTEP_SYSTEM_APPS="$NIX_GNUSTEP_SYSTEM_APPS"
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" ]; then
echo NIX_GNUSTEP_SYSTEM_ADMIN_APPS="$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_WEB_APPS" ]; then
echo NIX_GNUSTEP_SYSTEM_WEB_APPS="$NIX_GNUSTEP_SYSTEM_WEB_APPS" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_TOOLS" ]; then
echo NIX_GNUSTEP_SYSTEM_TOOLS="$NIX_GNUSTEP_SYSTEM_TOOLS" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" ]; then
echo NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS="$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_LIBRARY" ]; then
echo NIX_GNUSTEP_SYSTEM_LIBRARY="$NIX_GNUSTEP_SYSTEM_LIBRARY" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_HEADERS" ]; then
echo NIX_GNUSTEP_SYSTEM_HEADERS="$NIX_GNUSTEP_SYSTEM_HEADERS" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_LIBRARIES" ]; then
echo NIX_GNUSTEP_SYSTEM_LIBRARIES="$NIX_GNUSTEP_SYSTEM_LIBRARIES" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_DOC" ]; then
echo NIX_GNUSTEP_SYSTEM_DOC="$NIX_GNUSTEP_SYSTEM_DOC" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_DOC_MAN" ]; then
echo NIX_GNUSTEP_SYSTEM_DOC_MAN="$NIX_GNUSTEP_SYSTEM_DOC_MAN" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_DOC_INFO" ]; then
echo NIX_GNUSTEP_SYSTEM_DOC_INFO="$NIX_GNUSTEP_SYSTEM_DOC_INFO" >> $conf
fi
for i in $out/bin/*; do
echo "wrapping $(basename $i)"
wrapGSMake "$i" "$out/share/.GNUstep.conf"
done
}
genericBuild

View File

@ -0,0 +1,38 @@
{ stdenv, fetchurl, clang, which, libobjc }:
let
version = "2.6.8";
in
stdenv.mkDerivation rec {
name = "gnustep-make-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-${version}.tar.gz";
sha256 = "0r00439f7vrggdwv60n8p626gnyymhq968i5x9ad2i4v6g8x4gk0";
};
configureFlags = [
"--with-layout=fhs-system"
"--disable-install-p"
];
preConfigure = ''
configureFlags="$configureFlags --with-config-file=$out/etc/GNUstep/GNUstep.conf"
'';
makeFlags = [
"GNUSTEP_INSTALLATION_DOMAIN=SYSTEM"
];
buildInputs = [ clang which libobjc ];
patches = [ ./fixup-paths.patch ];
setupHook = ./setup-hook.sh;
meta = {
description = "A build manager for GNUstep";
homepage = http://gnustep.org/;
license = stdenv.lib.licenses.lgpl2Plus;
maintainers = with stdenv.lib.maintainers; [ ashalkhakov matthewbauer ];
platforms = stdenv.lib.platforms.unix;
};
}

View File

@ -0,0 +1,197 @@
diff -r -u gnustep-make-2.6.6/common.make gnustep-make-2.6.6.patched/common.make
--- gnustep-make-2.6.6/common.make 2013-03-04 17:21:55.000000000 +0600
+++ gnustep-make-2.6.6.patched/common.make 2015-01-18 14:36:25.000000000 +0600
@@ -135,7 +135,9 @@
endif
# Then include makefiles with flags/config options installed by the
# libraries themselves
--include $(GNUSTEP_MAKEFILES)/Additional/*.make
+ifneq ($(NIX_GNUSTEP_MAKEFILES_ADDITIONAL),)
+include $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL)
+endif
#
# Determine target specific settings
diff -r -u gnustep-make-2.6.6/GNUmakefile.in gnustep-make-2.6.6.patched/GNUmakefile.in
--- gnustep-make-2.6.6/GNUmakefile.in 2013-09-20 12:13:15.000000000 +0600
+++ gnustep-make-2.6.6.patched/GNUmakefile.in 2014-12-07 20:35:27.000000000 +0600
@@ -173,7 +173,6 @@
"$(makedir)/$(GNUSTEP_TARGET_CPU)" \
"$(makedir)/$(GNUSTEP_TARGET_DIR)" \
"$(makedir)/$(GNUSTEP_TARGET_LDIR)" \
- "$(makedir)/Additional" \
"$(makedir)/Auxiliary" \
"$(makedir)/Master" \
"$(makedir)/Instance" \
@@ -314,7 +313,6 @@
-rmdir "$(makedir)/Instance"
-rmdir "$(makedir)/Master"
-rmdir "$(makedir)/Auxiliary"
- -rmdir "$(makedir)/Additional"
-rmdir "$(makedir)/$(GNUSTEP_TARGET_LDIR)"
-rmdir "$(makedir)/$(GNUSTEP_TARGET_DIR)"
-rmdir "$(makedir)/$(GNUSTEP_TARGET_CPU)"
diff -r -u gnustep-make-2.6.6/gnustep-config.in gnustep-make-2.6.6.patched/gnustep-config.in
--- gnustep-make-2.6.6/gnustep-config.in 2013-07-02 16:06:24.000000000 +0600
+++ gnustep-make-2.6.6.patched/gnustep-config.in 2014-12-09 21:29:49.000000000 +0600
@@ -66,6 +66,7 @@
echo " --variable=OBJCXX"
echo " --variable=GNUMAKE"
echo " --variable=GNUSTEP_MAKEFILES"
+ echo " --variable=NIX_GNUSTEP_MAKEFILES_ADDITIONAL"
echo " --variable=GNUSTEP_USER_DEFAULTS_DIR"
echo " --variable=GNUSTEP_HOST"
echo " --variable=GNUSTEP_HOST_CPU"
@@ -153,6 +154,8 @@
export GNUSTEP_MAKEFILES
+export NIX_GNUSTEP_MAKEFILES_ADDITIONAL
+
#
# If all they want to know if GNUSTEP_MAKEFILES or anything that
# we can compute only using GNUSTEP_MAKEFILES, we can print it out
@@ -168,6 +171,8 @@
exit 0;;
--variable=GNUSTEP_MAKEFILES) echo "$GNUSTEP_MAKEFILES"
exit 0;;
+ --variable=NIX_GNUSTEP_MAKEFILES_ADDITIONAL) echo "$NIX_GNUSTEP_MAKEFILES_ADDITIONAL"
+ exit 0;;
--variable=GNUMAKE) echo "@GNUMAKE@"
exit 0;;
--debug-flags) @GNUMAKE@ -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-objc-flags quiet=yes debug=yes 2>/dev/null
Only in gnustep-make-2.6.6.patched: gnustep-config.in~
diff -r -u gnustep-make-2.6.6/GNUstep.csh.in gnustep-make-2.6.6.patched/GNUstep.csh.in
--- gnustep-make-2.6.6/GNUstep.csh.in 2011-05-03 13:40:10.000000000 +0600
+++ gnustep-make-2.6.6.patched/GNUstep.csh.in 2014-12-09 20:14:05.000000000 +0600
@@ -130,6 +130,10 @@
setenv GNUSTEP_MAKEFILES "@GNUSTEP_MAKEFILES@"
endif
+if ( ! ${?NIX_GNUSTEP_MAKEFILES_ADDITIONAL} ) then
+ setenv NIX_GNUSTEP_MAKEFILES_ADDITIONAL "@NIX_GNUSTEP_MAKEFILES_ADDITIONAL@"
+endif
+
if ( "${GNUSTEP_MAKE_STRICT_V2_MODE}" == "yes" ) then
unsetenv GNUSTEP_USER_DIR
unsetenv GNUSTEP_USER_ROOT
Only in gnustep-make-2.6.6.patched: GNUstep.csh.in~
diff -r -u gnustep-make-2.6.6/GNUstep.sh.in gnustep-make-2.6.6.patched/GNUstep.sh.in
--- gnustep-make-2.6.6/GNUstep.sh.in 2012-02-21 20:21:38.000000000 +0600
+++ gnustep-make-2.6.6.patched/GNUstep.sh.in 2015-01-18 14:48:09.000000000 +0600
@@ -173,7 +173,6 @@
fi
export GNUSTEP_MAKEFILES
-
if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then
# Make sure this is never set in gnustep-make v2 strict mode; it
# might have been set in the config file.
@@ -300,7 +299,7 @@
# for each duplicate. When there are many duplicates it's faster to
# use print_unique_pathlist.sh first to remove them and skip the
# echos+greps later.
-GNUSTEP_TOOLS_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_TOOLS" "$GNUSTEP_LOCAL_TOOLS" "$GNUSTEP_NETWORK_TOOLS" "$GNUSTEP_SYSTEM_TOOLS" $fixup_paths`
+GNUSTEP_TOOLS_PATHLIST=$NIX_GNUSTEP_SYSTEM_TOOLS
# Now, we check the paths in GNUSTEP_*_ADMIN_TOOLS. These paths
# should only be used by Administrators -- normal users don't have
@@ -313,7 +312,7 @@
# So we examine GNUSTEP_*_ADMIN_TOOLS; if we find any path in that
# list that exists and that we can write to, we add it to our PATH.
-for dir in "$GNUSTEP_SYSTEM_ADMIN_TOOLS" "$GNUSTEP_NETWORK_ADMIN_TOOLS" "$GNUSTEP_LOCAL_ADMIN_TOOLS" "$GNUSTEP_USER_ADMIN_TOOLS"; do
+for dir in $(echo "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" | tr ":" "\n"); do
if [ -d "$dir" -a -w "$dir" ]; then
# Only add the new dir if it's not already in GNUSTEP_TOOLS_PATHLIST
if (echo ":${GNUSTEP_TOOLS_PATHLIST}:" \
@@ -356,7 +355,7 @@
export PATH
# Determine the library paths
-GNUSTEP_LIBRARIES_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARIES" "$GNUSTEP_LOCAL_LIBRARIES" "$GNUSTEP_NETWORK_LIBRARIES" "$GNUSTEP_SYSTEM_LIBRARIES" $fixup_paths`
+GNUSTEP_LIBRARIES_PATHLIST=$NIX_GNUSTEP_SYSTEM_LIBRARIES
old_IFS="$IFS"
IFS=:
@@ -486,7 +485,7 @@
#
# Setup Java CLASSPATH and Guile GUILE_LOAD_PATH
#
-GNUSTEP_LIBRARY_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARY" "$GNUSTEP_LOCAL_LIBRARY" "$GNUSTEP_NETWORK_LIBRARY" "$GNUSTEP_SYSTEM_LIBRARY" $fixup_paths`
+GNUSTEP_LIBRARY_PATHLIST=$NIX_GNUSTEP_SYSTEM_LIBRARY
old_IFS="$IFS"
IFS=:
@@ -526,7 +525,7 @@
# xxx/Library/Documentation/info, are found by the info browsing
# programs. To get this effect, we add those paths to INFOPATH.
#
-GNUSTEP_INFO_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_DOC_INFO" "$GNUSTEP_LOCAL_DOC_INFO" "$GNUSTEP_NETWORK_DOC_INFO" "$GNUSTEP_SYSTEM_DOC_INFO" $fixup_paths`
+GNUSTEP_INFO_PATHLIST=$NIX_GNUSTEP_SYSTEM_DOC_INFO
old_IFS="$IFS"
IFS=:
for dir in $GNUSTEP_INFO_PATHLIST; do
@@ -559,6 +558,7 @@
unset GNUSTEP_KEEP_CONFIG_FILE GNUSTEP_KEEP_USER_CONFIG_FILE
+
export GNUSTEP_CONFIG_FILE GNUSTEP_USER_CONFIG_FILE
export GNUSTEP_USER_DEFAULTS_DIR
diff -r -u gnustep-make-2.6.6/GNUstep-strict-v2.conf.in gnustep-make-2.6.6.patched/GNUstep-strict-v2.conf.in
--- gnustep-make-2.6.6/GNUstep-strict-v2.conf.in 2008-01-15 20:35:36.000000000 +0600
+++ gnustep-make-2.6.6.patched/GNUstep-strict-v2.conf.in 2014-12-07 22:04:56.000000000 +0600
@@ -47,7 +47,6 @@
# Traditionally, this is /usr/GNUstep/System/Library/Makefiles
GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@
-
# This is where the user home directories are. Only used to provide
# NSUserDirectory in gnustep-base. Never used anywhere else.
GNUSTEP_SYSTEM_USERS_DIR=@GNUSTEP_SYSTEM_USERS_DIR@
diff -r -u gnustep-make-2.6.6/library-combo.make gnustep-make-2.6.6.patched/library-combo.make
--- gnustep-make-2.6.6/library-combo.make 2012-02-21 19:53:02.000000000 +0600
+++ gnustep-make-2.6.6.patched/library-combo.make 2014-12-09 20:15:05.000000000 +0600
@@ -142,7 +142,7 @@
#
# Third-party foundations not using make package
# Our own foundation will install a base.make file into
-# $GNUSTEP_MAKEFILES/Additional/ to set the needed flags
+# $NIX_GNUSTEP_MAKEFILES_ADDITIONAL to set the needed flags
#
ifeq ($(FOUNDATION_LIB), nx)
# -framework Foundation is used both to find headers, and to link
@@ -166,7 +166,7 @@
#
# FIXME - Ask Helge to move this inside his libFoundation, and have
-# it installed as a $(GNUSTEP_MAKEFILES)/Additional/libFoundation.make
+# it installed as a $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL)/libFoundation.make
#
ifeq ($(FOUNDATION_LIB),fd)
-include $(GNUSTEP_MAKEFILES)/libFoundation.make
@@ -193,7 +193,7 @@
GUI_LIBS =
#
# Third-party GUI libraries - our own sets its flags into
-# $(GNUSTEP_MAKEFILES)/Additional/gui.make
+# $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL)/gui.make
#
ifeq ($(GUI_LIB), nx)
GUI_DEFINE = -DNeXT_GUI_LIBRARY=1
diff -r -u gnustep-make-2.6.6/rules.make gnustep-make-2.6.6.patched/rules.make
--- gnustep-make-2.6.6/rules.make 2013-07-04 16:05:44.000000000 +0600
+++ gnustep-make-2.6.6.patched/rules.make 2014-12-09 21:31:04.000000000 +0600
@@ -667,7 +667,9 @@
exit 1$(END_ECHO)
endif
-$(GNUSTEP_MAKEFILES)/Additional/*.make: ;
+ifneq ($(NIX_GNUSTEP_MAKEFILES_ADDITIONAL),)
+$(NIX_GNUSTEP_MAKEFILES_ADDITIONAL): ;
+endif
$(GNUSTEP_MAKEFILES)/Master/*.make: ;

View File

@ -0,0 +1,145 @@
diff -ru gnustep-make-2.6.6/common.make gnustep-make-2.6.6.patched/common.make
--- gnustep-make-2.6.6/common.make 2013-03-04 17:21:55.000000000 +0600
+++ gnustep-make-2.6.6.patched/common.make 2014-12-09 21:29:10.000000000 +0600
@@ -135,7 +135,9 @@
endif
# Then include makefiles with flags/config options installed by the
# libraries themselves
--include $(GNUSTEP_MAKEFILES)/Additional/*.make
+ifneq ($(NIX_GNUSTEP_MAKEFILES_ADDITIONAL),)
+-include $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL)
+endif
#
# Determine target specific settings
diff -ru gnustep-make-2.6.6/GNUmakefile.in gnustep-make-2.6.6.patched/GNUmakefile.in
--- gnustep-make-2.6.6/GNUmakefile.in 2013-09-20 12:13:15.000000000 +0600
+++ gnustep-make-2.6.6.patched/GNUmakefile.in 2014-12-07 20:35:27.000000000 +0600
@@ -173,7 +173,6 @@
"$(makedir)/$(GNUSTEP_TARGET_CPU)" \
"$(makedir)/$(GNUSTEP_TARGET_DIR)" \
"$(makedir)/$(GNUSTEP_TARGET_LDIR)" \
- "$(makedir)/Additional" \
"$(makedir)/Auxiliary" \
"$(makedir)/Master" \
"$(makedir)/Instance" \
@@ -314,7 +313,6 @@
-rmdir "$(makedir)/Instance"
-rmdir "$(makedir)/Master"
-rmdir "$(makedir)/Auxiliary"
- -rmdir "$(makedir)/Additional"
-rmdir "$(makedir)/$(GNUSTEP_TARGET_LDIR)"
-rmdir "$(makedir)/$(GNUSTEP_TARGET_DIR)"
-rmdir "$(makedir)/$(GNUSTEP_TARGET_CPU)"
diff -ru gnustep-make-2.6.6/gnustep-config.in gnustep-make-2.6.6.patched/gnustep-config.in
--- gnustep-make-2.6.6/gnustep-config.in 2013-07-02 16:06:24.000000000 +0600
+++ gnustep-make-2.6.6.patched/gnustep-config.in 2014-12-09 21:29:49.000000000 +0600
@@ -66,6 +66,7 @@
echo " --variable=OBJCXX"
echo " --variable=GNUMAKE"
echo " --variable=GNUSTEP_MAKEFILES"
+ echo " --variable=NIX_GNUSTEP_MAKEFILES_ADDITIONAL"
echo " --variable=GNUSTEP_USER_DEFAULTS_DIR"
echo " --variable=GNUSTEP_HOST"
echo " --variable=GNUSTEP_HOST_CPU"
@@ -153,6 +154,8 @@
export GNUSTEP_MAKEFILES
+export NIX_GNUSTEP_MAKEFILES_ADDITIONAL
+
#
# If all they want to know if GNUSTEP_MAKEFILES or anything that
# we can compute only using GNUSTEP_MAKEFILES, we can print it out
@@ -168,6 +171,8 @@
exit 0;;
--variable=GNUSTEP_MAKEFILES) echo "$GNUSTEP_MAKEFILES"
exit 0;;
+ --variable=NIX_GNUSTEP_MAKEFILES_ADDITIONAL) echo "$NIX_GNUSTEP_MAKEFILES_ADDITIONAL"
+ exit 0;;
--variable=GNUMAKE) echo "@GNUMAKE@"
exit 0;;
--debug-flags) @GNUMAKE@ -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-objc-flags quiet=yes debug=yes 2>/dev/null
diff -ru gnustep-make-2.6.6/GNUstep.csh.in gnustep-make-2.6.6.patched/GNUstep.csh.in
--- gnustep-make-2.6.6/GNUstep.csh.in 2011-05-03 13:40:10.000000000 +0600
+++ gnustep-make-2.6.6.patched/GNUstep.csh.in 2014-12-09 20:14:05.000000000 +0600
@@ -130,6 +130,10 @@
setenv GNUSTEP_MAKEFILES "@GNUSTEP_MAKEFILES@"
endif
+if ( ! ${?NIX_GNUSTEP_MAKEFILES_ADDITIONAL} ) then
+ setenv NIX_GNUSTEP_MAKEFILES_ADDITIONAL "@NIX_GNUSTEP_MAKEFILES_ADDITIONAL@"
+endif
+
if ( "${GNUSTEP_MAKE_STRICT_V2_MODE}" == "yes" ) then
unsetenv GNUSTEP_USER_DIR
unsetenv GNUSTEP_USER_ROOT
diff -ru gnustep-make-2.6.6/GNUstep.sh.in gnustep-make-2.6.6.patched/GNUstep.sh.in
--- gnustep-make-2.6.6/GNUstep.sh.in 2012-02-21 20:21:38.000000000 +0600
+++ gnustep-make-2.6.6.patched/GNUstep.sh.in 2014-12-09 20:14:19.000000000 +0600
@@ -173,6 +173,10 @@
fi
export GNUSTEP_MAKEFILES
+if [ -z "$NIX_GNUSTEP_MAKEFILES_ADDITIONAL" ]; then
+ NIX_GNUSTEP_MAKEFILES_ADDITIONAL=@NIX_GNUSTEP_MAKEFILES_ADDITIONAL@
+fi
+export NIX_GNUSTEP_MAKEFILES_ADDITIONAL
if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then
# Make sure this is never set in gnustep-make v2 strict mode; it
diff -ru gnustep-make-2.6.6/GNUstep-strict-v2.conf.in gnustep-make-2.6.6.patched/GNUstep-strict-v2.conf.in
--- gnustep-make-2.6.6/GNUstep-strict-v2.conf.in 2008-01-15 20:35:36.000000000 +0600
+++ gnustep-make-2.6.6.patched/GNUstep-strict-v2.conf.in 2014-12-07 22:04:56.000000000 +0600
@@ -47,7 +47,6 @@
# Traditionally, this is /usr/GNUstep/System/Library/Makefiles
GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@
-
# This is where the user home directories are. Only used to provide
# NSUserDirectory in gnustep-base. Never used anywhere else.
GNUSTEP_SYSTEM_USERS_DIR=@GNUSTEP_SYSTEM_USERS_DIR@
diff -ru gnustep-make-2.6.6/library-combo.make gnustep-make-2.6.6.patched/library-combo.make
--- gnustep-make-2.6.6/library-combo.make 2012-02-21 19:53:02.000000000 +0600
+++ gnustep-make-2.6.6.patched/library-combo.make 2014-12-09 20:15:05.000000000 +0600
@@ -142,7 +142,7 @@
#
# Third-party foundations not using make package
# Our own foundation will install a base.make file into
-# $GNUSTEP_MAKEFILES/Additional/ to set the needed flags
+# $NIX_GNUSTEP_MAKEFILES_ADDITIONAL to set the needed flags
#
ifeq ($(FOUNDATION_LIB), nx)
# -framework Foundation is used both to find headers, and to link
@@ -166,7 +166,7 @@
#
# FIXME - Ask Helge to move this inside his libFoundation, and have
-# it installed as a $(GNUSTEP_MAKEFILES)/Additional/libFoundation.make
+# it installed as a $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL)/libFoundation.make
#
ifeq ($(FOUNDATION_LIB),fd)
-include $(GNUSTEP_MAKEFILES)/libFoundation.make
@@ -193,7 +193,7 @@
GUI_LIBS =
#
# Third-party GUI libraries - our own sets its flags into
-# $(GNUSTEP_MAKEFILES)/Additional/gui.make
+# $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL)/gui.make
#
ifeq ($(GUI_LIB), nx)
GUI_DEFINE = -DNeXT_GUI_LIBRARY=1
diff -ru gnustep-make-2.6.6/rules.make gnustep-make-2.6.6.patched/rules.make
--- gnustep-make-2.6.6/rules.make 2013-07-04 16:05:44.000000000 +0600
+++ gnustep-make-2.6.6.patched/rules.make 2014-12-09 21:31:04.000000000 +0600
@@ -667,7 +667,9 @@
exit 1$(END_ECHO)
endif
-$(GNUSTEP_MAKEFILES)/Additional/*.make: ;
+ifneq ($(NIX_GNUSTEP_MAKEFILES_ADDITIONAL),)
+$(NIX_GNUSTEP_MAKEFILES_ADDITIONAL): ;
+endif
$(GNUSTEP_MAKEFILES)/Master/*.make: ;

View File

@ -0,0 +1,19 @@
{ stdenv, lib, make, makeWrapper, which }:
{ buildInputs ? [], ...} @ args:
stdenv.mkDerivation (args // {
buildInputs = [ makeWrapper make which ] ++ buildInputs;
builder = ./builder.sh;
setupHook = ./setup-hook.sh;
GNUSTEP_MAKEFILES = "${make}/share/GNUstep/Makefiles";
meta = {
homepage = http://gnustep.org/;
license = stdenv.lib.licenses.lgpl2Plus;
maintainers = with stdenv.lib.maintainers; [ ashalkhakov matthewbauer ];
platforms = stdenv.lib.platforms.linux;
} // (if builtins.hasAttr "meta" args then args.meta else {});
})

View File

@ -0,0 +1,77 @@
# this path is used by some packages to install additional makefiles
export DESTDIR_GNUSTEP_MAKEFILES=$out/share/GNUstep/Makefiles
installFlagsArray=( \
"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" \
)
addEnvVars() {
local filename
for filename in $1/share/GNUstep/Makefiles/Additional/*.make ; do
if case "$NIX_GNUSTEP_MAKEFILES_ADDITIONAL" in *"{$filename}"*) false;; *) true;; esac; then
export NIX_GNUSTEP_MAKEFILES_ADDITIONAL+=" $filename"
fi
done
local tmp="$1/lib/GNUstep/Applications"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_APPS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$tmp"
fi
tmp="$1/lib/GNUstep/Applications"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$tmp"
fi
tmp="$1/lib/GNUstep/WebApplications"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_WEB_APPS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$tmp"
fi
tmp="$1/bin"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$tmp"
fi
tmp="$1/sbin"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$tmp"
fi
tmp="$1/lib/GNUstep"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARY" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$tmp"
fi
tmp="$1/include"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_HEADERS" in *"${tmp}"*) false;; *) true;; esac; then
if [ -z "$NIX_GNUSTEP_SYSTEM_HEADERS" ]; then
export NIX_GNUSTEP_SYSTEM_HEADERS="$tmp"
else
export NIX_GNUSTEP_SYSTEM_HEADERS+=" $tmp"
fi
fi
tmp="$1/lib"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARIES" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$tmp"
fi
tmp="$1/share/GNUstep/Documentation"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$tmp"
fi
tmp="$1/share/man"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_MAN" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$tmp"
fi
tmp="$1/share/info"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_INFO" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$tmp"
fi
}
envHooks=(${envHooks[@]} addEnvVars)

View File

@ -0,0 +1,4 @@
#!/bin/sh
. $GNUSTEP_MAKEFILES/GNUstep.sh
$1

View File

@ -0,0 +1,23 @@
{ fetchurl
, base, back, gsmakeDerivation, gui, gorm
, gnumake, gdb
}:
let
version = "0.6.2";
in
gsmakeDerivation {
name = "projectcenter-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/dev-apps/ProjectCenter-${version}.tar.gz";
sha256 = "0wwlbpqf541apw192jb633d634zkpjhcrrkd1j80y9hihphll465";
};
# NOTE: need a patch for ProjectCenter to help it locate some necessary tools:
# 1. Framework/PCProjectLauncher.m, locate gdb (say among NIX_GNUSTEP_SYSTEM_TOOLS)
# 2. Framework/PCProjectBuilder.m, locate gmake (similar)
propagatedBuildInputs = [ base back gui gnumake gdb gorm ];
meta = {
description = "GNUstep's integrated development environment";
};
}

View File

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

View File

@ -0,0 +1,17 @@
{ back, base, gui, gsmakeDerivation, fetchurl }:
let
version = "1.1.0";
in
gsmakeDerivation {
name = "system_preferences-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/usr-apps/SystemPreferences-${version}.tar.gz";
sha256 = "1q68bs8rlq0dxkar01qs5wfyas4iivddnama371jd7ll6cxzmpy7";
};
# GNUSTEP_MAKEFILES = "${gnustep_make}/share/GNUstep/Makefiles";
buildInputs = [ back base gui ];
# propagatedBuildInputs = [ gnustep_back gnustep_base gnustep_gui ];
meta = {
description = "The settings manager for the GNUstep environment and its applications";
};
}

View File

@ -1,38 +0,0 @@
{ stdenv, fetchurl }:
let version = "2.6.7"; in
stdenv.mkDerivation rec {
name = "gnustep-make-${version}";
src = fetchurl {
url = "http://ftpmain.gnustep.org/pub/gnustep/core/${name}.tar.gz";
sha256 = "1r2is23xdg4qirckb6bd4lynfwnnw5d9522wib3ndk1xgirmfaqi";
};
patchPhase = ''
substituteInPlace GNUmakefile.in \
--replace which type \
--replace 'tooldir = $(DESTDIR)' 'tooldir = ' \
--replace 'makedir = $(DESTDIR)' 'makedir = ' \
--replace 'mandir = $(DESTDIR)' 'mandir = '
substituteInPlace FilesystemLayouts/apple \
--replace /usr/local ""
substituteInPlace configure \
--replace /Library/GNUstep "$out"
'';
installFlags = "DESTDIR=$(out)";
postInstall = ''
mkdir -p $out/nix-support
cat >$out/nix-support/setup-hook <<EOF
. $out/Library/GNUstep/Makefiles/GNUstep.sh
EOF
'';
meta = {
platforms = stdenv.lib.platforms.unix;
};
}

View File

@ -1,23 +0,0 @@
{ stdenv, fetchgit, gnustep-make, Foundation, libobjc }:
stdenv.mkDerivation rec {
name = "xcode-${version}";
version = "1.0";
makeFlags = "messages=yes";
installFlags = "DESTDIR=$(out)";
__impureHostDeps = [
"/System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation"
"/usr/lib/libextension.dylib"
];
buildInputs = [ gnustep-make Foundation libobjc ];
src = fetchgit {
url = "https://github.com/gnustep/xcode";
rev = "cc5016794e44f9998674120a5e4625aa09ca455a";
sha256 = "85420f3f61091b2e4548cf5e99d886cb9c72cf07b8b9fae3eebc87e7b6b7e54a";
};
}

View File

@ -49,6 +49,7 @@ doNotDisplayTwice rec {
git-hub = gitAndTools.git-hub; # added 2016-04-29
grantlee5 = qt5.grantlee; # added 2015-12-19
gupnptools = gupnp-tools; # added 2015-12-19
gnustep-make = gnustep.make; # added 2016-7-6
htmlTidy = html-tidy; # added 2014-12-06
inherit (haskell.compiler) jhc uhc; # 2015-05-15
inotifyTools = inotify-tools;

View File

@ -6433,6 +6433,8 @@ in
gnumake42 = callPackage ../development/tools/build-managers/gnumake/4.2 { };
gnumake = self.gnumake42;
gnustep = recurseIntoAttrs (callPackage ../desktops/gnustep {});
gob2 = callPackage ../development/tools/misc/gob2 { };
gocd-agent = callPackage ../development/tools/continuous-integration/gocd-agent { };
@ -10848,12 +10850,6 @@ in
stubs = callPackages ../os-specific/darwin/stubs {};
};
gnustep-make = callPackage ../development/tools/build-managers/gnustep/make {};
gnustep-xcode = callPackage ../development/tools/build-managers/gnustep/xcode {
inherit (darwin.apple_sdk.frameworks) Foundation;
inherit (darwin) libobjc;
};
devicemapper = self.lvm2;
disk_indicator = callPackage ../os-specific/linux/disk-indicator { };