diff options
author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2025-01-11 14:13:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-11 14:13:05 +0200 |
commit | 392529e0379b3d81ae9ea03f20d530ef93e28a55 (patch) | |
tree | 0dd14ad5947185182c31ed4bb61735cb2b6ae361 | |
parent | aae746aa7b86ace255063a50e4075e2e9bef390e (diff) | |
parent | a549693509106ebf1fa6bc408a50fdb422aa96da (diff) | |
download | vyos-build-392529e0379b3d81ae9ea03f20d530ef93e28a55.tar.gz vyos-build-392529e0379b3d81ae9ea03f20d530ef93e28a55.zip |
Merge pull request #882 from sever-sever/T7037
T7037: Add prebuild hook for the package-build
-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) |