Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 6bf790414020
Choose a base ref
...
head repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0213a1865c45
Choose a head ref
  • 2 commits
  • 10 files changed
  • 2 contributors

Commits on Jul 25, 2017

  1. Fix Darwin stdenv to work on 10.13

    The main changes are in libSystem, which lost the coretls component in 10.13
    and some hardening changes that quietly crash any program that uses %n in
    a non-constant format string, so we've needed to patch a lot of programs that
    use gnulib.
    
    (cherry picked from commit 0419452)
    copumpkin committed Jul 25, 2017
    Copy the full SHA
    9f00898 View commit details

Commits on Jul 27, 2017

  1. Merge pull request #27630 from copumpkin/backport-high-sierra-17.03

    Fix Darwin stdenv to work on 10.13 (backport to 17.03)
    copumpkin authored Jul 27, 2017
    Copy the full SHA
    0213a18 View commit details
2 changes: 2 additions & 0 deletions pkgs/applications/editors/nano/default.nix
Original file line number Diff line number Diff line change
@@ -27,6 +27,8 @@ in stdenv.mkDerivation rec {
sha256 = "1r37gqx7hppqbgsbclchiis8wzzpb9srm3q3dlvlii2gpkk28kd6";
};

patches = stdenv.lib.optional stdenv.isDarwin stdenv.secure-format-patch;

nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext;
buildInputs = [ ncurses ];

2 changes: 1 addition & 1 deletion pkgs/development/libraries/libunistring/default.nix
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
sha256 = "1ra1baz2187kbw9im47g6kqb5mx9plq703mkjxaval8rxv5q3q4w";
};

patches = stdenv.lib.optional stdenv.isDarwin [ ./clang.patch ];
patches = stdenv.lib.optionals stdenv.isDarwin [ ./clang.patch stdenv.secure-format-patch ];

outputs = [ "out" "dev" "info" "doc" ];

2 changes: 1 addition & 1 deletion pkgs/development/tools/misc/gnum4/default.nix
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
configureFlags = "--with-syscmd-shell=${stdenv.shell}";

# Upstream is aware of it; it may be in the next release.
patches = [ ./s_isdir.patch ];
patches = [ ./s_isdir.patch ] ++ stdenv.lib.optional stdenv.isDarwin stdenv.secure-format-patch;

# FIXME needs gcc 4.9 in bootstrap tools
hardeningDisable = [ "stackprotector" ];
2 changes: 2 additions & 0 deletions pkgs/development/tools/parsing/bison/3.x.nix
Original file line number Diff line number Diff line change
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
sha256 = "b67fd2daae7a64b5ba862c66c07c1addb9e6b1b05c5f2049392cfd8a2172952e";
};

patches = stdenv.lib.optional stdenv.isDarwin stdenv.secure-format-patch;

nativeBuildInputs = [ m4 perl ] ++ stdenv.lib.optional stdenv.isSunOS help2man;
propagatedBuildInputs = [ m4 ];

Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@

/usr/lib/system/libsystem_configuration.dylib
/usr/lib/system/libsystem_coreservices.dylib
/usr/lib/system/libsystem_coretls.dylib
# /usr/lib/system/libsystem_coretls.dylib # Removed in 10.13
/usr/lib/system/libsystem_dnssd.dylib
/usr/lib/system/libsystem_info.dylib

Original file line number Diff line number Diff line change
@@ -376,7 +376,6 @@ _fsync
_fsync$NOCANCEL
_ftruncate
_futimes
_get_dp_control_port
_getattrlist
_getattrlistat
_getattrlistbulk
@@ -838,7 +837,6 @@ _sendmsg$NOCANCEL
_sendmsg_x
_sendto
_sendto$NOCANCEL
_set_dp_control_port
_setattrlist
_setaudit
_setaudit_addr
15 changes: 15 additions & 0 deletions pkgs/stdenv/darwin/darwin-secure-format.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
With format string strictness, High Sierra also enforces that %n isn't used
in dynamic format strings, but we should just disable its use on darwin in
general.

--- a/lib/vasnprintf.c 2017-06-22 15:19:15.000000000 -0700
+++ b/lib/vasnprintf.c 2017-06-22 15:20:20.000000000 -0700
@@ -4869,7 +4869,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
#endif
*fbp = dp->conversion;
#if USE_SNPRINTF
-# if !(((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined __UCLIBC__) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
+# if !defined(__APPLE__) && !(((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined __UCLIBC__) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
fbp[1] = '%';
fbp[2] = 'n';
fbp[3] = '\0';
23 changes: 16 additions & 7 deletions pkgs/stdenv/darwin/default.nix
Original file line number Diff line number Diff line change
@@ -4,15 +4,15 @@
# Allow passing in bootstrap files directly so we can test the stdenv bootstrap process when changing the bootstrap tools
, bootstrapFiles ? let
fetch = { file, sha256, executable ? true }: import <nix/fetchurl.nix> {
url = "http://tarballs.nixos.org/stdenv-darwin/x86_64/33f59c9d11b8d5014dfd18cc11a425f6393c884a/${file}";
url = "http://tarballs.nixos.org/stdenv-darwin/x86_64/10cbca5b30c6cb421ce15139f32ae3a4977292cf/${file}";
inherit (localSystem) system;
inherit sha256 executable;
}; in {
sh = fetch { file = "sh"; sha256 = "1rx4kg6358xdj05z0m139a0zn4f4zfmq4n4vimlmnwyfiyn4x7wk"; };
bzip2 = fetch { file = "bzip2"; sha256 = "104qnhzk79vkbp2yi0kci6lszgfppvrwk3rgxhry842ly1xz2r7l"; };
mkdir = fetch { file = "mkdir"; sha256 = "0d91c19xjzmqisncvldv79d7ddzai9l7vcmajhwlwwv74g6da5yl"; };
cpio = fetch { file = "cpio"; sha256 = "0lw057bmcqls96j0gv1n3mgl66q31mba7i413cbkkaf0rfzz3dxj"; };
tarball = fetch { file = "bootstrap-tools.cpio.bz2"; sha256 = "13ihbj002pis3fgy1d9c4fi7flca21z9brjsjkklm82h5b4nlwxl"; executable = false; };
sh = fetch { file = "sh"; sha256 = "0s8a9vpzj6vadq4jmf4r8cargwnsf327hdjydxgqsfxb8y1q39w3"; };
bzip2 = fetch { file = "bzip2"; sha256 = "1jqljpjr8mkiv7g5rl5impqx3all8vn1mxxdwa004pr3h48c1zgg"; };
mkdir = fetch { file = "mkdir"; sha256 = "17zsjiwnq07i5r85q1hg7f6cnkcgllwy2amz9klaqwjy4vzz4vwh"; };
cpio = fetch { file = "cpio"; sha256 = "04hrair58dgja6syh442pswiga5an9nl58ls57yknkn2pq51nx9m"; };
tarball = fetch { file = "bootstrap-tools.cpio.bz2"; sha256 = "103833hrci0vwi1gi978hkp69rncicvpdszn87ffpf1cq0jzpa14"; executable = false; };
}
}:

@@ -96,7 +96,13 @@ in rec {
stdenvSandboxProfile = binShClosure + libSystemProfile;
extraSandboxProfile = binShClosure + libSystemProfile;

extraAttrs = { inherit platform; parent = last; };
extraAttrs = {
inherit platform;
parent = last;

# This is used all over the place so I figured I'd just leave it here for now
secure-format-patch = ./darwin-secure-format.patch;
};
overrides = self: super: (overrides self super) // { fetchurl = thisStdenv.fetchurlBoot; };
};

@@ -297,6 +303,9 @@ in rec {
inherit platform bootstrapTools;
libc = pkgs.darwin.Libsystem;
shellPackage = pkgs.bash;

# This is used all over the place so I figured I'd just leave it here for now
secure-format-patch = ./darwin-secure-format.patch;
};

allowedRequisites = (with pkgs; [
2 changes: 2 additions & 0 deletions pkgs/tools/compression/gzip/default.nix
Original file line number Diff line number Diff line change
@@ -9,6 +9,8 @@ stdenv.mkDerivation rec {
sha256 = "1lxv3p4iyx7833mlihkn5wfwmz4cys5nybwpz3dfawag8kn6f5zz";
};

patches = stdenv.lib.optional stdenv.isDarwin stdenv.secure-format-patch;

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

enableParallelBuilding = true;
3 changes: 2 additions & 1 deletion pkgs/tools/misc/coreutils/default.nix
Original file line number Diff line number Diff line change
@@ -23,7 +23,8 @@ stdenv.mkDerivation rec {
# FIXME needs gcc 4.9 in bootstrap tools
hardeningDisable = [ "stackprotector" ];

patches = optional stdenv.isCygwin ./coreutils-8.23-4.cygwin.patch;
patches = optional stdenv.isCygwin ./coreutils-8.23-4.cygwin.patch
++ optional stdenv.isDarwin stdenv.secure-format-patch;

# The test tends to fail on btrfs and maybe other unusual filesystems.
postPatch = optionalString (!stdenv.isDarwin) ''