Hi Leonard,

On Tue, 25 Feb 2025 at 05:11, Leonard Anderweit <l.anderw...@phytec.de> wrote:
>
> Add optional argument make_path to build_from git. The new argument
> allows specifying the path to a Makefile in case it is not in the root
> of the git repo.
>
> Signed-off-by: Leonard Anderweit <l.anderw...@phytec.de>
> ---
>  tools/binman/bintool.py | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/tools/binman/bintool.py b/tools/binman/bintool.py
> index 7280ee4f8cd9..81872db377f9 100644
> --- a/tools/binman/bintool.py
> +++ b/tools/binman/bintool.py
> @@ -329,7 +329,7 @@ class Bintool:
>
>      @classmethod
>      def build_from_git(cls, git_repo, make_targets, bintool_path,
> -            flags=None, git_branch=None):
> +            flags=None, git_branch=None, make_path=None):
>          """Build a bintool from a git repo
>
>          This clones the repo in a temporary directory, builds it with 'make',
> @@ -343,6 +343,8 @@ class Bintool:
>                  build is complete
>              flags (list of str): Flags or variables to pass to make, or None
>              git_branch (str): Branch of git repo, or None to use the default
> +            make_path (str): Relative path inside git repo containing the
> +                Makefile, or None
>
>          Returns:
>              tuple:
> @@ -359,7 +361,10 @@ class Bintool:
>              tools.run('git', 'clone', '--depth', '1', git_repo, tmpdir)
>          for target in make_targets:
>              print(f"- build target '{target}'")
> -            cmd = ['make', '-C', tmpdir, '-j', 
> f'{multiprocessing.cpu_count()}',
> +            makedir = tmpdir
> +            if make_path:
> +                makedir = os.path.join(tmpdir, make_path)
> +            cmd = ['make', '-C', makedir, '-j', 
> f'{multiprocessing.cpu_count()}',
>                     target]
>              if flags:
>                  cmd += flags
> --
> 2.34.1
>

This is fine, but you need to update the fake_run() function in
test_all_bintools() so that the tests will pass:

            if cmd[0] == 'make':
                ...
                os.makedirs(os.path.dirname(tmpdir), exist_ok=True)

Regards,
Simon

Reply via email to