forked from rarias/bscpkgs
Compare commits
27 Commits
7b3e503b12
...
c011f25954
Author | SHA1 | Date | |
---|---|---|---|
c011f25954 | |||
19e865c6ec | |||
4ae7ad31a3 | |||
83dee4df28 | |||
4c17c95033 | |||
c56073b78e | |||
a560b25bf8 | |||
87817c523c | |||
dd2da36dfd | |||
92ee4a09d7 | |||
34f4b6aa37 | |||
2f2d6cbea8 | |||
69b09b6dda | |||
a737d725ed | |||
6c1d1f3b2b | |||
f338ef47d5 | |||
239e84c40c | |||
ed820e79f8 | |||
afeb415c98 | |||
256b24b97b | |||
492f73b600 | |||
76ddd85afe | |||
7affb8ef4b | |||
4ba823e5b7 | |||
51eecde59e | |||
9eb5c486ba | |||
5df49dcfab |
15
.gitea/workflows/ci.yaml
Normal file
15
.gitea/workflows/ci.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
name: CI
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
build:all:
|
||||
runs-on: native
|
||||
steps:
|
||||
- uses: https://gitea.com/ScMi1/checkout@v1.4
|
||||
- run: nix build -L --no-link --print-out-paths .#bsc-ci.all
|
@ -17,10 +17,12 @@
|
||||
legacyPackages.${system} = pkgs;
|
||||
|
||||
hydraJobs = {
|
||||
inherit (self.legacyPackages.${system}.bsc-ci) test pkgs;
|
||||
inherit (self.legacyPackages.${system}.bsc-ci) tests pkgs cross;
|
||||
};
|
||||
|
||||
# propagate nixpkgs lib, so we can do bscpkgs.lib
|
||||
inherit (nixpkgs) lib;
|
||||
lib = nixpkgs.lib // {
|
||||
bsc.maintainers = import ./maintainers/maintainer-list.nix;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
6
maintainers/maintainer-list.nix
Normal file
6
maintainers/maintainer-list.nix
Normal file
@ -0,0 +1,6 @@
|
||||
builtins.mapAttrs (name: value: { email = name + "@bsc.es"; } // value) {
|
||||
abonerib.name = "Aleix Boné";
|
||||
arocanon.name = "Aleix Roca";
|
||||
rarias.name = "Rodrigo Arias";
|
||||
rpenacob.name = "Raúl Peñacoba";
|
||||
}
|
145
overlay.nix
145
overlay.nix
@ -6,10 +6,34 @@ with final.lib;
|
||||
let
|
||||
callPackage = final.callPackage;
|
||||
|
||||
mkDeps = name: pkgs: final.runCommand name { }
|
||||
"printf '%s\n' ${toString (collect (x: x ? outPath) pkgs)} > $out";
|
||||
|
||||
bscPkgs = {
|
||||
|
||||
# override stdenv to add a sentinel to know if a derivation comes
|
||||
# from unfree sources.
|
||||
stdenv = prev.stdenv // {
|
||||
mkDerivation =
|
||||
args:
|
||||
let
|
||||
originalDrv = prev.stdenv.mkDerivation args;
|
||||
checkLicense = l: if builtins.isAttrs l then !(l.free or true) else false;
|
||||
|
||||
licenses = if builtins.isList args.meta.license then args.meta.license else [ args.meta.license ];
|
||||
|
||||
hasUnfreeLicense =
|
||||
if args ? meta && args.meta ? license then builtins.any checkLicense licenses else false;
|
||||
in
|
||||
if hasUnfreeLicense then
|
||||
builtins.traceVerbose "adding nix-support/private to ${originalDrv.name or originalDrv.pname}" (
|
||||
originalDrv.overrideAttrs (old: {
|
||||
postInstall = (old.postInstall or "") + ''
|
||||
mkdir -p $out/nix-support
|
||||
touch $out/nix-support/private
|
||||
'';
|
||||
}))
|
||||
else
|
||||
originalDrv;
|
||||
};
|
||||
|
||||
bench6 = callPackage ./pkgs/bench6/default.nix { };
|
||||
bigotes = callPackage ./pkgs/bigotes/default.nix { };
|
||||
clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { };
|
||||
@ -49,58 +73,79 @@ let
|
||||
wxparaver = callPackage ./pkgs/paraver/default.nix { };
|
||||
};
|
||||
|
||||
tests = rec {
|
||||
#hwloc = callPackage ./test/bugs/hwloc.nix { }; # Broken, no /sys
|
||||
#sigsegv = callPackage ./test/reproducers/sigsegv.nix { };
|
||||
hello-c = callPackage ./test/compilers/hello-c.nix { };
|
||||
hello-cpp = callPackage ./test/compilers/hello-cpp.nix { };
|
||||
lto = callPackage ./test/compilers/lto.nix { };
|
||||
asan = callPackage ./test/compilers/asan.nix { };
|
||||
intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; };
|
||||
intel2023-icc-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv-icc; };
|
||||
intel2023-icx-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv; };
|
||||
intel2023-icc-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv-icc; };
|
||||
intel2023-ifort = callPackage ./test/compilers/hello-f.nix {
|
||||
stdenv = final.intelPackages_2023.stdenv-ifort;
|
||||
};
|
||||
clangOmpss2-lto = lto.override { stdenv = final.stdenvClangOmpss2Nanos6; };
|
||||
clangOmpss2-asan = asan.override { stdenv = final.stdenvClangOmpss2Nanos6; };
|
||||
clangOmpss2-task = callPackage ./test/compilers/ompss2.nix {
|
||||
stdenv = final.stdenvClangOmpss2Nanos6;
|
||||
};
|
||||
clangNodes-task = callPackage ./test/compilers/ompss2.nix {
|
||||
stdenv = final.stdenvClangOmpss2Nodes;
|
||||
};
|
||||
clangNosvOpenmp-task = callPackage ./test/compilers/clang-openmp.nix {
|
||||
stdenv = final.stdenvClangOmpss2Nodes;
|
||||
};
|
||||
clangNosvOmpv-nosv = callPackage ./test/compilers/clang-openmp-nosv.nix {
|
||||
stdenv = final.stdenvClangOmpss2NodesOmpv;
|
||||
};
|
||||
clangNosvOmpv-ld = callPackage ./test/compilers/clang-openmp-ld.nix {
|
||||
stdenv = final.stdenvClangOmpss2NodesOmpv;
|
||||
};
|
||||
};
|
||||
|
||||
pkgs = filterAttrs (_: isDerivation) bscPkgs;
|
||||
|
||||
crossTargets = [ "riscv64" ];
|
||||
cross = prev.lib.genAttrs crossTargets (target:
|
||||
final.pkgsCross.${target}.bsc-ci.pkgs
|
||||
);
|
||||
|
||||
buildList = name: paths:
|
||||
final.runCommandLocal name { } ''
|
||||
printf '%s\n' ${toString paths} | tee $out
|
||||
'';
|
||||
|
||||
buildList' = name: paths:
|
||||
final.runCommandLocal name { } ''
|
||||
deps="${toString paths}"
|
||||
cat $deps
|
||||
printf '%s\n' $deps >$out
|
||||
'';
|
||||
|
||||
crossList = builtins.mapAttrs (t: v: buildList t (builtins.attrValues v)) cross;
|
||||
|
||||
pkgsList = buildList "ci-pkgs" (builtins.attrValues pkgs);
|
||||
testList = buildList "ci-tests" (collect isDerivation tests);
|
||||
|
||||
all = buildList' "ci-all" [ pkgsList testList ];
|
||||
|
||||
in bscPkgs // {
|
||||
|
||||
lib = prev.lib // {
|
||||
bsc.maintainers = import ./maintainers/maintainer-list.nix;
|
||||
};
|
||||
|
||||
# Prevent accidental usage of bsc attribute
|
||||
bsc = throw "the bsc attribute is deprecated, packages are now in the root";
|
||||
|
||||
# Internal for our CI tests
|
||||
bsc-ci = {
|
||||
test = rec {
|
||||
#hwloc = callPackage ./test/bugs/hwloc.nix { }; # Broken, no /sys
|
||||
#sigsegv = callPackage ./test/reproducers/sigsegv.nix { };
|
||||
hello-c = callPackage ./test/compilers/hello-c.nix { };
|
||||
hello-cpp = callPackage ./test/compilers/hello-cpp.nix { };
|
||||
lto = callPackage ./test/compilers/lto.nix { };
|
||||
asan = callPackage ./test/compilers/asan.nix { };
|
||||
intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; };
|
||||
intel2023-icc-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv-icc; };
|
||||
intel2023-icx-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv; };
|
||||
intel2023-icc-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv-icc; };
|
||||
intel2023-ifort = callPackage ./test/compilers/hello-f.nix {
|
||||
stdenv = final.intelPackages_2023.stdenv-ifort;
|
||||
};
|
||||
clangOmpss2-lto = lto.override { stdenv = final.stdenvClangOmpss2Nanos6; };
|
||||
clangOmpss2-asan = asan.override { stdenv = final.stdenvClangOmpss2Nanos6; };
|
||||
clangOmpss2-task = callPackage ./test/compilers/ompss2.nix {
|
||||
stdenv = final.stdenvClangOmpss2Nanos6;
|
||||
};
|
||||
clangNodes-task = callPackage ./test/compilers/ompss2.nix {
|
||||
stdenv = final.stdenvClangOmpss2Nodes;
|
||||
};
|
||||
clangNosvOpenmp-task = callPackage ./test/compilers/clang-openmp.nix {
|
||||
stdenv = final.stdenvClangOmpss2Nodes;
|
||||
};
|
||||
clangNosvOmpv-nosv = callPackage ./test/compilers/clang-openmp-nosv.nix {
|
||||
stdenv = final.stdenvClangOmpss2NodesOmpv;
|
||||
};
|
||||
clangNosvOmpv-ld = callPackage ./test/compilers/clang-openmp-ld.nix {
|
||||
stdenv = final.stdenvClangOmpss2NodesOmpv;
|
||||
};
|
||||
};
|
||||
|
||||
pkgs = filterAttrs (_: isDerivation) bscPkgs;
|
||||
|
||||
pkgsList = final.runCommand "ci-pkgs" { }
|
||||
"printf '%s\n' ${toString (collect isDerivation bscPkgs)} > $out";
|
||||
|
||||
tests = final.runCommand "ci-tests" { }
|
||||
"printf '%s\n' ${toString (collect isDerivation final.bsc-ci.test)} > $out";
|
||||
|
||||
all = final.runCommand "ci-all" { }
|
||||
''
|
||||
deps="${toString [ final.bsc-ci.pkgsList final.bsc-ci.tests ]}"
|
||||
cat $deps
|
||||
printf '%s\n' $deps > $out
|
||||
'';
|
||||
inherit pkgs pkgsList;
|
||||
inherit tests testList;
|
||||
inherit cross crossList;
|
||||
inherit all;
|
||||
};
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
stdenv
|
||||
, lib
|
||||
, bigotes
|
||||
, cmake
|
||||
, clangOmpss2
|
||||
@ -27,10 +28,13 @@ stdenv.mkDerivation rec {
|
||||
rev = gitCommit;
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
bigotes
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
clangOmpss2
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
bigotes
|
||||
openmp
|
||||
openmpv
|
||||
nanos6
|
||||
@ -55,4 +59,12 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
hardeningDisable = [ "all" ];
|
||||
dontStrip = true;
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://gitlab.pm.bsc.es/rarias/bench6";
|
||||
description = "Set of micro-benchmarks for OmpSs-2 and several mini-apps";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3;
|
||||
};
|
||||
}
|
||||
|
@ -1,10 +1,11 @@
|
||||
{
|
||||
stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
pname = "bigotes";
|
||||
version = "9dce13";
|
||||
src = fetchFromGitHub {
|
||||
@ -13,5 +14,13 @@ stdenv.mkDerivation rec {
|
||||
rev = "9dce13446a8da30bea552d569d260d54e0188518";
|
||||
sha256 = "sha256-ktxM3pXiL8YXSK+/IKWYadijhYXqGoLY6adLk36iigE=";
|
||||
};
|
||||
buildInputs = [ cmake ];
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/rodarima/bigotes";
|
||||
description = "Versatile benchmark tool";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3;
|
||||
};
|
||||
}
|
||||
|
@ -20,6 +20,7 @@
|
||||
#, python3Packages
|
||||
, installShellFiles
|
||||
, symlinkJoin
|
||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||
}:
|
||||
|
||||
let
|
||||
@ -87,7 +88,7 @@ stdenv.mkDerivation rec {
|
||||
--enable-sampling
|
||||
--with-unwind=${libunwind.dev}
|
||||
--with-xml-prefix=${libxml2.dev}
|
||||
--with-papi=${papi}
|
||||
${lib.optionalString enablePapi "--with-papi=${papi}"}
|
||||
${if (mpi != null) then ''--with-mpi=${mpi}''
|
||||
else ''--without-mpi''}
|
||||
--without-dyninst)
|
||||
@ -110,4 +111,12 @@ stdenv.mkDerivation rec {
|
||||
# then [ "--enable-openmp" ]
|
||||
# else []
|
||||
# );
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/bsc-performance-tools/extrae";
|
||||
description = "Instrumentation framework to generate execution traces of the most used parallel runtimes";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.lgpl21Plus;
|
||||
};
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
stdenv
|
||||
, lib
|
||||
, fetchurl
|
||||
, symlinkJoin
|
||||
, slurm
|
||||
@ -52,4 +53,12 @@ stdenv.mkDerivation rec {
|
||||
buildInputs = [ slurm mpiAll rdma-core-all autoconf automake libtool rsync gfortran ];
|
||||
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://pm.bsc.es/gitlab/interoperability/extern/GPI-2";
|
||||
description = "GPI-2 extended for supporting Task-Aware GASPI (TAGASPI) library";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3;
|
||||
};
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchurl
|
||||
, rpmextract
|
||||
, autoPatchelfHook
|
||||
@ -59,4 +60,12 @@ stdenv.mkDerivation rec {
|
||||
rm $out/lib/*.dbg
|
||||
popd
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.intel.com/content/www/us/en/developer/tools/overview.html";
|
||||
description = "Intel compiler";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.unfree;
|
||||
};
|
||||
}
|
||||
|
@ -145,4 +145,12 @@ in
|
||||
popd
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.intel.com/content/www/us/en/developer/tools/overview.html";
|
||||
description = "Intel compiler";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.unfree;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, rpmextract
|
||||
, gcc
|
||||
, zlib
|
||||
@ -101,4 +102,12 @@ stdenv.mkDerivation rec {
|
||||
patchelf --set-rpath "$out/lib:${rdma-core}/lib:${libpsm2}/lib" $out/lib/libfabric.so
|
||||
echo "Patched RPATH in libfabric.so to: $(patchelf --print-rpath $out/lib/libfabric.so)"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.intel.com/content/www/us/en/developer/tools/overview.html";
|
||||
description = "Intel compiler";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.unfree;
|
||||
};
|
||||
}
|
||||
|
@ -43,11 +43,15 @@ let
|
||||
];
|
||||
phases = [ "installPhase" ];
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
awk -F': ' '\
|
||||
BEGIN { print "[ {" } \
|
||||
NR>1 && /^Package: / { print "} {"; } \
|
||||
/: / { printf "%s = \"%s\";\n", $1, $2 } \
|
||||
END { print "} ]" }' $srcs > $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
};
|
||||
|
||||
@ -78,15 +82,26 @@ let
|
||||
uncompressDebs = debs: name: stdenv.mkDerivation {
|
||||
name = name;
|
||||
srcs = debs;
|
||||
buildInputs = [ dpkg ];
|
||||
nativeBuildInputs = [ dpkg ];
|
||||
phases = [ "installPhase" ];
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
for src in $srcs; do
|
||||
echo "unpacking $src"
|
||||
dpkg -x $src $out
|
||||
done
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "";
|
||||
homepage = "";
|
||||
license = lib.licenses.unfree;
|
||||
maintainers = with lib.maintainers; [ ];
|
||||
};
|
||||
};
|
||||
|
||||
joinDebs = name: names:
|
||||
@ -108,17 +123,22 @@ let
|
||||
"intel-oneapi-mpi-${version}"
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
rsync
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libfabric
|
||||
zlib
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
dontStrip = true;
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/{bin,etc,lib,include}
|
||||
mkdir -p $out/share/man
|
||||
|
||||
@ -135,6 +155,8 @@ let
|
||||
# Broken due missing libze_loader.so.1
|
||||
rsync -a --exclude IMB-MPI1-GPU bin/ $out/bin/
|
||||
popd
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
preFixup = ''
|
||||
for i in $out/bin/mpi* ; do
|
||||
@ -142,6 +164,13 @@ let
|
||||
sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" "$i"
|
||||
done
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "";
|
||||
homepage = "";
|
||||
license = lib.licenses.unfree;
|
||||
maintainers = with lib.maintainers; [ ];
|
||||
};
|
||||
};
|
||||
|
||||
intel-tbb = stdenv.mkDerivation rec {
|
||||
@ -154,7 +183,6 @@ let
|
||||
|
||||
buildInputs = [
|
||||
intel-mpi
|
||||
rsync
|
||||
libffi_3_3
|
||||
libelf
|
||||
libxml2
|
||||
@ -162,13 +190,18 @@ let
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
rsync
|
||||
];
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
dontStrip = true;
|
||||
|
||||
autoPatchelfIgnoreMissingDeps = [ "libhwloc.so.5" ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/lib
|
||||
|
||||
cd $src
|
||||
@ -177,7 +210,16 @@ let
|
||||
# Libraries
|
||||
rsync -a lib/intel64/gcc4.8/ $out/lib/
|
||||
popd
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "";
|
||||
homepage = "";
|
||||
license = lib.licenses.unfree;
|
||||
maintainers = with lib.maintainers; [ ];
|
||||
};
|
||||
};
|
||||
|
||||
intel-compiler-shared = stdenv.mkDerivation rec {
|
||||
@ -192,7 +234,6 @@ let
|
||||
buildInputs = [
|
||||
intel-mpi
|
||||
intel-tbb
|
||||
rsync
|
||||
libffi_3_3
|
||||
libelf
|
||||
libxml2
|
||||
@ -201,13 +242,18 @@ let
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
rsync
|
||||
];
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
dontStrip = true;
|
||||
|
||||
autoPatchelfIgnoreMissingDeps = [ "libsycl.so.6" ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/{bin,lib,include}
|
||||
mkdir -p $out/share/man
|
||||
|
||||
@ -232,7 +278,16 @@ let
|
||||
rsync -a compiler/include/ $out/include/
|
||||
popd
|
||||
popd
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "";
|
||||
homepage = "";
|
||||
license = lib.licenses.unfree;
|
||||
maintainers = with lib.maintainers; [ ];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@ -254,7 +309,6 @@ let
|
||||
buildInputs = [
|
||||
intel-mpi
|
||||
intel-compiler-shared
|
||||
rsync
|
||||
libffi_3_3
|
||||
libelf
|
||||
libxml2
|
||||
@ -262,13 +316,18 @@ let
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
rsync
|
||||
];
|
||||
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
|
||||
dontStrip = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/{bin,lib,include}
|
||||
mkdir -p $out/share/man
|
||||
|
||||
@ -294,8 +353,18 @@ let
|
||||
|
||||
# Fix lib_lin
|
||||
ln -s $out/lib $out/lib_lin
|
||||
|
||||
popd
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "";
|
||||
homepage = "";
|
||||
license = lib.licenses.unfree;
|
||||
maintainers = with lib.maintainers; [ ];
|
||||
};
|
||||
};
|
||||
|
||||
intel-compiler = stdenv.mkDerivation rec {
|
||||
@ -337,7 +406,6 @@ let
|
||||
|
||||
buildInputs = [
|
||||
intel-compiler-shared
|
||||
rsync
|
||||
libffi_3_3
|
||||
libelf
|
||||
libxml2
|
||||
@ -345,7 +413,10 @@ let
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
rsync
|
||||
];
|
||||
autoPatchelfIgnoreMissingDeps = [ "libtbb.so.12" "libtbbmalloc.so.2" "libze_loader.so.1" ];
|
||||
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
@ -353,6 +424,8 @@ let
|
||||
dontStrip = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/{bin,lib}
|
||||
mkdir -p $out/share/man
|
||||
|
||||
@ -380,7 +453,16 @@ let
|
||||
# Manuals
|
||||
rsync -a documentation/en/man/common/ $out/share/man/
|
||||
popd
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "";
|
||||
homepage = "";
|
||||
license = lib.licenses.unfree;
|
||||
maintainers = with lib.maintainers; [ ];
|
||||
};
|
||||
};
|
||||
|
||||
wrapIntel = { cc, mygcc, extraBuild ? "", extraInstall ? "" }:
|
||||
|
@ -43,32 +43,36 @@ let
|
||||
|
||||
source = if (useGit) then git else release;
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
in stdenv.mkDerivation {
|
||||
pname = "clang-ompss2";
|
||||
inherit (source) src version;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
isClang = true;
|
||||
|
||||
passthru = {
|
||||
CC = "clang";
|
||||
CXX = "clang++";
|
||||
|
||||
isClang = true;
|
||||
isClangWithOmpss = true;
|
||||
|
||||
inherit gcc zlib;
|
||||
};
|
||||
|
||||
isClangWithOmpss = true;
|
||||
|
||||
nativeBuildInputs = [ zlib ];
|
||||
|
||||
buildInputs = [
|
||||
which
|
||||
nativeBuildInputs = [
|
||||
bash
|
||||
cmake
|
||||
elfutils
|
||||
llvmPackages_latest.lld
|
||||
pkg-config
|
||||
python3
|
||||
perl
|
||||
cmake
|
||||
llvmPackages_latest.lld
|
||||
elfutils
|
||||
which
|
||||
zlib
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libffi
|
||||
pkg-config
|
||||
zlib
|
||||
gcc.cc.lib # Required for libstdc++.so.6
|
||||
];
|
||||
|
@ -22,7 +22,11 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
buildInputs = [ libtirpc ];
|
||||
patches = [ ./fix-install.patch ./gcc-14.patch ];
|
||||
patches = [
|
||||
./fix-install.patch
|
||||
./gcc-14.patch
|
||||
./fix-cross.patch
|
||||
];
|
||||
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
@ -35,6 +39,8 @@ stdenv.mkDerivation rec {
|
||||
CFLAGS=-Wno-implicit-int
|
||||
CPPFLAGS=-I${libtirpc.dev}/include/tirpc
|
||||
LDFLAGS=-ltirpc
|
||||
CC=${stdenv.cc.targetPrefix}cc
|
||||
AR=${stdenv.cc.targetPrefix}ar
|
||||
)
|
||||
'';
|
||||
|
||||
|
13
pkgs/lmbench/fix-cross.patch
Normal file
13
pkgs/lmbench/fix-cross.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/src/Makefile b/src/Makefile
|
||||
index 2555014..356eeb3 100644
|
||||
--- a/src/Makefile
|
||||
+++ b/src/Makefile
|
||||
@@ -36,7 +36,7 @@ SHELL=/bin/sh
|
||||
|
||||
CC=`../scripts/compiler`
|
||||
MAKE=`../scripts/make`
|
||||
-AR=ar
|
||||
+AR?=ar
|
||||
ARCREATE=cr
|
||||
|
||||
# base of installation location
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, autoreconfHook
|
||||
, nanos6
|
||||
@ -32,19 +33,22 @@ stdenv.mkDerivation rec {
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
buildInputs = [
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
nanos6
|
||||
gperf
|
||||
bison
|
||||
flex
|
||||
python3
|
||||
gfortran
|
||||
pkg-config
|
||||
sqlite.dev
|
||||
bison
|
||||
flex
|
||||
gperf
|
||||
gcc
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
nanos6
|
||||
sqlite.dev
|
||||
];
|
||||
|
||||
patches = [ ./intel.patch ];
|
||||
|
||||
preConfigure = ''
|
||||
@ -59,4 +63,12 @@ stdenv.mkDerivation rec {
|
||||
# Fails with "memory exhausted" with bison 3.7.1
|
||||
# "--enable-bison-regeneration"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/bsc-pm/mcxx";
|
||||
description = "C/C++/Fortran source-to-source compilation infrastructure aimed at fast prototyping";
|
||||
maintainers = with maintainers.bsc; [ rpenacob ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3Plus;
|
||||
};
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, autoreconfHook
|
||||
, nanos6
|
||||
@ -57,4 +58,12 @@ stdenv.mkDerivation rec {
|
||||
# Fails with "memory exhausted" with bison 3.7.1
|
||||
# "--enable-bison-regeneration"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/bsc-pm/mcxx";
|
||||
description = "C/C++/Fortran source-to-source compilation infrastructure aimed at fast prototyping";
|
||||
maintainers = with maintainers.bsc; [ rpenacob ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3Plus;
|
||||
};
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchgit
|
||||
, autoreconfHook
|
||||
, nanos6
|
||||
@ -56,4 +57,12 @@ stdenv.mkDerivation rec {
|
||||
#preBuild = ''
|
||||
# make generate_builtins_ia32 GXX_X86_BUILTINS=${gcc}/bin/g++
|
||||
#'';
|
||||
#
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/bsc-pm/mcxx";
|
||||
description = "C/C++/Fortran source-to-source compilation infrastructure aimed at fast prototyping";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3Plus;
|
||||
};
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ stdenv.mkDerivation rec {
|
||||
url = "https://github.com/pmodels/mpich/blob/v${version}/COPYRIGHT";
|
||||
fullName = "MPICH license (permissive)";
|
||||
};
|
||||
maintainers = [ ];
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux ++ platforms.darwin;
|
||||
};
|
||||
}
|
||||
|
@ -16,6 +16,7 @@
|
||||
, jemallocNanos6 ? null
|
||||
, cachelineBytes ? 64
|
||||
, enableGlibcxxDebug ? false
|
||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||
, useGit ? false
|
||||
, gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6"
|
||||
, gitBranch ? "master"
|
||||
@ -47,6 +48,8 @@ let
|
||||
};
|
||||
|
||||
source = if (useGit) then git else release;
|
||||
|
||||
isCross = stdenv.hostPlatform != stdenv.buildPlatform;
|
||||
in
|
||||
stdenv.mkDerivation (source // {
|
||||
pname = "nanos6";
|
||||
@ -71,9 +74,11 @@ in
|
||||
"--disable-all-instrumentations"
|
||||
"--enable-ovni-instrumentation"
|
||||
"--with-ovni=${ovni}"
|
||||
"--with-boost=${boost.dev}"
|
||||
] ++
|
||||
(optional enableJemalloc "--with-jemalloc=${jemallocNanos6}") ++
|
||||
(optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG");
|
||||
(optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG") ++
|
||||
(optional isCross "--with-symbol-resolution=ifunc");
|
||||
|
||||
postConfigure = lib.optionalString (!enableDebug) ''
|
||||
# Disable debug
|
||||
@ -88,28 +93,35 @@ in
|
||||
dontStrip = enableDebug;
|
||||
separateDebugInfo = true;
|
||||
|
||||
buildInputs = [
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
automake
|
||||
libtool
|
||||
pkg-config
|
||||
|
||||
# TODO: papi_version is needed for configure:
|
||||
# ./configure: line 27378: papi_version: command not found
|
||||
# This probably breaks cross-compilation
|
||||
] ++ lib.optionals enablePapi [ papi ];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
numactl
|
||||
hwloc
|
||||
papi
|
||||
ovni
|
||||
];
|
||||
] ++ lib.optionals enablePapi [ papi ];
|
||||
|
||||
# Create a script that sets NANOS6_HOME
|
||||
postInstall = ''
|
||||
mkdir -p $out/nix-support
|
||||
echo "export NANOS6_HOME=$out" >> $out/nix-support/setup-hook
|
||||
'';
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/bsc-pm/nanos6";
|
||||
description = "Nanos6 runtime for OmpSs-2" +
|
||||
optionalString (enableDebug) " (with debug symbols)";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3;
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ jemalloc }:
|
||||
{ jemalloc, lib }:
|
||||
|
||||
jemalloc.overrideAttrs (old: {
|
||||
configureFlags = old.configureFlags ++ [
|
||||
@ -8,5 +8,6 @@ jemalloc.overrideAttrs (old: {
|
||||
hardeningDisable = [ "all" ];
|
||||
meta = old.meta // {
|
||||
description = old.meta.description + " (for Nanos6)";
|
||||
maintainers = old.meta.maintainers // (with lib.maintainers.bsc; [ rarias ]);
|
||||
};
|
||||
})
|
||||
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
stdenv
|
||||
, lib
|
||||
, bashInteractive
|
||||
, busybox
|
||||
, nix
|
||||
@ -86,5 +87,13 @@ stdenv.mkDerivation rec {
|
||||
mkdir -p $out/share
|
||||
cp ${nix_conf} $out/share/nix.conf
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = null;
|
||||
description = "nix bubblewrap wrapper";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3Plus; # TODO: license?
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
stdenv
|
||||
, lib
|
||||
, glibc
|
||||
}:
|
||||
|
||||
@ -15,4 +16,12 @@ stdenv.mkDerivation rec {
|
||||
makeFlags = [ "DESTDIR=$(out)" ];
|
||||
preBuild = "env";
|
||||
dontPatchShebangs = true;
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://gitlab.pm.bsc.es/rarias/nixtools";
|
||||
description = "nix bubblewrap wrapper";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3Plus; # TODO: license?
|
||||
};
|
||||
}
|
||||
|
@ -81,4 +81,12 @@ in
|
||||
passthru = {
|
||||
inherit nosv;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://gitlab.bsc.es/nos-v/nodes";
|
||||
description = "Runtime library designed to work on top of the nOS-V runtime";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3Plus;
|
||||
};
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
, numactl
|
||||
, hwloc
|
||||
, papi
|
||||
, enablePapi ? true
|
||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||
, cacheline ? 64 # bits
|
||||
, ovni ? null
|
||||
, useGit ? false
|
||||
@ -59,4 +59,12 @@ in
|
||||
hwloc
|
||||
ovni
|
||||
] ++ lib.optionals enablePapi [ papi ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://gitlab.bsc.es/nos-v/nos-v";
|
||||
description = "Tasking library enables the co-execution of multiple applications with system-wide scheduling and a centralized management of resources";
|
||||
maintainers = with maintainers.bsc; [ abonerib ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3Plus;
|
||||
};
|
||||
}
|
||||
|
@ -24,9 +24,10 @@ stdenv.mkDerivation rec {
|
||||
|
||||
doCheck = true;
|
||||
enableParallelBuilding = true;
|
||||
nativeBuildInputs = [ mpiAll ];
|
||||
buildInputs = [ mpiAll ];
|
||||
hardeningDisable = [ "all" ];
|
||||
configureFlags = [
|
||||
configureFlags = [
|
||||
"CC=mpicc"
|
||||
"CXX=mpicxx"
|
||||
];
|
||||
@ -40,7 +41,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
meta = {
|
||||
description = "OSU Micro-Benchmarks";
|
||||
homepage = http://mvapich.cse.ohio-state.edu/benchmarks/;
|
||||
homepage = "http://mvapich.cse.ohio-state.edu/benchmarks/";
|
||||
maintainers = [ ];
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
|
@ -13,8 +13,6 @@
|
||||
, useMpi ? (stdenv.buildPlatform.canExecute stdenv.hostPlatform)
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
release = rec {
|
||||
version = "1.12.0";
|
||||
@ -45,7 +43,7 @@ in
|
||||
postPatch = ''
|
||||
patchShebangs --build test/
|
||||
'';
|
||||
nativeBuildInputs = [ cmake ];
|
||||
nativeBuildInputs = [ cmake ] ++ lib.optionals (useMpi) [ mpi ];
|
||||
buildInputs = lib.optionals (useMpi) [ mpi ];
|
||||
cmakeBuildType = if (enableDebug) then "Debug" else "Release";
|
||||
cmakeFlags = [
|
||||
@ -57,4 +55,12 @@ in
|
||||
doCheck = true;
|
||||
checkTarget = "test";
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://ovni.readthedocs.io";
|
||||
description = "Obtuse but Versatile Nanoscale Instrumentation";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3Plus;
|
||||
};
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, autoreconfHook
|
||||
, boost
|
||||
@ -60,17 +61,17 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
automake
|
||||
autoreconfHook
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
autoreconfHook
|
||||
boost
|
||||
libxml2.dev
|
||||
xml2
|
||||
wx
|
||||
autoconf
|
||||
automake
|
||||
paraverKernel
|
||||
openssl.dev
|
||||
];
|
||||
@ -88,4 +89,12 @@ stdenv.mkDerivation rec {
|
||||
mkdir -p $out/share/man
|
||||
mv $out/share/doc/wxparaver_help_contents/man $out/share/man/man1
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/bsc-performance-tools/wxparaver";
|
||||
description = "Trace-based visualization and analysis tool designed to study quantitative detailed metrics and obtain qualitative knowledge of the performance of applications, libraries, processors and whole architectures";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.lgpl21Plus;
|
||||
};
|
||||
}
|
||||
|
@ -44,14 +44,17 @@ stdenv.mkDerivation rec {
|
||||
"--enable-openmp"
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
boost
|
||||
libxml2.dev
|
||||
xml2
|
||||
autoconf
|
||||
automake
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
libxml2.dev
|
||||
xml2
|
||||
zlib
|
||||
];
|
||||
}
|
||||
|
@ -61,13 +61,16 @@ stdenv.mkDerivation rec {
|
||||
"--with-wx-config=${wx}/bin/wx-config"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
automake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
xml2
|
||||
libxml2.dev
|
||||
wx
|
||||
autoconf
|
||||
automake
|
||||
openssl.dev
|
||||
];
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
stdenv
|
||||
, lib
|
||||
, autoreconfHook
|
||||
, fetchFromGitHub
|
||||
, ovni
|
||||
@ -18,9 +19,21 @@ stdenv.mkDerivation rec {
|
||||
hardeningDisable = [ "all" ];
|
||||
dontStrip = true;
|
||||
configureFlags = [ "--with-ovni=${ovni}" ];
|
||||
buildInputs = [
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
ovni
|
||||
mpi
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/bsc-pm/sonar";
|
||||
description = "Set of runtime libraries which instrument parallel programming models through the ovni instrumentation library";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.mit;
|
||||
};
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, automake
|
||||
, autoconf
|
||||
@ -55,4 +56,12 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/bsc-pm/tagaspi";
|
||||
description = "Task-Aware GASPI";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3Plus;
|
||||
};
|
||||
}
|
||||
|
@ -8,7 +8,6 @@
|
||||
, gnumake
|
||||
, boost
|
||||
, mpi
|
||||
, gcc
|
||||
, autoreconfHook
|
||||
, enableOvni ? true
|
||||
, ovni ? null
|
||||
@ -41,22 +40,33 @@ let
|
||||
};
|
||||
};
|
||||
source = if (useGit) then git else release;
|
||||
in stdenv.mkDerivation rec {
|
||||
in stdenv.mkDerivation {
|
||||
pname = "tampi";
|
||||
inherit (source) src version;
|
||||
enableParallelBuilding = true;
|
||||
separateDebugInfo = true;
|
||||
buildInputs = [
|
||||
autoreconfHook
|
||||
automake
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
libtool
|
||||
automake
|
||||
autoreconfHook
|
||||
gnumake
|
||||
libtool
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
mpi
|
||||
gcc
|
||||
] ++ optional (enableOvni) ovni;
|
||||
configureFlags = optional (enableOvni) "--with-ovni=${ovni}";
|
||||
dontDisableStatic = true;
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/bsc-pm/tampi";
|
||||
description = "Task-Aware MPI";
|
||||
maintainers = with maintainers.bsc; [ rarias ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3Plus;
|
||||
};
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user