blob: 0d4aa65c73f8db7f316276fc2a2d2118ddbf8e79 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
{ storepath_length ? 30, storepath_chunks ? 4, pkgs ? import <nixpkgs> {
stdenvStages = { config, overlays, localSystem, ... }@args: (import <nixpkgs/pkgs/stdenv> args) ++ [
(previousStage: {
inherit config overlays;
stdenv = let
toPreHook = withAppendOut: ''
storepath_length=${toString storepath_length}
storepath_chunks=${toString storepath_chunks}
'' + builtins.readFile ./prehook.sh + (pkgs.lib.optionalString withAppendOut ''
appendOut
'');
newlibunistring = previousStage.libunistring.overrideAttrs (attrs: {
preHook = attrs.preHook or "" + (toPreHook true);
am_cv_func_iconv_works = "yes";
});
newlibidn2 = (previousStage.libidn2.override { libunistring = newlibunistring; }).overrideAttrs (attrs: {
preHook = attrs.preHook or "" + (toPreHook true);
postFixup = ''
${previousStage.nukeReferences}/bin/nuke-refs -e $(cat ${newlibunistring}/nix-support/new-out)/lib \
"$out"/lib/lib*.so.*.*
'';
});
overridenCallPackage = p: a: previousStage.callPackage p (a // { libidn2 = newlibidn2;});
newlibc = (previousStage."${localSystem.libc}".override { callPackage = overridenCallPackage; }).overrideAttrs(old: {
preHook = old.preHook or "" + (toPreHook true);
});
newbintools = (previousStage.binutils.override { libc = newlibc; }).overrideAttrs(old: {
postFixup = old.postFixup + ''
newlibcout=$(cat ${newlibc}/nix-support/new-out)
sed -i -e "s@${newlibc}@$newlibcout@g" $out/nix-support/*
'';
});
newStdenv = previousStage.stdenv.override {
allowedRequisites = null;
extraAttrs.bintools = newbintools;
cc = previousStage.gcc.override({ bintools = newbintools; libc = newlibc; });
overrides = self: super: rewriteMap (previousStage.stdenv.overrides self super) // {
${localSystem.libc} = newlibc;
};
preHook = previousStage.stdenv.preHook + ''
libc_path=${newlibc}
'' + (toPreHook false);
};
rewriteMap = builtins.mapAttrs (n: v: v.override { stdenv = newStdenv; });
in
newStdenv;
})
];
} }:
pkgs.xar
|