Merge remote-tracking branch 'upstream/master' into staging
This commit is contained in:
		
						commit
						be0e48e48f
					
				@ -15,7 +15,7 @@ rec {
 | 
			
		||||
  freebsd = ["i686-freebsd" "x86_64-freebsd"];
 | 
			
		||||
  gnu = linux; /* ++ hurd ++ kfreebsd ++ ... */
 | 
			
		||||
  illumos = ["x86_64-solaris"];
 | 
			
		||||
  linux = ["i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "mips64el-linux"];
 | 
			
		||||
  linux = ["i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "mips64el-linux"];
 | 
			
		||||
  netbsd = ["i686-netbsd" "x86_64-netbsd"];
 | 
			
		||||
  openbsd = ["i686-openbsd" "x86_64-openbsd"];
 | 
			
		||||
  unix = linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos;
 | 
			
		||||
 | 
			
		||||
@ -108,7 +108,7 @@ in {
 | 
			
		||||
        type = types.bool;
 | 
			
		||||
        default = false;
 | 
			
		||||
        description = ''
 | 
			
		||||
          Whether to include the 32-bit pulseaudio libraries in the systemn or not.
 | 
			
		||||
          Whether to include the 32-bit pulseaudio libraries in the system or not.
 | 
			
		||||
          This is only useful on 64-bit systems and currently limited to x86_64-linux.
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										63
									
								
								nixos/modules/installer/cd-dvd/sd-image-aarch64.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								nixos/modules/installer/cd-dvd/sd-image-aarch64.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,63 @@
 | 
			
		||||
# To build, use:
 | 
			
		||||
# nix-build nixos -I nixos-config=nixos/modules/installer/cd-dvd/sd-image-aarch64.nix -A config.system.build.sdImage
 | 
			
		||||
{ config, lib, pkgs, ... }:
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
  extlinux-conf-builder =
 | 
			
		||||
    import ../../system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix {
 | 
			
		||||
      inherit pkgs;
 | 
			
		||||
    };
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    ../../profiles/minimal.nix
 | 
			
		||||
    ../../profiles/installation-device.nix
 | 
			
		||||
    ./sd-image.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  assertions = lib.singleton {
 | 
			
		||||
    assertion = pkgs.stdenv.system == "aarch64-linux";
 | 
			
		||||
    message = "sd-image-aarch64.nix can be only built natively on Aarch64 / ARM64; " +
 | 
			
		||||
      "it cannot be cross compiled";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Needed by RPi firmware
 | 
			
		||||
  nixpkgs.config.allowUnfree = true;
 | 
			
		||||
 | 
			
		||||
  boot.loader.grub.enable = false;
 | 
			
		||||
  boot.loader.generic-extlinux-compatible.enable = true;
 | 
			
		||||
 | 
			
		||||
  boot.kernelPackages = pkgs.linuxPackages_latest;
 | 
			
		||||
  boot.kernelParams = ["console=ttyS0,115200n8" "console=tty0"];
 | 
			
		||||
  boot.consoleLogLevel = 7;
 | 
			
		||||
 | 
			
		||||
  # FIXME: this probably should be in installation-device.nix
 | 
			
		||||
  users.extraUsers.root.initialHashedPassword = "";
 | 
			
		||||
 | 
			
		||||
  sdImage = {
 | 
			
		||||
    populateBootCommands = let
 | 
			
		||||
      # Contains a couple of fixes for booting a Linux kernel, will hopefully appear upstream soon.
 | 
			
		||||
      patchedUboot = pkgs.ubootRaspberryPi3_64bit.overrideAttrs (oldAttrs: {
 | 
			
		||||
        src = pkgs.fetchFromGitHub {
 | 
			
		||||
          owner = "dezgeg";
 | 
			
		||||
          repo = "u-boot";
 | 
			
		||||
          rev = "baab53ec244fe44def01948a0f10e67342d401e6";
 | 
			
		||||
          sha256 = "0r5j2pc42ws3w3im0a9c6bh01czz5kapqrqp0ik9ra823cw73lxr";
 | 
			
		||||
        };
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      configTxt = pkgs.writeText "config.txt" ''
 | 
			
		||||
        kernel=u-boot-rpi3.bin
 | 
			
		||||
        arm_control=0x200
 | 
			
		||||
        enable_uart=1
 | 
			
		||||
      '';
 | 
			
		||||
      in ''
 | 
			
		||||
        for f in bootcode.bin fixup.dat start.elf; do
 | 
			
		||||
          cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/$f boot/
 | 
			
		||||
        done
 | 
			
		||||
        cp ${patchedUboot}/u-boot.bin boot/u-boot-rpi3.bin
 | 
			
		||||
        cp ${configTxt} boot/config.txt
 | 
			
		||||
        ${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./boot
 | 
			
		||||
      '';
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,3 +1,5 @@
 | 
			
		||||
# To build, use:
 | 
			
		||||
# nix-build nixos -I nixos-config=nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix -A config.system.build.sdImage
 | 
			
		||||
{ config, lib, pkgs, ... }:
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
@ -46,7 +48,7 @@ in
 | 
			
		||||
          cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/$f boot/
 | 
			
		||||
        done
 | 
			
		||||
        cp ${pkgs.ubootRaspberryPi2}/u-boot.bin boot/u-boot-rpi2.bin
 | 
			
		||||
        cp ${pkgs.ubootRaspberryPi3}/u-boot.bin boot/u-boot-rpi3.bin
 | 
			
		||||
        cp ${pkgs.ubootRaspberryPi3_32bit}/u-boot.bin boot/u-boot-rpi3.bin
 | 
			
		||||
        cp ${configTxt} boot/config.txt
 | 
			
		||||
        ${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./boot
 | 
			
		||||
      '';
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,5 @@
 | 
			
		||||
# To build, use:
 | 
			
		||||
# nix-build nixos -I nixos-config=nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix -A config.system.build.sdImage
 | 
			
		||||
{ config, lib, pkgs, ... }:
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
 | 
			
		||||
@ -7,12 +7,12 @@
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
 | 
			
		||||
    pname = "discord";
 | 
			
		||||
    version = "0.0.13";
 | 
			
		||||
    version = "0.0.1";
 | 
			
		||||
    name = "${pname}-${version}";
 | 
			
		||||
 | 
			
		||||
    src = fetchurl {
 | 
			
		||||
        url = "https://cdn-canary.discordapp.com/apps/linux/${version}/${pname}-canary-${version}.tar.gz";
 | 
			
		||||
        sha256 = "1pwb8y80z1bmfln5wd1vrhras0xygd1j15sib0g9vaig4mc55cs6";
 | 
			
		||||
        url = "https://cdn.discordapp.com/apps/linux/${version}/${pname}-${version}.tar.gz";
 | 
			
		||||
        sha256 = "10m3ixvhmxdw55awd84gx13m222qjykj7gcigbjabcvsgp2z63xs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    libPath = stdenv.lib.makeLibraryPath [
 | 
			
		||||
@ -30,11 +30,11 @@ stdenv.mkDerivation rec {
 | 
			
		||||
        # see pkgs/applications/misc/adobe-reader/builder.sh
 | 
			
		||||
        patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
 | 
			
		||||
                 --set-rpath "$out:$libPath"                                   \
 | 
			
		||||
                 $out/DiscordCanary
 | 
			
		||||
                 $out/Discord
 | 
			
		||||
 | 
			
		||||
        paxmark m $out/DiscordCanary
 | 
			
		||||
        paxmark m $out/Discord
 | 
			
		||||
 | 
			
		||||
        ln -s $out/DiscordCanary $out/bin/
 | 
			
		||||
        ln -s $out/Discord $out/bin/
 | 
			
		||||
        ln -s $out/discord.png $out/share/pixmaps
 | 
			
		||||
 | 
			
		||||
        # Putting udev in the path won't work :(
 | 
			
		||||
@ -44,9 +44,9 @@ stdenv.mkDerivation rec {
 | 
			
		||||
 | 
			
		||||
    desktopItem = makeDesktopItem {
 | 
			
		||||
      name = pname;
 | 
			
		||||
      exec = "DiscordCanary";
 | 
			
		||||
      exec = "Discord";
 | 
			
		||||
      icon = pname;
 | 
			
		||||
      desktopName = "Discord Canary";
 | 
			
		||||
      desktopName = "Discord";
 | 
			
		||||
      genericName = meta.description;
 | 
			
		||||
      categories = "Network;InstantMessaging;";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
@ -272,6 +272,7 @@ stdenv.mkDerivation {
 | 
			
		||||
       if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2" else
 | 
			
		||||
       # ARM with a wildcard, which can be "" or "-armhf".
 | 
			
		||||
       if stdenv.isArm then "ld-linux*.so.3" else
 | 
			
		||||
       if stdenv.system == "aarch64-linux" then "ld-linux-aarch64.so.1" else
 | 
			
		||||
       if stdenv.system == "powerpc-linux" then "ld.so.1" else
 | 
			
		||||
       if stdenv.system == "mips64el-linux" then "ld.so.1" else
 | 
			
		||||
       if stdenv.system == "x86_64-darwin" then "/usr/lib/dyld" else
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,12 @@
 | 
			
		||||
preConfigurePhases+=" updateAutotoolsGnuConfigScriptsPhase"
 | 
			
		||||
 | 
			
		||||
updateAutotoolsGnuConfigScriptsPhase() {
 | 
			
		||||
    if [ -n "$dontUpdateAutotoolsGnuConfigScripts" ]; then return; fi
 | 
			
		||||
 | 
			
		||||
    for script in config.sub config.guess; do
 | 
			
		||||
        for f in $(find . -name "$script"); do
 | 
			
		||||
            echo "Updating Autotools / GNU config script to a newer upstream version: $f"
 | 
			
		||||
            cp -f "@gnu_config@/$script" "$f"
 | 
			
		||||
        done
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
@ -20,6 +20,8 @@ stdenv.mkDerivation rec {
 | 
			
		||||
  postPatch = ''
 | 
			
		||||
    # Fixes an issue with version detection under perl 5.22.x
 | 
			
		||||
    sed -i 's/(defined\((@TEMPLATE_FILE)\))/\1/' config/milestone.pl
 | 
			
		||||
  '' + stdenv.lib.optionalString stdenv.isAarch64 ''
 | 
			
		||||
    patch -p1 -d ../.. < ${./aarch64-double-conversion.patch}
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  preConfigure = ''
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,13 @@
 | 
			
		||||
diff -ru mozjs17.0.0-orig/mfbt/double-conversion/utils.h mozjs17.0.0/mfbt/double-conversion/utils.h
 | 
			
		||||
--- mozjs17.0.0-orig/mfbt/double-conversion/utils.h	2013-02-11 17:33:28.000000000 -0500
 | 
			
		||||
+++ mozjs17.0.0/mfbt/double-conversion/utils.h	2016-12-03 20:39:07.915042988 -0500
 | 
			
		||||
@@ -58,7 +58,8 @@
 | 
			
		||||
     defined(__mips__) || defined(__powerpc__) || \
 | 
			
		||||
     defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
 | 
			
		||||
     defined(__SH4__) || defined(__alpha__) || \
 | 
			
		||||
-    defined(_MIPS_ARCH_MIPS32R2)
 | 
			
		||||
+    defined(_MIPS_ARCH_MIPS32R2) || \
 | 
			
		||||
+    defined(__AARCH64EL__)
 | 
			
		||||
 #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
 | 
			
		||||
 #elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
 | 
			
		||||
 #if defined(_WIN32)
 | 
			
		||||
@ -93,7 +93,7 @@ stdenv.mkDerivation ({
 | 
			
		||||
      "--enable-kernel=2.6.32"
 | 
			
		||||
    ] ++ lib.optionals (cross != null) [
 | 
			
		||||
      (if cross.withTLS then "--with-tls" else "--without-tls")
 | 
			
		||||
      (if cross.float == "soft" then "--without-fp" else "--with-fp")
 | 
			
		||||
      (if cross ? float && cross.float == "soft" then "--without-fp" else "--with-fp")
 | 
			
		||||
    ] ++ lib.optionals (cross != null
 | 
			
		||||
          && cross.platform ? kernelMajor
 | 
			
		||||
          && cross.platform.kernelMajor == "2.6") [
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										39
									
								
								pkgs/development/libraries/gnu-config/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								pkgs/development/libraries/gnu-config/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
			
		||||
{ stdenv, fetchurl }:
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
  rev = "6a82322dd05cdc57b4cd9f7effdf1e2fd6f7482b";
 | 
			
		||||
 | 
			
		||||
  # Don't use fetchgit as this is needed during Aarch64 bootstrapping
 | 
			
		||||
  configGuess = fetchurl {
 | 
			
		||||
    url = "http://git.savannah.gnu.org/cgit/config.git/plain/config.guess?id=${rev}";
 | 
			
		||||
    sha256 = "1yj9yi94h7z4z6jzickddv64ksz1aq5kj0c7krgzjn8xf8p3avmh";
 | 
			
		||||
  };
 | 
			
		||||
  configSub = fetchurl {
 | 
			
		||||
    url = "http://git.savannah.gnu.org/cgit/config.git/plain/config.sub?id=${rev}";
 | 
			
		||||
    sha256 = "1qsqdpla6icbzskkk7v3zxrpzlpqlc94ny9hyy5wh5lm5rwwfvb7";
 | 
			
		||||
  };
 | 
			
		||||
in
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "gnu-config-${version}";
 | 
			
		||||
  version = "2016-12-31";
 | 
			
		||||
 | 
			
		||||
  buildCommand = ''
 | 
			
		||||
    mkdir -p $out
 | 
			
		||||
    cp ${configGuess} $out/config.guess
 | 
			
		||||
    cp ${configSub} $out/config.sub
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  meta = with stdenv.lib; {
 | 
			
		||||
    description = "Attempt to guess a canonical system name";
 | 
			
		||||
    homepage = http://savannah.gnu.org/projects/config;
 | 
			
		||||
    license = licenses.gpl3;
 | 
			
		||||
    # In addition to GPLv3:
 | 
			
		||||
    #   As a special exception to the GNU General Public License, if you
 | 
			
		||||
    #   distribute this file as part of a program that contains a
 | 
			
		||||
    #   configuration script generated by Autoconf, you may include it under
 | 
			
		||||
    #   the same distribution terms that you use for the rest of that
 | 
			
		||||
    #   program.
 | 
			
		||||
    maintainers = [ maintainers.dezgeg ];
 | 
			
		||||
    platforms = platforms.all;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,13 @@
 | 
			
		||||
diff -ru gnu-efi-3.0.4-orig/lib/aarch64/initplat.c gnu-efi-3.0.4/lib/aarch64/initplat.c
 | 
			
		||||
--- gnu-efi-3.0.4-orig/lib/aarch64/initplat.c	2016-03-17 09:53:14.000000000 -0400
 | 
			
		||||
+++ gnu-efi-3.0.4/lib/aarch64/initplat.c	2016-12-03 17:53:57.166575974 -0500
 | 
			
		||||
@@ -41,7 +41,8 @@
 | 
			
		||||
 
 | 
			
		||||
 void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n)
 | 
			
		||||
 {
 | 
			
		||||
-    unsigned char *p = dest, *q = src;
 | 
			
		||||
+    unsigned char *p = dest;
 | 
			
		||||
+    const unsigned char *q = src;
 | 
			
		||||
 
 | 
			
		||||
     while (n--)
 | 
			
		||||
         *p++ = *q++;
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
{ stdenv, fetchurl, pciutils }:
 | 
			
		||||
{ stdenv, fetchurl, pciutils }: with stdenv.lib;
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "gnu-efi-${version}";
 | 
			
		||||
@ -9,6 +9,8 @@ stdenv.mkDerivation rec {
 | 
			
		||||
    sha256 = "1bzq5czw5dxlvpgs9ij2iz7q6krwhja87vc982r6vffcqcl0982i";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  patches = optional stdenv.isAarch64 ./aarch64-fix-discarded-qualifier.patch;
 | 
			
		||||
 | 
			
		||||
  buildInputs = [ pciutils ];
 | 
			
		||||
 | 
			
		||||
  hardeningDisable = [ "stackprotector" ];
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								pkgs/development/libraries/libsigsegv/aarch64.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								pkgs/development/libraries/libsigsegv/aarch64.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
diff --git a/configure b/configure
 | 
			
		||||
index 6c4e868..0298e19 100755
 | 
			
		||||
--- a/configure
 | 
			
		||||
+++ b/configure
 | 
			
		||||
@@ -14501,6 +14501,7 @@ else
 | 
			
		||||
 
 | 
			
		||||
     case "$host_cpu" in
 | 
			
		||||
             a29k | \
 | 
			
		||||
+      aarch64* | \
 | 
			
		||||
       alpha* | \
 | 
			
		||||
       arc | \
 | 
			
		||||
       arm* | strongarm* | xscale* | \
 | 
			
		||||
@ -8,6 +8,12 @@ stdenv.mkDerivation rec {
 | 
			
		||||
    sha256 = "16hrs8k3nmc7a8jam5j1fpspd6sdpkamskvsdpcw6m29vnis8q44";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Based on https://github.com/davidgfnet/buildroot-Os/blob/69fe6065b9dd1cb4dcc0a4b554e42cc2e5bd0d60/package/libsigsegv/libsigsegv-0002-fix-aarch64-build.patch
 | 
			
		||||
  # but applied directly to configure since we can't use autoreconf while bootstrapping.
 | 
			
		||||
  patches = if stdenv.isAarch64 || stdenv.cross.arch or "" == "aarch64"
 | 
			
		||||
    then [ ./aarch64.patch ]
 | 
			
		||||
    else null; # TODO: change to lib.optional on next mass rebuild
 | 
			
		||||
 | 
			
		||||
  # https://github.com/NixOS/nixpkgs/issues/6028
 | 
			
		||||
  doCheck = false;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
{ stdenv, fetchurl, fetchpatch, xz }:
 | 
			
		||||
{ stdenv, fetchurl, fetchpatch, autoreconfHook, xz }:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "libunwind-1.1";
 | 
			
		||||
@ -8,13 +8,18 @@ stdenv.mkDerivation rec {
 | 
			
		||||
    sha256 = "16nhx2pahh9d62mvszc88q226q5lwjankij276fxwrm8wb50zzlx";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  buildInputs = stdenv.lib.optional stdenv.isAarch64 autoreconfHook;
 | 
			
		||||
 | 
			
		||||
  patches = [ ./libunwind-1.1-lzma.patch ./cve-2015-3239.patch
 | 
			
		||||
              # https://lists.nongnu.org/archive/html/libunwind-devel/2014-04/msg00000.html
 | 
			
		||||
              (fetchpatch {
 | 
			
		||||
                url = "https://raw.githubusercontent.com/dropbox/pyston/1b2e676417b0f5f17526ece0ed840aa88c744145/libunwind_patches/0001-Change-the-RBP-validation-heuristic-to-allow-size-0-.patch";
 | 
			
		||||
                sha256 = "1a0fsgfxmgd218nscswx7pgyb7rcn2gh6566252xhfvzhgn5i4ha";
 | 
			
		||||
              })
 | 
			
		||||
            ];
 | 
			
		||||
            ] ++ stdenv.lib.optional stdenv.isAarch64 (fetchpatch {
 | 
			
		||||
              url = "https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/77709d1c6d5c39e23c1535b1bd584be1455f2551/extra/libunwind/libunwind-aarch64.patch";
 | 
			
		||||
              sha256 = "1mpjs8izq9wxiaf5rl4gzaxrkz0s51f9qz5qc5dj72pr84mw50w8";
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
  postPatch = ''
 | 
			
		||||
    sed -i -e '/LIBLZMA/s:-lzma:-llzma:' configure
 | 
			
		||||
 | 
			
		||||
@ -1,14 +1,19 @@
 | 
			
		||||
{ stdenv, fetchurl }:
 | 
			
		||||
{ stdenv, fetchurl, perl }:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  version = "0.8.6";
 | 
			
		||||
  version = "0.9.3";
 | 
			
		||||
  name = "liburcu-${version}";
 | 
			
		||||
 | 
			
		||||
  src = fetchurl {
 | 
			
		||||
    url = "http://lttng.org/files/urcu/userspace-rcu-${version}.tar.bz2";
 | 
			
		||||
    sha256 = "08dbfkdj4pm9s3q56nwa1vzldkf1jav61g2r4xq7mfhlw2yd79di";
 | 
			
		||||
    sha256 = "01j0xp3f0w147yfyzybkjvb7i67i7prsvnkssgvgwry9lvk35khv";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = stdenv.lib.optional doCheck perl;
 | 
			
		||||
 | 
			
		||||
  preCheck = "patchShebangs tests/unit";
 | 
			
		||||
  doCheck = true;
 | 
			
		||||
 | 
			
		||||
  meta = with stdenv.lib; {
 | 
			
		||||
    description = "Userspace RCU (read-copy-update) library";
 | 
			
		||||
    homepage = http://lttng.org/urcu;
 | 
			
		||||
 | 
			
		||||
@ -100,12 +100,18 @@ in rec {
 | 
			
		||||
    filesToInstall = ["u-boot.bin"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  ubootRaspberryPi3 = buildUBoot rec {
 | 
			
		||||
  ubootRaspberryPi3_32bit = buildUBoot rec {
 | 
			
		||||
    defconfig = "rpi_3_32b_defconfig";
 | 
			
		||||
    targetPlatforms = ["armv7l-linux"];
 | 
			
		||||
    filesToInstall = ["u-boot.bin"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  ubootRaspberryPi3_64bit = buildUBoot rec {
 | 
			
		||||
    defconfig = "rpi_3_defconfig";
 | 
			
		||||
    targetPlatforms = ["aarch64-linux"];
 | 
			
		||||
    filesToInstall = ["u-boot.bin"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  ubootWandboard = buildUBoot rec {
 | 
			
		||||
    defconfig = "wandboard_defconfig";
 | 
			
		||||
    targetPlatforms = ["armv7l-linux"];
 | 
			
		||||
 | 
			
		||||
@ -12,3 +12,12 @@ stdenv bootstrap.
 | 
			
		||||
 		exit(busybox_main(argv));
 | 
			
		||||
 #  endif
 | 
			
		||||
 #  if NUM_APPLETS > 0
 | 
			
		||||
@@ -981,7 +981,7 @@ int main(int argc UNUSED_PARAM, char **argv)
 | 
			
		||||
 
 | 
			
		||||
 	lbb_prepare("busybox" IF_FEATURE_INDIVIDUAL(, argv));
 | 
			
		||||
 # if !ENABLE_BUSYBOX
 | 
			
		||||
-	if (argv[1] && is_prefixed_with(bb_basename(argv[0]), "busybox"))
 | 
			
		||||
+	if (argv[1] && strstr(bb_basename(argv[0]), "busybox") != 0)
 | 
			
		||||
 		argv++;
 | 
			
		||||
 # endif
 | 
			
		||||
 	applet_name = argv[0];
 | 
			
		||||
 | 
			
		||||
@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
 | 
			
		||||
    description = "Firmware for the Raspberry Pi board";
 | 
			
		||||
    homepage = https://github.com/raspberrypi;
 | 
			
		||||
    license = licenses.unfree;
 | 
			
		||||
    platforms = [ "armv6l-linux" "armv7l-linux" ];
 | 
			
		||||
    platforms = [ "armv6l-linux" "armv7l-linux" "aarch64-linux" ];
 | 
			
		||||
    maintainers = with maintainers; [ viric tavyc ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
{ stdenv, fetchFromGitHub, utillinux
 | 
			
		||||
{ stdenv, fetchFromGitHub, fetchpatch, utillinux
 | 
			
		||||
, autoconf, automake, libtool, gettext }:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
@ -14,6 +14,11 @@ stdenv.mkDerivation rec {
 | 
			
		||||
 | 
			
		||||
  buildInputs = [ utillinux autoconf automake libtool gettext ];
 | 
			
		||||
 | 
			
		||||
  patches = stdenv.lib.optional stdenv.isAarch64 (fetchpatch {
 | 
			
		||||
    url = "https://github.com/libfuse/libfuse/commit/914871b20a901e3e1e981c92bc42b1c93b7ab81b.patch";
 | 
			
		||||
    sha256 = "1w4j6f1awjrycycpvmlv0x5v9gprllh4dnbjxl4dyl2jgbkaw6pa";
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  preConfigure =
 | 
			
		||||
    ''
 | 
			
		||||
      export MOUNT_FUSE_PATH=$out/sbin
 | 
			
		||||
 | 
			
		||||
@ -45,7 +45,7 @@ with stdenv.lib;
 | 
			
		||||
 | 
			
		||||
  # Bump the maximum number of CPUs to support systems like EC2 x1.*
 | 
			
		||||
  # instances and Xeon Phi.
 | 
			
		||||
  ${optionalString (stdenv.system == "x86_64-linux") ''
 | 
			
		||||
  ${optionalString (stdenv.system == "x86_64-linux" || stdenv.system == "aarch64-linux") ''
 | 
			
		||||
    NR_CPUS 384
 | 
			
		||||
  ''}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -120,7 +120,7 @@ let
 | 
			
		||||
 | 
			
		||||
      # Some image types need special install targets (e.g. uImage is installed with make uinstall)
 | 
			
		||||
      installTargets = [ (if platform.kernelTarget == "uImage" then "uinstall" else
 | 
			
		||||
                          if platform.kernelTarget == "zImage" then "zinstall" else
 | 
			
		||||
                          if platform.kernelTarget == "zImage" || platform.kernelTarget == "Image.gz" then "zinstall" else
 | 
			
		||||
                          "install") ];
 | 
			
		||||
 | 
			
		||||
      postInstall = ''
 | 
			
		||||
 | 
			
		||||
@ -92,6 +92,7 @@ rec {
 | 
			
		||||
              # without proper `file` command, libtool sometimes fails
 | 
			
		||||
              # to recognize 64-bit DLLs
 | 
			
		||||
            ++ stdenv.lib.optional (cross.config  == "x86_64-w64-mingw32") pkgs.file
 | 
			
		||||
            ++ stdenv.lib.optional (cross.config  == "aarch64-linux-gnu") pkgs.updateAutotoolsGnuConfigScriptsHook
 | 
			
		||||
            ;
 | 
			
		||||
 | 
			
		||||
          # Cross-linking dynamic libraries, every buildInput should
 | 
			
		||||
 | 
			
		||||
@ -44,6 +44,7 @@ in
 | 
			
		||||
    "armv5tel-linux" = stagesLinux;
 | 
			
		||||
    "armv6l-linux" = stagesLinux;
 | 
			
		||||
    "armv7l-linux" = stagesLinux;
 | 
			
		||||
    "aarch64-linux" = stagesLinux;
 | 
			
		||||
    "mips64el-linux" = stagesLinux;
 | 
			
		||||
    "powerpc-linux" = /* stagesLinux */ stagesNative;
 | 
			
		||||
    "x86_64-darwin" = stagesDarwin;
 | 
			
		||||
 | 
			
		||||
@ -311,6 +311,7 @@ let
 | 
			
		||||
             || system == "armv5tel-linux"
 | 
			
		||||
             || system == "armv6l-linux"
 | 
			
		||||
             || system == "armv7l-linux"
 | 
			
		||||
             || system == "aarch64-linux"
 | 
			
		||||
             || system == "mips64el-linux";
 | 
			
		||||
      isGNU = system == "i686-gnu"; # GNU/Hurd
 | 
			
		||||
      isGlibc = isGNU # useful for `stdenvNative'
 | 
			
		||||
@ -348,6 +349,7 @@ let
 | 
			
		||||
      isArm = system == "armv5tel-linux"
 | 
			
		||||
           || system == "armv6l-linux"
 | 
			
		||||
           || system == "armv7l-linux";
 | 
			
		||||
      isAarch64 = system == "aarch64-linux";
 | 
			
		||||
      isBigEndian = system == "powerpc-linux";
 | 
			
		||||
 | 
			
		||||
      # Whether we should run paxctl to pax-mark binaries.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								pkgs/stdenv/linux/bootstrap-files/aarch64.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								pkgs/stdenv/linux/bootstrap-files/aarch64.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
{
 | 
			
		||||
  busybox = import <nix/fetchurl.nix> {
 | 
			
		||||
    url = http://nixos-arm.dezgeg.me/bootstrap-aarch64-for-merge/busybox;
 | 
			
		||||
    sha256 = "12qcml1l67skpjhfjwy7gr10nc86gqcwjmz9ggp7knss8gq8pv7f";
 | 
			
		||||
    executable = true;
 | 
			
		||||
  };
 | 
			
		||||
  bootstrapTools = import <nix/fetchurl.nix> {
 | 
			
		||||
    url = http://nixos-arm.dezgeg.me/bootstrap-aarch64-for-merge/bootstrap-tools.tar.xz;
 | 
			
		||||
    sha256 = "10sqgh0dchp1906h06jznxh8gfflnzbpfy27hng2mmc1l0c7irjr";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -12,6 +12,7 @@
 | 
			
		||||
    "armv5tel-linux" = import ./bootstrap-files/armv5tel.nix;
 | 
			
		||||
    "armv6l-linux" = import ./bootstrap-files/armv6l.nix;
 | 
			
		||||
    "armv7l-linux" = import ./bootstrap-files/armv7l.nix;
 | 
			
		||||
    "aarch64-linux" = import ./bootstrap-files/aarch64.nix;
 | 
			
		||||
    "mips64el-linux" = import ./bootstrap-files/loongson2f.nix;
 | 
			
		||||
  }.${localSystem.system}
 | 
			
		||||
    or (abort "unsupported platform for the pure Linux stdenv")
 | 
			
		||||
@ -213,7 +214,9 @@ in
 | 
			
		||||
        isl = isl_0_14;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    extraBuildInputs = [ prevStage.patchelf prevStage.paxctl ];
 | 
			
		||||
    extraBuildInputs = [ prevStage.patchelf prevStage.paxctl ] ++
 | 
			
		||||
      # Many tarballs come with obsolete config.sub/config.guess that don't recognize aarch64.
 | 
			
		||||
      lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook;
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -240,7 +243,9 @@ in
 | 
			
		||||
        shell = self.bash + "/bin/bash";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    extraBuildInputs = [ prevStage.patchelf prevStage.xz ];
 | 
			
		||||
    extraBuildInputs = [ prevStage.patchelf prevStage.xz ] ++
 | 
			
		||||
      # Many tarballs come with obsolete config.sub/config.guess that don't recognize aarch64.
 | 
			
		||||
      lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook;
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  # Construct the final stdenv.  It uses the Glibc and GCC, and adds
 | 
			
		||||
@ -268,7 +273,9 @@ in
 | 
			
		||||
      initialPath =
 | 
			
		||||
        ((import ../common-path.nix) {pkgs = prevStage;});
 | 
			
		||||
 | 
			
		||||
      extraBuildInputs = [ prevStage.patchelf prevStage.paxctl ];
 | 
			
		||||
      extraBuildInputs = [ prevStage.patchelf prevStage.paxctl ] ++
 | 
			
		||||
        # Many tarballs come with obsolete config.sub/config.guess that don't recognize aarch64.
 | 
			
		||||
        lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook;
 | 
			
		||||
 | 
			
		||||
      cc = prevStage.gcc;
 | 
			
		||||
 | 
			
		||||
@ -287,7 +294,7 @@ in
 | 
			
		||||
        [ gzip bzip2 xz bash binutils coreutils diffutils findutils gawk
 | 
			
		||||
          glibc gnumake gnused gnutar gnugrep gnupatch patchelf attr acl
 | 
			
		||||
          paxctl zlib pcre linuxHeaders ed gcc gcc.cc libsigsegv
 | 
			
		||||
        ];
 | 
			
		||||
        ] ++ lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook;
 | 
			
		||||
        */
 | 
			
		||||
 | 
			
		||||
      overrides = self: super: {
 | 
			
		||||
 | 
			
		||||
@ -50,10 +50,23 @@ let
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  aarch64-multiplatform-crossSystem = {
 | 
			
		||||
    crossSystem = rec {
 | 
			
		||||
      config = "aarch64-linux-gnu";
 | 
			
		||||
      bigEndian = false;
 | 
			
		||||
      arch = "aarch64";
 | 
			
		||||
      withTLS = true;
 | 
			
		||||
      libc = "glibc";
 | 
			
		||||
      platform = pkgsNoParams.platforms.aarch64-multiplatform;
 | 
			
		||||
      inherit (platform) gcc;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  selectedCrossSystem =
 | 
			
		||||
    if toolsArch == "armv5tel" then sheevaplugCrossSystem else
 | 
			
		||||
    if toolsArch == "armv6l" then raspberrypiCrossSystem else
 | 
			
		||||
    if toolsArch == "armv7l" then armv7l-hf-multiplatform-crossSystem else null;
 | 
			
		||||
    if toolsArch == "armv7l" then armv7l-hf-multiplatform-crossSystem else
 | 
			
		||||
    if toolsArch == "aarch64" then aarch64-multiplatform-crossSystem else null;
 | 
			
		||||
 | 
			
		||||
  pkgs = pkgsFun ({inherit system;} // selectedCrossSystem);
 | 
			
		||||
 | 
			
		||||
@ -264,4 +277,5 @@ rec {
 | 
			
		||||
    armv5tel = buildFor "armv5tel";
 | 
			
		||||
    armv6l = buildFor "armv6l";
 | 
			
		||||
    armv7l = buildFor "armv7l";
 | 
			
		||||
    aarch64 = buildFor "aarch64";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -170,8 +170,9 @@ rec {
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  bootstrapFiles = {
 | 
			
		||||
    busybox = "${build}/on-server/busybox";
 | 
			
		||||
    bootstrapTools = "${build}/on-server/bootstrap-tools.tar.xz";
 | 
			
		||||
    # Make them their own store paths to test that busybox still works when the binary is named /nix/store/HASH-busybox
 | 
			
		||||
    busybox = runCommand "busybox" {} "cp ${build}/on-server/busybox $out";
 | 
			
		||||
    bootstrapTools = runCommand "bootstrap-tools.tar.xz" {} "cp ${build}/on-server/bootstrap-tools.tar.xz $out";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  bootstrapTools = import ./bootstrap-tools { inherit system bootstrapFiles; };
 | 
			
		||||
 | 
			
		||||
@ -1,13 +1,15 @@
 | 
			
		||||
{ stdenv, pkgs, fetchurl, openssl, zlib }:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  majorVersion = "1.6";
 | 
			
		||||
  version = "${majorVersion}.6";
 | 
			
		||||
  name = "haproxy-${version}";
 | 
			
		||||
  pname = "haproxy";
 | 
			
		||||
  majorVersion = "1.7";
 | 
			
		||||
  minorVersion = "2";
 | 
			
		||||
  version = "${majorVersion}.${minorVersion}";
 | 
			
		||||
  name = "${pname}-${version}";
 | 
			
		||||
 | 
			
		||||
  src = fetchurl {
 | 
			
		||||
    url = "http://haproxy.1wt.eu/download/${majorVersion}/src/${name}.tar.gz";
 | 
			
		||||
    sha256 = "1xamzzfvwgh3b72f3j74ar9xcn61viszqfbdpf4cdhwc0xikvc7x";
 | 
			
		||||
    url = "http://www.haproxy.org/download/${majorVersion}/src/${name}.tar.gz";
 | 
			
		||||
    sha256 = "0bsb5q3s1k5gqybv5p8zyvl6zh8iyidv3jb3wfmgwqad5bsl0nzr";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  buildInputs = [ openssl zlib ];
 | 
			
		||||
 | 
			
		||||
@ -79,6 +79,10 @@ with pkgs;
 | 
			
		||||
      }
 | 
			
		||||
    '');
 | 
			
		||||
 | 
			
		||||
  updateAutotoolsGnuConfigScriptsHook = makeSetupHook
 | 
			
		||||
    { substitutions = { gnu_config = gnu-config;}; }
 | 
			
		||||
    ../build-support/setup-hooks/update-autotools-gnu-config-scripts.sh;
 | 
			
		||||
 | 
			
		||||
  buildEnv = callPackage ../build-support/buildenv { }; # not actually a package
 | 
			
		||||
 | 
			
		||||
  buildFHSUserEnv = callPackage ../build-support/build-fhs-userenv { };
 | 
			
		||||
@ -7460,6 +7464,8 @@ with pkgs;
 | 
			
		||||
 | 
			
		||||
  gnet = callPackage ../development/libraries/gnet { };
 | 
			
		||||
 | 
			
		||||
  gnu-config = callPackage ../development/libraries/gnu-config { };
 | 
			
		||||
 | 
			
		||||
  gnu-efi = callPackage ../development/libraries/gnu-efi { };
 | 
			
		||||
 | 
			
		||||
  gnutls = gnutls34;
 | 
			
		||||
@ -11800,7 +11806,8 @@ with pkgs;
 | 
			
		||||
    ubootPcduino3Nano
 | 
			
		||||
    ubootRaspberryPi
 | 
			
		||||
    ubootRaspberryPi2
 | 
			
		||||
    ubootRaspberryPi3
 | 
			
		||||
    ubootRaspberryPi3_32bit
 | 
			
		||||
    ubootRaspberryPi3_64bit
 | 
			
		||||
    ubootWandboard
 | 
			
		||||
    ;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -167,7 +167,7 @@ let
 | 
			
		||||
 | 
			
		||||
    preBuild = ''
 | 
			
		||||
      makeFlagsArray=(
 | 
			
		||||
        linux
 | 
			
		||||
        ${stdenv.lib.optionalString stdenv.isLinux "linux"}
 | 
			
		||||
        LUAPATH="$out/lib/lua/${lua.luaversion}"
 | 
			
		||||
        LUACPATH="$out/lib/lua/${lua.luaversion}"
 | 
			
		||||
        INC_PATH="-I${lua}/include"
 | 
			
		||||
 | 
			
		||||
@ -443,12 +443,54 @@ rec {
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  selectPlatformBySystem = system:
 | 
			
		||||
    if system == "armv6l-linux" then raspberrypi
 | 
			
		||||
    else if system == "armv7l-linux" then armv7l-hf-multiplatform
 | 
			
		||||
    else if system == "armv5tel-linux" then sheevaplug
 | 
			
		||||
    else if system == "mips64el-linux" then fuloong2f_n32
 | 
			
		||||
    else if system == "x86_64-linux" then pc64
 | 
			
		||||
    else if system == "i686-linux" then pc32
 | 
			
		||||
    else pcBase;
 | 
			
		||||
  aarch64-multiplatform = {
 | 
			
		||||
    name = "aarch64-multiplatform";
 | 
			
		||||
    kernelMajor = "2.6"; # Using "2.6" enables 2.6 kernel syscalls in glibc.
 | 
			
		||||
    kernelHeadersBaseConfig = "defconfig";
 | 
			
		||||
    kernelBaseConfig = "defconfig";
 | 
			
		||||
    kernelArch = "arm64";
 | 
			
		||||
    kernelDTB = true;
 | 
			
		||||
    kernelAutoModules = false;
 | 
			
		||||
    kernelExtraConfig = ''
 | 
			
		||||
      # Raspberry Pi 3 stuff. Not needed for kernels >= 4.10.
 | 
			
		||||
      ARCH_BCM2835 y
 | 
			
		||||
      BCM2835_MBOX y
 | 
			
		||||
      BCM2835_WDT y
 | 
			
		||||
      BRCMFMAC m
 | 
			
		||||
      DMA_BCM2835 m
 | 
			
		||||
      DRM_VC4 m
 | 
			
		||||
      I2C_BCM2835 m
 | 
			
		||||
      PWM_BCM2835 m
 | 
			
		||||
      RASPBERRYPI_FIRMWARE y
 | 
			
		||||
      RASPBERRYPI_POWER y
 | 
			
		||||
      SERIAL_8250_BCM2835AUX y
 | 
			
		||||
      SERIAL_8250_EXTENDED y
 | 
			
		||||
      SERIAL_8250_SHARE_IRQ y
 | 
			
		||||
      SND_BCM2835_SOC_I2S m
 | 
			
		||||
      SPI_BCM2835AUX m
 | 
			
		||||
      SPI_BCM2835 m
 | 
			
		||||
 | 
			
		||||
      # Cavium ThunderX stuff.
 | 
			
		||||
      PCI_HOST_THUNDER_ECAM y
 | 
			
		||||
      THUNDER_NIC_RGX y
 | 
			
		||||
      THUNDER_NIC_BGX y
 | 
			
		||||
      THUNDER_NIC_PF y
 | 
			
		||||
      THUNDER_NIC_VF y
 | 
			
		||||
    '';
 | 
			
		||||
    uboot = null;
 | 
			
		||||
    kernelTarget = "Image";
 | 
			
		||||
    gcc = {
 | 
			
		||||
      arch = "armv8-a";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  selectPlatformBySystem = system: {
 | 
			
		||||
      "i686-linux" = pc32;
 | 
			
		||||
      "x86_64-linux" = pc64;
 | 
			
		||||
      "armv5tel-linux" = sheevaplug;
 | 
			
		||||
      "armv6l-linux" = raspberrypi;
 | 
			
		||||
      "armv7l-linux" = armv7l-hf-multiplatform;
 | 
			
		||||
      "aarch64-linux" = aarch64-multiplatform;
 | 
			
		||||
      "mips64el-linux" = fuloong2f_n32;
 | 
			
		||||
    }.${system} or pcBase;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user