diff options
Diffstat (limited to 'pkgs/os-specific')
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" ]; |