summary refs log tree commit diff
path: root/pkgs/development/tools/build-managers
diff options
context:
space:
mode:
authorArtyom Shalkhakov <artyom.shalkhakov@gmail.com>2014-12-10 22:28:55 +0600
committerMatthew Bauer <mjbauer95@gmail.com>2016-08-16 20:59:50 +0000
commitea3dcb3264e8b8d6f6b9b257ed44f55ce92ff274 (patch)
treeaf5abe14e2603fe0d66a1a7e298751f609c741bc /pkgs/development/tools/build-managers
parent4cbeef463c53877f9756d02d81bfd93fe187ccd0 (diff)
downloadnixlib-ea3dcb3264e8b8d6f6b9b257ed44f55ce92ff274.tar
nixlib-ea3dcb3264e8b8d6f6b9b257ed44f55ce92ff274.tar.gz
nixlib-ea3dcb3264e8b8d6f6b9b257ed44f55ce92ff274.tar.bz2
nixlib-ea3dcb3264e8b8d6f6b9b257ed44f55ce92ff274.tar.lz
nixlib-ea3dcb3264e8b8d6f6b9b257ed44f55ce92ff274.tar.xz
nixlib-ea3dcb3264e8b8d6f6b9b257ed44f55ce92ff274.tar.zst
nixlib-ea3dcb3264e8b8d6f6b9b257ed44f55ce92ff274.zip
gnustep: add setup hook for make
Adding a setup-hook for gnustep-make.
Diffstat (limited to 'pkgs/development/tools/build-managers')
-rw-r--r--pkgs/development/tools/build-managers/gnustep-make/build-gnustep-package.nix47
-rw-r--r--pkgs/development/tools/build-managers/gnustep-make/default.nix3
-rw-r--r--pkgs/development/tools/build-managers/gnustep-make/gs-makefiles-additional.patch154
-rw-r--r--pkgs/development/tools/build-managers/gnustep-make/setup-hook.sh29
4 files changed, 185 insertions, 48 deletions
diff --git a/pkgs/development/tools/build-managers/gnustep-make/build-gnustep-package.nix b/pkgs/development/tools/build-managers/gnustep-make/build-gnustep-package.nix
deleted file mode 100644
index 8351bcfeb720..000000000000
--- a/pkgs/development/tools/build-managers/gnustep-make/build-gnustep-package.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ stdenv, gnustep_make, buildEnv}:
-
-with stdenv.lib;
-
-{
-  mkDerivation =
-    args @ { name, src, deps ? [], buildInputs ? [], propagatedBuildInputs ? [], ... }:
-    let
-      GNUSTEP_env =
-	# buildEnv fails if there is only one path to symlink
-        if deps == null || length deps < 1 then gnustep_make
-	else buildEnv {
-          name = "gnustep-env-for-${name}";
-          paths = [ gnustep_make ] ++ deps;
-          pathsToLink = [ "/bin" "/sbin" "/lib" "/include" "/share" ];
-	};
-    in
-      stdenv.mkDerivation (args // {
-        GNUSTEP_conf = gnustep_make.gnustepConfigTemplate;
-        inherit GNUSTEP_env;
-        GNUSTEP_MAKEFILES = "${GNUSTEP_env}/share/GNUstep/Makefiles";
-        GNUSTEP_INSTALLATION_DOMAIN = "SYSTEM";
-	buildInputs = buildInputs ++ deps ++ [ gnustep_make ];
-	propagatedBuildInputs = propagatedBuildInputs ++ deps;
-        preConfigure = ''
-	  cp $GNUSTEP_conf $(pwd)/GNUstep-build.conf
-          substituteInPlace $(pwd)/GNUstep-build.conf \
-      	       --subst-var-by gnustepMakefiles $GNUSTEP_MAKEFILES \
-      	       --subst-var-by systemApps "$GNUSTEP_env/lib/GNUstep/Applications" \
-      	       --subst-var-by systemAdminApps "$GNUSTEP_env/lib/GNUstep/Applications" \
-      	       --subst-var-by systemWebApps "$GNUSTEP_env/lib/GNUstep/WebApplications" \
-      	       --subst-var-by systemTools "$GNUSTEP_env/bin" \
-      	       --subst-var-by systemAdminTools "$GNUSTEP_env/sbin" \
-      	       --subst-var-by systemLibrary "$GNUSTEP_env/lib" \
-      	       --subst-var-by systemHeaders "$GNUSTEP_env/include" \
-      	       --subst-var-by systemLibraries "$GNUSTEP_env/lib" \
-      	       --subst-var-by systemDoc "$GNUSTEP_env/share/GNUstep/Documentation" \
-      	       --subst-var-by systemDocMan "$GNUSTEP_env/share/man" \
-      	       --subst-var-by systemDocInfo "$GNUSTEP_env/share/info"
-	  export GNUSTEP_CONFIG_FILE=$(pwd)/GNUstep-build.conf
-	  . $GNUSTEP_MAKEFILES/GNUstep.sh
-	'';
-	    buildFlags = "GNUSTEP_MAKEFILES=${GNUSTEP_env}/share/GNUstep/Makefiles";
-	    configureFlags = "GNUSTEP_MAKEFILES=${GNUSTEP_env}/share/GNUstep/Makefiles";
-	installFlags = "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_SYSTEM_HEADERS=\${out}/include GNUSTEP_SYSTEM_LIBRARIES=\${out}/lib GNUSTEP_SYSTEM_DOC=\${out}/share/GNUstep/Documentation GNUSTEP_SYSTEM_DOC_MAN=\${out}/share/man GNUSTEP_SYSTEM_DOC_INFO=\${out}/share/info GNUSTEP_SYSTEM_LIBRARIES=\${out}/lib GNUSTEP_HEADERS=\${out}/include DESTDIR_GNUSTEP_MAKEFILES=\${out}/share/GNUstep/Makefiles";
-        });
-}
diff --git a/pkgs/development/tools/build-managers/gnustep-make/default.nix b/pkgs/development/tools/build-managers/gnustep-make/default.nix
index 158411d30825..a9214934577c 100644
--- a/pkgs/development/tools/build-managers/gnustep-make/default.nix
+++ b/pkgs/development/tools/build-managers/gnustep-make/default.nix
@@ -10,7 +10,8 @@ stdenv.mkDerivation rec {
   };
   configureFlags = "--with-installation-domain=SYSTEM";
   buildInputs = [ clang which libobjc2 ];
-  gnustepConfigTemplate = ./GNUstep.conf;
+  patches = [ ./gs-makefiles-additional.patch ];
+  setupHook = ./setup-hook.sh;
   meta = {
     description = "GNUstep-make is a build manager for GNUstep.";
 
diff --git a/pkgs/development/tools/build-managers/gnustep-make/gs-makefiles-additional.patch b/pkgs/development/tools/build-managers/gnustep-make/gs-makefiles-additional.patch
new file mode 100644
index 000000000000..aeefcb53e2b7
--- /dev/null
+++ b/pkgs/development/tools/build-managers/gnustep-make/gs-makefiles-additional.patch
@@ -0,0 +1,154 @@
+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
+Only in gnustep-make-2.6.6.patched/: common.make~
+Only in gnustep-make-2.6.6.patched/: configure.ac~
+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
+Only in gnustep-make-2.6.6.patched/: gnustep-config.in~
+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
+Only in gnustep-make-2.6.6.patched/: GNUstep.csh.in~
+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
+Only in gnustep-make-2.6.6.patched/: GNUstep.sh.in~
+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@
+Only in gnustep-make-2.6.6.patched/: GNUstep-strict-v2.conf.in~
+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
+Only in gnustep-make-2.6.6.patched/: library-combo.make~
+Only in gnustep-make-2.6.6.patched/: result
+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: ;
+ 
+Only in gnustep-make-2.6.6.patched/: rules.make~
diff --git a/pkgs/development/tools/build-managers/gnustep-make/setup-hook.sh b/pkgs/development/tools/build-managers/gnustep-make/setup-hook.sh
new file mode 100644
index 000000000000..fa70b9ab5ca8
--- /dev/null
+++ b/pkgs/development/tools/build-managers/gnustep-make/setup-hook.sh
@@ -0,0 +1,29 @@
+# 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_SYSTEM_HEADERS=$out/include" \
+  "GNUSTEP_SYSTEM_LIBRARIES=$out/lib" \
+  "GNUSTEP_SYSTEM_DOC=$out/share/GNUstep/Documentation" \
+  "GNUSTEP_SYSTEM_DOC_MAN=$out/share/man" \
+  "GNUSTEP_SYSTEM_DOC_INFO=$out/share/info" \
+  "GNUSTEP_SYSTEM_LIBRARIES=$out/lib" \
+  "GNUSTEP_HEADERS=$out/include" \
+)
+
+addGSMakefilesPath () {
+    local filename
+
+    for filename in $1/share/GNUstep/Makefiles/Additional/*.make ; do
+	export NIX_GNUSTEP_MAKEFILES_ADDITIONAL="$NIX_GNUSTEP_MAKEFILES_ADDITIONAL $filename"
+    done
+}
+
+envHooks=(${envHooks[@]} addGSMakefilesPath)