about summary refs log tree commit diff
path: root/pkgs/os-specific
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2019-02-20 09:38:45 +0100
committerVladimír Čunát <vcunat@gmail.com>2019-02-20 09:38:45 +0100
commit32767d139f28fd3c00d687c04ec406258f7341e7 (patch)
treeb049aa5d798a9fa2555882c788592a0640928ba2 /pkgs/os-specific
parent28d983fe25bcf853dfd38663f333d4c522f613cc (diff)
parente20188f181ca51882984daaee237a95f2fc5e7c9 (diff)
downloadnixlib-32767d139f28fd3c00d687c04ec406258f7341e7.tar
nixlib-32767d139f28fd3c00d687c04ec406258f7341e7.tar.gz
nixlib-32767d139f28fd3c00d687c04ec406258f7341e7.tar.bz2
nixlib-32767d139f28fd3c00d687c04ec406258f7341e7.tar.lz
nixlib-32767d139f28fd3c00d687c04ec406258f7341e7.tar.xz
nixlib-32767d139f28fd3c00d687c04ec406258f7341e7.tar.zst
nixlib-32767d139f28fd3c00d687c04ec406258f7341e7.zip
Merge branch 'staging-next'
This round is without the systemd CVE,
as we don't have binaries for that yet.
BTW, I just ignore darwin binaries these days,
as I'd have to wait for weeks for them.
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/architecture/default.nix6
-rw-r--r--pkgs/os-specific/linux/alsa-lib/default.nix11
-rw-r--r--pkgs/os-specific/linux/alsa-plugins/wrapper.nix2
-rw-r--r--pkgs/os-specific/linux/bbswitch/default.nix4
-rw-r--r--pkgs/os-specific/linux/kernel-headers/default.nix4
-rw-r--r--pkgs/os-specific/linux/keyutils/default.nix9
-rw-r--r--pkgs/os-specific/linux/musl/0001-in-pthread_mutex_trylock-EBUSY-out-more-directly-whe.patch37
-rw-r--r--pkgs/os-specific/linux/musl/0002-in-pthread_mutex_timedlock-avoid-repeatedly-reading-.patch41
-rw-r--r--pkgs/os-specific/linux/musl/0003-fix-namespace-violation-for-c11-mutex-functions.patch35
-rw-r--r--pkgs/os-specific/linux/musl/default.nix31
-rw-r--r--pkgs/os-specific/linux/musl/fexecve-execveat.patch33
-rw-r--r--pkgs/os-specific/linux/musl/fix-file-locking-race.patch54
-rw-r--r--pkgs/os-specific/linux/musl/fix-getaddrinfo-regression-with-AI_ADDRCONFIG.patch52
-rw-r--r--pkgs/os-specific/linux/musl/max-handle-sz-for-name-to-handle-at.patch26
-rw-r--r--pkgs/os-specific/linux/musl/name-to-handle-at.patch71
-rw-r--r--pkgs/os-specific/linux/musl/stacksize-bump.patch36
-rw-r--r--pkgs/os-specific/linux/musl/tty-more-precise-errors.patch51
-rw-r--r--pkgs/os-specific/linux/ofp/default.nix2
-rwxr-xr-xpkgs/os-specific/linux/rfkill/rfkill-hook.sh2
-rw-r--r--pkgs/os-specific/linux/rfkill/udev.nix16
-rw-r--r--pkgs/os-specific/linux/service-wrapper/default.nix5
-rwxr-xr-xpkgs/os-specific/linux/service-wrapper/service-wrapper.sh2
-rw-r--r--pkgs/os-specific/linux/syslinux/default.nix40
-rw-r--r--pkgs/os-specific/linux/syslinux/perl-deps.patch81
-rw-r--r--pkgs/os-specific/linux/tp_smapi/default.nix2
25 files changed, 160 insertions, 493 deletions
diff --git a/pkgs/os-specific/darwin/apple-source-releases/architecture/default.nix b/pkgs/os-specific/darwin/apple-source-releases/architecture/default.nix
index 4a155a4c403a..ebeb3ef08845 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/architecture/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/architecture/default.nix
@@ -3,6 +3,12 @@
 appleDerivation {
   dontBuild = true;
 
+  postPatch = ''
+    substituteInPlace Makefile \
+        --replace '/bin/mkdir' 'mkdir' \
+        --replace '/usr/bin/install' 'install'
+  '';
+
   installFlags = [ "EXPORT_DSTDIR=/include/architecture" ];
 
   DSTROOT = "$(out)";
diff --git a/pkgs/os-specific/linux/alsa-lib/default.nix b/pkgs/os-specific/linux/alsa-lib/default.nix
index 8e7300580205..3c3fbc6e7972 100644
--- a/pkgs/os-specific/linux/alsa-lib/default.nix
+++ b/pkgs/os-specific/linux/alsa-lib/default.nix
@@ -1,20 +1,15 @@
-{ stdenv, fetchurl, fetchpatch }:
+{ stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "alsa-lib-1.1.7";
+  name = "alsa-lib-1.1.8";
 
   src = fetchurl {
     url = "mirror://alsa/lib/${name}.tar.bz2";
-    sha256 = "02fw7dw202mjid49w9ki3dsfcyvid5fj488561bdzcm3haw00q4x";
+    sha256 = "1pxf0zkmps03l3zzd0fr828xhkg6a8hxljmbxzc2cyj2ls9kmp1w";
   };
 
   patches = [
     ./alsa-plugin-conf-multilib.patch
-    (fetchpatch { # pcm interval fix needed for some programs with broken audio, remove when bumping version
-      name = "pcm-interval-fix.patch";
-      url = "http://git.alsa-project.org/?p=alsa-lib.git;a=commitdiff_plain;h=b420056604f06117c967b65d43d01536c5ffcbc9";
-      sha256 = "1vjfslzsypd6w15zvvrpdk825hm5j0gz16gw7kj290pkbsdgd435";
-    })
   ];
 
   # Fix pcm.h file in order to prevent some compilation bugs
diff --git a/pkgs/os-specific/linux/alsa-plugins/wrapper.nix b/pkgs/os-specific/linux/alsa-plugins/wrapper.nix
index 60262a14c9b2..769b6ecd9bf2 100644
--- a/pkgs/os-specific/linux/alsa-plugins/wrapper.nix
+++ b/pkgs/os-specific/linux/alsa-plugins/wrapper.nix
@@ -1,5 +1,5 @@
 { writeScriptBin, stdenv, alsaPlugins }:
 writeScriptBin "ap${if stdenv.hostPlatform.system == "i686-linux" then "32" else "64"}" ''
-  #/bin/sh
+  #${stdenv.shell}
   ALSA_PLUGIN_DIRS=${alsaPlugins}/lib/alsa-lib "$@"
 ''
diff --git a/pkgs/os-specific/linux/bbswitch/default.nix b/pkgs/os-specific/linux/bbswitch/default.nix
index f5d3b4f5c4e1..f5bc7458240a 100644
--- a/pkgs/os-specific/linux/bbswitch/default.nix
+++ b/pkgs/os-specific/linux/bbswitch/default.nix
@@ -36,12 +36,12 @@ stdenv.mkDerivation {
 
     mkdir -p $out/bin
     tee $out/bin/discrete_vga_poweroff << EOF
-    #!/bin/sh
+    #!${stdenv.shell}
 
     echo -n OFF > /proc/acpi/bbswitch
     EOF
     tee $out/bin/discrete_vga_poweron << EOF
-    #!/bin/sh
+    #!${stdenv.shell}
 
     echo -n ON > /proc/acpi/bbswitch
     EOF
diff --git a/pkgs/os-specific/linux/kernel-headers/default.nix b/pkgs/os-specific/linux/kernel-headers/default.nix
index eb0059f55c35..c00fc1761d59 100644
--- a/pkgs/os-specific/linux/kernel-headers/default.nix
+++ b/pkgs/os-specific/linux/kernel-headers/default.nix
@@ -75,8 +75,8 @@ let
 in {
 
   linuxHeaders = common {
-    version = "4.18.3";
-    sha256 = "1m23hjd02bg8mqnd8dc4z4m3kxds1cyrc6j5saiwnhzbz373rvc1";
+    version = "4.19.16";
+    sha256 = "1pqvn6dsh0xhdpawz4ag27vkw1abvb6sn3869i4fbrz33ww8i86q";
     patches = [
        ./no-relocs.patch # for building x86 kernel headers on non-ELF platforms
        ./no-dynamic-cc-version-check.patch # so we can use `stdenvNoCC`, see `makeFlags` above
diff --git a/pkgs/os-specific/linux/keyutils/default.nix b/pkgs/os-specific/linux/keyutils/default.nix
index 8b8f5a05f942..1d9497a7eddf 100644
--- a/pkgs/os-specific/linux/keyutils/default.nix
+++ b/pkgs/os-specific/linux/keyutils/default.nix
@@ -9,6 +9,15 @@ stdenv.mkDerivation rec {
     sha256 = "05bi5ja6f3h3kdi7p9dihlqlfrsmi1wh1r2bdgxc0180xh6g5bnk";
   };
 
+  patches = [
+    (fetchurl {
+      # improve reproducibility
+      url = "https://salsa.debian.org/debian/keyutils/raw/4cecffcb8e2a2aa4ef41777ed40e4e4bcfb2e5bf/debian/patches/Make-build-reproducible.patch";
+      sha256 = "0wnvbjfrbk7rghd032z684l7vk7mhy3bd41zvhkrhgp3cd5id0bm";
+    })
+  ];
+
+  BUILDDATE = "1970-01-01";
   outputs = [ "out" "lib" "dev" ];
 
   installFlags = [
diff --git a/pkgs/os-specific/linux/musl/0001-in-pthread_mutex_trylock-EBUSY-out-more-directly-whe.patch b/pkgs/os-specific/linux/musl/0001-in-pthread_mutex_trylock-EBUSY-out-more-directly-whe.patch
deleted file mode 100644
index 5e691ae99e6e..000000000000
--- a/pkgs/os-specific/linux/musl/0001-in-pthread_mutex_trylock-EBUSY-out-more-directly-whe.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 4e4a162d9af283cf71f7310c497672e0c2b8ca3b Mon Sep 17 00:00:00 2001
-From: Rich Felker <dalias@aerifal.cx>
-Date: Tue, 4 Sep 2018 21:28:38 -0400
-Subject: [PATCH 1/3] in pthread_mutex_trylock, EBUSY out more directly when
- possible
-
-avoid gratuitously setting up and tearing down the robust list pending
-slot.
----
- src/thread/pthread_mutex_trylock.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/thread/pthread_mutex_trylock.c b/src/thread/pthread_mutex_trylock.c
-index 54876a61..783ca0c4 100644
---- a/src/thread/pthread_mutex_trylock.c
-+++ b/src/thread/pthread_mutex_trylock.c
-@@ -15,6 +15,7 @@ int __pthread_mutex_trylock_owner(pthread_mutex_t *m)
- 		return 0;
- 	}
- 	if (own == 0x7fffffff) return ENOTRECOVERABLE;
-+	if (own && (!(own & 0x40000000) || !(type & 4))) return EBUSY;
- 
- 	if (m->_m_type & 128) {
- 		if (!self->robust_list.off) {
-@@ -25,8 +26,7 @@ int __pthread_mutex_trylock_owner(pthread_mutex_t *m)
- 		self->robust_list.pending = &m->_m_next;
- 	}
- 
--	if ((own && (!(own & 0x40000000) || !(type & 4)))
--	    || a_cas(&m->_m_lock, old, tid) != old) {
-+	if (a_cas(&m->_m_lock, old, tid) != old) {
- 		self->robust_list.pending = 0;
- 		return EBUSY;
- 	}
--- 
-2.19.0
-
diff --git a/pkgs/os-specific/linux/musl/0002-in-pthread_mutex_timedlock-avoid-repeatedly-reading-.patch b/pkgs/os-specific/linux/musl/0002-in-pthread_mutex_timedlock-avoid-repeatedly-reading-.patch
deleted file mode 100644
index 2f611fc467e7..000000000000
--- a/pkgs/os-specific/linux/musl/0002-in-pthread_mutex_timedlock-avoid-repeatedly-reading-.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From d1fa28860634af4f0efd70d533a756b51a45f83e Mon Sep 17 00:00:00 2001
-From: Rich Felker <dalias@aerifal.cx>
-Date: Tue, 4 Sep 2018 21:31:47 -0400
-Subject: [PATCH 2/3] in pthread_mutex_timedlock, avoid repeatedly reading
- mutex type field
-
-compiler cannot cache immutable fields of the mutex object across
-external calls it can't see, much less across atomics.
----
- src/thread/pthread_mutex_timedlock.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/src/thread/pthread_mutex_timedlock.c b/src/thread/pthread_mutex_timedlock.c
-index 0a240e79..f91f4a61 100644
---- a/src/thread/pthread_mutex_timedlock.c
-+++ b/src/thread/pthread_mutex_timedlock.c
-@@ -6,7 +6,8 @@ int __pthread_mutex_timedlock(pthread_mutex_t *restrict m, const struct timespec
- 	    && !a_cas(&m->_m_lock, 0, EBUSY))
- 		return 0;
- 
--	int r, t, priv = (m->_m_type & 128) ^ 128;
-+	int type = m->_m_type;
-+	int r, t, priv = (type & 128) ^ 128;
- 
- 	r = pthread_mutex_trylock(m);
- 	if (r != EBUSY) return r;
-@@ -15,9 +16,9 @@ int __pthread_mutex_timedlock(pthread_mutex_t *restrict m, const struct timespec
- 	while (spins-- && m->_m_lock && !m->_m_waiters) a_spin();
- 
- 	while ((r=pthread_mutex_trylock(m)) == EBUSY) {
--		if (!(r=m->_m_lock) || ((r&0x40000000) && (m->_m_type&4)))
-+		if (!(r=m->_m_lock) || ((r&0x40000000) && (type&4)))
- 			continue;
--		if ((m->_m_type&3) == PTHREAD_MUTEX_ERRORCHECK
-+		if ((type&3) == PTHREAD_MUTEX_ERRORCHECK
- 		 && (r&0x7fffffff) == __pthread_self()->tid)
- 			return EDEADLK;
- 
--- 
-2.19.0
-
diff --git a/pkgs/os-specific/linux/musl/0003-fix-namespace-violation-for-c11-mutex-functions.patch b/pkgs/os-specific/linux/musl/0003-fix-namespace-violation-for-c11-mutex-functions.patch
deleted file mode 100644
index 783873732afd..000000000000
--- a/pkgs/os-specific/linux/musl/0003-fix-namespace-violation-for-c11-mutex-functions.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 2de29bc994029b903a366b8a4a9f8c3c3ee2be90 Mon Sep 17 00:00:00 2001
-From: Rich Felker <dalias@aerifal.cx>
-Date: Tue, 4 Sep 2018 22:56:57 -0400
-Subject: [PATCH 3/3] fix namespace violation for c11 mutex functions
-
-__pthread_mutex_timedlock is used to implement c11 mutex functions,
-and therefore cannot call pthread_mutex_trylock by name.
----
- src/thread/pthread_mutex_timedlock.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/thread/pthread_mutex_timedlock.c b/src/thread/pthread_mutex_timedlock.c
-index f91f4a61..d2bd1960 100644
---- a/src/thread/pthread_mutex_timedlock.c
-+++ b/src/thread/pthread_mutex_timedlock.c
-@@ -1,5 +1,7 @@
- #include "pthread_impl.h"
- 
-+int __pthread_mutex_trylock(pthread_mutex_t *);
-+
- int __pthread_mutex_timedlock(pthread_mutex_t *restrict m, const struct timespec *restrict at)
- {
- 	if ((m->_m_type&15) == PTHREAD_MUTEX_NORMAL
-@@ -15,7 +17,7 @@ int __pthread_mutex_timedlock(pthread_mutex_t *restrict m, const struct timespec
- 	int spins = 100;
- 	while (spins-- && m->_m_lock && !m->_m_waiters) a_spin();
- 
--	while ((r=pthread_mutex_trylock(m)) == EBUSY) {
-+	while ((r=__pthread_mutex_trylock(m)) == EBUSY) {
- 		if (!(r=m->_m_lock) || ((r&0x40000000) && (type&4)))
- 			continue;
- 		if ((type&3) == PTHREAD_MUTEX_ERRORCHECK
--- 
-2.19.0
-
diff --git a/pkgs/os-specific/linux/musl/default.nix b/pkgs/os-specific/linux/musl/default.nix
index 6137a5942c26..9835a0c96db8 100644
--- a/pkgs/os-specific/linux/musl/default.nix
+++ b/pkgs/os-specific/linux/musl/default.nix
@@ -28,12 +28,12 @@ let
 
 in
 stdenv.mkDerivation rec {
-  name    = "musl-${version}";
-  version = "1.1.20";
+  pname = "musl";
+  version = "1.1.21";
 
   src = fetchurl {
-    url    = "https://www.musl-libc.org/releases/musl-${version}.tar.gz";
-    sha256 = "0q8dsjxl41dccscv9a0r78bs7jap57mn4mni5pwbbip6s1qqggj4";
+    url    = "https://www.musl-libc.org/releases/${pname}-${version}.tar.gz";
+    sha256 = "0i2z52zgc86af1n1gjiz43hgd85mxjgvgn345zsybja9dxpvchn7";
   };
 
   enableParallelBuilding = true;
@@ -56,29 +56,7 @@ stdenv.mkDerivation rec {
       url = https://raw.githubusercontent.com/openwrt/openwrt/87606e25afac6776d1bbc67ed284434ec5a832b4/toolchain/musl/patches/300-relative.patch;
       sha256 = "0hfadrycb60sm6hb6by4ycgaqc9sgrhh42k39v8xpmcvdzxrsq2n";
     })
-    # Upstream bugfix, see: https://git.musl-libc.org/cgit/musl/commit/?id=0db393d3a77bb9f300a356c6a5484fc2dddb161d
-    # Explicitly flagged for inclusion by distributions using musl
-    ./fix-file-locking-race.patch
-    # More specific error reporting
-    ./tty-more-precise-errors.patch
-    # Use execveat to impl fexecve when avail (useful for containers)
-    ./fexecve-execveat.patch
-    # improve behavior in few cases
-    ./0001-in-pthread_mutex_trylock-EBUSY-out-more-directly-whe.patch
-    ./0002-in-pthread_mutex_timedlock-avoid-repeatedly-reading-.patch
-    ./0003-fix-namespace-violation-for-c11-mutex-functions.patch
-    # Fix getaddrinfo usage encountered sometimes in containers
-    ./fix-getaddrinfo-regression-with-AI_ADDRCONFIG.patch
-    # name_to_handle_at
-    ./name-to-handle-at.patch
-    ./max-handle-sz-for-name-to-handle-at.patch
-    # stacksize bump (upstream)
-    ./stacksize-bump.patch
   ];
-  preConfigure = ''
-    configureFlagsArray+=("--syslibdir=$out/lib")
-  '';
-
   CFLAGS = [ "-fstack-protector-strong" ]
     ++ lib.optional stdenv.hostPlatform.isPower "-mlong-double-64";
 
@@ -87,6 +65,7 @@ stdenv.mkDerivation rec {
     "--enable-static"
     "--enable-debug"
     "--enable-wrapper=all"
+    "--syslibdir=${placeholder "out"}/lib"
   ];
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/os-specific/linux/musl/fexecve-execveat.patch b/pkgs/os-specific/linux/musl/fexecve-execveat.patch
deleted file mode 100644
index 6b3894a916c8..000000000000
--- a/pkgs/os-specific/linux/musl/fexecve-execveat.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From e36f80cba6d5eefcc1ee664f16c2c72054b83134 Mon Sep 17 00:00:00 2001
-From: "Joseph C. Sible" <josephcsible@gmail.com>
-Date: Sun, 2 Sep 2018 13:42:26 -0400
-Subject: implement fexecve in terms of execveat when it exists
-
-This lets fexecve work even when /proc isn't mounted.
----
- src/process/fexecve.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/process/fexecve.c b/src/process/fexecve.c
-index 6507b429..8be3f760 100644
---- a/src/process/fexecve.c
-+++ b/src/process/fexecve.c
-@@ -1,10 +1,15 @@
-+#define _GNU_SOURCE
- #include <unistd.h>
- #include <errno.h>
-+#include <fcntl.h>
-+#include "syscall.h"
- 
- void __procfdname(char *, unsigned);
- 
- int fexecve(int fd, char *const argv[], char *const envp[])
- {
-+	int r = __syscall(SYS_execveat, fd, "", argv, envp, AT_EMPTY_PATH);
-+	if (r != -ENOSYS) return __syscall_ret(r);
- 	char buf[15 + 3*sizeof(int)];
- 	__procfdname(buf, fd);
- 	execve(buf, argv, envp);
--- 
-cgit v1.2.1
-
diff --git a/pkgs/os-specific/linux/musl/fix-file-locking-race.patch b/pkgs/os-specific/linux/musl/fix-file-locking-race.patch
deleted file mode 100644
index 2ef91390a691..000000000000
--- a/pkgs/os-specific/linux/musl/fix-file-locking-race.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 0db393d3a77bb9f300a356c6a5484fc2dddb161d Mon Sep 17 00:00:00 2001
-From: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
-Date: Tue, 18 Sep 2018 10:03:27 +0300
-Subject: fix race condition in file locking
-
-The condition occurs when
-- thread #1 is holding the lock
-- thread #2 is waiting for it on __futexwait
-- thread #1 is about to release the lock and performs a_swap
-- thread #3 enters the __lockfile function and manages to grab the lock
-  before thread #1 calls __wake, resetting the MAYBE_WAITERS flag
-- thread #1 calls __wake
-- thread #2 wakes up but goes again to __futexwait as the lock is
-  held by thread #3
-- thread #3 releases the lock but does not call __wake as the
-  MAYBE_WAITERS flag is not set
-
-This condition results in thread #2 not being woken up. This patch fixes
-the problem by making the woken up thread ensure that the flag is
-properly set before going to sleep again.
-
-Mainainer's note: This fixes a regression introduced in commit
-c21f750727515602a9e84f2a190ee8a0a2aeb2a1.
----
- src/stdio/__lockfile.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/src/stdio/__lockfile.c b/src/stdio/__lockfile.c
-index 2ff75d8a..0dcb2a42 100644
---- a/src/stdio/__lockfile.c
-+++ b/src/stdio/__lockfile.c
-@@ -8,13 +8,13 @@ int __lockfile(FILE *f)
- 	int owner = f->lock, tid = __pthread_self()->tid;
- 	if ((owner & ~MAYBE_WAITERS) == tid)
- 		return 0;
--	for (;;) {
--		owner = a_cas(&f->lock, 0, tid);
--		if (!owner) return 1;
--		if (a_cas(&f->lock, owner, owner|MAYBE_WAITERS)==owner) break;
-+	owner = a_cas(&f->lock, 0, tid);
-+	if (!owner) return 1;
-+	while ((owner = a_cas(&f->lock, 0, tid|MAYBE_WAITERS))) {
-+		if ((owner & MAYBE_WAITERS) ||
-+		    a_cas(&f->lock, owner, owner|MAYBE_WAITERS)==owner)
-+			__futexwait(&f->lock, owner|MAYBE_WAITERS, 1);
- 	}
--	while ((owner = a_cas(&f->lock, 0, tid|MAYBE_WAITERS)))
--		__futexwait(&f->lock, owner, 1);
- 	return 1;
- }
- 
--- 
-cgit v1.2.1
-
diff --git a/pkgs/os-specific/linux/musl/fix-getaddrinfo-regression-with-AI_ADDRCONFIG.patch b/pkgs/os-specific/linux/musl/fix-getaddrinfo-regression-with-AI_ADDRCONFIG.patch
deleted file mode 100644
index d603c16f8062..000000000000
--- a/pkgs/os-specific/linux/musl/fix-getaddrinfo-regression-with-AI_ADDRCONFIG.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From f381c118b2d4f7d914481d3cdc830ce41369b002 Mon Sep 17 00:00:00 2001
-From: Rich Felker <dalias@aerifal.cx>
-Date: Wed, 19 Sep 2018 18:03:22 -0400
-Subject: [PATCH] fix getaddrinfo regression with AI_ADDRCONFIG on some
- configurations
-
-despite not being documented to do so in the standard or Linux
-documentation, attempts to udp connect to 127.0.0.1 or ::1 generate
-EADDRNOTAVAIL when the loopback device is not configured and there is
-no default route for IPv6. this caused getaddrinfo with AI_ADDRCONFIG
-to fail with EAI_SYSTEM and EADDRNOTAVAIL on some no-IPv6
-configurations, rather than the intended behavior of detecting IPv6 as
-unsuppported and producing IPv4-only results.
-
-previously, only EAFNOSUPPORT was treated as unavailability of the
-address family being probed. instead, treat all errors related to
-inability to get an address or route as conclusive that the family
-being probed is unsupported, and only fail with EAI_SYSTEM on other
-errors.
-
-further improvements may be desirable, such as reporting EAI_AGAIN
-instead of EAI_SYSTEM for errors which are expected to be transient,
-but this patch should suffice to fix the serious regression.
----
- src/network/getaddrinfo.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/src/network/getaddrinfo.c b/src/network/getaddrinfo.c
-index ba26847a..e33bfa28 100644
---- a/src/network/getaddrinfo.c
-+++ b/src/network/getaddrinfo.c
-@@ -76,7 +76,16 @@ int getaddrinfo(const char *restrict host, const char *restrict serv, const stru
- 				close(s);
- 				if (!r) continue;
- 			}
--			if (errno != EAFNOSUPPORT) return EAI_SYSTEM;
-+			switch (errno) {
-+			case EADDRNOTAVAIL:
-+			case EAFNOSUPPORT:
-+			case EHOSTUNREACH:
-+			case ENETDOWN:
-+			case ENETUNREACH:
-+				break;
-+			default:
-+				return EAI_SYSTEM;
-+			}
- 			if (family == tf[i]) return EAI_NONAME;
- 			family = tf[1-i];
- 		}
--- 
-2.19.0
-
diff --git a/pkgs/os-specific/linux/musl/max-handle-sz-for-name-to-handle-at.patch b/pkgs/os-specific/linux/musl/max-handle-sz-for-name-to-handle-at.patch
deleted file mode 100644
index aa00b4619f86..000000000000
--- a/pkgs/os-specific/linux/musl/max-handle-sz-for-name-to-handle-at.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 7d7f44253f2d8cfd0a7adf9f918d88aa24d4e012 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 13 Sep 2018 07:00:05 -0700
-Subject: [PATCH] define MAX_HANDLE_SZ for use with name_to_handle_at
-
-MAX_HANDLE_SZ is described in name_to_handle_at() to contain maximum
-expected size for a file handle
----
- include/fcntl.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/include/fcntl.h b/include/fcntl.h
-index 99b21759..4d91338b 100644
---- a/include/fcntl.h
-+++ b/include/fcntl.h
-@@ -166,6 +166,7 @@ struct f_owner_ex {
- };
- #define FALLOC_FL_KEEP_SIZE 1
- #define FALLOC_FL_PUNCH_HOLE 2
-+#define MAX_HANDLE_SZ 128
- #define SYNC_FILE_RANGE_WAIT_BEFORE 1
- #define SYNC_FILE_RANGE_WRITE 2
- #define SYNC_FILE_RANGE_WAIT_AFTER 4
--- 
-2.19.0
-
diff --git a/pkgs/os-specific/linux/musl/name-to-handle-at.patch b/pkgs/os-specific/linux/musl/name-to-handle-at.patch
deleted file mode 100644
index 10cd8a9947c8..000000000000
--- a/pkgs/os-specific/linux/musl/name-to-handle-at.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 3e14bbcd1979376b188bfabb816ff828608fb5d7 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 12 Sep 2018 18:02:11 -0700
-Subject: [PATCH] wireup linux/name_to_handle_at and name_to_handle_at syscalls
-
----
- include/fcntl.h               |  7 +++++++
- src/linux/name_to_handle_at.c | 10 ++++++++++
- src/linux/open_by_handle_at.c |  8 ++++++++
- 3 files changed, 25 insertions(+)
- create mode 100644 src/linux/name_to_handle_at.c
- create mode 100644 src/linux/open_by_handle_at.c
-
-diff --git a/include/fcntl.h b/include/fcntl.h
-index 6d8edcd1..99b21759 100644
---- a/include/fcntl.h
-+++ b/include/fcntl.h
-@@ -155,6 +155,11 @@ int lockf(int, int, off_t);
- #define F_OWNER_PID 1
- #define F_OWNER_PGRP 2
- #define F_OWNER_GID 2
-+struct file_handle {
-+	unsigned handle_bytes;
-+	int handle_type;
-+	unsigned char f_handle[];
-+};
- struct f_owner_ex {
- 	int type;
- 	pid_t pid;
-@@ -170,6 +175,8 @@ struct f_owner_ex {
- #define SPLICE_F_GIFT 8
- int fallocate(int, int, off_t, off_t);
- #define fallocate64 fallocate
-+int name_to_handle_at(int, const char *, struct file_handle *, int *, int);
-+int open_by_handle_at(int, struct file_handle *, int);
- ssize_t readahead(int, off_t, size_t);
- int sync_file_range(int, off_t, off_t, unsigned);
- ssize_t vmsplice(int, const struct iovec *, size_t, unsigned);
-diff --git a/src/linux/name_to_handle_at.c b/src/linux/name_to_handle_at.c
-new file mode 100644
-index 00000000..cd4075bd
---- /dev/null
-+++ b/src/linux/name_to_handle_at.c
-@@ -0,0 +1,10 @@
-+#define _GNU_SOURCE
-+#include <fcntl.h>
-+#include "syscall.h"
-+
-+int name_to_handle_at(int dirfd, const char *pathname,
-+	struct file_handle *handle, int *mount_id, int flags)
-+{
-+	return syscall(SYS_name_to_handle_at, dirfd,
-+		pathname, handle, mount_id, flags);
-+}
-diff --git a/src/linux/open_by_handle_at.c b/src/linux/open_by_handle_at.c
-new file mode 100644
-index 00000000..1c9b6a2b
---- /dev/null
-+++ b/src/linux/open_by_handle_at.c
-@@ -0,0 +1,8 @@
-+#define _GNU_SOURCE
-+#include <fcntl.h>
-+#include "syscall.h"
-+
-+int open_by_handle_at(int mount_fd, struct file_handle *handle, int flags)
-+{
-+	return syscall(SYS_open_by_handle_at, mount_fd, handle, flags);
-+}
--- 
-2.19.0
-
diff --git a/pkgs/os-specific/linux/musl/stacksize-bump.patch b/pkgs/os-specific/linux/musl/stacksize-bump.patch
deleted file mode 100644
index fb5373005cbf..000000000000
--- a/pkgs/os-specific/linux/musl/stacksize-bump.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c0058ab465e950c2c3302d2b62e21cc0b494224b Mon Sep 17 00:00:00 2001
-From: Rich Felker <dalias@aerifal.cx>
-Date: Tue, 18 Sep 2018 23:11:49 -0400
-Subject: [PATCH 3/4] increase default thread stack/guard size
-
-stack size default is increased from 80k to 128k. this coincides with
-Linux's hard-coded default stack for the main thread (128k is
-initially committed; growth beyond that up to ulimit is contingent on
-additional allocation succeeding) and GNU ld's default PT_GNU_STACK
-size for FDPIC, at least on sh.
-
-guard size default is increased from 4k to 8k to reduce the risk of
-guard page jumping on overflow, since use of just over 4k of stack is
-common (PATH_MAX buffers, etc.).
----
- src/internal/pthread_impl.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/internal/pthread_impl.h b/src/internal/pthread_impl.h
-index e73a251f..d491f975 100644
---- a/src/internal/pthread_impl.h
-+++ b/src/internal/pthread_impl.h
-@@ -185,8 +185,8 @@ hidden void __inhibit_ptc(void);
- extern hidden unsigned __default_stacksize;
- extern hidden unsigned __default_guardsize;
- 
--#define DEFAULT_STACK_SIZE 81920
--#define DEFAULT_GUARD_SIZE 4096
-+#define DEFAULT_STACK_SIZE 131072
-+#define DEFAULT_GUARD_SIZE 8192
- 
- #define DEFAULT_STACK_MAX (8<<20)
- #define DEFAULT_GUARD_MAX (1<<20)
--- 
-2.19.0
-
diff --git a/pkgs/os-specific/linux/musl/tty-more-precise-errors.patch b/pkgs/os-specific/linux/musl/tty-more-precise-errors.patch
deleted file mode 100644
index 06b108559e46..000000000000
--- a/pkgs/os-specific/linux/musl/tty-more-precise-errors.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From c84971995b3a6d5118f9357c040572f4c78bcd55 Mon Sep 17 00:00:00 2001
-From: Benjamin Peterson <benjamin@python.org>
-Date: Thu, 13 Sep 2018 14:23:42 -0700
-Subject: improve error handling of ttyname_r and isatty
-
-POSIX allows ttyname(_r) and isatty to return EBADF if passed file
-descriptor is invalid.
-
-maintainer's note: these are optional ("may fail") errors, but it's
-non-conforming for ttyname_r to return ENOTTY when it failed for a
-different reason.
----
- src/unistd/isatty.c    | 6 +++++-
- src/unistd/ttyname_r.c | 2 +-
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/src/unistd/isatty.c b/src/unistd/isatty.c
-index c8badaf5..75a9c186 100644
---- a/src/unistd/isatty.c
-+++ b/src/unistd/isatty.c
-@@ -1,9 +1,13 @@
- #include <unistd.h>
-+#include <errno.h>
- #include <sys/ioctl.h>
- #include "syscall.h"
- 
- int isatty(int fd)
- {
- 	struct winsize wsz;
--	return !__syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz);
-+	unsigned long r = syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz);
-+	if (r == 0) return 1;
-+	if (errno != EBADF) errno = ENOTTY;
-+	return 0;
- }
-diff --git a/src/unistd/ttyname_r.c b/src/unistd/ttyname_r.c
-index cb364c29..82acb75e 100644
---- a/src/unistd/ttyname_r.c
-+++ b/src/unistd/ttyname_r.c
-@@ -9,7 +9,7 @@ int ttyname_r(int fd, char *name, size_t size)
- 	char procname[sizeof "/proc/self/fd/" + 3*sizeof(int) + 2];
- 	ssize_t l;
- 
--	if (!isatty(fd)) return ENOTTY;
-+	if (!isatty(fd)) return errno;
- 
- 	__procfdname(procname, fd);
- 	l = readlink(procname, name, size);
--- 
-cgit v1.2.1
-
diff --git a/pkgs/os-specific/linux/ofp/default.nix b/pkgs/os-specific/linux/ofp/default.nix
index 3b2a22e452db..93cf33979f4b 100644
--- a/pkgs/os-specific/linux/ofp/default.nix
+++ b/pkgs/os-specific/linux/ofp/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
 
   postPatch = ''
     substituteInPlace configure.ac --replace m4_esyscmd m4_esyscmd_s
-    substituteInPlace scripts/git_hash.sh --replace /bin/bash /bin/sh
+    substituteInPlace scripts/git_hash.sh --replace /bin/bash ${stdenv.shell}
     echo ${version} > .scmversion
   '';
 
diff --git a/pkgs/os-specific/linux/rfkill/rfkill-hook.sh b/pkgs/os-specific/linux/rfkill/rfkill-hook.sh
index bf6e679660c9..75716e40daee 100755
--- a/pkgs/os-specific/linux/rfkill/rfkill-hook.sh
+++ b/pkgs/os-specific/linux/rfkill/rfkill-hook.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!@shell@
 
 # Executes a hook in case of a change to the
 # rfkill state. The hook can be passed as
diff --git a/pkgs/os-specific/linux/rfkill/udev.nix b/pkgs/os-specific/linux/rfkill/udev.nix
index 054ed471eaaf..de23071f0260 100644
--- a/pkgs/os-specific/linux/rfkill/udev.nix
+++ b/pkgs/os-specific/linux/rfkill/udev.nix
@@ -1,4 +1,4 @@
-{ stdenv }:
+{ stdenv, substituteAll }:
 
 # Provides a facility to hook into rfkill changes.
 #
@@ -10,7 +10,7 @@
 # Add a hook script in the managed etc directory, e.g.:
 #   etc = [
 #     { source = pkgs.writeScript "rtfkill.hook" ''
-#         #!/bin/sh
+#         #!${stdenv.shell}
 #
 #         if [ "$RFKILL_STATE" -eq "1" ]; then
 #           exec ${config.system.build.upstart}/sbin/initctl emit -n antenna-on
@@ -24,7 +24,13 @@
 # Note: this package does not need the binaries
 # in the rfkill package.
 
-stdenv.mkDerivation {
+let
+  rfkillHook =
+    substituteAll {
+    inherit (stdenv) shell;
+    src = ./rfkill-hook.sh;
+  };
+in stdenv.mkDerivation {
   name = "rfkill-udev";
 
   unpackPhase = "true";
@@ -37,7 +43,7 @@ stdenv.mkDerivation {
     EOF
 
     mkdir -p "$out/bin/";
-    cp ${./rfkill-hook.sh} "$out/bin/rfkill-hook.sh"
+    cp ${rfkillHook} "$out/bin/rfkill-hook.sh"
     chmod +x "$out/bin/rfkill-hook.sh";
   '';
 
@@ -46,4 +52,4 @@ stdenv.mkDerivation {
     description = "Rules+hook for udev to catch rfkill state changes";
     platforms = stdenv.lib.platforms.linux;
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/os-specific/linux/service-wrapper/default.nix b/pkgs/os-specific/linux/service-wrapper/default.nix
index 64e38b41a5fa..6c9635b3aee4 100644
--- a/pkgs/os-specific/linux/service-wrapper/default.nix
+++ b/pkgs/os-specific/linux/service-wrapper/default.nix
@@ -1,4 +1,4 @@
-{ lib, runCommand, substituteAll, coreutils }:
+{ stdenv, runCommand, substituteAll, coreutils }:
 
 let
   name = "service-wrapper-${version}";
@@ -7,10 +7,11 @@ in
 runCommand "${name}" {
   script = substituteAll {
     src = ./service-wrapper.sh;
+    inherit (stdenv) shell;
     inherit coreutils;
   };
 
-  meta = with lib; {
+  meta = with stdenv.lib; {
     description = "A convenient wrapper for the systemctl commands, borrow from Ubuntu";
     license     = licenses.gpl2Plus;
     platforms   = platforms.linux;
diff --git a/pkgs/os-specific/linux/service-wrapper/service-wrapper.sh b/pkgs/os-specific/linux/service-wrapper/service-wrapper.sh
index 373d86443f02..460bf678e6ac 100755
--- a/pkgs/os-specific/linux/service-wrapper/service-wrapper.sh
+++ b/pkgs/os-specific/linux/service-wrapper/service-wrapper.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!@shell@
 
 ###########################################################################
 # /usr/bin/service
diff --git a/pkgs/os-specific/linux/syslinux/default.nix b/pkgs/os-specific/linux/syslinux/default.nix
index 2562bb7e260b..8965b5da4f49 100644
--- a/pkgs/os-specific/linux/syslinux/default.nix
+++ b/pkgs/os-specific/linux/syslinux/default.nix
@@ -1,19 +1,45 @@
-{ stdenv, fetchFromRepoOrCz, fetchpatch, nasm, perl, python, libuuid, mtools, makeWrapper }:
+{ stdenv, fetchFromGitHub, fetchurl, nasm, perl, python, libuuid, mtools, makeWrapper }:
 
 stdenv.mkDerivation rec {
-  # This is syslinux-6.04-pre3^1; syslinux-6.04-pre3 fails to run.
-  # Same issue here https://www.syslinux.org/archives/2019-February/026330.html
-  name = "syslinux-2019-02-07";
+  name = "syslinux-2015-11-09";
 
-  src = fetchFromRepoOrCz {
+  src = fetchFromGitHub {
+    owner = "geneC";
     repo = "syslinux";
-    rev = "b40487005223a78c3bb4c300ef6c436b3f6ec1f7";
-    sha256 = "1qrxl1114sr2i2791z9rf8v53g200aq30f08808d7i8qnmgvxl2w";
+    rev = "0cc9a99e560a2f52bcf052fd85b1efae35ee812f";
+    sha256 = "0wk3r5ki4lc334f9jpml07wpl8d0bnxi9h1l4h4fyf9a0d7n4kmw";
   };
 
+  patches = let
+    mkURL = commit: patchName:
+      "https://salsa.debian.org/images-team/syslinux/raw/${commit}/debian/patches/"
+      + patchName;
+  in [
+    ./perl-deps.patch
+    (fetchurl {
+      # ldlinux.elf: Not enough room for program headers, try linking with -N
+      name = "not-enough-room.patch";
+      url = mkURL "a556ad7" "0014_fix_ftbfs_no_dynamic_linker.patch";
+      sha256 = "0ijqjsjmnphmvsx0z6ppnajsfv6xh6crshy44i2a5klxw4nlvrsw";
+    })
+    (fetchurl {
+      # mbr.bin: too big (452 > 440)
+      # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=906414
+      url = mkURL "7468ef0e38c43" "0016-strip-gnu-property.patch";
+      sha256 = "17n63b8wz6szv8npla1234g1ip7lqgzx2whrpv358ppf67lq8vwm";
+    })
+    (fetchurl {
+      # mbr.bin: too big (452 > 440)
+      url = mkURL "012e1dd312eb" "0017-single-load-segment.patch";
+      sha256 = "0azqzicsjw47b9ppyikhzaqmjl4lrvkxris1356bkmgcaiv6d98b";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace Makefile --replace /bin/pwd $(type -P pwd)
+    substituteInPlace gpxe/src/Makefile.housekeeping --replace /bin/echo $(type -P echo)
     substituteInPlace utils/ppmtolss16 --replace /usr/bin/perl $(type -P perl)
+    substituteInPlace gpxe/src/Makefile --replace /usr/bin/perl $(type -P perl)
 
     # fix tests
     substituteInPlace tests/unittest/include/unittest/unittest.h \
diff --git a/pkgs/os-specific/linux/syslinux/perl-deps.patch b/pkgs/os-specific/linux/syslinux/perl-deps.patch
new file mode 100644
index 000000000000..82c9820809e1
--- /dev/null
+++ b/pkgs/os-specific/linux/syslinux/perl-deps.patch
@@ -0,0 +1,81 @@
+http://git.ipxe.org/ipxe.git/commitdiff/719b498
+
+diff -ru -x '*~' -x '*.orig' -x '*.rej' syslinux-4.02-orig/gpxe/src/arch/i386/Makefile.pcbios syslinux-4.02/gpxe/src/arch/i386/Makefile.pcbios
+--- syslinux-4.02-orig/gpxe/src/arch/i386/Makefile.pcbios	2010-07-21 21:33:13.000000000 +0200
++++ syslinux-4.02/gpxe/src/arch/i386/Makefile.pcbios	2010-08-06 23:32:57.000000000 +0200
+@@ -24,11 +24,11 @@
+ 
+ # Padding rules
+ #
+-PAD_rom		= $(PADIMG) --blksize=512 --byte=0xff $@
++PAD_rom		= $(PERL) $(PADIMG) --blksize=512 --byte=0xff $@
+ PAD_hrom	= $(PAD_rom)
+ PAD_xrom	= $(PAD_rom)
+-PAD_dsk		= $(PADIMG) --blksize=512 $@
+-PAD_hd		= $(PADIMG) --blksize=32768 $@
++PAD_dsk		= $(PERL) $(PADIMG) --blksize=512 $@
++PAD_hd		= $(PERL) $(PADIMG) --blksize=32768 $@
+ 
+ # rule to make a non-emulation ISO boot image
+ NON_AUTO_MEDIA	+= iso
+diff -ru -x '*~' -x '*.orig' -x '*.rej' syslinux-4.02-orig/gpxe/src/Makefile syslinux-4.02/gpxe/src/Makefile
+--- syslinux-4.02-orig/gpxe/src/Makefile	2010-07-21 21:33:13.000000000 +0200
++++ syslinux-4.02/gpxe/src/Makefile	2010-08-06 23:31:15.000000000 +0200
+@@ -31,12 +31,12 @@
+ OBJCOPY		:= $(CROSS_COMPILE)objcopy
+ NM		:= $(CROSS_COMPILE)nm
+ OBJDUMP		:= $(CROSS_COMPILE)objdump
+-PARSEROM	:= $(PERL) ./util/parserom.pl
+-MAKEROM		:= $(PERL) ./util/makerom.pl
+-SYMCHECK	:= $(PERL) ./util/symcheck.pl
+-SORTOBJDUMP	:= $(PERL) ./util/sortobjdump.pl
+-PADIMG		:= $(PERL) ./util/padimg.pl
+-LICENCE		:= $(PERL) ./util/licence.pl
++PARSEROM	:= ./util/parserom.pl
++MAKEROM		:= ./util/makerom.pl
++SYMCHECK	:= ./util/symcheck.pl
++SORTOBJDUMP	:= ./util/sortobjdump.pl
++PADIMG		:= ./util/padimg.pl
++LICENCE		:= ./util/licence.pl
+ NRV2B		:= ./util/nrv2b
+ ZBIN		:= ./util/zbin
+ ELF2EFI32	:= ./util/elf2efi32
+diff -ru -x '*~' -x '*.orig' -x '*.rej' syslinux-4.02-orig/gpxe/src/Makefile.housekeeping syslinux-4.02/gpxe/src/Makefile.housekeeping
+--- syslinux-4.02-orig/gpxe/src/Makefile.housekeeping	2010-07-21 21:33:13.000000000 +0200
++++ syslinux-4.02/gpxe/src/Makefile.housekeeping	2010-08-06 23:31:49.000000000 +0200
+@@ -456,7 +456,7 @@
+ 		 '\n$(2) : $$($(4)_DEPS)\n' \
+ 		 '\nTAGS : $$($(4)_DEPS)\n' \
+ 		>> $(2)
+-	@$(PARSEROM) $(1) >> $(2)
++	@$(PERL) $(PARSEROM) $(1) >> $(2)
+ 
+ endef
+ 
+@@ -657,7 +657,7 @@
+ 	$(QM)$(ECHO) "  [LD] $@"
+ 	$(Q)$(LD) $(LDFLAGS) -T $(LDSCRIPT) $(TGT_LD_FLAGS) $(BLIB) -o $@ \
+ 		-Map $(BIN)/$*.tmp.map
+-	$(Q)$(OBJDUMP) -ht $@ | $(SORTOBJDUMP) >> $(BIN)/$*.tmp.map
++	$(Q)$(OBJDUMP) -ht $@ | $(PERL) $(SORTOBJDUMP) >> $(BIN)/$*.tmp.map
+ 
+ # Keep intermediate object file (useful for debugging)
+ .PRECIOUS : $(BIN)/%.tmp
+@@ -714,7 +714,7 @@
+ 		echo "files are missing a licence declaration:" ;\
+ 		echo $(call unlicensed_deps_list,$<);\
+ 		exit 1,\
+-		$(LICENCE) $(call licence_list,$<))
++		$(PERL) $(LICENCE) $(call licence_list,$<))
+ 
+ # Extract compression information from intermediate object file
+ #
+@@ -941,7 +941,7 @@
+ CLEANUP	+= $(BIN)/symtab
+ 
+ symcheck : $(SYMTAB)
+-	$(SYMCHECK) $<
++	$(PERL) $(SYMCHECK) $<
+ 
+ endif # defined(BIN)
+ 
diff --git a/pkgs/os-specific/linux/tp_smapi/default.nix b/pkgs/os-specific/linux/tp_smapi/default.nix
index 89c6639748d0..6ad232e0b1dd 100644
--- a/pkgs/os-specific/linux/tp_smapi/default.nix
+++ b/pkgs/os-specific/linux/tp_smapi/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
 
   makeFlags = [
     "KBASE=${kernel.dev}/lib/modules/${kernel.modDirVersion}"
-    "SHELL=/bin/sh"
+    "SHELL=${stdenv.shell}"
     "HDAPS=1"
   ];