summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/image-build/build-vyos-image33
-rw-r--r--scripts/image-build/raw_image.py2
-rwxr-xr-xscripts/package-build/build.py15
-rw-r--r--scripts/package-build/frr/.gitignore1
-rw-r--r--scripts/package-build/frr/package.toml2
-rw-r--r--scripts/package-build/pam_tacplus/.gitignore7
-rw-r--r--scripts/package-build/pam_tacplus/package.toml19
-rw-r--r--scripts/package-build/tacacs/.gitignore9
l---------scripts/package-build/tacacs/build.py (renamed from scripts/package-build/pam_tacplus/build.py)0
-rw-r--r--scripts/package-build/tacacs/package.toml24
-rwxr-xr-xscripts/utils/merge-flavors3
11 files changed, 59 insertions, 56 deletions
diff --git a/scripts/image-build/build-vyos-image b/scripts/image-build/build-vyos-image
index 044a9055..dfa5dfbe 100755
--- a/scripts/image-build/build-vyos-image
+++ b/scripts/image-build/build-vyos-image
@@ -63,7 +63,7 @@ except Exception as e:
# Checkout vyos-1x under build directory
try:
branch_name = build_defaults['vyos_branch']
- url_vyos_1x = 'https://github.com/vyos/vyos-1x'
+ url_vyos_1x = os.getenv('VYOS1X_REPO_URL', default='https://github.com/vyos/vyos-1x')
path_vyos_1x = os.path.join(defaults.BUILD_DIR, 'vyos-1x')
try:
repo_vyos_1x = git.Repo.clone_from(url_vyos_1x, path_vyos_1x, no_checkout=True)
@@ -192,7 +192,7 @@ if __name__ == "__main__":
'pbuilder-debian-mirror': ('Debian repository mirror for pbuilder env bootstrap', None),
'vyos-mirror': ('VyOS package mirror', None),
'build-type': ('Build type, release or development', lambda x: x in ['release', 'development']),
- 'version': ('Version number (release builds only)', None),
+ 'version': ('Version string', None),
'build-comment': ('Optional build comment', None),
'build-hook-opts': ('Custom options for the post-build hook', None)
}
@@ -269,19 +269,11 @@ if __name__ == "__main__":
if pre_build_config['pbuilder_debian_mirror'] is None:
args['pbuilder_debian_mirror'] = pre_build_config['pbuilder_debian_mirror'] = pre_build_config['debian_mirror']
- # Version can only be set for release builds,
- # for dev builds it hardly makes any sense
- if pre_build_config['build_type'] == 'development':
- if args['version'] is not None:
- print("E: Version can only be set for release builds")
- print("Use --build-type=release option if you want to set version number")
- sys.exit(1)
-
# Validate characters in version name
- if 'version' in args and args['version'] != None:
+ if args.get('version'):
allowed = string.ascii_letters + string.digits + '.' + '-' + '+'
if not set(args['version']) <= set(allowed):
- print(f'Version contained illegal character(s), allowed: {allowed}')
+ print(f'Version string contains illegal character(s), allowed: {allowed}')
sys.exit(1)
## Inject some useful hardcoded options
@@ -413,8 +405,10 @@ if __name__ == "__main__":
build_git = ""
git_branch = ""
- # Create the build version string
- if build_config['build_type'] == 'development':
+ # Create the build version string, if it's not explicitly given
+ if build_config.get('version'):
+ version = build_config['version']
+ else:
try:
if not git_branch:
raise ValueError("git branch could not be determined")
@@ -429,9 +423,6 @@ if __name__ == "__main__":
except Exception as e:
print("W: Could not build a version string specific to git branch, falling back to default: {0}".format(str(e)))
version = "999.{0}".format(build_timestamp)
- else:
- # Release build, use the version from ./configure arguments
- version = build_config['version']
version_data = {
'version': version,
@@ -674,7 +665,7 @@ Pin-Priority: 600
# If not, build additional flavors from the ISO.
if build_config["image_format"] != ["iso"]:
# For all non-iso formats, we always build a raw image first
- raw_image = raw_image.create_raw_image(build_config, iso_file, "tmp/")
+ version_data, raw_image = raw_image.create_raw_image(build_config, iso_file, "tmp/")
manifest['artifacts'].append(raw_image)
# If there are other formats in the flavor, the assumptions is that
@@ -704,8 +695,10 @@ Pin-Priority: 600
hook_opts = build_config["build_hook_opts"]
else:
hook_opts = ""
- custom_image = rc_cmd(f"./build_hook {raw_image} {build_config['version']} \
- {build_config['architecture']} {hook_opts}")
+ build_hook_command = f"./build_hook {raw_image} {version_data['version']} \
+ {build_config['architecture']} {hook_opts}"
+ print(f'I: executing build hook command: {build_hook_command}')
+ custom_image = rc_cmd(build_hook_command)
manifest['artifacts'].append(custom_image)
# Filter out unwanted files from the artifact list
diff --git a/scripts/image-build/raw_image.py b/scripts/image-build/raw_image.py
index dedb6f5e..d850eead 100644
--- a/scripts/image-build/raw_image.py
+++ b/scripts/image-build/raw_image.py
@@ -210,4 +210,4 @@ def create_raw_image(build_config, iso_file, work_dir):
install_image(con, version)
install_grub(con, version)
- return raw_file
+ return (version_data, raw_file)
diff --git a/scripts/package-build/build.py b/scripts/package-build/build.py
index 0648b564..7212b6cf 100755
--- a/scripts/package-build/build.py
+++ b/scripts/package-build/build.py
@@ -75,12 +75,11 @@ def prepare_package(repo_dir: Path, install_data: str) -> None:
raise
-def build_package(package: list, dependencies: list, patch_dir: Path) -> None:
+def build_package(package: list, patch_dir: Path) -> None:
"""Build a package from the repository
Args:
package (list): List of Packages from toml
- dependencies (list): List of additional dependencies
patch_dir (Path): Directory containing patches
"""
repo_name = package['name']
@@ -94,9 +93,6 @@ def build_package(package: list, dependencies: list, patch_dir: Path) -> None:
# Check out the specific commit
run(['git', 'checkout', package['commit_id']], cwd=repo_dir, check=True)
- # Ensure dependencies
- ensure_dependencies(dependencies)
-
# Apply patches if any
if (repo_dir / 'patches'):
apply_patches(repo_dir, patch_dir)
@@ -177,11 +173,14 @@ if __name__ == '__main__':
packages = config['packages']
patch_dir = Path(args.patch_dir)
- for package in packages:
- dependencies = package.get('dependencies', {}).get('packages', [])
+ # Load global dependencies
+ global_dependencies = config.get('dependencies', {}).get('packages', [])
+ if global_dependencies:
+ ensure_dependencies(global_dependencies)
+ for package in packages:
# Build the package
- build_package(package, dependencies, patch_dir)
+ build_package(package, patch_dir)
# Clean up build dependency packages after build
cleanup_build_deps(Path(package['name']))
diff --git a/scripts/package-build/frr/.gitignore b/scripts/package-build/frr/.gitignore
index 590895c0..f22f6747 100644
--- a/scripts/package-build/frr/.gitignore
+++ b/scripts/package-build/frr/.gitignore
@@ -6,3 +6,4 @@ libyang/
*.changes
*.deb
*.dsc
+*.tar.gz
diff --git a/scripts/package-build/frr/package.toml b/scripts/package-build/frr/package.toml
index 48d51ae6..caae3537 100644
--- a/scripts/package-build/frr/package.toml
+++ b/scripts/package-build/frr/package.toml
@@ -16,7 +16,7 @@ commit_id = "stable/9.1"
scm_url = "https://github.com/FRRouting/frr.git"
build_cmd = "sudo dpkg -i ../*.deb; sudo dpkg-buildpackage -us -uc -tc -b -Ppkg.frr.rtrlib,pkg.frr.lua"
-[packages.dependencies]
+[dependencies]
packages = [
"chrpath",
"gawk",
diff --git a/scripts/package-build/pam_tacplus/.gitignore b/scripts/package-build/pam_tacplus/.gitignore
deleted file mode 100644
index 04e8d4e9..00000000
--- a/scripts/package-build/pam_tacplus/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-pam_tacplus/
-pam_tacplus-debian/
-*.buildinfo
-*.build
-*.changes
-*.deb
-*.dsc
diff --git a/scripts/package-build/pam_tacplus/package.toml b/scripts/package-build/pam_tacplus/package.toml
deleted file mode 100644
index 79b28544..00000000
--- a/scripts/package-build/pam_tacplus/package.toml
+++ /dev/null
@@ -1,19 +0,0 @@
-[[packages]]
-name = "pam_tacplus-debian"
-commit_id = "50c6fd7"
-scm_url = "https://github.com/kravietz/pam_tacplus-debian"
-build_cmd = "/bin/true"
-
-[[packages]]
-name = "pam_tacplus"
-#commit_id = "4f91b0d" # This commit cannot build the package
-commit_id = "b839c44"
-scm_url = "https://github.com/kravietz/pam_tacplus"
-
-#build_cmd = "sudo mk-build-deps --install --tool 'apt-get --yes --no-install-recommends'; cd ..; ./build.sh"
-build_cmd = """
-cp -a ../pam_tacplus-debian debian
-rm -f debian/compat
-sudo mk-build-deps --install --tool 'apt-get --yes --no-install-recommends'
-dpkg-buildpackage -uc -us -tc -b -d
-"""
diff --git a/scripts/package-build/tacacs/.gitignore b/scripts/package-build/tacacs/.gitignore
new file mode 100644
index 00000000..142020c5
--- /dev/null
+++ b/scripts/package-build/tacacs/.gitignore
@@ -0,0 +1,9 @@
+libnss-tacplus/
+libpam-tacplus/
+libtacplus-map/
+*.buildinfo
+*.build
+*.changes
+*.deb
+*.dsc
+*.tar.gz
diff --git a/scripts/package-build/pam_tacplus/build.py b/scripts/package-build/tacacs/build.py
index 3c76af73..3c76af73 120000
--- a/scripts/package-build/pam_tacplus/build.py
+++ b/scripts/package-build/tacacs/build.py
diff --git a/scripts/package-build/tacacs/package.toml b/scripts/package-build/tacacs/package.toml
new file mode 100644
index 00000000..fde9df6e
--- /dev/null
+++ b/scripts/package-build/tacacs/package.toml
@@ -0,0 +1,24 @@
+[[packages]]
+name = "libtacplus-map"
+commit_id = "master"
+scm_url = "https://github.com/vyos/libtacplus-map.git"
+build_cmd = "dpkg-buildpackage -us -uc -tc -b"
+
+[[packages]]
+name = "libpam-tacplus"
+commit_id = "master"
+scm_url = "https://github.com/vyos/libpam-tacplus.git"
+build_cmd = "sudo dpkg -i ../libtacplus-map*.deb; dpkg-buildpackage -us -uc -tc -b"
+
+[[packages]]
+name = "libnss-tacplus"
+commit_id = "master"
+scm_url = "https://github.com/vyos/libnss-tacplus.git"
+build_cmd = "sudo dpkg -i ../libtac*.deb ../libpam-tacplus*.deb; dpkg-buildpackage -us -uc -tc -b"
+
+[dependencies]
+packages = [
+ "libpam-dev",
+ "autoconf-archive",
+ "libaudit-dev"
+]
diff --git a/scripts/utils/merge-flavors b/scripts/utils/merge-flavors
index 013014e0..79f8180e 100755
--- a/scripts/utils/merge-flavors
+++ b/scripts/utils/merge-flavors
@@ -58,6 +58,9 @@ if __name__ == '__main__':
if 'architectures' not in base_flavor:
base_flavor['architectures'] = {}
+ if 'packages' not in base_flavor:
+ base_flavor['packages'] = []
+
flavor_files = sys.argv[2:]
flavor_defs = map(load_flavor, flavor_files)