summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2025-01-10 13:38:08 +0200
committerViacheslav Hletenko <v.gletenko@vyos.io>2025-01-10 12:57:26 +0000
commita549693509106ebf1fa6bc408a50fdb422aa96da (patch)
tree0dd14ad5947185182c31ed4bb61735cb2b6ae361
parentaae746aa7b86ace255063a50e4075e2e9bef390e (diff)
downloadvyos-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-xscripts/package-build/build.py30
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)