From daadcc93d0a390cacc4f90317e7c4c252896cb88 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 19 Nov 2020 18:50:30 +0100 Subject: [PATCH] ompss2: fix to the last release --- bsc/llvm-ompss2/clang-git.nix | 79 +++++++++++++++++++++++++++++++++++ bsc/llvm-ompss2/clang.nix | 23 ++++++---- bsc/mcxx/default.nix | 16 ++++--- bsc/nanos6/default.nix | 40 +++++++++++------- bsc/nanos6/git.nix | 6 +-- overlay.nix | 17 +++----- 6 files changed, 136 insertions(+), 45 deletions(-) create mode 100644 bsc/llvm-ompss2/clang-git.nix diff --git a/bsc/llvm-ompss2/clang-git.nix b/bsc/llvm-ompss2/clang-git.nix new file mode 100644 index 0000000..40631e7 --- /dev/null +++ b/bsc/llvm-ompss2/clang-git.nix @@ -0,0 +1,79 @@ +{ + stdenv +, fetchgit +, cmake +, lld +, bash +, python3 +, perl +, which +, libelf +, libffi +, pkg-config +, enableDebug ? true +}: + +stdenv.mkDerivation rec { + version = "${src.shortRev}"; + pname = "clang-ompss2"; + enableParallelBuilding = true; + isClang = true; + #isGNU = true; + + passthru = { + CC = "clang"; + CXX = "clang++"; + }; + + isClangWithOmpss = true; + + buildInputs = [ + which + bash + python3 + perl + cmake + lld + libelf + libffi + pkg-config + ]; + + hardeningDisable = [ "fortify" ]; + + cmakeBuildType = if enableDebug then "Debug" else "Release"; + + dontUseCmakeBuildDir = true; + enableAssertions = if enableDebug then "ON" else "OFF"; + + preConfigure = '' + mkdir -p build + cd build + cmakeDir="../llvm" + cmakeFlagsArray=( + "-DLLVM_ENABLE_LLD=ON" + "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" + "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" + "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" + "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt" + "-DLLVM_ENABLE_ASSERTIONS=${enableAssertions}" + "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" + ) + ''; + + # Remove support for GNU and Intel Openmp + postInstall = '' + rm $out/lib/libgomp* + rm $out/lib/libiomp* + ''; + +# About "-DCLANG_DEFAULT_NANOS6_HOME=${nanos6}", we could specify a default +# nanos6 installation, but this is would require a recompilation of clang each +# time nanos6 is changed. Better to use the environment variable NANOS6_HOME, +# and specify nanos6 at run time. + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/llvm-ompss/llvm-mono.git"; + ref = "master"; + }; +} diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 40631e7..9d57186 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -1,6 +1,6 @@ { stdenv -, fetchgit +, fetchFromGitHub , cmake , lld , bash @@ -10,15 +10,22 @@ , libelf , libffi , pkg-config -, enableDebug ? true +, enableDebug ? false }: stdenv.mkDerivation rec { - version = "${src.shortRev}"; + version = "2020.11"; pname = "clang-ompss2"; + + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "llvm"; + rev = "github-release-${version}"; + sha256 = "00z3xlw36lbiz84a47k95gin9fzsni5jd1f71dpg5l2qjy961qma"; + }; + enableParallelBuilding = true; isClang = true; - #isGNU = true; passthru = { CC = "clang"; @@ -39,6 +46,9 @@ stdenv.mkDerivation rec { pkg-config ]; + # Error with -D_FORTIFY_SOURCE=2, see https://bugs.gentoo.org/636604: + # /build/source/compiler-rt/lib/tsan/dd/dd_interceptors.cpp:225:20: + # error: redefinition of 'realpath' hardeningDisable = [ "fortify" ]; cmakeBuildType = if enableDebug then "Debug" else "Release"; @@ -71,9 +81,4 @@ stdenv.mkDerivation rec { # nanos6 installation, but this is would require a recompilation of clang each # time nanos6 is changed. Better to use the environment variable NANOS6_HOME, # and specify nanos6 at run time. - - src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/llvm-ompss/llvm-mono.git"; - ref = "master"; - }; } diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index 4b05ca3..b903f96 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -1,4 +1,6 @@ -{ stdenv +{ + stdenv +, fetchFromGitHub , autoreconfHook , nanos6 , gperf @@ -13,17 +15,19 @@ stdenv.mkDerivation rec { pname = "mcxx"; - version = "${src.shortRev}"; + version = "2.3-8e998824"; passthru = { CC = "mcc"; CXX = "mcxx"; }; - # Use patched Extrae version - src = builtins.fetchGit { - url = "https://github.com/bsc-pm/mcxx"; - ref = "master"; + # mcxx doesn't use tags, so we pick the same version of the ompss2 release + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = pname; + rev = "8e998824f0fde001340dbec369ef59e40e53761e"; + sha256 = "0ix20l50m52kcw12a6dhrasgzjjc2y73j55c994sbhyd133n3pln"; }; enableParallelBuilding = true; diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index a0d7abd..0a13bdb 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -1,43 +1,53 @@ { stdenv -, fetchurl +, fetchFromGitHub , automake , autoconf +, autoreconfHook , libtool , pkg-config , numactl , hwloc , papi -#, gnumake , extrae , boost +, enableJemalloc ? false +, jemalloc ? null +, cachelineBytes ? 64 }: with stdenv.lib; stdenv.mkDerivation rec { pname = "nanos6"; - version = "2.4"; + version = "2.5"; - src = fetchurl { - url = "https://pm.bsc.es/ftp/ompss-2/releases/ompss-2-2020.06.tar.gz"; - sha256 = "0f9hy2avblv31wi4910x81wc47dwx8x9nd72y02lgrhl7fc9i2sf"; + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "nanos6"; + rev = "version-${version}"; + sha256 = "1wyr8liyz1l7rbf5flxihabasm887bq2jcp2csma7b9rhrfyhkm1"; }; - enableParallelBuilding = false; - preConfigure = '' - cd ${pname}-${version} - sed -i 's|/bin/echo|echo|g' loader/scripts/common.sh loader/scripts/lint/common.sh + prePatch = '' + patchShebangs scripts/generate_config.sh ''; - configureFlags = [ - "--with-symbol-resolution=indirect" - ]; + enableParallelBuilding = true; - #configureFlags = [] - # ++ (if (extrae != null) then ["--with-extrae=${extrae}"] else [""]); + preConfigure = '' + export CACHELINE_WIDTH=${toString cachelineBytes} + ''; + + configureFlags = [] ++ + optional enableJemalloc "--with-jemalloc=${jemalloc}"; + + # The "bindnow" flags are incompatible with ifunc resolution mechanism. We + # disable all by default, which includes bindnow. + hardeningDisable = [ "all" ]; buildInputs = [ + autoreconfHook autoconf automake libtool diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 50f7650..2959e1d 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -13,6 +13,7 @@ , autoreconfHook , enableJemalloc ? false , jemalloc ? null +, cachelineBytes ? 64 }: with stdenv.lib; @@ -21,12 +22,10 @@ stdenv.mkDerivation rec { pname = "nanos6"; version = "${src.shortRev}"; branch = "master"; - cacheline-width = "64"; src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/nanos6/nanos6"; ref = branch; - rev = "bd306f903c7a4396f579402666082f5a7c34570b"; }; prePatch = '' @@ -36,7 +35,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; preConfigure = '' - export CACHELINE_WIDTH=${cacheline-width} + export CACHELINE_WIDTH=${toString cacheline-width} export NANOS6_GIT_VERSION=${src.rev} export NANOS6_GIT_BRANCH=${branch} ''; @@ -54,7 +53,6 @@ stdenv.mkDerivation rec { automake libtool pkg-config - perl boost numactl hwloc diff --git a/overlay.nix b/overlay.nix index 8db7c7d..276bf81 100644 --- a/overlay.nix +++ b/overlay.nix @@ -111,19 +111,14 @@ let tampiRelease = callPackage ./bsc/tampi/default.nix { }; tampiGit = callPackage ./bsc/tampi/git.nix { }; - mcxxGit = callPackage ./bsc/mcxx/default.nix { - bison = self.bison_3_5; - }; - + mcxx = bsc.mcxxRelease; + mcxxRelease = callPackage ./bsc/mcxx/default.nix { }; mcxxRarias = callPackage ./bsc/mcxx/rarias.nix { bison = self.bison_3_5; }; - mcxx = bsc.mcxxGit; - - # Use nanos6 git by default - nanos6 = bsc.nanos6Git; - nanos6Latest = callPackage ./bsc/nanos6/default.nix { }; + nanos6 = bsc.nanos6Release; + nanos6Release = callPackage ./bsc/nanos6/default.nix { }; nanos6Git = callPackage ./bsc/nanos6/git.nix { }; jemalloc = self.jemalloc.overrideAttrs (old: @@ -135,7 +130,7 @@ let ]; }); - nanos6Jemalloc = callPackage ./bsc/nanos6/git.nix { + nanos6Jemalloc = nanos6.override { enableJemalloc = true; }; @@ -189,7 +184,7 @@ let # TODO: move into garlic/default.nix # Configuration for the machines - machines = callPackage ./garlic/machines.nix {}; + machines = callPackage ./garlic/machines.nix { }; report = callPackage ./garlic/report.nix { fig = bsc.garlic.fig;