diff --git a/install/install_ibcdfo.sh b/install/install_ibcdfo.sh index efd5f6dcb..0ed790f01 100644 --- a/install/install_ibcdfo.sh +++ b/install/install_ibcdfo.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -git clone --recurse-submodules -b develop https://github.com/POptUS/IBCDFO.git +git clone --recurse-submodules -b main https://github.com/POptUS/IBCDFO.git pushd IBCDFO/minq/py/minq5/ export PYTHONPATH="$PYTHONPATH:$(pwd)" echo "PYTHONPATH=$PYTHONPATH" >> $GITHUB_ENV diff --git a/libensemble/executors/executor.py b/libensemble/executors/executor.py index d9cf6f428..dca58deaf 100644 --- a/libensemble/executors/executor.py +++ b/libensemble/executors/executor.py @@ -673,10 +673,16 @@ def set_worker_info(self, comm=None, workerid=None) -> None: self.workerID = workerid self.comm = comm - def _check_app_exists(self, full_path: str) -> None: + def _check_app_exists(self, app: Application) -> None: """Allows submit function to check if app exists and error if not""" - if not os.path.isfile(full_path): - raise ExecutorException(f"Application does not exist {full_path}") + if app.precedent is not None: + # Could be a container call in precedent. In that case, + # the executable is not available on the host system and + # we just forward what the user provided. + return + + if not os.path.isfile(app.full_path): + raise ExecutorException(f"Application does not exist {app.full_path}") def submit( self, @@ -745,7 +751,7 @@ def submit( task = Task(app, app_args, default_workdir, stdout, stderr, self.workerID, dry_run) if not dry_run: - self._check_app_exists(task.app.full_path) + self._check_app_exists(task.app) runline = task.app.app_cmd.split() if task.app_args is not None: diff --git a/libensemble/executors/mpi_executor.py b/libensemble/executors/mpi_executor.py index 9b167ddaa..114144291 100644 --- a/libensemble/executors/mpi_executor.py +++ b/libensemble/executors/mpi_executor.py @@ -317,7 +317,7 @@ def submit( task = Task(app, app_args, default_workdir, stdout, stderr, self.workerID, dry_run) if not dry_run: - self._check_app_exists(task.app.full_path) + self._check_app_exists(task.app) if stage_inout is not None: logger.warning("stage_inout option ignored in this " "executor - runs in-place") diff --git a/libensemble/tests/unit_tests/test_executor.py b/libensemble/tests/unit_tests/test_executor.py index df5c8cc32..830c05ce3 100644 --- a/libensemble/tests/unit_tests/test_executor.py +++ b/libensemble/tests/unit_tests/test_executor.py @@ -909,8 +909,8 @@ def test_non_existent_app(): try: w_exctr.submit(app_name="nonexist") - except ExecutorException as e: - assert e.args[0] == "Application does not exist simdir/non_exist.x" + except FileNotFoundError as e: + assert e.filename == "simdir/non_exist.x" else: assert 0 @@ -930,8 +930,8 @@ def test_non_existent_app_mpi(): try: w_exctr.submit(app_name="nonexist") - except ExecutorException as e: - assert e.args[0] == "Application does not exist simdir/non_exist.x" + except MPIResourcesException: + pass else: assert 0