diff --git a/lmod_manager/lmod_manager.py b/lmod_manager/lmod_manager.py index 9b26849..1ea9daa 100755 --- a/lmod_manager/lmod_manager.py +++ b/lmod_manager/lmod_manager.py @@ -276,11 +276,18 @@ def _installation_file() -> Path: return Path("bin/rustc") def _install_archive(self, installation_dir: Path) -> None: - call( - f"./install --install-dir='{installation_dir}' --force", - cwd=self._extracted_archive_dir(), - shell=True, - ) + if (self._extracted_archive_dir() / "doinstall").is_file(): + call( + f"./doinstall '{installation_dir}'", + cwd=self._extracted_archive_dir(), + shell=True, + ) + else: + call( + f"./install --install-dir='{installation_dir}' --force", + cwd=self._extracted_archive_dir(), + shell=True, + ) def main() -> Union[int, str]: diff --git a/tests/data/gnatpro-rust-26.2-x86_64-linux-bin.tar.gz b/tests/data/gnatpro-rust-26.2-x86_64-linux-bin.tar.gz new file mode 100644 index 0000000..8462d47 Binary files /dev/null and b/tests/data/gnatpro-rust-26.2-x86_64-linux-bin.tar.gz differ diff --git a/tests/lmod_manager_test.py b/tests/lmod_manager_test.py index f05a18f..7ca4ef9 100644 --- a/tests/lmod_manager_test.py +++ b/tests/lmod_manager_test.py @@ -247,6 +247,13 @@ def test_install_unexpected_archive_name_format(monkeypatch: MonkeyPatch, tmp_pa "25.0w-20240820", ), ], + [ + Archive( + "gnatpro-rust-26.2-x86_64-linux-bin.tar.gz", + "gnatpro-rust", + "26.2", + ), + ], ], ) def test_install_and_uninstall(