Commit d0fa7356 authored by Valentin Reis's avatar Valentin Reis

Checks for python Traceback in output files.

parent 0f49df7b
Pipeline #5012 canceled with stage
......@@ -37,16 +37,20 @@ newtype AppName = AppName Text deriving (IsString, Show, Read)
newtype ContainerName = ContainerName Text deriving (IsString, Show, Read)
newtype ManifestDir = ManifestDir FilePath deriving (IsString, Show)
newtype ManifestName = ManifestName FilePath deriving (IsString, Show)
newtype StdOutLog = StdOutLog Text deriving (Show, Read)
newtype StdErrLog = StdErrLog Text deriving (Show, Read)
newtype TestText = TestText Text deriving (Show, Read)
data ProcessBehavior =
SucceedTestOnMessage TestText StdOutLog StdErrLog
Test TestText StdOutLog StdErrLog
| JustRun StdOutLog StdErrLog
| DontRun deriving (Show,Read)
newtype StdOutLog = StdOutLog Text deriving (Show, Read)
newtype StdErrLog = StdErrLog Text deriving (Show, Read)
data TestText = TestText TextBehaviorStdout TextBehaviorStderr deriving (Show, Read)
newtype TextBehaviorStdout = TextBehaviorStdout TextBehavior deriving (Show, Read)
newtype TextBehaviorStderr = TextBehaviorStderr TextBehavior deriving (Show, Read)
data TextBehavior =
WaitFor Text
| ExpectClean deriving (Show,Read)
behavior :: ReadM ProcessBehavior
behavior = read <$> readerAsk
behaviorOption :: Mod OptionFields ProcessBehavior -> Parser ProcessBehavior
......
{-# LANGUAGE
TupleSections,
ScopedTypeVariables,
LambdaCase,
RecordWildCards,
OverloadedStrings,
DataKinds,
FlexibleInstances,
TypeOperators,
ApplicativeDo #-}
OverloadedStrings #-}
module Argo.Stack where
import Argo.Args
......@@ -51,11 +46,11 @@ checkFsAttributes workingDirectory = do
prepareDaemon
:: StdOutLog -> StdErrLog -> Maybe TestText -> Shell Instrumentation
prepareDaemon out stdErr test = do
_ <- myWhich "daemon"
_ <- myWhich "daemon"
confPath <- myWhich "argo_nodeos_config"
let confPath' = "./argo_nodeos_config"
cp confPath confPath'
printInfo $ format ("Copied the configurator to " % fp ) confPath'
printInfo $ format ("Copied the configurator to " % fp) confPath'
printInfo $ format "Trying to sudo chown and chmod argo_nodeos_config"
verboseShell (format ("sudo chown root:root " % fp) confPath') empty >>= \case
ExitSuccess -> printInfo "Chowned argo_nodeos_config to root:root."
......@@ -69,17 +64,16 @@ prepareDaemon out stdErr test = do
return $ Instrumentation (P.proc "daemon" []) out stdErr test
where
nodeOsFailure n = do
printError ("argo_nodeos_config failed with exit code :" <> repr n )
printError ("argo_nodeos_config failed with exit code :" <> repr n)
testfile ".argo_nodeos_config_exit_message" >>= \case
True -> do
printInfo "Contents of .argo_nodeos_config_exit_message: "
view $ input ".argo_nodeos_config_exit_message"
False -> die ("argo_nodeos_config failed with exit code " <> repr n)
cleanContainers :: FilePath -> NominalDiffTime -> Integer -> Shell ()
cleanContainers :: FilePath -> NominalDiffTime -> Integer -> Shell ()
cleanContainers argo_nodeos_config retryTime remainingRetries = do
let
showConfig =
inshell (format (fp % " --show_config") argo_nodeos_config) empty
let showConfig =
inshell (format (fp % " --show_config") argo_nodeos_config) empty
verboseShell'
(format (fp % " --clean_config=kill_content:true") argo_nodeos_config)
empty
......@@ -164,10 +158,22 @@ cmdListenPowerI (ContainerName cn) pb =
pb
data StackOutput =
FoundMessage
| Died StackI ExitCode
FoundMessage Text
| FoundTracebacks Tracebacks
| Died StackI ExitCode TracebackScanOut TracebackScanErr Tracebacks deriving (Show)
type Tracebacks = [(StackI, Text, Text)]
newtype TracebackScanOut = TracebackScanOut TracebackScan deriving (Show)
newtype TracebackScanErr = TracebackScanErr TracebackScan deriving (Show)
data StackI = Daemon | Run | Listen | Progress | Power | Performance deriving (Show)
data StackI = Daemon | Run | Listen | Progress | Power | Performance deriving (Eq)
instance Show StackI where
show = \case
Daemon -> "daemon"
Run -> "cmd run"
Listen -> "cmd listen -v"
Progress -> "cmd listen -f progress"
Power -> "cmd listen -f power"
Performance -> "cmd listen -f performance"
runStack :: StackArgs -> Shell StackOutput
runStack sa@StackArgs {..} = do
......@@ -189,7 +195,7 @@ runStack sa@StackArgs {..} = do
DontRun -> return Nothing
JustRun stdOut stdErr ->
(\i -> Just (Daemon, i)) <$> prepareDaemon stdOut stdErr Nothing
SucceedTestOnMessage t stdOut stdErr ->
Test t stdOut stdErr ->
(\i -> Just (Daemon, i)) <$> prepareDaemon stdOut stdErr (Just t)
let milist =
......@@ -209,7 +215,7 @@ runStack sa@StackArgs {..} = do
else liftIO $ pPrint (fmap fst ilist)
asyncs <- liftIO $ mapM tupleToAsync ilist
_ <- liftIO $ kbInstallHandler $ CM.mapM_ cancel asyncs
_ <- liftIO $ kbInstallHandler $ CM.mapM_ cancel asyncs
when (verbosity == Verbose) $ printInfo "Processes started."
......@@ -222,13 +228,49 @@ runStack sa@StackArgs {..} = do
<> repr (snd $ snd out)
)
tracebackList <- procsWithTracebacks ilist
r <- case snd out of
(_, Left (PatternMatched line)) -> case tracebackList of
[] -> return $ FoundMessage line
t -> return $ FoundTracebacks t
(stacki, Right (errmsg, tracebackOut, tracebackErr)) -> return $ Died
stacki
errmsg
(TracebackScanOut tracebackOut)
(TracebackScanErr tracebackErr)
tracebackList
cd "../"
return $ case snd out of
(_ , Left PatternMatched) -> FoundMessage
(stacki, Right (errmsg, _, _) ) -> Died stacki errmsg
return r
where
procsWithTracebacks
:: [(StackI, Instrumentation)] -> Shell [(StackI, Text, Text)]
procsWithTracebacks ilist = fmap showOutputs <$> filterM (checkI . snd) ilist
showOutputs :: (StackI, Instrumentation) -> (StackI, Text, Text)
showOutputs (si, Instrumentation _ (StdOutLog outlog) (StdErrLog errlog) _) =
(si, outlog, errlog)
checkI :: Instrumentation -> Shell Bool
checkI (Instrumentation _ (StdOutLog outlog) (StdErrLog errlog) _) = do
b <- liftIO $ Turtle.Shell.fold
(grep (has "Traceback") (input $ fromText outlog))
Fold.length
c <- liftIO $ Turtle.Shell.fold
(grep (has "Traceback") (input $ fromText errlog))
Fold.length
return $ (b > 0) || (c > 0)
tupleToAsync
:: (StackI, Instrumentation)
-> IO (Async (StackI, Either PatternMatched (ExitCode, (), ())))
-> IO
( Async
( StackI
, Either
MonitoringResult
(ExitCode, TracebackScan, TracebackScan)
)
)
tupleToAsync (stacki, instrum) = async $ (stacki, ) <$> runI instrum
......@@ -19,7 +19,6 @@ import System.IO ( BufferMode(NoBuffering)
, hSetBuffering
)
import Control.Monad.IO.Unlift ( MonadIO(..)
, MonadUnliftIO
, withRunInIO
)
import Data.Text.Encoding as TE
......@@ -42,11 +41,11 @@ printSuccess :: Text -> Shell ()
printTest :: Text -> Shell ()
dieRed :: Text -> Shell ()
printInfo = printf ("Info: " % s% "\n")
printInfo = printf ("Info: " % s % "\n")
printCommand = printf ("Running: " % s % "\n")
printWarning = colorShell Yellow . printf ("Warning: " % s% "\n")
printError = colorShell Red . printf ("Error: " % s% "\n")
printSuccess = colorShell Green . printf ("Success: " % s% "\n")
printWarning = colorShell Yellow . printf ("Warning: " % s % "\n")
printError = colorShell Red . printf ("Error: " % s % "\n")
printSuccess = colorShell Green . printf ("Success: " % s % "\n")
printTest = colorShell Green . printf ("RUNNING TEST: " % s % "\n")
dieRed str =
colorShell Red (printf ("Failure: " % s) str) >> exit (ExitFailure 1)
......@@ -59,8 +58,8 @@ myWhich str = which str >>= \case
myWhichMaybe :: FilePath -> Shell (Maybe FilePath)
myWhichMaybe str = which str >>= \case
(Just p) -> printInfo (format ("Found " % fp % " at " % fp) str p)
>> return (Just p)
(Just p) ->
printInfo (format ("Found " % fp % " at " % fp) str p) >> return (Just p)
Nothing -> return Nothing
sudoRemoveFile :: (Text -> Shell ()) -> Text -> FilePath -> Shell ()
......@@ -100,8 +99,8 @@ cleanLog = sudoRemoveFile printWarning "log folder"
kbInstallHandler :: IO () -> IO Handler
kbInstallHandler h = installHandler keyboardSignal (Catch h) Nothing
data PatternMatched = PatternMatched deriving (Show, Typeable)
instance Exception PatternMatched
newtype MonitoringResult = PatternMatched Text deriving (Show, Typeable)
instance Exception MonitoringResult
data Instrumentation = Instrumentation
CreateProcess
......@@ -110,44 +109,63 @@ data Instrumentation = Instrumentation
(Maybe TestText)
deriving (Show)
runI :: Instrumentation -> IO (Either PatternMatched (ExitCode, (), ()))
data TracebackScan = WarningTraceback | Clean deriving (Show)
runI
:: Instrumentation
-> IO (Either MonitoringResult (ExitCode, TracebackScan, TracebackScan))
runI (Instrumentation crProc (StdOutLog stdOut) (StdErrLog stdErr) t) = try
(reroutedDaemon crProc)
where
{-reroutedDaemon :: CreateProcess -> IO (ExitCode, (), ())-}
reroutedDaemon process =
withSinkFileNoBuffering (T.unpack stdOut) $ \outSink ->
withSinkFile (T.unpack stdErr) $ \errSink -> sourceProcessWithStreams
process
mempty
(makeMatcher t .| outSink)
(makeMatcher t .| errSink)
makeMatcher maybeMessage = case maybeMessage of
Just (TestText msg) -> untilMatch msg
Nothing -> awaitForever yield
untilMatch :: Text -> ConduitT ByteString ByteString IO ()
untilMatch message = do
inb <- await
case inb of
Just b -> if B.isInfixOf (TE.encodeUtf8 message) b
then throw PatternMatched
else do
yield b
untilMatch message
_ -> return ()
withSinkFileNoBuffering
:: (MonadUnliftIO m, MonadIO n)
=> IO.FilePath
-> (ConduitM ByteString o n () -> m a)
-> m a
(makeBehavior outTest `fuseUpstream` outSink)
(makeBehavior errTest `fuseUpstream` errSink)
makeBehavior
:: Maybe TextBehavior -> ConduitT ByteString ByteString IO TracebackScan
makeBehavior = \case
Just ExpectClean -> warnOnTraceback False
Just (WaitFor message) -> untilMatch message False
Nothing -> awaitForever yield >> return Clean
warnOnTraceback :: Bool -> ConduitT ByteString ByteString IO TracebackScan
warnOnTraceback sawTraceback = await >>= \case
Just b | B.isInfixOf "Traceback" b -> yield b >> warnOnTraceback True
| otherwise -> yield b >> warnOnTraceback sawTraceback
Nothing -> if sawTraceback then return WarningTraceback else return Clean
untilMatch :: Text -> Bool -> ConduitT ByteString ByteString IO TracebackScan
untilMatch msg sawTraceback = await >>= \case
Just b
| B.isInfixOf "Traceback" b
-> untilMatch msg True >> yield b >> untilMatch msg True
| B.isInfixOf (TE.encodeUtf8 msg) b && not sawTraceback
-> throw (PatternMatched $ TE.decodeUtf8 b)
| otherwise
-> yield b >> untilMatch msg sawTraceback
Nothing -> return Clean
{-withSinkFileNoBuffering-}
{-:: (MonadUnliftIO m, MonadIO n)-}
{-=> IO.FilePath-}
{--> (ConduitM ByteString o n () -> m a)-}
{--> m a-}
withSinkFileNoBuffering filepath inner =
withRunInIO $ \run -> IO.withBinaryFile filepath IO.WriteMode $ \h -> do
hSetBuffering h NoBuffering
run $ inner $ sinkHandle h
outTest :: Maybe TextBehavior
errTest :: Maybe TextBehavior
(outTest, errTest) = case t of
Just (TestText (TextBehaviorStdout tOut) (TextBehaviorStderr tErr)) ->
(Just tOut, Just tErr)
Nothing -> (Nothing, Nothing)
processBehaviorToI :: CreateProcess -> ProcessBehavior -> Maybe Instrumentation
processBehaviorToI crProc = \case
DontRun -> Nothing
JustRun stdOut stdErr -> Just $ Instrumentation crProc stdOut stdErr Nothing
SucceedTestOnMessage t stdOut stdErr ->
Just $ Instrumentation crProc stdOut stdErr (Just t)
Test t stdOut stdErr -> Just $ Instrumentation crProc stdOut stdErr (Just t)
......@@ -71,13 +71,13 @@ configureTest = \case
DaemonOnly -> TestSpec
{ stackArgsUpdate = \sa -> sa { daemon = daemonBehavior }
, description = "Set up and launch the daemon in synchronous mode."
, isTest = IsTest False
, isTest = NotTest
}
DaemonAndApp -> TestSpec
{ stackArgsUpdate = \sa ->
sa { daemon = daemonBehavior, cmdrun = runBehavior }
, description = "Set up and start daemon, run a command in a container."
, isTest = IsTest False
, isTest = NotTest
}
CsvLogs -> TestSpec
{ stackArgsUpdate = \sa -> sa
......@@ -91,20 +91,23 @@ configureTest = \case
(StdErrLog "progress.log")
}
, description = "Set up and start daemon, run a command in a container."
, isTest = IsTest False
, isTest = NotTest
}
TestHello -> TestSpec
{ stackArgsUpdate = \sa -> sa
{ app = AppName "echo"
, args = [AppArg msg]
, daemon = daemonBehavior
, cmdrun = SucceedTestOnMessage (TestText msg)
(StdOutLog "monitored-cmdrun-out.log")
(StdErrLog "monitored-cmdrun-err.log")
, cmdrun = Test
(TestText (TextBehaviorStdout (WaitFor msg))
(TextBehaviorStderr ExpectClean)
)
(StdOutLog "monitored-cmdrun-out.log")
(StdErrLog "monitored-cmdrun-err.log")
}
, description = "1: Setup stack and check that a hello world app sends \
\message back to cmd."
, isTest = IsTest True
, isTest = IsTest
}
TestListen -> TestSpec
{ stackArgsUpdate = \sa -> sa
......@@ -112,38 +115,46 @@ configureTest = \case
, args = [AppArg "15"]
, daemon = daemonBehavior
, cmdrun = runBehavior
, cmdlisten = listentestBehavior (TestText ",")
, cmdlisten = listentestBehavior
(TestText (TextBehaviorStdout (WaitFor "start"))
(TextBehaviorStderr ExpectClean)
)
}
, description = "2: Setup stack and check that argo-perf-wrapper sends\
\ at least one message to the daemon."
, isTest = IsTest True
, isTest = IsTest
}
TestPerfwrapper -> TestSpec
{ stackArgsUpdate = \sa -> sa
{ manifestName = "perfwrap.json"
, app = AppName "sleep"
, args = [AppArg "15"]
, daemon = daemonBehavior
, cmdrun = runBehavior
, cmdlistenperformance = listenprogresstestBehavior (TestText ",")
{ manifestName = "perfwrap.json"
, app = AppName "sleep"
, args = [AppArg "15"]
, daemon = daemonBehavior
, cmdrun = runBehavior
, cmdlistenperformance = listenperformancetestBehavior
(TestText (TextBehaviorStdout (WaitFor ","))
(TextBehaviorStderr ExpectClean)
)
}
, description = "3: Setup stack and check that argo-perf-wrapper sends\
\ at least one *performance* message to cmd listen through the\
\ daemon."
, isTest = IsTest True
, isTest = IsTest
}
TestPower -> TestSpec
{ stackArgsUpdate = \sa -> sa
{ app = AppName "sleep"
, args = [AppArg "15"]
, daemon = daemonBehavior
, cmdrun = runBehavior
, cmdlisten = listentestBehavior (TestText "power")
{ app = AppName "sleep"
, args = [AppArg "15"]
, daemon = daemonBehavior
, cmdrun = runBehavior
, cmdlistenpower = listenpowertestBehavior
(TestText (TextBehaviorStdout (WaitFor ","))
(TextBehaviorStderr ExpectClean)
)
}
, description = "4: Setup stack and check that argo-perf-wrapper sends\
\ at least one *power* message to cmd listen through the\
\ daemon."
, isTest = IsTest True
, description = "4: Setup stack and check that the daemon sends\
\ at least one *power* message."
, isTest = IsTest
}
TestAMG -> TestSpec
{ stackArgsUpdate = \sa -> sa
......@@ -165,11 +176,14 @@ configureTest = \case
]
, daemon = daemonBehavior
, cmdrun = runBehavior
, cmdlistenprogress = listenprogresstestBehavior (TestText ",")
, cmdlistenprogress = listenprogresstestBehavior
(TestText (TextBehaviorStdout (WaitFor ","))
(TextBehaviorStderr ExpectClean)
)
}
, description = "5: Setup stack, run AMG and check that it sends\
\ at least one progress message to the daemon."
, isTest = IsTest True
, isTest = IsTest
}
TestSTREAM -> TestSpec
{ stackArgsUpdate = \sa -> sa
......@@ -177,11 +191,14 @@ configureTest = \case
, args = []
, daemon = daemonBehavior
, cmdrun = runBehavior
, cmdlistenprogress = listenprogresstestBehavior (TestText ",")
, cmdlistenprogress = listenprogresstestBehavior
(TestText (TextBehaviorStdout (WaitFor ","))
(TextBehaviorStderr ExpectClean)
)
}
, description = "6: Setup stack, run STREAM and check that it sends\
\ at least one progress message to the daemon."
, isTest = IsTest True
, isTest = IsTest
}
RunAMG -> runAppSpec
(AppName "mpiexec")
......@@ -215,36 +232,64 @@ configureTest = \case
(StdErrLog "progress.log")
}
, description = "Set up and start daemon, run app in a container."
, isTest = IsTest False
, isTest = NotTest
}
msg = "someComplicatedMessage"
daemonBehavior =
JustRun (StdOutLog "daemon_out.log") (StdErrLog "daemon_err.log")
runBehavior =
JustRun (StdOutLog "cmd_run_out.log") (StdErrLog "cmd_run_err.log")
listentestBehavior t = SucceedTestOnMessage
t
(StdOutLog "cmd_listen_out.log")
(StdErrLog "cmd_listen_err.log")
listenprogresstestBehavior t = SucceedTestOnMessage
t
(StdOutLog "cmd_listen_progress_out.log")
(StdErrLog "cmd_listen_progress_err.log")
listentestBehavior t = Test t
(StdOutLog "cmd_listen_stdout.log")
(StdErrLog "cmd_listen_stderr.log")
listenprogresstestBehavior t =
Test t (StdOutLog "progress_stdout.csv") (StdErrLog "progress_stderr.log")
listenperformancetestBehavior t = Test t
(StdOutLog "performance_stdout.csv")
(StdErrLog "performance_stderr.log")
listenpowertestBehavior t =
Test t (StdOutLog "power_stdout.csv") (StdErrLog "power_stderr.log")
newtype IsTest = IsTest Bool
data IsTest = IsTest | NotTest
fullStack :: IsTest -> StackArgs -> Shell ()
fullStack (IsTest b) a@StackArgs {..} = runStack a >>= \case
FoundMessage -> printSuccess "Found message!"
Died stacki errorcode -> if b
then
printError
( repr stacki
<> " died before a message could be found:"
<> repr errorcode
fullStack isTest a@StackArgs {..} = do
stackOutput <- runStack a
case stackOutput of
FoundMessage msg -> printSuccess $ "Found string in message:" <> repr msg
FoundTracebacks tsl -> do
mapM_
(\(stacki, fout, ferr) ->
printError
$ "Found Python Traceback when executing "
<> repr stacki
<> ". Files for this command: "
<> repr fout
<> " "
<> repr ferr
)
tsl
exit (ExitFailure 1)
Died stacki errorcode _ _ tsl-> case isTest of
IsTest -> do
printError
( repr stacki
<> " died before a message could be found with error code "
<> repr errorcode
)
mapM_
(\(stacki', fout, ferr) ->
printError
$ "Found Python Traceback when executing "
<> repr stacki'
<> ". Files for this command: "
<> repr fout
<> " "
<> repr ferr
)
>> exit (ExitFailure 1)
else exit ExitSuccess
tsl
exit (ExitFailure 1)
NotTest -> exit ExitSuccess
clean :: StackArgs -> Shell ()
clean StackArgs {..} = cleanLeftovers workingDirectory
......
......@@ -8,13 +8,15 @@
inherit (pinnedVersion) url rev sha256;
},
pkgs ? import argopkgs-src {},
nrm-src ? pkgs.nodelevel.nrm.src,
containers-src ? pkgs.nodelevel.containers.src,
libnrm-src ? pkgs.nodelevel.libnrm.src,
amg-src ? pkgs.applications.nrm.amg.src,
lammps-src ? pkgs.applications.nrm.lammps.src,
qmcpack-src ? pkgs.applications.nrm.qmcpack.src,
stream-src ? pkgs.applications.nrm.stream.src,
nrm-src ? pkgs.nodelevel.nrm.src,
containers-src ? pkgs.nodelevel.containers.src,
libnrm-src ? pkgs.nodelevel.libnrm.src,
amg-src ? pkgs.applications.nrm.amg.src,
lammps-src ? pkgs.applications.nrm.lammps.src,
qmcpack-src ? pkgs.applications.nrm.qmcpack.src,
stream-src ? pkgs.applications.nrm.stream.src,
dgemm_randomwalk-src ? pkgs.applications.nrm.dgemm_randomwalk.src,
#graph500-src ? pkgs.applications.nrm.graph500.src,
}:
let
filterHdevTools = builtins.filterSource (path: type: baseNameOf path != ".hdevtools.sock");
......@@ -48,14 +50,16 @@ let
in rec
{
nrm = pkgs.nodelevel.nrm.overrideAttrs (old: {src = nrm-src;} );
libnrm = pkgs.nodelevel.libnrm.overrideAttrs (old: {src = libnrm-src;} );
containers = pkgs.nodelevel.containers.overrideAttrs (old: {src = containers-src;} );
amg = (pkgs.applications.nrm.amg.overrideAttrs (old: {src = amg-src;} )).override {libnrm=libnrm;};
qmcpack = (pkgs.applications.nrm.qmcpack.overrideAttrs (old: {src = qmcpack-src;} )).override {libnrm=libnrm;};
stream-test = (pkgs.applications.nrm.stream.overrideAttrs (old: {src = stream-src;} )).override {libnrm=libnrm; iterationCount = "20";};
stream = (pkgs.applications.nrm.stream.overrideAttrs (old: {src = stream-src;} )).override {libnrm=libnrm; iterationCount = "20000";};
lammps = (pkgs.applications.nrm.lammps.overrideAttrs (old: {src = lammps-src;} )).override {libnrm=libnrm;};
nrm = pkgs.nodelevel.nrm.overrideAttrs (old: {src = nrm-src;} );
libnrm = pkgs.nodelevel.libnrm.overrideAttrs (old: {src = libnrm-src;} );
containers = pkgs.nodelevel.containers.overrideAttrs (old: {src = containers-src;} );
amg = (pkgs.applications.nrm.amg.overrideAttrs (old: {src = amg-src;} )).override {libnrm = libnrm;};
qmcpack = (pkgs.applications.nrm.qmcpack.overrideAttrs (old: {src = qmcpack-src;} )).override {libnrm = libnrm;};
stream-test = (pkgs.applications.nrm.stream.overrideAttrs (old: {src = stream-src;} )).override {libnrm = libnrm; iterationCount = "20";};
stream = (pkgs.applications.nrm.stream.overrideAttrs (old: {src = stream-src;} )).override {libnrm = libnrm; iterationCount = "20000";};
lammps = (pkgs.applications.nrm.lammps.overrideAttrs (old: {src = lammps-src;} )).override {libnrm = libnrm;};
#dgemm_randomwalk = (pkgs.applications.nrm.dgemm_randomwalk.overrideAttrs (old: {src = dgemm_randomwalk-src;} )).override {libnrm = libnrm;};
#graph500 = (pkgs.applications.nrm.graph500.overrideAttrs (old: {src = graph500-src;} )).override {libnrm = libnrm;};
inherit(hpkgs) argo argotk;
......@@ -102,9 +106,14 @@ in rec
pkgs.coreutils
pkgs.utillinux
containers
amg stream stream-test
#qmcpack
#amg
stream stream-test
qmcpack
#lammps
#dgemm_randomwalk
#graph500
pkgs.mpich2
nrm
];
......@@ -118,9 +127,14 @@ in rec
buildInputs = [
containers
nrm
amg stream stream-test
#qmcpack
#amg
stream stream-test
qmcpack
#lammps
#dgemm_randomwalk
#graph500
(hpkgs.ghcWithPackages (p: devHPackages ++ [
argotk
argo
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment