Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lib/systems: rename examples.nix to all.nix, include alias #175341

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
336 changes: 336 additions & 0 deletions lib/systems/all.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,336 @@
# These can be passed to nixpkgs as either the `localSystem` or
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You need to add this to lib/systems/default.nix (here). It doesn't seem to do any magic

Copy link
Author

@ghost ghost May 30, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why plural "PRs"? Better to do it in one swoop to avoid more new references being added.

Okay!

Did you mean trace instead of throw?

Ah, I was wondering how to have nixpkgs print a "warning". I assumed trace was supposed to be for debugging only. If it is okay to commit expressions that use it to print warnings, then I would like to add that as an additional step:

At some point in the future I would like to gradually migrate towards removing the alias, in steps:

  1. merge this commit
  2. replace the examples.nix alias with a trace
  3. replace the trace with a throw
  4. drop examples.nix entirely

...with no more than one step taken in each twice-per-year release.

I have edited the topmost comment to reflect this.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I meant:

  all = import ./all.nix { inherit lib; };
  examples = import ./examples.nix { inherit lib; };

We can't change the file structure yet since people might be importing lib/systems/examples.nix directly for whatever reason, so this file should just have a 1-1 mapping of the directory structure.

# `crossSystem`. They are put here for user convenience, but also used by cross
# tests and linux cross stdenv building, so handle with care!
{ lib }:
let
platforms = import ./platforms.nix { inherit lib; };

riscv = bits: {
config = "riscv${bits}-unknown-linux-gnu";
};
in

rec {
#
# Linux
#
powernv = {
config = "powerpc64le-unknown-linux-gnu";
};
musl-power = {
config = "powerpc64le-unknown-linux-musl";
};

ppc64 = {
config = "powerpc64-unknown-linux-gnu";
gcc = { abi = "elfv2"; }; # for gcc configuration
};
ppc64-musl = {
config = "powerpc64-unknown-linux-musl";
gcc = { abi = "elfv2"; }; # for gcc configuration
};

sheevaplug = {
config = "armv5tel-unknown-linux-gnueabi";
} // platforms.sheevaplug;

raspberryPi = {
config = "armv6l-unknown-linux-gnueabihf";
} // platforms.raspberrypi;

remarkable1 = {
config = "armv7l-unknown-linux-gnueabihf";
} // platforms.zero-gravitas;

remarkable2 = {
config = "armv7l-unknown-linux-gnueabihf";
} // platforms.zero-sugar;

armv7l-hf-multiplatform = {
config = "armv7l-unknown-linux-gnueabihf";
};

aarch64-multiplatform = {
config = "aarch64-unknown-linux-gnu";
};

armv7a-android-prebuilt = {
config = "armv7a-unknown-linux-androideabi";
rustc.config = "armv7-linux-androideabi";
sdkVer = "29";
ndkVer = "21";
useAndroidPrebuilt = true;
} // platforms.armv7a-android;

aarch64-android-prebuilt = {
config = "aarch64-unknown-linux-android";
rustc.config = "aarch64-linux-android";
sdkVer = "29";
ndkVer = "21";
useAndroidPrebuilt = true;
};

aarch64-android = {
config = "aarch64-unknown-linux-android";
sdkVer = "30";
ndkVer = "21";
libc = "bionic";
useAndroidPrebuilt = false;
useLLVM = true;
};

pogoplug4 = {
config = "armv5tel-unknown-linux-gnueabi";
} // platforms.pogoplug4;

ben-nanonote = {
config = "mipsel-unknown-linux-uclibc";
} // platforms.ben_nanonote;

fuloongminipc = {
config = "mipsel-unknown-linux-gnu";
} // platforms.fuloong2f_n32;

# MIPS ABI table transcribed from here: https://wiki.debian.org/Multiarch/Tuples

# can execute on 32bit chip
mips-linux-gnu = { config = "mips-linux-gnu"; } // platforms.gcc_mips32r2_o32;
mipsel-linux-gnu = { config = "mipsel-linux-gnu"; } // platforms.gcc_mips32r2_o32;
mipsisa32r6-linux-gnu = { config = "mipsisa32r6-linux-gnu"; } // platforms.gcc_mips32r6_o32;
mipsisa32r6el-linux-gnu = { config = "mipsisa32r6el-linux-gnu"; } // platforms.gcc_mips32r6_o32;

# require 64bit chip (for more registers, 64-bit floating point, 64-bit "long long") but use 32bit pointers
mips64-linux-gnuabin32 = { config = "mips64-linux-gnuabin32"; } // platforms.gcc_mips64r2_n32;
mips64el-linux-gnuabin32 = { config = "mips64el-linux-gnuabin32"; } // platforms.gcc_mips64r2_n32;
mipsisa64r6-linux-gnuabin32 = { config = "mipsisa64r6-linux-gnuabin32"; } // platforms.gcc_mips64r6_n32;
mipsisa64r6el-linux-gnuabin32 = { config = "mipsisa64r6el-linux-gnuabin32"; } // platforms.gcc_mips64r6_n32;

# 64bit pointers
mips64-linux-gnuabi64 = { config = "mips64-linux-gnuabi64"; } // platforms.gcc_mips64r2_64;
mips64el-linux-gnuabi64 = { config = "mips64el-linux-gnuabi64"; } // platforms.gcc_mips64r2_64;
mipsisa64r6-linux-gnuabi64 = { config = "mipsisa64r6-linux-gnuabi64"; } // platforms.gcc_mips64r6_64;
mipsisa64r6el-linux-gnuabi64 = { config = "mipsisa64r6el-linux-gnuabi64"; } // platforms.gcc_mips64r6_64;

muslpi = raspberryPi // {
config = "armv6l-unknown-linux-musleabihf";
};

aarch64-multiplatform-musl = {
config = "aarch64-unknown-linux-musl";
};

gnu64 = { config = "x86_64-unknown-linux-gnu"; };
gnu32 = { config = "i686-unknown-linux-gnu"; };

musl64 = { config = "x86_64-unknown-linux-musl"; };
musl32 = { config = "i686-unknown-linux-musl"; };

riscv64 = riscv "64";
riscv32 = riscv "32";

riscv64-embedded = {
config = "riscv64-none-elf";
libc = "newlib";
};

riscv32-embedded = {
config = "riscv32-none-elf";
libc = "newlib";
};

mmix = {
config = "mmix-unknown-mmixware";
libc = "newlib";
};

rx-embedded = {
config = "rx-none-elf";
libc = "newlib";
};

msp430 = {
config = "msp430-elf";
libc = "newlib";
};

avr = {
config = "avr";
};

vc4 = {
config = "vc4-elf";
libc = "newlib";
};

or1k = {
config = "or1k-elf";
libc = "newlib";
};

m68k = {
config = "m68k-unknown-linux-gnu";
};

s390 = {
config = "s390-unknown-linux-gnu";
};

s390x = {
config = "s390x-unknown-linux-gnu";
};

arm-embedded = {
config = "arm-none-eabi";
libc = "newlib";
};
armhf-embedded = {
config = "arm-none-eabihf";
libc = "newlib";
# GCC8+ does not build without this
# (https://www.mail-archive.com/gcc-bugs@gcc.gnu.org/msg552339.html):
gcc = {
arch = "armv5t";
fpu = "vfp";
};
};

aarch64-embedded = {
config = "aarch64-none-elf";
libc = "newlib";
};

aarch64be-embedded = {
config = "aarch64_be-none-elf";
libc = "newlib";
};

ppc-embedded = {
config = "powerpc-none-eabi";
libc = "newlib";
};

ppcle-embedded = {
config = "powerpcle-none-eabi";
libc = "newlib";
};

i686-embedded = {
config = "i686-elf";
libc = "newlib";
};

x86_64-embedded = {
config = "x86_64-elf";
libc = "newlib";
};

#
# Redox
#

x86_64-unknown-redox = {
config = "x86_64-unknown-redox";
libc = "relibc";
};

#
# Darwin
#

iphone64 = {
config = "aarch64-apple-ios";
# config = "aarch64-apple-darwin14";
sdkVer = "14.3";
xcodeVer = "12.3";
xcodePlatform = "iPhoneOS";
useiOSPrebuilt = true;
};

iphone32 = {
config = "armv7a-apple-ios";
# config = "arm-apple-darwin10";
sdkVer = "14.3";
xcodeVer = "12.3";
xcodePlatform = "iPhoneOS";
useiOSPrebuilt = true;
};

iphone64-simulator = {
config = "x86_64-apple-ios";
# config = "x86_64-apple-darwin14";
sdkVer = "14.3";
xcodeVer = "12.3";
xcodePlatform = "iPhoneSimulator";
darwinPlatform = "ios-simulator";
useiOSPrebuilt = true;
};

iphone32-simulator = {
config = "i686-apple-ios";
# config = "i386-apple-darwin11";
sdkVer = "14.3";
xcodeVer = "12.3";
xcodePlatform = "iPhoneSimulator";
darwinPlatform = "ios-simulator";
useiOSPrebuilt = true;
};

aarch64-darwin = {
config = "aarch64-apple-darwin";
xcodePlatform = "MacOSX";
platform = {};
};

x86_64-darwin = {
config = "x86_64-apple-darwin";
xcodePlatform = "MacOSX";
platform = {};
};

#
# Windows
#

# 32 bit mingw-w64
mingw32 = {
config = "i686-w64-mingw32";
libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
};

# 64 bit mingw-w64
mingwW64 = {
# That's the triplet they use in the mingw-w64 docs.
config = "x86_64-w64-mingw32";
libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
};

# BSDs

amd64-netbsd = lib.warn "The amd64-netbsd system example is deprecated. Use x86_64-netbsd instead." x86_64-netbsd;

x86_64-netbsd = {
config = "x86_64-unknown-netbsd";
libc = "nblibc";
};

# this is broken and never worked fully
x86_64-netbsd-llvm = {
config = "x86_64-unknown-netbsd";
libc = "nblibc";
useLLVM = true;
};

#
# WASM
#

wasi32 = {
config = "wasm32-unknown-wasi";
useLLVM = true;
};

# Ghcjs
ghcjs = {
config = "js-unknown-ghcjs";
};
}
2 changes: 1 addition & 1 deletion lib/systems/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ rec {
parse = import ./parse.nix { inherit lib; };
inspect = import ./inspect.nix { inherit lib; };
platforms = import ./platforms.nix { inherit lib; };
examples = import ./examples.nix { inherit lib; };
examples = import ./all.nix { inherit lib; };
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a big no, as explained by @Ericson2314.
We can tolerate a vague name sometimes, but we can not have factually incorrect ones.

architectures = import ./architectures.nix { inherit lib; };

/* List of all Nix system doubles the nixpkgs flake will expose the package set
Expand Down
Loading