diff --git a/pkgs/development/tools/build-managers/gnumake/4.2/head.nix b/pkgs/development/tools/build-managers/gnumake/4.2/head.nix new file mode 100644 index 000000000000..5f3ae10c3e5b --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/4.2/head.nix @@ -0,0 +1,69 @@ +{ stdenv, fetchurl, texinfo, guileSupport ? false, pkgconfig , guile ? null, autoreconfHook }: + +assert guileSupport -> ( guile != null ); + +let + version = "4.2.90"; + revision = "48c8a116a914a325a0497721f5d8b58d5bba34d4"; + revCount = "2491"; + shortRev = "48c8a11"; + + baseVersion = "4.2.1"; + baseTarball = fetchurl { + url = "mirror://gnu/make/make-${baseVersion}.tar.bz2"; + sha256 = "12f5zzyq2w56g95nni65hc0g5p7154033y2f3qmjvd016szn5qnn"; + }; +in +stdenv.mkDerivation { + name = "gnumake-${version}pre${revCount}_${shortRev}"; + + src = fetchurl { + url = "http://git.savannah.gnu.org/cgit/make.git/snapshot/make-${revision}.tar.gz"; + sha256 = "0k6yvhr2a5lh1qhflv02dyvq5p20ikgaakm8w6gr4xmkspljwpwx"; + }; + + postUnpack = '' + unpackFile ${baseTarball} + cp make-${baseVersion}/po/*.po $sourceRoot/po + cp make-${baseVersion}/doc/{fdl,make-stds}.texi $sourceRoot/doc + ''; + + patches = [ + # Purity: don't look for library dependencies (of the form `-lfoo') in /lib + # and /usr/lib. It's a stupid feature anyway. Likewise, when searching for + # included Makefiles, don't look in /usr/include and friends. + ./impure-dirs-head.patch + ]; + + postPatch = '' + # These aren't in the 4.2.1 tarball yet. + sed -i -e 's/sr//' -e 's/zh_TW//' po/LINGUAS + ''; + + nativeBuildInputs = [ autoreconfHook pkgconfig texinfo ]; + buildInputs = stdenv.lib.optional guileSupport guile; + + configureFlags = stdenv.lib.optional guileSupport "--with-guile"; + + outputs = [ "out" "man" "info" ]; + + meta = with stdenv.lib; { + homepage = http://www.gnu.org/software/make/; + description = "A tool to control the generation of non-source files from sources"; + license = licenses.gpl3Plus; + + longDescription = '' + Make is a tool which controls the generation of executables and + other non-source files of a program from the program's source files. + + Make gets its knowledge of how to build your program from a file + called the makefile, which lists each of the non-source files and + how to compute it from other files. When you write a program, you + should write a makefile for it, so that it is possible to use Make + to build and install the program. + ''; + + platforms = platforms.all; + maintainers = [ maintainers.vrthra ]; + }; +} diff --git a/pkgs/development/tools/build-managers/gnumake/4.2/impure-dirs-head.patch b/pkgs/development/tools/build-managers/gnumake/4.2/impure-dirs-head.patch new file mode 100644 index 000000000000..06d39e13ce39 --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/4.2/impure-dirs-head.patch @@ -0,0 +1,31 @@ +diff -Naur a/src/read.c b/src/read.c +--- a/src/read.c 2017-11-19 15:17:47.000000000 -0500 ++++ b/src/read.c 2018-02-19 08:53:51.548755213 -0500 +@@ -109,10 +109,12 @@ + #endif + INCLUDEDIR, + #ifndef _AMIGA ++#if 0 + "/usr/gnu/include", + "/usr/local/include", + "/usr/include", + #endif ++#endif + 0 + }; + +diff -Naur a/src/remake.c b/src/remake.c +--- a/src/remake.c 2017-11-19 15:17:47.000000000 -0500 ++++ b/src/remake.c 2018-02-19 08:54:08.304101943 -0500 +@@ -1601,9 +1601,11 @@ + static const char *dirs[] = + { + #ifndef _AMIGA ++#if 0 + "/lib", + "/usr/lib", + #endif ++#endif + #if defined(WINDOWS32) && !defined(LIBDIR) + /* + * This is completely up to the user at product install time. Just define diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4d82cd1fbf23..f1674398705a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7662,6 +7662,7 @@ with pkgs; gnumake3 = gnumake382; gnumake42 = callPackage ../development/tools/build-managers/gnumake/4.2 { }; gnumake = gnumake42; + gnumake42HEAD = callPackage ../development/tools/build-managers/gnumake/4.2/head.nix { }; gnustep = recurseIntoAttrs (callPackage ../desktops/gnustep {});