diff options
author | John Ericson <Ericson2314@Yahoo.com> | 2017-02-08 21:27:22 -0500 |
---|---|---|
committer | John Ericson <Ericson2314@Yahoo.com> | 2017-04-17 17:13:01 -0400 |
commit | 22277893923cdf26004d83b608b7e1c3ca7030fb (patch) | |
tree | acfb682574364c067efd5916caa67b1a0d431955 /lib | |
parent | b477851f3427e3353d530ab0d47b63fe2686dd4b (diff) |
lib: Collect system/platform related files
Previously, platforms was a random thing in top-level
Diffstat (limited to 'lib')
-rw-r--r-- | lib/default.nix | 9 | ||||
-rw-r--r-- | lib/systems/default.nix | 5 | ||||
-rw-r--r-- | lib/systems/doubles.nix (renamed from lib/platforms.nix) | 2 | ||||
-rw-r--r-- | lib/systems/parse.nix (renamed from lib/systems.nix) | 6 | ||||
-rw-r--r-- | lib/systems/platforms.nix | 486 |
5 files changed, 500 insertions, 8 deletions
diff --git a/lib/default.nix b/lib/default.nix index 09a64f754d8f..9dfaa46ec3b2 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -22,8 +22,7 @@ let # constants licenses = import ./licenses.nix; - platforms = import ./platforms.nix; - systems = import ./systems.nix; + systems = import ./systems; # misc debug = import ./debug.nix; @@ -42,13 +41,15 @@ in attrsets lists strings stringsWithDeps customisation maintainers meta sources modules options types - licenses platforms systems + licenses systems debug generators misc sandbox fetchers filesystem; + + # back-compat aliases + platforms = systems.doubles; } # !!! don't include everything at top-level; perhaps only the most # commonly used functions. // trivial // lists // strings // stringsWithDeps // attrsets // sources // options // types // meta // debug // misc // modules - // systems // customisation diff --git a/lib/systems/default.nix b/lib/systems/default.nix new file mode 100644 index 000000000000..70d431837daa --- /dev/null +++ b/lib/systems/default.nix @@ -0,0 +1,5 @@ +rec { + doubles = import ./doubles.nix; + parse = import ./parse.nix; + platforms = import ./platforms.nix; +} diff --git a/lib/platforms.nix b/lib/systems/doubles.nix index 6b56e1734ad6..945147fe7cfb 100644 --- a/lib/platforms.nix +++ b/lib/systems/doubles.nix @@ -1,4 +1,4 @@ -let lists = import ./lists.nix; in +let lists = import ../lists.nix; in rec { all = linux ++ darwin ++ cygwin ++ freebsd ++ openbsd ++ netbsd ++ illumos; diff --git a/lib/systems.nix b/lib/systems/parse.nix index 92d8bdf892b4..410995f8a5d7 100644 --- a/lib/systems.nix +++ b/lib/systems/parse.nix @@ -1,9 +1,9 @@ # Define the list of system with their properties. Only systems tested for # Nixpkgs are listed below -with import ./lists.nix; -with import ./types.nix; -with import ./attrsets.nix; +with import ../lists.nix; +with import ../types.nix; +with import ../attrsets.nix; let lib = import ./default.nix; diff --git a/lib/systems/platforms.nix b/lib/systems/platforms.nix new file mode 100644 index 000000000000..665950766f7e --- /dev/null +++ b/lib/systems/platforms.nix @@ -0,0 +1,486 @@ +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; +} |