diff options
author | Matthew Bauer <mjbauer95@gmail.com> | 2016-08-16 20:51:27 +0000 |
---|---|---|
committer | Matthew Bauer <mjbauer95@gmail.com> | 2016-08-16 21:53:45 +0000 |
commit | 2e5edbfd99c4eb01cdb08e6735879701dbdc2fc7 (patch) | |
tree | 14d2fcc8293f1992b98293e3283c4deab0e5b731 /pkgs/desktops/gnustep | |
parent | 63bd635f80a033581f4bfa5554b861cb90268792 (diff) | |
download | nixpkgs-2e5edbfd99c4eb01cdb08e6735879701dbdc2fc7.tar nixpkgs-2e5edbfd99c4eb01cdb08e6735879701dbdc2fc7.tar.gz nixpkgs-2e5edbfd99c4eb01cdb08e6735879701dbdc2fc7.tar.bz2 nixpkgs-2e5edbfd99c4eb01cdb08e6735879701dbdc2fc7.tar.lz nixpkgs-2e5edbfd99c4eb01cdb08e6735879701dbdc2fc7.tar.xz nixpkgs-2e5edbfd99c4eb01cdb08e6735879701dbdc2fc7.tar.zst nixpkgs-2e5edbfd99c4eb01cdb08e6735879701dbdc2fc7.zip |
gnustep: move to pkgs/desktops/gnustep
Diffstat (limited to 'pkgs/desktops/gnustep')
26 files changed, 1486 insertions, 0 deletions
diff --git a/pkgs/desktops/gnustep/back/default.nix b/pkgs/desktops/gnustep/back/default.nix new file mode 100644 index 00000000000..8e11a286284 --- /dev/null +++ b/pkgs/desktops/gnustep/back/default.nix @@ -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"; + }; +} diff --git a/pkgs/desktops/gnustep/back/fixup-tools.patch b/pkgs/desktops/gnustep/back/fixup-tools.patch new file mode 100644 index 00000000000..a47de5478e3 --- /dev/null +++ b/pkgs/desktops/gnustep/back/fixup-tools.patch @@ -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 + # + diff --git a/pkgs/desktops/gnustep/base/default.nix b/pkgs/desktops/gnustep/base/default.nix new file mode 100644 index 00000000000..4d9f763acc4 --- /dev/null +++ b/pkgs/desktops/gnustep/base/default.nix @@ -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"; + }; +} diff --git a/pkgs/desktops/gnustep/base/fixup-base-makefile-installdir.patch b/pkgs/desktops/gnustep/base/fixup-base-makefile-installdir.patch new file mode 100644 index 00000000000..482c72a5190 --- /dev/null +++ b/pkgs/desktops/gnustep/base/fixup-base-makefile-installdir.patch @@ -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:: diff --git a/pkgs/desktops/gnustep/base/fixup-paths.patch b/pkgs/desktops/gnustep/base/fixup-paths.patch new file mode 100644 index 00000000000..fa28412dbf6 --- /dev/null +++ b/pkgs/desktops/gnustep/base/fixup-paths.patch @@ -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++) diff --git a/pkgs/desktops/gnustep/default.nix b/pkgs/desktops/gnustep/default.nix new file mode 100644 index 00000000000..ac324bc89a8 --- /dev/null +++ b/pkgs/desktops/gnustep/default.nix @@ -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 diff --git a/pkgs/desktops/gnustep/gorm/default.nix b/pkgs/desktops/gnustep/gorm/default.nix new file mode 100644 index 00000000000..5075ec5500c --- /dev/null +++ b/pkgs/desktops/gnustep/gorm/default.nix @@ -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"; + }; +} diff --git a/pkgs/desktops/gnustep/gorm/fix-gs-makefiles.patch b/pkgs/desktops/gnustep/gorm/fix-gs-makefiles.patch new file mode 100644 index 00000000000..c4b3d1e1d81 --- /dev/null +++ b/pkgs/desktops/gnustep/gorm/fix-gs-makefiles.patch @@ -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 diff --git a/pkgs/desktops/gnustep/gui/default.nix b/pkgs/desktops/gnustep/gui/default.nix new file mode 100644 index 00000000000..a28fef8f3d9 --- /dev/null +++ b/pkgs/desktops/gnustep/gui/default.nix @@ -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"; + }; +} diff --git a/pkgs/desktops/gnustep/gui/fixup-all.patch b/pkgs/desktops/gnustep/gui/fixup-all.patch new file mode 100644 index 00000000000..4b412db409a --- /dev/null +++ b/pkgs/desktops/gnustep/gui/fixup-all.patch @@ -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) + diff --git a/pkgs/desktops/gnustep/gui/fixup-gui-makefile-installdir.patch b/pkgs/desktops/gnustep/gui/fixup-gui-makefile-installdir.patch new file mode 100644 index 00000000000..30c6f56c032 --- /dev/null +++ b/pkgs/desktops/gnustep/gui/fixup-gui-makefile-installdir.patch @@ -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:: diff --git a/pkgs/desktops/gnustep/gui/fixup-gui-textconverters-preamble.patch b/pkgs/desktops/gnustep/gui/fixup-gui-textconverters-preamble.patch new file mode 100644 index 00000000000..23ec2db0fbd --- /dev/null +++ b/pkgs/desktops/gnustep/gui/fixup-gui-textconverters-preamble.patch @@ -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) diff --git a/pkgs/desktops/gnustep/gui/fixup-gui-tools-preamble.patch b/pkgs/desktops/gnustep/gui/fixup-gui-tools-preamble.patch new file mode 100644 index 00000000000..e57ddec75ad --- /dev/null +++ b/pkgs/desktops/gnustep/gui/fixup-gui-tools-preamble.patch @@ -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) + diff --git a/pkgs/desktops/gnustep/gworkspace/default.nix b/pkgs/desktops/gnustep/gworkspace/default.nix new file mode 100644 index 00000000000..67fffd10a0f --- /dev/null +++ b/pkgs/desktops/gnustep/gworkspace/default.nix @@ -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"; + }; +} diff --git a/pkgs/desktops/gnustep/libobjc2/default.nix b/pkgs/desktops/gnustep/libobjc2/default.nix new file mode 100644 index 00000000000..a3e718187c7 --- /dev/null +++ b/pkgs/desktops/gnustep/libobjc2/default.nix @@ -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; + }; +} diff --git a/pkgs/desktops/gnustep/make/GNUstep.conf b/pkgs/desktops/gnustep/make/GNUstep.conf new file mode 100644 index 00000000000..f4e0e3b8162 --- /dev/null +++ b/pkgs/desktops/gnustep/make/GNUstep.conf @@ -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 diff --git a/pkgs/desktops/gnustep/make/builder.sh b/pkgs/desktops/gnustep/make/builder.sh new file mode 100644 index 00000000000..1655a75eeba --- /dev/null +++ b/pkgs/desktops/gnustep/make/builder.sh @@ -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 diff --git a/pkgs/desktops/gnustep/make/default.nix b/pkgs/desktops/gnustep/make/default.nix new file mode 100644 index 00000000000..43530096b53 --- /dev/null +++ b/pkgs/desktops/gnustep/make/default.nix @@ -0,0 +1,25 @@ +{ 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-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.linux; + }; +} diff --git a/pkgs/desktops/gnustep/make/fixup-paths.patch b/pkgs/desktops/gnustep/make/fixup-paths.patch new file mode 100644 index 00000000000..b5eb093ad96 --- /dev/null +++ b/pkgs/desktops/gnustep/make/fixup-paths.patch @@ -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: ; + diff --git a/pkgs/desktops/gnustep/make/gs-makefiles-additional.patch b/pkgs/desktops/gnustep/make/gs-makefiles-additional.patch new file mode 100644 index 00000000000..98e22f37ee7 --- /dev/null +++ b/pkgs/desktops/gnustep/make/gs-makefiles-additional.patch @@ -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: ; + diff --git a/pkgs/desktops/gnustep/make/gsmakeDerivation.nix b/pkgs/desktops/gnustep/make/gsmakeDerivation.nix new file mode 100644 index 00000000000..00b96cd2fac --- /dev/null +++ b/pkgs/desktops/gnustep/make/gsmakeDerivation.nix @@ -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 {}); +}) diff --git a/pkgs/desktops/gnustep/make/setup-hook.sh b/pkgs/desktops/gnustep/make/setup-hook.sh new file mode 100644 index 00000000000..71618ef960f --- /dev/null +++ b/pkgs/desktops/gnustep/make/setup-hook.sh @@ -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) diff --git a/pkgs/desktops/gnustep/make/wrapper.sh b/pkgs/desktops/gnustep/make/wrapper.sh new file mode 100644 index 00000000000..1bc2e130d88 --- /dev/null +++ b/pkgs/desktops/gnustep/make/wrapper.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +. $GNUSTEP_MAKEFILES/GNUstep.sh +$1 diff --git a/pkgs/desktops/gnustep/projectcenter/default.nix b/pkgs/desktops/gnustep/projectcenter/default.nix new file mode 100644 index 00000000000..abfdac1e7af --- /dev/null +++ b/pkgs/desktops/gnustep/projectcenter/default.nix @@ -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"; + }; +} diff --git a/pkgs/desktops/gnustep/projectcenter/fixup-preamble.patch b/pkgs/desktops/gnustep/projectcenter/fixup-preamble.patch new file mode 100644 index 00000000000..3fe19a6a58b --- /dev/null +++ b/pkgs/desktops/gnustep/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/desktops/gnustep/systempreferences/default.nix b/pkgs/desktops/gnustep/systempreferences/default.nix new file mode 100644 index 00000000000..2bc4f688184 --- /dev/null +++ b/pkgs/desktops/gnustep/systempreferences/default.nix @@ -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"; + }; +} |