From 2dfee94fe7d51747744964a9fd5a31acefdadf35 Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Sun, 11 Feb 2018 14:20:14 -0600 Subject: [PATCH 1/2] lib/systems: musl, libc predicates Note this doesn't actually provide musl support yet, just improves our "system" code to understand musl-based triples and non-glibc linux configurations. --- lib/systems/default.nix | 4 +++- lib/systems/examples.nix | 17 +++++++++++------ lib/systems/inspect.nix | 3 +++ lib/systems/parse.nix | 3 +++ 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/lib/systems/default.nix b/lib/systems/default.nix index b1036b80c4d..ffd14b4e85b 100644 --- a/lib/systems/default.nix +++ b/lib/systems/default.nix @@ -26,7 +26,9 @@ rec { libc = /**/ if final.isDarwin then "libSystem" else if final.isMinGW then "msvcrt" - else if final.isLinux then "glibc" + else if final.isLinux && final.isGlibc then "glibc" + else if final.isLinux && final.isMusl then "musl" + else if final.isLinux /* default */ then "glibc" # TODO(@Ericson2314) think more about other operating systems else "native/impure"; extensions = { diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index 5fc36c5b056..f5562e28a09 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -13,7 +13,6 @@ rec { config = "armv5tel-unknown-linux-gnueabi"; arch = "armv5tel"; float = "soft"; - libc = "glibc"; platform = platforms.sheevaplug; }; @@ -22,7 +21,6 @@ rec { arch = "armv6l"; float = "hard"; fpu = "vfp"; - libc = "glibc"; platform = platforms.raspberrypi; }; @@ -31,14 +29,12 @@ rec { arch = "armv7-a"; float = "hard"; fpu = "vfpv3-d16"; - libc = "glibc"; platform = platforms.armv7l-hf-multiplatform; }; aarch64-multiplatform = rec { config = "aarch64-unknown-linux-gnu"; arch = "aarch64"; - libc = "glibc"; platform = platforms.aarch64-multiplatform; }; @@ -51,7 +47,6 @@ rec { arch = "armv5tel"; config = "armv5tel-unknown-linux-gnueabi"; float = "soft"; - libc = "glibc"; platform = platforms.pogoplug4; }; @@ -59,10 +54,20 @@ rec { config = "mips64el-unknown-linux-gnu"; arch = "mips"; float = "hard"; - libc = "glibc"; platform = platforms.fuloong2f_n32; }; + muslpi = raspberryPi // { + config = "armv6l-unknown-linux-musleabihf"; + }; + + aarch64-multiplatform-musl = aarch64-multiplatform // { + config = "aarch64-unknown-linux-musl"; + }; + + musl64 = { config = "x86_64-unknown-linux-musl"; }; + musl32 = { config = "i686-unknown-linux-musl"; }; + # # Darwin # diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index 3f0335a0adf..487729423a1 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -33,6 +33,9 @@ rec { Windows = { kernel = kernels.windows; }; Cygwin = { kernel = kernels.windows; abi = abis.cygnus; }; MinGW = { kernel = kernels.windows; abi = abis.gnu; }; + + Musl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ]; + Glibc = with abis; map (a: { abi = a; }) [ gnu gnueabi gnueabihf ]; }; matchAnyAttrs = patterns: diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index 37a8c848c5d..95759b93ae0 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -180,6 +180,9 @@ rec { androideabi = {}; gnueabi = {}; gnueabihf = {}; + musleabi = {}; + musleabihf = {}; + musl = {}; unknown = {}; }; From f090bbb248c547c0aa883c46253c62050b5c797a Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Sun, 11 Feb 2018 14:55:17 -0600 Subject: [PATCH 2/2] Drop "isGlibc", but keep isMusl. gnu "abi" doesn't mean glibc (mingw, apparently). --- lib/systems/default.nix | 3 +-- lib/systems/inspect.nix | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/systems/default.nix b/lib/systems/default.nix index ffd14b4e85b..0729cc7ef29 100644 --- a/lib/systems/default.nix +++ b/lib/systems/default.nix @@ -26,8 +26,7 @@ rec { libc = /**/ if final.isDarwin then "libSystem" else if final.isMinGW then "msvcrt" - else if final.isLinux && final.isGlibc then "glibc" - else if final.isLinux && final.isMusl then "musl" + else if final.isMusl then "musl" else if final.isLinux /* default */ then "glibc" # TODO(@Ericson2314) think more about other operating systems else "native/impure"; diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index 487729423a1..0fce5254dcb 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -35,7 +35,6 @@ rec { MinGW = { kernel = kernels.windows; abi = abis.gnu; }; Musl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ]; - Glibc = with abis; map (a: { abi = a; }) [ gnu gnueabi gnueabihf ]; }; matchAnyAttrs = patterns: