From 415a183d79a3d6b397d4f5aee9f22cf4562c9281 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= Date: Tue, 23 Mar 2021 21:03:44 +0000 Subject: [PATCH] Find R path. --- ognibuild/buildsystem.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/ognibuild/buildsystem.py b/ognibuild/buildsystem.py index 4a78f90..7277897 100644 --- a/ognibuild/buildsystem.py +++ b/ognibuild/buildsystem.py @@ -40,6 +40,14 @@ from .requirements import ( OctavePackageRequirement, ) from .fix_build import run_with_build_fixers +from .session import which + + +def guaranteed_which(session, resolver, name): + path = which(session, name) + if not path: + resolver.install([BinaryRequirement(name)]) + return which(session, name) class NoBuildToolsFound(Exception): @@ -571,13 +579,16 @@ class R(BuildSystem): pass def dist(self, session, resolver, fixers, quiet=False): - run_with_build_fixers(session, ["R", "CMD", "build", "."], fixers) + r_path = guaranteed_which(session, resolver, "R") + run_with_build_fixers(session, [r_path, "CMD", "build", "."], fixers) def install(self, session, resolver, fixers, install_target): - run_with_build_fixers(session, ["R", "CMD", "INSTALL", "."], fixers) + r_path = guaranteed_which(session, resolver, "R") + run_with_build_fixers(session, [r_path, "CMD", "INSTALL", "."], fixers) def test(self, session, resolver, fixers): - run_with_build_fixers(session, ["R", "CMD", "check", "."], fixers) + r_path = guaranteed_which(session, resolver, "R") + run_with_build_fixers(session, [r_path, "CMD", "check", "."], fixers) @classmethod def probe(cls, path):