Avoid loading .bashrc
This commit is contained in:
parent
cd37d513e8
commit
edf429c932
@ -74,6 +74,7 @@ let
|
|||||||
|
|
||||||
nixsetup = {stage, conf, ...}: with conf; w.nixsetup {
|
nixsetup = {stage, conf, ...}: with conf; w.nixsetup {
|
||||||
program = stageProgram stage;
|
program = stageProgram stage;
|
||||||
|
nixsetup = "${nixPrefix}/bin/nix-setup";
|
||||||
};
|
};
|
||||||
|
|
||||||
extrae = {stage, conf, ...}:
|
extrae = {stage, conf, ...}:
|
||||||
@ -102,6 +103,14 @@ let
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Print the environment to ensure we don't get anything nasty
|
||||||
|
envRecord = {stage, conf, ...}: w.envRecord {
|
||||||
|
program = stageProgram stage;
|
||||||
|
};
|
||||||
|
|
||||||
|
broom = {stage, conf, ...}: w.broom {
|
||||||
|
program = stageProgram stage;
|
||||||
|
};
|
||||||
# We may be able to use overlays by invoking the fix function directly, but we
|
# We may be able to use overlays by invoking the fix function directly, but we
|
||||||
# have to get the definition of the bsc packages and the garlic ones as
|
# have to get the definition of the bsc packages and the garlic ones as
|
||||||
# overlays.
|
# overlays.
|
||||||
@ -119,11 +128,18 @@ let
|
|||||||
};
|
};
|
||||||
|
|
||||||
stages = with common; []
|
stages = with common; []
|
||||||
|
# Cleans ALL environment variables
|
||||||
|
++ [ broom ]
|
||||||
|
|
||||||
# Use sbatch to request resources first
|
# Use sbatch to request resources first
|
||||||
++ optional enableSbatch sbatch
|
++ optional enableSbatch sbatch
|
||||||
|
|
||||||
# Repeats the next stages N times
|
# Record the current env vars set by SLURM to verify we don't have something
|
||||||
++ optionals enableControl [ nixsetup control ]
|
# nasty (like sourcing .bashrc). Take a look at #26
|
||||||
|
++ [ envRecord ]
|
||||||
|
|
||||||
|
# Repeats the next stages N=30 times
|
||||||
|
++ optional enableControl control
|
||||||
|
|
||||||
# Executes srun to launch the program in the requested nodes, and
|
# Executes srun to launch the program in the requested nodes, and
|
||||||
# immediately after enters the nix environment again, as slurmstepd launches
|
# immediately after enters the nix environment again, as slurmstepd launches
|
||||||
|
@ -17,7 +17,7 @@ stdenv.mkDerivation {
|
|||||||
phases = [ "installPhase" ];
|
phases = [ "installPhase" ];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
cat > $out <<EOF
|
cat > $out <<EOF
|
||||||
#!${bash}/bin/bash
|
#!${bash}/bin/bash --norc
|
||||||
# Requires /nix to use bash
|
# Requires /nix to use bash
|
||||||
|
|
||||||
${env}
|
${env}
|
||||||
|
23
garlic/stages/broom.nix
Normal file
23
garlic/stages/broom.nix
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
stdenv
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
program
|
||||||
|
}:
|
||||||
|
|
||||||
|
# This stage provides a clean environment to run experiments
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "broom";
|
||||||
|
preferLocalBuild = true;
|
||||||
|
phases = [ "installPhase" ];
|
||||||
|
installPhase = ''
|
||||||
|
cat > $out <<EOF
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Removes all environment variables
|
||||||
|
/usr/bin/env -i ${program}
|
||||||
|
EOF
|
||||||
|
chmod +x $out
|
||||||
|
'';
|
||||||
|
}
|
@ -15,7 +15,6 @@ stdenv.mkDerivation {
|
|||||||
installPhase = ''
|
installPhase = ''
|
||||||
cat > $out <<EOF
|
cat > $out <<EOF
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#set -e
|
|
||||||
for n in {1..${toString loops}}; do
|
for n in {1..${toString loops}}; do
|
||||||
${program}
|
${program}
|
||||||
done
|
done
|
||||||
|
25
garlic/stages/envRecord.nix
Normal file
25
garlic/stages/envRecord.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
stdenv
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
program
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "argv";
|
||||||
|
preferLocalBuild = true;
|
||||||
|
phases = [ "installPhase" ];
|
||||||
|
installPhase = ''
|
||||||
|
cat > $out <<EOF
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo ----- ENV BEGIN -------
|
||||||
|
/usr/bin/env
|
||||||
|
echo ----- ENV END -------
|
||||||
|
|
||||||
|
exec ${program} \''${argv[@]}
|
||||||
|
EOF
|
||||||
|
chmod +x $out
|
||||||
|
'';
|
||||||
|
}
|
@ -24,8 +24,7 @@ stdenv.mkDerivation {
|
|||||||
phases = [ "installPhase" ];
|
phases = [ "installPhase" ];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
cat > $out <<EOF
|
cat > $out <<EOF
|
||||||
#!${bash}/bin/bash
|
#!/bin/sh
|
||||||
# Requires /nix to use bash
|
|
||||||
|
|
||||||
export EXTRAE_HOME=${extrae}
|
export EXTRAE_HOME=${extrae}
|
||||||
export LD_PRELOAD=${extrae}/lib/lib${traceLib}trace.so:$LD_PRELOAD
|
export LD_PRELOAD=${extrae}/lib/lib${traceLib}trace.so:$LD_PRELOAD
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
program
|
program
|
||||||
|
, nixsetup
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
@ -18,7 +19,7 @@ stdenv.mkDerivation {
|
|||||||
# We need to enter the nix namespace first, in order to have /nix
|
# We need to enter the nix namespace first, in order to have /nix
|
||||||
# available, so we use this hack:
|
# available, so we use this hack:
|
||||||
if [ ! -e /nix ]; then
|
if [ ! -e /nix ]; then
|
||||||
exec nix-setup \$0
|
exec ${nixsetup} \$0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec ${program}
|
exec ${program}
|
||||||
|
@ -15,7 +15,7 @@ stdenv.mkDerivation {
|
|||||||
phases = [ "installPhase" ];
|
phases = [ "installPhase" ];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
cat > $out <<EOF
|
cat > $out <<EOF
|
||||||
#!${bash}/bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
exec ${perf}/bin/perf ${perfArgs} ${program}
|
exec ${perf}/bin/perf ${perfArgs} ${program}
|
||||||
EOF
|
EOF
|
||||||
|
@ -16,7 +16,7 @@ stdenv.mkDerivation {
|
|||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
cat > $out/bin/${name} <<EOF
|
cat > $out/bin/${name} <<EOF
|
||||||
#!${bash}/bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
mkdir -p ${outputDir}
|
mkdir -p ${outputDir}
|
||||||
cat /proc/[0-9]*/stat | sort -n > ${outputDir}/statspy.\$(date +%s.%3N).begin
|
cat /proc/[0-9]*/stat | sort -n > ${outputDir}/statspy.\$(date +%s.%3N).begin
|
||||||
|
Loading…
Reference in New Issue
Block a user