diff options
author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2025-01-10 13:38:08 +0200 |
---|---|---|
committer | Viacheslav Hletenko <v.gletenko@vyos.io> | 2025-01-10 12:57:26 +0000 |
commit | a549693509106ebf1fa6bc408a50fdb422aa96da (patch) | |
tree | 0dd14ad5947185182c31ed4bb61735cb2b6ae361 | |
parent | aae746aa7b86ace255063a50e4075e2e9bef390e (diff) | |
download | vyos-build-a549693509106ebf1fa6bc408a50fdb422aa96da.tar.gz vyos-build-a549693509106ebf1fa6bc408a50fdb422aa96da.zip |
T7037: Add prebuild hook for the package-build
The pre_build_hook is an optional configuration defined in packages.toml
It executes after the repository is checked out and before the
build process begins. This hook allows you to perform preparatory tasks,
such as creating directories, copying files, or running custom scripts/commands.
-rwxr-xr-x | scripts/package-build/build.py | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/scripts/package-build/build.py b/scripts/package-build/build.py index d64a7378..08bda30e 100755 --- a/scripts/package-build/build.py +++ b/scripts/package-build/build.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2024 VyOS maintainers and contributors +# Copyright (C) 2024-2025 VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as @@ -92,6 +92,34 @@ def build_package(package: list, patch_dir: Path) -> None: # Check out the specific commit run(['git', 'checkout', package['commit_id']], cwd=repo_dir, check=True) + # The `pre_build_hook` is an optional configuration defined in `package.toml`. + # It executes after the repository is checked out and before the build process begins. + # This hook allows you to perform preparatory tasks, such as creating directories, + # copying files, or running custom scripts/commands. + # + # Usage: + # - Single command: + # pre_build_hook = "echo 'Hello Pre-Build-Hook'" + # + # - Multi-line commands: + # pre_build_hook = """ + # mkdir -p ../hello/vyos + # mkdir -p ../vyos + # cp example.txt ../vyos + # """ + # + # - Combination of commands and scripts: + # pre_build_hook = "ls -l; ./script.sh" + pre_build_hook = package.get('pre_build_hook', '') + if pre_build_hook: + try: + print(f'I: execute pre_build_hook for the package "{repo_name}"') + run(pre_build_hook, cwd=repo_dir, check=True, shell=True) + except CalledProcessError as e: + print(e) + print(f"I: pre_build_hook failed for the {repo_name}") + raise + # Apply patches if any if (repo_dir / 'patches'): apply_patches(repo_dir, patch_dir / repo_name) |