pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / stdenv / linux / make-bootstrap-tools.nix
blob61c44f0bfecbad80f9e0387ed3f3c2e53dc98ed0
2   pkgs ? import ../../.. { },
3 }:
5 let
6   inherit (pkgs) lib stdenv config;
8   libc = pkgs.stdenv.cc.libc;
10   patchelf = pkgs.patchelf.overrideAttrs (previousAttrs: {
11     NIX_CFLAGS_COMPILE = (previousAttrs.NIX_CFLAGS_COMPILE or [ ]) ++ [
12       "-static-libgcc"
13       "-static-libstdc++"
14     ];
15     NIX_CFLAGS_LINK = (previousAttrs.NIX_CFLAGS_LINK or [ ]) ++ [
16       "-static-libgcc"
17       "-static-libstdc++"
18     ];
19   });
21 rec {
22   coreutilsMinimal = pkgs.coreutils.override (args: {
23     # We want coreutils without ACL/attr support.
24     aclSupport = false;
25     attrSupport = false;
26     # Our tooling currently can't handle scripts in bin/, only ELFs and symlinks.
27     singleBinary = "symlinks";
28   });
30   tarMinimal = pkgs.gnutar.override { acl = null; };
32   busyboxMinimal = pkgs.busybox.override {
33     useMusl = lib.meta.availableOn stdenv.hostPlatform pkgs.musl;
34     enableStatic = true;
35     enableMinimal = true;
36     extraConfig = ''
37       CONFIG_ASH y
38       CONFIG_ASH_ECHO y
39       CONFIG_ASH_TEST y
40       CONFIG_ASH_OPTIMIZE_FOR_SIZE y
41       CONFIG_MKDIR y
42       CONFIG_TAR y
43       CONFIG_UNXZ y
44     '';
45   };
47   bootGCC = pkgs.gcc.cc.override {
48     enableLTO = false;
49     isl = null;
50   };
52   bootBinutils = pkgs.binutils.bintools.override {
53     withAllTargets = false;
54     # Don't need two linkers, disable whatever's not primary/default.
55     enableGold = false;
56     # bootstrap is easier w/static
57     enableShared = false;
58   };
60   build = pkgs.callPackage ./stdenv-bootstrap-tools.nix {
61     inherit
62       bootBinutils
63       coreutilsMinimal
64       tarMinimal
65       busyboxMinimal
66       bootGCC
67       libc
68       patchelf
69       ;
70   };
72   inherit (build) bootstrapFiles;
74   bootstrapTools = import ./bootstrap-tools {
75     inherit (stdenv.buildPlatform) system; # Used to determine where to build
76     inherit (stdenv.hostPlatform) libc;
77     inherit lib bootstrapFiles config;
78   };
80   test = pkgs.callPackage ./test-bootstrap-tools.nix {
81     inherit bootstrapTools;
82     inherit (bootstrapFiles) busybox;
83   };