packages.oneapi.stdenv: fix

This commit is contained in:
2025-05-25 19:56:59 +08:00
parent 9ec5772480
commit eb3ec5828f
3 changed files with 41 additions and 25 deletions

View File

@@ -131,6 +131,7 @@
"intel.oneapi.lin.mpi.runtime,v=2021.15.0+493"
"intel.oneapi.lin.umf,v=0.10.0+355"
"intel.oneapi.lin.tbb.runtime,v=2022.1.0+425"
"intel.oneapi.lin.compilers-common,v=2025.1.1+10"
];
};
}

View File

@@ -125,10 +125,11 @@ inputs: rec
blog = inputs.pkgs.callPackage inputs.topInputs.blog { inherit (inputs.topInputs) hextra; };
phono3py = inputs.pkgs.python3Packages.callPackage ./phono3py.nix { src = inputs.topInputs.phono3py; };
vm = inputs.pkgs.callPackage ./vm { inherit biu; stdenv = inputs.pkgs.clang18Stdenv; };
oneapiPackages =
oneapiPackages = inputs.pkgs.lib.makeScope inputs.pkgs.newScope (final:
{
stdenv = inputs.pkgs.callPackage ./oneapi/stdenv.nix { src = inputs.topInputs.self.src.oneapi; };
};
stdenv = inputs.pkgs.callPackage ./oneapi/stdenv.nix { src = inputs.topInputs.self.src.oneapi; inherit gccFull; };
fmt = (inputs.pkgs.fmt.override { inherit (final) stdenv; }).overrideAttrs { doCheck = false; env.VERBOSE = "1"; };
});
fromYaml = content: builtins.fromJSON (builtins.readFile
(inputs.pkgs.runCommand "toJSON" {}

View File

@@ -1,6 +1,6 @@
{
src, stdenv, autoPatchelfHook, wrapCCWith, config, overrideCC, makeSetupHook, writeScript, overrideInStdenv,
runCommand,
runCommand, lib, gccFull,
gcc, glibc, zlib, zstd, libxml2, flock, numactl, ncurses, openssl, gmp, kdePackages,
libxcrypt-legacy, libfabric, rdma-core, xorg, bash, p7zip, hwloc
}:
@@ -34,6 +34,14 @@ let
popd
cp -r install/compiler/${src.version}/{bin,include,lib,share} $out
cp -r install/{mpi,tbb,umf}/*/lib $out
# mv $out/bin/compiler/* $out/bin
# rm -r $out/bin/compiler
# mv $out/bin/clang%2B%2B $out/bin/clang++
mv $out/bin/compiler/clang%2B%2B $out/bin/compiler/clang++
# mv $out/lib/crt/* $out/lib
# rm -r $out/lib/crt
'';
autoPatchelfIgnoreMissingDeps = [ "libze_loader.so.1" "libcuda.so.1" "libhwloc.so.5" ];
passthru = { inherit src; };
@@ -42,32 +50,38 @@ let
{
cc = oneapi;
extraBuildCommands =
''
# provide libgcc_s.so but not libgomp.so
echo "-L${gcc.cc.libgcc}/lib" >> $out/nix-support/cc-ldflags
let
gcc = stdenv.cc.cc;
gccVersion = builtins.concatStringsSep "." (lib.take 3 (builtins.splitVersion gcc.version));
in
''
echo "-isystem ${oneapi}/include" >> $out/nix-support/cc-cflags
echo "-isystem ${oneapi}/include/intel64" >> $out/nix-support/cc-cflags
echo "-isystem ${oneapi}/include/icx" >> $out/nix-support/cc-cflags
echo "-isystem ${gcc}/include/c++/${gcc.version}/${stdenv.targetPlatform.config}" >> $out/nix-support/cc-cflags
echo "-isystem ${gcc}/include/c++/${gcc.version}" >> $out/nix-support/cc-cflags
echo "--gcc-toolchain=${stdenv.cc}/lib/gcc/x86_64-unknown-linux-gnu/14.2.1" >> $out/nix-support/cc-cflags
echo "-march=${config.oneapiArch}" >> $out/nix-support/cc-cflags-before
echo "-tp=${config.nvhpcArch}" >> $out/nix-support/cc-cflags-before
echo "-L${gcc.lib}/lib" >> $out/nix-support/cc-ldflags
echo "-L${gcc}/lib/gcc/${stdenv.targetPlatform.config}/${gccVersion}" >> $out/nix-support/cc-ldflags
echo "-L${oneapi}/lib" >> $out/nix-support/cc-ldflags
echo "-Lsome_path_does_not_exist" >> $out/nix-support/cc-ldflags
echo "-noswitcherror" >> $out/nix-support/cc-cflags
# echo 'export "PATH=${gcc}/bin:$PATH"' >> $out/nix-support/cc-wrapper-hook
# print verbose output for debugging
# echo "-v" >> $out/nix-support/cc-cflags
echo "" > $out/nix-support/add-hardening.sh
# echo "" > $out/nix-support/add-hardening.sh
echo "-v" >> $out/nix-support/cc-cflags
# substitute -idirafter in libc-cflags
# somehow -isystem does not work
sed -i 's/-idirafter/-I/g' $out/nix-support/libc-cflags
for i in nvc nvc++ nvcc nvfortran; do
wrap $i $wrapper ${oneapi}/bin/$i
done
'';
for i in icx icpx ifx; do
wrap $i $wrapper ${oneapi}/bin/$i
done
'';
}).overrideAttrs (prev: { installPhase = prev.installPhase +
''
export named_cc=nvc
export named_cxx=nvc++
export named_fc=nvfortran
export named_cc=icx
export named_cxx=icpx
export named_fc=ifx
'';});
# in overrideInStdenv (overrideCC stdenv wrapper) [ ]
in oneapi
in overrideInStdenv (overrideCC stdenv wrapper) [ ]