From 72abd7412e702a42e152a282c8f4a10bd7fb1979 Mon Sep 17 00:00:00 2001 From: Tobias Reiher Date: Tue, 20 Aug 2024 13:22:32 +0200 Subject: [PATCH] Add support for GNAT Pro for Rust --- lmod_manager/lmod_manager.py | 25 ++++++++++++++++++ ...ust-25.0w-20240820-x86_64-linux-bin.tar.gz | Bin 0 -> 1466 bytes tests/lmod_manager_test.py | 7 +++++ 3 files changed, 32 insertions(+) create mode 100644 tests/data/gnatpro-rust-25.0w-20240820-x86_64-linux-bin.tar.gz diff --git a/lmod_manager/lmod_manager.py b/lmod_manager/lmod_manager.py index 06a5eb7..5609151 100755 --- a/lmod_manager/lmod_manager.py +++ b/lmod_manager/lmod_manager.py @@ -58,6 +58,8 @@ class Tool: @staticmethod def from_archive(archive: Path) -> Tool: + if archive.name.startswith(GnatProRust.archive_name()): + return GnatProRust(archive) if archive.name.startswith(Gnat.archive_name()): return Gnat(archive) if archive.name.startswith(Spark.archive_name()): @@ -72,6 +74,8 @@ class Tool: @staticmethod def from_module(module_name: str) -> Tool: + if module_name.startswith(GnatProRust.name()): + return GnatProRust(module_name=module_name) if module_name.startswith(Gnat.name()): return Gnat(module_name=module_name) if module_name.startswith(Spark.name()): @@ -255,6 +259,27 @@ class Rust(Tool): ) +class GnatProRust(Tool): + @staticmethod + def name() -> str: + return "gnatpro-rust" + + @staticmethod + def archive_name() -> str: + return "gnatpro-rust" + + @staticmethod + 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, + ) + + def main() -> Union[int, str]: parser = argparse.ArgumentParser() diff --git a/tests/data/gnatpro-rust-25.0w-20240820-x86_64-linux-bin.tar.gz b/tests/data/gnatpro-rust-25.0w-20240820-x86_64-linux-bin.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..866e57f3d293ccf8837b995eb7083e10770d2f2a GIT binary patch literal 1466 zcmb2|=HLjeJd(!1oSv6hQc#qyTU1(HqHAQTXHc$dWME`sU}0pSTVY`qZ)T#KlbKgq zp_`PMr&p3##PBveJO7r4$l3J&UAy^&&T<7i&kC5hDV8gE&&C z@$&I<`!_L39ov3QlsEoet#ppd>lYri(rcBifA2jW_xNhz;XFAx`R!5FWsg^+nty-r zLi(*Ox5W0tjNer1YwiYr{vUW|esH~1(x#>dJI&^;u)p@FAozcB%=HY}TWf7M{O@Y$ z{xSc0{eSCu3LOO@CzKW=gHO7Q%y>Qk+^&UP-4V|33dJE_ERf|s-5?4`yj zd)WLA9I||I)uK5jv}9*gv)06QzgWI-+55d{Olat&RIWezA}St-R5nM z{f7-MNq)PSZWCARaeVt)^K)&_<@MSZzf7pGdpRTHpz78yDp3-dyPr)~FzP*d{9(nc zNcY=zRf60l|Bp6)T+PTK&RqYQ&9D7E@8ij{GM$gM>AzgYz2U{&)YKgh&pxOzdOL4! z>^Jtu@;qlJdbzyt3BBfdqRVmp<}}kDkKL>5#V@vf&*IB)D>C&dX-Q?euKsSTM@7xi z#YuM@jX&Nr(tO^;Avz`T1;bUHolAvs9-AMQC_O&;@;@v4sp7>=lO}tdEzxyZKIycA zpT^a->YGCk?7R>uV4%Hi<*LlEIurhoqv~EqOV~8OpIPX*Xw`{_PTk@`PCi2Geltzo zp3usYv%@0r^21}V+YA@CIp)n_V42uCvqm5)MR?L2`TjF=EG9I(PFA|sUY7jsZ^0ew zw`b-!2q*_%J$F6hWo@X>VqH7E+8zd#{*#;)I#(wIOf>gdb7z;*wKsZezdEk->I~d! zZ?02gHF@X6$&-1f*H6D5>uFz4jzJ2ap*p%#_-{%&ynzvk* zES>!D?%T}j)3d%DYreQeLH|&o0=Mo48B6YFQJuiwRa&?CLX!Dr?rV&BbXQ(-^P2`xWCZC;Gxfb$mo?No!iI>O9YpXBMn|AAbhkIpWnAyi! zJDb-`c)RoR-FG|uR@~X?<+nh(*w1NZal+jzTu}kJizIf|=oIx&R4G#tG?Je6RCIB* z&a8j4HqN>ma`d;<*Y|6M>aM!EF$TsSR%V>&*^r%|)iBrV?ut{z?0Y|P-hcRG{>
zVp`Nu$@+dr-fs;;l7ZJYqM+q{kzvvdUUIq z0QZxF$t!+dnR;}l_Xb(rm0#pjjC?0{=M_CZcv(sK`y{qTq0(J5UmTEcxt+ct$xvr* zfL-P<-I~bSecb2uZ_Ru$m^Rv$HRP%K9wCGp9 zyT*C$j#UogbqBk{ug$-@IaG36={4Q8mG1n<)SJF-XxE(ZN;A?UPgXW6X7%ol6`Bs