summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--erebos-tester.cabal1
-rw-r--r--src/Wrapper.hs19
2 files changed, 18 insertions, 2 deletions
diff --git a/erebos-tester.cabal b/erebos-tester.cabal
index 1819223..3bd3d6c 100644
--- a/erebos-tester.cabal
+++ b/erebos-tester.cabal
@@ -23,6 +23,7 @@ executable erebos-tester
-- other-modules:
-- other-extensions:
build-depends: base >=4.13 && <5,
+ directory >=1.3 && <1.4,
filepath ^>=1.4.2.1,
linux-namespaces ^>=0.1.3,
process ^>=1.6.9,
diff --git a/src/Wrapper.hs b/src/Wrapper.hs
index c97d242..64a2e0f 100644
--- a/src/Wrapper.hs
+++ b/src/Wrapper.hs
@@ -1,5 +1,8 @@
module Main where
+import GHC.Environment
+
+import System.Directory
import System.Environment
import System.FilePath
import System.Linux.Namespaces
@@ -20,6 +23,18 @@ main = do
-- needed for creating /run/netns
callCommand "mount -t tmpfs tmpfs /run"
- path <- getExecutablePath
+ epath <- takeDirectory <$> getExecutablePath -- directory containing executable
+ fpath <- map takeDirectory . take 1 <$> getFullArgs
+ -- directory used for invocation, can differ from above for symlinked executable
+
+ let dirs = concat
+ [ [ epath ]
+ , [ epath </> "../../../erebos-tester-core/build/erebos-tester-core" ]
+ , fpath
+ ]
+
args <- getArgs
- executeFile (takeDirectory path </> "../../../erebos-tester-core/build/erebos-tester-core/erebos-tester-core") False args Nothing
+ mapM_ (\file -> executeFile file False args Nothing) =<<
+ findExecutablesInDirectories dirs "erebos-tester-core"
+
+ fail "core binary not found"