diff --git a/Changelog.md b/Changelog.md index d2ea60ac..7b1efc4c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,10 @@ # CHANGELOG All notable changes to this project will be documented here. +## [v2.4.1] +- Fix bug that prevented copies of instructor directories from being deleted (#483) +- Add STACK_ROOT to containers as well as notes in readme (#484) + ## [v2.4.0] - Fix bug that prevented test results from being returned when a feedback file could not be found (#458) - Add support for Python 3.11 and 3.12 (#467) diff --git a/README.md b/README.md index 2486b0a7..f159fe9d 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,7 @@ Installing each tester will also install the following additional packages (syst - `haskell` - ghc - cabal-install + - haskell-stack - tasty-stats (cabal package) - tasty-discover (cabal package) - tasty-quickcheck (cabal package) @@ -259,6 +260,10 @@ ERROR_LOG= # file to write error log informatoin to (default is stderr) SETTINGS_JOB_TIMEOUT= # the maximum runtime (in seconds) of a job that updates settings before it is interrupted (default is 60) ``` +## Stack configuration +The Haskell autotester uses [stack](https://docs.haskellstack.org/en/stable/) to install and manage Haskell packages. By default, stack will install to `${HOME}/.stack`, where `${HOME}` is the home directory of the user running the autotester. +The installation location can be configured by setting a `$STACK_ROOT`, such as the root of the workspace directory. + ## MarkUs configuration options After installing the autotester and the API, the next step is to [register the MarkUs instance with the autotester](https://github.com/MarkUsProject/Markus/wiki/Installation#autotester-installation-steps). diff --git a/docker-compose.yml b/docker-compose.yml index 49ffa6b2..fbc3fc49 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,6 +18,7 @@ services: - WORKSPACE=/home/docker/.autotesting - SUPERVISOR_URL=127.0.0.1:9001 - AUTOTESTER_CONFIG=/app/.dockerfiles/docker-config.yml + - STACK_ROOT=/home/docker/.autotesting/.stack depends_on: - postgres - redis diff --git a/server/autotest_server/__init__.py b/server/autotest_server/__init__.py index c3706fa5..6f2ee12d 100644 --- a/server/autotest_server/__init__.py +++ b/server/autotest_server/__init__.py @@ -254,9 +254,9 @@ def _clear_working_directory(tests_path: str, test_username: str) -> None: Run commands that clear the tests_path working directory """ if test_username != getpass.getuser(): - chmod_cmd = f"sudo -u {test_username} -- bash -c 'chmod -Rf ugo+rwX {tests_path}'" + chmod_cmd = f"sudo -u {test_username} -- bash -c 'chmod -Rf -t ugo+rwX {tests_path}'" else: - chmod_cmd = f"chmod -Rf ugo+rwX {tests_path}" + chmod_cmd = f"chmod -Rf -t ugo+rwX {tests_path}" subprocess.run(chmod_cmd, shell=True)