Skip to content

Commit

Permalink
Merge pull request #219579 from trofi/openjdk-pin-make
Browse files Browse the repository at this point in the history
Openjdk pin make
  • Loading branch information
mweinelt authored Mar 4, 2023
2 parents 63b1e2d + 3c99ad4 commit 8ff8efc
Show file tree
Hide file tree
Showing 7 changed files with 164 additions and 3 deletions.
5 changes: 4 additions & 1 deletion pkgs/development/compilers/openjdk/11.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
, headless ? false
, enableJavaFX ? false, openjfx
, enableGnome2 ? true, gtk3, gnome_vfs, glib, GConf
# Hold back make-4.4 as 4.4.1 breaks the build:
# https://github.com/NixOS/nixpkgs/issues/219513
, gnumake44
}:

let
Expand All @@ -25,7 +28,7 @@ let
sha256 = "sha256-QGOpMIrWwOtIcUY/CLbTRDvcVTG2xioZu46v+n+IIQ4=";
};

nativeBuildInputs = [ pkg-config autoconf unzip ];
nativeBuildInputs = [ gnumake44 pkg-config autoconf unzip ];
buildInputs = [
cpio file which zip perl zlib cups freetype harfbuzz alsa-lib libjpeg giflib
libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst
Expand Down
5 changes: 4 additions & 1 deletion pkgs/development/compilers/openjdk/17.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
, headless ? false
, enableJavaFX ? false, openjfx
, enableGnome2 ? true, gtk3, gnome_vfs, glib, GConf
# Hold back make-4.4 as 4.4.1 breaks the build:
# https://github.com/NixOS/nixpkgs/issues/219513
, gnumake44
}:

let
Expand All @@ -26,7 +29,7 @@ let
sha256 = "sha256-zPpINi++3Ct0PCwlwlfhceh/ploMkclw+MgeI9dULdc=";
};

nativeBuildInputs = [ pkg-config autoconf unzip ];
nativeBuildInputs = [ gnumake44 pkg-config autoconf unzip ];
buildInputs = [
cpio file which zip perl zlib cups freetype harfbuzz alsa-lib libjpeg giflib
libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst
Expand Down
5 changes: 4 additions & 1 deletion pkgs/development/compilers/openjdk/19.nix
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
, headless ? stdenv.targetPlatform.isGhcjs
, enableJavaFX ? false, openjfx
, enableGnome2 ? true, gtk3, gnome_vfs, glib, GConf
# Hold back make-4.4 as 4.4.1 breaks the build:
# https://github.com/NixOS/nixpkgs/issues/219513
, gnumake44
}:

let
Expand All @@ -29,7 +32,7 @@ let
hash = "sha256-pBEHmBtIgG4Czou4C/zpBBYZEDImvXiLoA5CjOzpeyI=";
};

nativeBuildInputs = [ pkg-config autoconf unzip ensureNewerSourcesForZipFilesHook ];
nativeBuildInputs = [ gnumake44 pkg-config autoconf unzip ensureNewerSourcesForZipFilesHook ];
buildInputs = [
cpio file which zip perl zlib cups freetype alsa-lib libjpeg giflib
libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
From e00a5257a6ca5fedbf68b09eee7df3502971a057 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <[email protected]>
Date: Sat, 24 Apr 2021 10:11:40 +0200
Subject: [PATCH 1/2] No impure bin sh

default_shell is used to populuate default shell used to execute jobs.
Unless SHELL is set to a different value this would be /bin/sh.
Our stdenv provides sh in form of bash anyway. Having this value not
hard-coded has some advantages:

- It would ensure that on all systems it uses sh from its PATH rather
than /bin/sh, which helps as different systems might have different
shells there (bash vs. dash)
- In the past I had issues with LD_PRELOAD with BEAR, where /bin/sh
used a different glibc than BEAR which came from my development shell.
---
src/job.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/job.c b/src/job.c
index ae1f18b..6b4ddb3 100644
--- a/src/job.c
+++ b/src/job.c
@@ -77,7 +77,7 @@ char * vms_strsignal (int status);

#else

-const char *default_shell = "/bin/sh";
+const char *default_shell = "sh";
int batch_mode_shell = 0;

#endif
--
2.31.1

Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
From 795d63d3c8b5c0dbb7e544954f75507b371b7228 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <[email protected]>
Date: Sat, 24 Apr 2021 10:20:16 +0200
Subject: [PATCH 2/2] remove impure dirs

---
src/read.c | 3 ---
src/remake.c | 2 --
2 files changed, 5 deletions(-)

diff --git a/src/read.c b/src/read.c
index fa197fb..defacfb 100644
--- a/src/read.c
+++ b/src/read.c
@@ -109,9 +109,6 @@ static const char *default_include_directories[] =
#endif
INCLUDEDIR,
#ifndef _AMIGA
- "/usr/gnu/include",
- "/usr/local/include",
- "/usr/include",
#endif
0
};
diff --git a/src/remake.c b/src/remake.c
index fb237c5..94bff7d 100644
--- a/src/remake.c
+++ b/src/remake.c
@@ -1601,8 +1601,6 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
static const char *dirs[] =
{
#ifndef _AMIGA
- "/lib",
- "/usr/lib",
#endif
#if defined(WINDOWS32) && !defined(LIBDIR)
/*
--
2.31.1

75 changes: 75 additions & 0 deletions pkgs/development/tools/build-managers/gnumake/4.4/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{ lib
, stdenv
, fetchurl
, guileSupport ? false, guile
# avoid guile depend on bootstrap to prevent dependency cycles
, inBootstrap ? false
, pkg-config
, gnumake
}:

let
guileEnabled = guileSupport && !inBootstrap;
in

stdenv.mkDerivation rec {
pname = "gnumake";
version = "4.4";

src = fetchurl {
url = "mirror://gnu/make/make-${version}.tar.gz";
hash = "sha256-WB9NToctp0s5Qch0IViYp9NYAvA3Mr3M7h1KeXkQXRg=";
};

# to update apply these patches with `git am *.patch` to https://git.savannah.gnu.org/git/make.git
patches = [
# Replaces /bin/sh with sh, see patch file for reasoning
./0001-No-impure-bin-sh.patch
# 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.
./0002-remove-impure-dirs.patch
];

nativeBuildInputs = lib.optionals guileEnabled [ pkg-config ];
buildInputs = lib.optionals guileEnabled [ guile ];

configureFlags = lib.optional guileEnabled "--with-guile"

# Make uses this test to decide whether it should keep track of
# subseconds. Apple made this possible with APFS and macOS 10.13.
# However, we still support macOS 10.11 and 10.12. Binaries built
# in Nixpkgs will be unable to use futimens to set mtime less than
# a second. So, tell Make to ignore nanoseconds in mtime here by
# overriding the autoconf test for the struct.
# See https://github.com/NixOS/nixpkgs/issues/51221 for discussion.
++ lib.optional stdenv.isDarwin "ac_cv_struct_st_mtim_nsec=no";

outputs = [ "out" "man" "info" ];
separateDebugInfo = true;

passthru.tests = {
# make sure that the override doesn't break bootstrapping
gnumakeWithGuile = gnumake.override { guileSupport = true; };
};

meta = with lib; {
description = "A tool to control the generation of non-source files from sources";
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.
'';
homepage = "https://www.gnu.org/software/make/";

license = licenses.gpl3Plus;
maintainers = [ maintainers.vrthra ];
mainProgram = "make";
platforms = platforms.all;
};
}
2 changes: 2 additions & 0 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -18037,6 +18037,8 @@ with pkgs;

gnumake = callPackage ../development/tools/build-managers/gnumake { };
gnumake42 = callPackage ../development/tools/build-managers/gnumake/4.2 { };
# openjdk-17 fails on 4.4.1. Provide 4.4 until we fix it.
gnumake44 = callPackage ../development/tools/build-managers/gnumake/4.4 { };

gob2 = callPackage ../development/tools/misc/gob2 { };

Expand Down

0 comments on commit 8ff8efc

Please sign in to comment.