diff --git a/ognibuild/__main__.py b/ognibuild/__main__.py index 8f82ca2..0de3307 100644 --- a/ognibuild/__main__.py +++ b/ognibuild/__main__.py @@ -150,6 +150,10 @@ def main(): # noqa: C901 external_dir, internal_dir = session.setup_from_directory(args.directory) session.chdir(internal_dir) os.chdir(external_dir) + + if not session.is_temporary and args.subcommand == 'info': + args.explain = True + if args.resolve == "apt": resolver = AptResolver.from_session(session) elif args.resolve == "native": @@ -211,7 +215,7 @@ def main(): # noqa: C901 if args.subcommand == "info": from .info import run_info - run_info(session, buildsystems=bss) + run_info(session, buildsystems=bss, fixers=fixers) except ExplainInstall as e: display_explain_commands(e.commands) except (UnidentifiedError, DetailedFailure): diff --git a/ognibuild/buildsystem.py b/ognibuild/buildsystem.py index b790c54..615d543 100644 --- a/ognibuild/buildsystem.py +++ b/ognibuild/buildsystem.py @@ -978,7 +978,7 @@ class RunTests(BuildSystem): def _read_cpanfile(session, args, kind, fixers): for line in run_with_build_fixers(session, ["cpanfile-dump"] + args, fixers): - yield kind, PerlModuleRequirement(line) + yield kind, PerlModuleRequirement(line.strip()) def _declared_deps_from_cpanfile(session, fixers): diff --git a/ognibuild/fix_build.py b/ognibuild/fix_build.py index e83b84b..90d67a2 100644 --- a/ognibuild/fix_build.py +++ b/ognibuild/fix_build.py @@ -17,7 +17,7 @@ from functools import partial import logging -from typing import List, Tuple, Callable, Any +from typing import List, Tuple, Callable, Any, Optional from buildlog_consultant import Problem from buildlog_consultant.common import ( @@ -104,8 +104,10 @@ def iterate_with_build_fixers(fixers: List[BuildFixer], cb: Callable[[], Any]): def run_with_build_fixers( - session: Session, args: List[str], fixers: List[BuildFixer], **kwargs + session: Session, args: List[str], fixers: Optional[List[BuildFixer]], **kwargs ): + if fixers is None: + fixers = [] return iterate_with_build_fixers( fixers, partial(run_detecting_problems, session, args, **kwargs) ) diff --git a/ognibuild/info.py b/ognibuild/info.py index 0ee1cfd..c0bc425 100644 --- a/ognibuild/info.py +++ b/ognibuild/info.py @@ -16,12 +16,12 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -def run_info(session, buildsystems): +def run_info(session, buildsystems, fixers=None): for buildsystem in buildsystems: print("%r:" % buildsystem) deps = {} try: - for kind, dep in buildsystem.get_declared_dependencies(session): + for kind, dep in buildsystem.get_declared_dependencies(session, fixers=fixers): deps.setdefault(kind, []).append(dep) except NotImplementedError: print( @@ -35,7 +35,7 @@ def run_info(session, buildsystems): print("\t\t\t%s" % dep) print("") try: - outputs = list(buildsystem.get_declared_outputs(session)) + outputs = list(buildsystem.get_declared_outputs(session, fixers=fixers)) except NotImplementedError: print("\tUnable to detect declared outputs for this type of build system") outputs = []