diff options
author | John Ericson <Ericson2314@yahoo.com> | 2017-04-17 17:28:01 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-17 17:28:01 -0400 |
commit | f0b634c7e838cdd65ac6f73933c99af3f38d0fa8 (patch) | |
tree | d2c2909fc40eb2e631a6f88ee3bec58c9493035e /pkgs | |
parent | 37e5e71fdf098a45471537e9961672592ef6f72a (diff) | |
parent | 3efc661a1de6a2ce9b98aa39283e68914297b8d7 (diff) | |
download | nixlib-f0b634c7e838cdd65ac6f73933c99af3f38d0fa8.tar nixlib-f0b634c7e838cdd65ac6f73933c99af3f38d0fa8.tar.gz nixlib-f0b634c7e838cdd65ac6f73933c99af3f38d0fa8.tar.bz2 nixlib-f0b634c7e838cdd65ac6f73933c99af3f38d0fa8.tar.lz nixlib-f0b634c7e838cdd65ac6f73933c99af3f38d0fa8.tar.xz nixlib-f0b634c7e838cdd65ac6f73933c99af3f38d0fa8.tar.zst nixlib-f0b634c7e838cdd65ac6f73933c99af3f38d0fa8.zip |
Merge pull request #24610 from Ericson2314/platform-normalization
Platform normalization
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/top-level/all-packages.nix | 2 | ||||
-rw-r--r-- | pkgs/top-level/default.nix | 16 | ||||
-rw-r--r-- | pkgs/top-level/platforms.nix | 486 | ||||
-rw-r--r-- | pkgs/top-level/release-cross.nix | 20 | ||||
-rw-r--r-- | pkgs/top-level/release-lib.nix | 10 | ||||
-rw-r--r-- | pkgs/top-level/release-python.nix | 4 | ||||
-rw-r--r-- | pkgs/top-level/release-small.nix | 2 | ||||
-rw-r--r-- | pkgs/top-level/release.nix | 11 |
8 files changed, 31 insertions, 520 deletions
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 22653096e527..4033340df105 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -303,7 +303,7 @@ with pkgs; composableDerivation = callPackage ../../lib/composable-derivation.nix { }; - platforms = import ./platforms.nix; + inherit (lib.systems) platforms; setJavaClassPath = makeSetupHook { } ../build-support/setup-hooks/set-java-classpath.sh; diff --git a/pkgs/top-level/default.nix b/pkgs/top-level/default.nix index 3e3ecdeea6cb..5d3da35c54fb 100644 --- a/pkgs/top-level/default.nix +++ b/pkgs/top-level/default.nix @@ -40,6 +40,7 @@ let # Rename the function arguments configExpr = config; + crossSystem0 = crossSystem; in let lib = import ../../lib; @@ -52,12 +53,15 @@ in let then configExpr { inherit pkgs; } else configExpr; - # Allow setting the platform in the config file. Otherwise, let's use a - # reasonable default. - localSystem = - { platform = (import ./platforms.nix).selectPlatformBySystem args.localSystem.system; } - // builtins.intersectAttrs { platform = null; } config - // args.localSystem; + # From a minimum of `system` or `config` (actually a target triple, *not* + # nixpkgs configuration), infer the other one and platform as needed. + localSystem = lib.systems.elaborate ( + # Allow setting the platform in the config file. This take precedence over + # the inferred platform, but not over an explicitly passed-in onw. + builtins.intersectAttrs { platform = null; } config + // args.localSystem); + + crossSystem = lib.mapNullable lib.systems.elaborate crossSystem0; # A few packages make a new package set to draw their dependencies from. # (Currently to get a cross tool chain, or forced-i686 package.) Rather than diff --git a/pkgs/top-level/platforms.nix b/pkgs/top-level/platforms.nix deleted file mode 100644 index 665950766f7e..000000000000 --- a/pkgs/top-level/platforms.nix +++ /dev/null @@ -1,486 +0,0 @@ -rec { - pcBase = { - name = "pc"; - uboot = null; - kernelHeadersBaseConfig = "defconfig"; - kernelBaseConfig = "defconfig"; - # Build whatever possible as a module, if not stated in the extra config. - kernelAutoModules = true; - kernelTarget = "bzImage"; - }; - - pc64 = pcBase // { kernelArch = "x86_64"; }; - - pc32 = pcBase // { kernelArch = "i386"; }; - - pc32_simplekernel = pc32 // { - kernelAutoModules = false; - }; - - pc64_simplekernel = pc64 // { - kernelAutoModules = false; - }; - - sheevaplug = { - name = "sheevaplug"; - kernelMajor = "2.6"; - kernelHeadersBaseConfig = "multi_v5_defconfig"; - kernelBaseConfig = "multi_v5_defconfig"; - kernelArch = "arm"; - kernelAutoModules = false; - kernelExtraConfig = '' - BLK_DEV_RAM y - BLK_DEV_INITRD y - BLK_DEV_CRYPTOLOOP m - BLK_DEV_DM m - DM_CRYPT m - MD y - REISERFS_FS m - BTRFS_FS m - XFS_FS m - JFS_FS m - EXT4_FS m - USB_STORAGE_CYPRESS_ATACB m - - # mv cesa requires this sw fallback, for mv-sha1 - CRYPTO_SHA1 y - # Fast crypto - CRYPTO_TWOFISH y - CRYPTO_TWOFISH_COMMON y - CRYPTO_BLOWFISH y - CRYPTO_BLOWFISH_COMMON y - - IP_PNP y - IP_PNP_DHCP y - NFS_FS y - ROOT_NFS y - TUN m - NFS_V4 y - NFS_V4_1 y - NFS_FSCACHE y - NFSD m - NFSD_V2_ACL y - NFSD_V3 y - NFSD_V3_ACL y - NFSD_V4 y - NETFILTER y - IP_NF_IPTABLES y - IP_NF_FILTER y - IP_NF_MATCH_ADDRTYPE y - IP_NF_TARGET_LOG y - IP_NF_MANGLE y - IPV6 m - VLAN_8021Q m - - CIFS y - CIFS_XATTR y - CIFS_POSIX y - CIFS_FSCACHE y - CIFS_ACL y - - WATCHDOG y - WATCHDOG_CORE y - ORION_WATCHDOG m - - ZRAM m - NETCONSOLE m - - # Disable OABI to have seccomp_filter (required for systemd) - # https://github.com/raspberrypi/firmware/issues/651 - OABI_COMPAT n - - # Fail to build - DRM n - SCSI_ADVANSYS n - USB_ISP1362_HCD n - SND_SOC n - SND_ALI5451 n - FB_SAVAGE n - SCSI_NSP32 n - ATA_SFF n - SUNGEM n - IRDA n - ATM_HE n - SCSI_ACARD n - BLK_DEV_CMD640_ENHANCED n - - FUSE_FS m - - # systemd uses cgroups - CGROUPS y - - # Latencytop - LATENCYTOP y - - # Ubi for the mtd - MTD_UBI y - UBIFS_FS y - UBIFS_FS_XATTR y - UBIFS_FS_ADVANCED_COMPR y - UBIFS_FS_LZO y - UBIFS_FS_ZLIB y - UBIFS_FS_DEBUG n - - # Kdb, for kernel troubles - KGDB y - KGDB_SERIAL_CONSOLE y - KGDB_KDB y - ''; - kernelMakeFlags = [ "LOADADDR=0x0200000" ]; - kernelTarget = "uImage"; - uboot = "sheevaplug"; - # Only for uboot = uboot : - ubootConfig = "sheevaplug_config"; - kernelDTB = true; # Beyond 3.10 - gcc = { - arch = "armv5te"; - float = "soft"; - }; - }; - - raspberrypi = { - name = "raspberrypi"; - kernelMajor = "2.6"; - kernelHeadersBaseConfig = "bcm2835_defconfig"; - kernelBaseConfig = "bcmrpi_defconfig"; - kernelDTB = true; - kernelArch = "arm"; - kernelAutoModules = false; - kernelExtraConfig = '' - BLK_DEV_RAM y - BLK_DEV_INITRD y - BLK_DEV_CRYPTOLOOP m - BLK_DEV_DM m - DM_CRYPT m - MD y - REISERFS_FS m - BTRFS_FS y - XFS_FS m - JFS_FS y - EXT4_FS y - - IP_PNP y - IP_PNP_DHCP y - NFS_FS y - ROOT_NFS y - TUN m - NFS_V4 y - NFS_V4_1 y - NFS_FSCACHE y - NFSD m - NFSD_V2_ACL y - NFSD_V3 y - NFSD_V3_ACL y - NFSD_V4 y - NETFILTER y - IP_NF_IPTABLES y - IP_NF_FILTER y - IP_NF_MATCH_ADDRTYPE y - IP_NF_TARGET_LOG y - IP_NF_MANGLE y - IPV6 m - VLAN_8021Q m - - CIFS y - CIFS_XATTR y - CIFS_POSIX y - CIFS_FSCACHE y - CIFS_ACL y - - ZRAM m - - # Disable OABI to have seccomp_filter (required for systemd) - # https://github.com/raspberrypi/firmware/issues/651 - OABI_COMPAT n - - # Fail to build - DRM n - SCSI_ADVANSYS n - USB_ISP1362_HCD n - SND_SOC n - SND_ALI5451 n - FB_SAVAGE n - SCSI_NSP32 n - ATA_SFF n - SUNGEM n - IRDA n - ATM_HE n - SCSI_ACARD n - BLK_DEV_CMD640_ENHANCED n - - FUSE_FS m - - # nixos mounts some cgroup - CGROUPS y - - # Latencytop - LATENCYTOP y - ''; - kernelTarget = "zImage"; - uboot = null; - gcc = { - arch = "armv6"; - fpu = "vfp"; - float = "hard"; - }; - }; - - raspberrypi2 = armv7l-hf-multiplatform // { - name = "raspberrypi2"; - kernelBaseConfig = "bcm2709_defconfig"; - kernelDTB = true; - kernelAutoModules = false; - kernelExtraConfig = '' - BLK_DEV_RAM y - BLK_DEV_INITRD y - BLK_DEV_CRYPTOLOOP m - BLK_DEV_DM m - DM_CRYPT m - MD y - REISERFS_FS m - BTRFS_FS y - XFS_FS m - JFS_FS y - EXT4_FS y - - IP_PNP y - IP_PNP_DHCP y - NFS_FS y - ROOT_NFS y - TUN m - NFS_V4 y - NFS_V4_1 y - NFS_FSCACHE y - NFSD m - NFSD_V2_ACL y - NFSD_V3 y - NFSD_V3_ACL y - NFSD_V4 y - NETFILTER y - IP_NF_IPTABLES y - IP_NF_FILTER y - IP_NF_MATCH_ADDRTYPE y - IP_NF_TARGET_LOG y - IP_NF_MANGLE y - IPV6 m - VLAN_8021Q m - - CIFS y - CIFS_XATTR y - CIFS_POSIX y - CIFS_FSCACHE y - CIFS_ACL y - - ZRAM m - - # Disable OABI to have seccomp_filter (required for systemd) - # https://github.com/raspberrypi/firmware/issues/651 - OABI_COMPAT n - - # Fail to build - DRM n - SCSI_ADVANSYS n - USB_ISP1362_HCD n - SND_SOC n - SND_ALI5451 n - FB_SAVAGE n - SCSI_NSP32 n - ATA_SFF n - SUNGEM n - IRDA n - ATM_HE n - SCSI_ACARD n - BLK_DEV_CMD640_ENHANCED n - - FUSE_FS m - - # nixos mounts some cgroup - CGROUPS y - - # Latencytop - LATENCYTOP y - - # Disable the common config Xen, it doesn't build on ARM - XEN? n - ''; - kernelTarget = "zImage"; - uboot = null; - }; - - guruplug = sheevaplug // { - # Define `CONFIG_MACH_GURUPLUG' (see - # <http://kerneltrap.org/mailarchive/git-commits-head/2010/5/19/33618>) - # and other GuruPlug-specific things. Requires the `guruplug-defconfig' - # patch. - - kernelBaseConfig = "guruplug_defconfig"; - #kernelHeadersBaseConfig = "guruplug_defconfig"; - }; - - fuloong2f_n32 = { - name = "fuloong2f_n32"; - kernelMajor = "2.6"; - kernelHeadersBaseConfig = "fuloong2e_defconfig"; - kernelBaseConfig = "lemote2f_defconfig"; - kernelArch = "mips"; - kernelAutoModules = false; - kernelExtraConfig = '' - MIGRATION n - COMPACTION n - - # nixos mounts some cgroup - CGROUPS y - - BLK_DEV_RAM y - BLK_DEV_INITRD y - BLK_DEV_CRYPTOLOOP m - BLK_DEV_DM m - DM_CRYPT m - MD y - REISERFS_FS m - EXT4_FS m - USB_STORAGE_CYPRESS_ATACB m - - IP_PNP y - IP_PNP_DHCP y - IP_PNP_BOOTP y - NFS_FS y - ROOT_NFS y - TUN m - NFS_V4 y - NFS_V4_1 y - NFS_FSCACHE y - NFSD m - NFSD_V2_ACL y - NFSD_V3 y - NFSD_V3_ACL y - NFSD_V4 y - - # Fail to build - DRM n - SCSI_ADVANSYS n - USB_ISP1362_HCD n - SND_SOC n - SND_ALI5451 n - FB_SAVAGE n - SCSI_NSP32 n - ATA_SFF n - SUNGEM n - IRDA n - ATM_HE n - SCSI_ACARD n - BLK_DEV_CMD640_ENHANCED n - - FUSE_FS m - - # Needed for udev >= 150 - SYSFS_DEPRECATED_V2 n - - VGA_CONSOLE n - VT_HW_CONSOLE_BINDING y - SERIAL_8250_CONSOLE y - FRAMEBUFFER_CONSOLE y - EXT2_FS y - EXT3_FS y - REISERFS_FS y - MAGIC_SYSRQ y - - # The kernel doesn't boot at all, with FTRACE - FTRACE n - ''; - kernelTarget = "vmlinux"; - uboot = null; - gcc.arch = "loongson2f"; - }; - - beaglebone = armv7l-hf-multiplatform // { - name = "beaglebone"; - kernelBaseConfig = "omap2plus_defconfig"; - kernelAutoModules = false; - kernelExtraConfig = ""; # TBD kernel config - kernelTarget = "zImage"; - uboot = null; - }; - - armv7l-hf-multiplatform = { - name = "armv7l-hf-multiplatform"; - kernelMajor = "2.6"; # Using "2.6" enables 2.6 kernel syscalls in glibc. - kernelHeadersBaseConfig = "multi_v7_defconfig"; - kernelBaseConfig = "multi_v7_defconfig"; - kernelArch = "arm"; - kernelDTB = true; - kernelAutoModules = true; - kernelPreferBuiltin = true; - uboot = null; - kernelTarget = "zImage"; - kernelExtraConfig = '' - # Fix broken sunxi-sid nvmem driver. - TI_CPTS y - - # Hangs ODROID-XU4 - ARM_BIG_LITTLE_CPUIDLE n - ''; - gcc = { - # Some table about fpu flags: - # http://community.arm.com/servlet/JiveServlet/showImage/38-1981-3827/blogentry-103749-004812900+1365712953_thumb.png - # Cortex-A5: -mfpu=neon-fp16 - # Cortex-A7 (rpi2): -mfpu=neon-vfpv4 - # Cortex-A8 (beaglebone): -mfpu=neon - # Cortex-A9: -mfpu=neon-fp16 - # Cortex-A15: -mfpu=neon-vfpv4 - - # More about FPU: - # https://wiki.debian.org/ArmHardFloatPort/VfpComparison - - # vfpv3-d16 is what Debian uses and seems to be the best compromise: NEON is not supported in e.g. Scaleway or Tegra 2, - # and the above page suggests NEON is only an improvement with hand-written assembly. - arch = "armv7-a"; - fpu = "vfpv3-d16"; - float = "hard"; - - # For Raspberry Pi the 2 the best would be: - # cpu = "cortex-a7"; - # fpu = "neon-vfpv4"; - }; - }; - - 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 = true; - kernelPreferBuiltin = true; - kernelExtraConfig = '' - # Raspberry Pi 3 stuff. Not needed for kernels >= 4.10. - ARCH_BCM2835 y - BCM2835_MBOX y - BCM2835_WDT y - RASPBERRYPI_FIRMWARE y - RASPBERRYPI_POWER y - SERIAL_8250_BCM2835AUX y - SERIAL_8250_EXTENDED y - SERIAL_8250_SHARE_IRQ y - - # Cavium ThunderX stuff. - PCI_HOST_THUNDER_ECAM 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; -} diff --git a/pkgs/top-level/release-cross.nix b/pkgs/top-level/release-cross.nix index f9382985fcd1..67f3d55fa167 100644 --- a/pkgs/top-level/release-cross.nix +++ b/pkgs/top-level/release-cross.nix @@ -1,4 +1,3 @@ - { # The platforms for which we build Nixpkgs. supportedSystems ? [ builtins.currentSystem ] , # Strip most of attributes when evaluating to spare memory usage @@ -8,8 +7,6 @@ with import ./release-lib.nix { inherit supportedSystems scrubJobs; }; let - inherit (pkgs) lib; - nativePlatforms = linux; /* Basic list of packages to cross-build */ @@ -50,11 +47,11 @@ in # cause false negatives. testEqualOne = path: system: let f = path: attrs: builtins.toString (lib.getAttrFromPath path (allPackages attrs)); - in assert + in assertTrue ( f path { inherit system; } == f (["buildPackages"] ++ path) { inherit system crossSystem; }; - true; + ); testEqual = path: systems: forAllSupportedSystems systems (testEqualOne path); @@ -139,16 +136,7 @@ in float = "hard"; withTLS = true; libc = "glibc"; - platform = { - name = "fuloong-minipc"; - kernelMajor = "2.6"; - kernelBaseConfig = "lemote2f_defconfig"; - kernelHeadersBaseConfig = "fuloong2e_defconfig"; - uboot = null; - kernelArch = "mips"; - kernelAutoModules = false; - kernelTarget = "vmlinux"; - }; + platform = lib.platforms.fuloong2f_n32; openssl.system = "linux-generic32"; gcc = { arch = "loongson2f"; @@ -172,7 +160,7 @@ in fpu = "vfp"; withTLS = true; libc = "glibc"; - platform = pkgs.platforms.raspberrypi; + platform = lib.platforms.raspberrypi; openssl.system = "linux-generic32"; gcc = { arch = "armv6"; diff --git a/pkgs/top-level/release-lib.nix b/pkgs/top-level/release-lib.nix index 59d571f0bd18..ddc449ae59c1 100644 --- a/pkgs/top-level/release-lib.nix +++ b/pkgs/top-level/release-lib.nix @@ -5,13 +5,16 @@ nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; } }: -with import ../../lib; +let + lib = import ../../lib; +in with lib; rec { allPackages = args: packageSet (args // nixpkgsArgs); pkgs = pkgsFor "x86_64-linux"; + inherit lib; hydraJob' = if scrubJobs then hydraJob else id; @@ -41,6 +44,11 @@ rec { pkgs_x86_64_cygwin = allPackages { system = "x86_64-cygwin"; }; + assertTrue = bool: + if bool + then pkgs.runCommand "evaluated-to-true" {} "touch $out" + else pkgs.runCommand "evaluated-to-false" {} "false"; + /* The working or failing mails for cross builds will be sent only to the following maintainers, as most package maintainers will not be interested in the result of cross building a package. */ diff --git a/pkgs/top-level/release-python.nix b/pkgs/top-level/release-python.nix index 0fbd5e50d12e..3bc252e440f7 100644 --- a/pkgs/top-level/release-python.nix +++ b/pkgs/top-level/release-python.nix @@ -3,14 +3,14 @@ $ hydra-eval-jobs pkgs/top-level/release-python.nix */ -{ nixpkgs ? { outPath = (import ../.. {}).lib.cleanSource ../..; revCount = 1234; shortRev = "abcdef"; } +{ nixpkgs ? { outPath = (import ../../lib).cleanSource ../..; revCount = 1234; shortRev = "abcdef"; } , officialRelease ? false , # The platforms for which we build Nixpkgs. supportedSystems ? [ "x86_64-linux" ] }: -with import ../../lib; with import ./release-lib.nix {inherit supportedSystems; }; +with lib; let packagePython = mapAttrs (name: value: diff --git a/pkgs/top-level/release-small.nix b/pkgs/top-level/release-small.nix index b12eda6f150d..f329f2460d71 100644 --- a/pkgs/top-level/release-small.nix +++ b/pkgs/top-level/release-small.nix @@ -1,7 +1,7 @@ /* A small release file, with few packages to be built. The aim is to reduce the load on Hydra when testing the `stdenv-updates' branch. */ -{ nixpkgs ? { outPath = (import ../.. {}).lib.cleanSource ../..; revCount = 1234; shortRev = "abcdef"; } +{ nixpkgs ? { outPath = (import ../../lib).cleanSource ../..; revCount = 1234; shortRev = "abcdef"; } , supportedSystems ? [ "x86_64-linux" "i686-linux" "x86_64-darwin" ] }: diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 66ff9a9e6b98..cf4d54fe0496 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -9,7 +9,7 @@ $ nix-build pkgs/top-level/release.nix -A coreutils.x86_64-linux */ -{ nixpkgs ? { outPath = (import ../.. {}).lib.cleanSource ../..; revCount = 1234; shortRev = "abcdef"; } +{ nixpkgs ? { outPath = (import ../../lib).cleanSource ../..; revCount = 1234; shortRev = "abcdef"; } , officialRelease ? false , # The platforms for which we build Nixpkgs. supportedSystems ? [ "x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-linux" ] @@ -22,16 +22,13 @@ with import ./release-lib.nix { inherit supportedSystems scrubJobs nixpkgsArgs; }; let - - lib = pkgs.lib; - jobs = { tarball = import ./make-tarball.nix { inherit pkgs nixpkgs officialRelease; }; metrics = import ./metrics.nix { inherit pkgs nixpkgs; }; manual = import ../../doc; - lib-tests = import ../../lib/tests/release.nix { inherit nixpkgs; }; + lib-tests = import ../../lib/tests/release.nix { inherit nixpkgs supportedSystems scrubJobs; }; darwin-tested = pkgs.releaseTools.aggregate { name = "nixpkgs-darwin-${jobs.tarball.version}"; @@ -55,7 +52,6 @@ let [ jobs.tarball jobs.metrics jobs.manual - jobs.lib-tests jobs.stdenv.x86_64-linux jobs.stdenv.i686-linux jobs.stdenv.x86_64-darwin @@ -82,7 +78,8 @@ let jobs.git.x86_64-darwin jobs.mysql.x86_64-darwin jobs.vim.x86_64-darwin - ] ++ lib.collect lib.isDerivation jobs.stdenvBootstrapTools; + ] ++ lib.collect lib.isDerivation jobs.stdenvBootstrapTools + ++ lib.collect lib.isDerivation jobs.lib-tests; }; } // (lib.optionalAttrs (builtins.elem "i686-linux" supportedSystems) { stdenvBootstrapTools.i686-linux = |