forked from rarias/jungle
Refactor intel-oneapi into deb and open subfolders
This commit is contained in:
@@ -20,8 +20,9 @@ let
|
||||
#extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated
|
||||
gpi-2 = callPackage ./pkgs/gpi-2/default.nix { };
|
||||
gromacs = callPackage ./pkgs/gromacs/default.nix { enableSYCL = true; };
|
||||
intel-apt = callPackage ./pkgs/intel-oneapi/packages.nix { };
|
||||
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { };
|
||||
wrapIntel = callPackage ./pkgs/intel-oneapi/common/wrapper.nix { };
|
||||
intel-apt = callPackage ./pkgs/intel-oneapi/deb/packages.nix { };
|
||||
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/deb/2023.nix { };
|
||||
intelPackages_2024 = final.intel-apt.hpckit_2024;
|
||||
intelPackages_2025 = final.intel-apt.hpckit_2025;
|
||||
intelPackages = final.intelPackages_2025;
|
||||
@@ -34,8 +35,8 @@ let
|
||||
linuxPackages_latest = prev.linuxPackages_latest.extend(_final: _prev: {
|
||||
amd-uprof-driver = _prev.callPackage ./pkgs/amd-uprof/driver.nix { };
|
||||
});
|
||||
llvm-intel-unwrapped = callPackage ./pkgs/llvm-intel/default.nix { };
|
||||
llvm-intel = callPackage ./pkgs/llvm-intel/wrapped.nix { };
|
||||
llvm-intel-unwrapped = callPackage ./pkgs/intel-oneapi/open/default.nix { };
|
||||
llvm-intel = final.wrapIntel { cc = final.llvm-intel-unwrapped; };
|
||||
lmbench = callPackage ./pkgs/lmbench/default.nix { };
|
||||
# Broken and unmantained
|
||||
# mcxx = callPackage ./pkgs/mcxx/default.nix { };
|
||||
|
||||
71
pkgs/intel-oneapi/common/wrapper.nix
Normal file
71
pkgs/intel-oneapi/common/wrapper.nix
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
gcc,
|
||||
libgcc,
|
||||
wrapCCWith,
|
||||
}:
|
||||
|
||||
{
|
||||
cc,
|
||||
extraPath ? lib.makeBinPath (
|
||||
[ gcc.cc ] ++ (lib.optionals (cc.enableCuda or false) [ cc.cudaPackages.cudatoolkit ])
|
||||
),
|
||||
extraBuildCommands ? "",
|
||||
extraInstallCommands ? "",
|
||||
}:
|
||||
|
||||
let
|
||||
targetConfig = stdenv.targetPlatform.config;
|
||||
in
|
||||
(wrapCCWith {
|
||||
inherit cc;
|
||||
|
||||
nixSupport = {
|
||||
cc-ldflags = [
|
||||
"-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}"
|
||||
"-L${gcc.cc.lib}/lib"
|
||||
"-L${libgcc.out}/lib"
|
||||
"-L${gcc.libc}/lib"
|
||||
"-L${cc}/lib"
|
||||
];
|
||||
cc-cflags = [
|
||||
"--gcc-toolchain=${gcc.cc}"
|
||||
"-isystem ${cc.original or cc}/lib/clang/${toString cc.llvmMajorVersion}/include"
|
||||
"-isystem ${cc}/include"
|
||||
"-isystem ${cc}/include/intel64"
|
||||
"-isystem ${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}/include"
|
||||
];
|
||||
libcxx-cxxflags = [
|
||||
"-isystem ${gcc.cc}/include/c++/${gcc.version}"
|
||||
"-isystem ${gcc.cc}/include/c++/${gcc.version}/${targetConfig}"
|
||||
];
|
||||
};
|
||||
|
||||
extraBuildCommands = ''
|
||||
# FIXME: We should find a better way to modify the PATH instead of using
|
||||
# this ugly hack. See https://jungle.bsc.es/git/rarias/bscpkgs/issues/9
|
||||
echo 'path_backup="${extraPath}:$path_backup"' >>$out/nix-support/cc-wrapper-hook
|
||||
|
||||
# Disable hardening by default
|
||||
echo "" > $out/nix-support/add-hardening.sh
|
||||
|
||||
pushd $ccPath
|
||||
for i in $ {llvm,sycl}-* ; do
|
||||
ln -s $ccPath/$i $out/bin/$i
|
||||
done
|
||||
popd
|
||||
|
||||
# Use this to detect when a compiler subprocess is called
|
||||
# from icpx (--fsycl-host-compiler)
|
||||
echo 'export NIX_CC_WRAPPER_INTEL=1' >>$out/nix-support/cc-wrapper-hook
|
||||
|
||||
# oneMath looks for sycl libraries in bin/../lib
|
||||
ln -s ${cc}/lib $out/lib
|
||||
ln -s ${cc}/include $out/include
|
||||
''
|
||||
+ extraBuildCommands;
|
||||
}).overrideAttrs
|
||||
(old: {
|
||||
installPhase = old.installPhase + extraInstallCommands;
|
||||
})
|
||||
@@ -4,12 +4,10 @@
|
||||
lib,
|
||||
symlinkJoin,
|
||||
autoPatchelfHook,
|
||||
wrapCCWith,
|
||||
wrapIntel,
|
||||
overrideCC,
|
||||
gcc,
|
||||
hwloc,
|
||||
libelf,
|
||||
libgcc,
|
||||
libffi_3_3,
|
||||
libpsm2,
|
||||
libuuid,
|
||||
@@ -41,79 +39,16 @@ lib.makeOverridable (
|
||||
|
||||
inherit (components) llvmMajorVersion;
|
||||
|
||||
__components = removeAttrs components [ "extraPackages" "llvmMajorVersion" ];
|
||||
__components = removeAttrs components [
|
||||
"extraPackages"
|
||||
"llvmMajorVersion"
|
||||
];
|
||||
_components = __components;
|
||||
# _components = lib.traceSeqN 2 {
|
||||
# inherit unpatched __components;
|
||||
# deps = builtins.map (x: "${x.pname}-${x.version}") unpatched.deps;
|
||||
# } __components;
|
||||
|
||||
wrapIntel =
|
||||
cc:
|
||||
let
|
||||
targetConfig = stdenv.targetPlatform.config;
|
||||
in
|
||||
(wrapCCWith {
|
||||
inherit cc;
|
||||
|
||||
nixSupport = {
|
||||
cc-ldflags = [
|
||||
"-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}"
|
||||
"-L${gcc.cc.lib}/lib"
|
||||
"-L${libgcc.out}/lib"
|
||||
"-L${cc}/lib"
|
||||
];
|
||||
cc-cflags = [
|
||||
"--gcc-toolchain=${gcc.cc}"
|
||||
"-isystem ${cc.original or cc}/lib/clang/${toString cc.llvmMajorVersion}/include"
|
||||
"-isystem ${cc}/include"
|
||||
"-isystem ${cc}/include/intel64"
|
||||
"-isystem ${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}/include"
|
||||
];
|
||||
libcxx-cxxflags = [
|
||||
# "--gcc-toolchain=${gcc.cc}"
|
||||
"-isystem ${gcc.cc}/include/c++/${gcc.version}"
|
||||
"-isystem ${gcc.cc}/include/c++/${gcc.version}/${targetConfig}"
|
||||
];
|
||||
};
|
||||
|
||||
extraBuildCommands = ''
|
||||
# FIXME: We should find a better way to modify the PATH instead of using
|
||||
# this ugly hack. See https://jungle.bsc.es/git/rarias/bscpkgs/issues/9
|
||||
echo 'path_backup="${gcc.cc}/bin:$path_backup"' >>$out/nix-support/cc-wrapper-hook
|
||||
|
||||
# Disable hardening by default
|
||||
echo "" > $out/nix-support/add-hardening.sh
|
||||
|
||||
wrap icx $wrapper $ccPath/icx
|
||||
wrap icpx $wrapper $ccPath/icpx
|
||||
wrap ifx $wrapper $ccPath/ifx
|
||||
|
||||
ln -s $out/bin/icpx $out/bin/c++
|
||||
ln -s $out/bin/icx $out/bin/cc
|
||||
|
||||
ln -s $ccPath/sycl-ls $out/bin/sycl-ls
|
||||
ln -s $ccPath/sycl-trace $out/bin/sycl-trace
|
||||
|
||||
sed -i 's/.*isCxx=0/isCxx=1/' $out/bin/icpx
|
||||
|
||||
# Use this to detect when a compiler subprocess is called
|
||||
# from icpx (--fsycl-host-compiler)
|
||||
echo 'export NIX_CC_WRAPPER_INTEL=1' >>$out/nix-support/cc-wrapper-hook
|
||||
|
||||
# oneMath looks for sycl libraries in bin/../lib
|
||||
ln -s ${cc}/lib $out/lib
|
||||
ln -s ${cc}/include $out/include
|
||||
'';
|
||||
}).overrideAttrs
|
||||
(old: {
|
||||
installPhase = old.installPhase + ''
|
||||
export named_cc="icx"
|
||||
export named_cxx="icpx"
|
||||
export named_fc="ifx"
|
||||
'';
|
||||
});
|
||||
|
||||
in
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = lib.removeSuffix "-extracted" unpatched.pname;
|
||||
@@ -196,7 +131,25 @@ lib.makeOverridable (
|
||||
|
||||
stdenv = overrideCC stdenv finalAttrs.finalPackage.cc;
|
||||
|
||||
cc = wrapIntel finalAttrs.finalPackage.pkgs.compiler;
|
||||
cc = wrapIntel {
|
||||
cc = finalAttrs.finalPackage.pkgs.compiler;
|
||||
extraBuildCommands = ''
|
||||
wrap icx $wrapper $ccPath/icx
|
||||
wrap icpx $wrapper $ccPath/icpx
|
||||
wrap ifx $wrapper $ccPath/ifx
|
||||
|
||||
ln -s $out/bin/icpx $out/bin/c++
|
||||
ln -s $out/bin/icx $out/bin/cc
|
||||
|
||||
sed -i 's/.*isCxx=0/isCxx=1/' $out/bin/icpx
|
||||
'';
|
||||
|
||||
extraInstallCommands = ''
|
||||
export named_cc="icx"
|
||||
export named_cxx="icpx"
|
||||
export named_fc="ifx"
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
})
|
||||
@@ -1,69 +0,0 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
wrapCCWith,
|
||||
llvm-intel-unwrapped,
|
||||
gcc,
|
||||
libgcc,
|
||||
}:
|
||||
|
||||
let
|
||||
wrapIntel =
|
||||
cc:
|
||||
let
|
||||
targetConfig = stdenv.targetPlatform.config;
|
||||
|
||||
extraPath = builtins.concatStringsSep ":" (
|
||||
[ "${gcc.cc}/bin" ] ++ lib.optionals cc.enableCuda [ "${cc.cudaPackages.cudatoolkit}/bin" ]
|
||||
);
|
||||
in
|
||||
wrapCCWith {
|
||||
inherit cc;
|
||||
|
||||
nixSupport = {
|
||||
cc-ldflags = [
|
||||
"-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}"
|
||||
"-L${gcc.cc.lib}/lib"
|
||||
"-L${libgcc.out}/lib"
|
||||
"-L${gcc.libc}/lib"
|
||||
"-L${cc}/lib"
|
||||
];
|
||||
cc-cflags = [
|
||||
"--gcc-toolchain=${gcc.cc}"
|
||||
"-isystem ${cc}/lib/clang/${cc.llvmMajorVersion}/include"
|
||||
"-isystem ${cc}/include"
|
||||
"-isystem ${cc}/include/intel64"
|
||||
"-isystem ${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}/include"
|
||||
];
|
||||
libcxx-cxxflags = [
|
||||
# "--gcc-toolchain=${gcc.cc}"
|
||||
"-isystem ${gcc.cc}/include/c++/${gcc.version}"
|
||||
"-isystem ${gcc.cc}/include/c++/${gcc.version}/${targetConfig}"
|
||||
];
|
||||
};
|
||||
|
||||
extraBuildCommands = ''
|
||||
# FIXME: We should find a better way to modify the PATH instead of using
|
||||
# this ugly hack. See https://jungle.bsc.es/git/rarias/bscpkgs/issues/9
|
||||
echo 'path_backup="${extraPath}:$path_backup"' >>$out/nix-support/cc-wrapper-hook
|
||||
|
||||
# Disable hardening by default
|
||||
echo "" > $out/nix-support/add-hardening.sh
|
||||
|
||||
pushd $ccPath
|
||||
for i in $ {llvm,sycl}-* ; do
|
||||
ln -s $ccPath/$i $out/bin/$i
|
||||
done
|
||||
popd
|
||||
|
||||
# Use this to detect when a compiler subprocess is called
|
||||
# from icpx (--fsycl-host-compiler)
|
||||
echo 'export NIX_CC_WRAPPER_INTEL=1' >>$out/nix-support/cc-wrapper-hook
|
||||
|
||||
# oneMath looks for sycl libraries in bin/../lib
|
||||
ln -s ${cc}/lib $out/lib
|
||||
ln -s ${cc}/include $out/include
|
||||
'';
|
||||
};
|
||||
in
|
||||
wrapIntel llvm-intel-unwrapped
|
||||
Reference in New Issue
Block a user