at master 1.5 kB view raw
1{ 2 lib, 3 runCommand, 4 glibc, 5 glibc32, 6}: 7 8let 9 nameVersion = builtins.parseDrvName glibc.name; 10 glibc64 = glibc; 11in 12runCommand "${nameVersion.name}-multi-${nameVersion.version}" 13 # out as the first output is an exception exclusive to glibc 14 { 15 outputs = [ 16 "out" 17 "bin" 18 "dev" 19 "static" 20 ]; 21 passthru = { 22 libgcc = lib.lists.filter (x: x != null) [ 23 (glibc64.libgcc or null) 24 (glibc32.libgcc or null) 25 ]; 26 }; 27 } 28 '' 29 mkdir -p "$out/lib" 30 ln -s '${glibc64.out}'/lib/* "$out/lib" 31 ln -s '${glibc32.out}/lib' "$out/lib/32" 32 ln -s lib "$out/lib64" 33 34 # fixing ldd RLTDLIST 35 mkdir -p "$bin/bin" 36 cp -s '${glibc64.bin}'/bin/* "$bin/bin/" 37 rm "$bin/bin/ldd" 38 sed -e "s|^RTLDLIST=.*$|RTLDLIST=\"$out/lib/ld-linux-x86-64.so.2 $out/lib/32/ld-linux.so.2\"|g" \ 39 '${glibc64.bin}/bin/ldd' > "$bin/bin/ldd" 40 chmod +x "$bin/bin/ldd" 41 42 mkdir "$dev" 43 cp -rs '${glibc32.dev}'/include "$dev/" 44 chmod +w -R "$dev" 45 cp -rsf '${glibc64.dev}'/include "$dev/" 46 47 mkdir -p "$static/lib" "$static/lib64" 48 # create symlinks for files used for dynamic linking 49 # -> removing this will cause dynamically linked programs to segfault 50 cp -rs '${glibc32.out}'/lib/* "$static/lib" 51 cp -rs '${glibc64.out}'/lib/* "$static/lib64" 52 # create symlinks for files used for static linking 53 cp -rs '${glibc32.static}'/lib/* "$static/lib" 54 cp -rs '${glibc64.static}'/lib/* "$static/lib64" 55 ''