summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJohn Ericson <Ericson2314@Yahoo.com>2017-02-08 21:27:22 -0500
committerJohn Ericson <Ericson2314@Yahoo.com>2017-04-17 17:13:01 -0400
commit22277893923cdf26004d83b608b7e1c3ca7030fb (patch)
treeacfb682574364c067efd5916caa67b1a0d431955 /lib
parentb477851f3427e3353d530ab0d47b63fe2686dd4b (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.nix9
-rw-r--r--lib/systems/default.nix5
-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.nix486
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;
+}