diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/image-build/build-vyos-image | 33 | ||||
-rw-r--r-- | scripts/image-build/raw_image.py | 2 | ||||
-rwxr-xr-x | scripts/package-build/build.py | 15 | ||||
-rw-r--r-- | scripts/package-build/frr/.gitignore | 1 | ||||
-rw-r--r-- | scripts/package-build/frr/package.toml | 2 | ||||
-rw-r--r-- | scripts/package-build/pam_tacplus/.gitignore | 7 | ||||
-rw-r--r-- | scripts/package-build/pam_tacplus/package.toml | 19 | ||||
-rw-r--r-- | scripts/package-build/tacacs/.gitignore | 9 | ||||
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.toml | 24 | ||||
-rwxr-xr-x | scripts/utils/merge-flavors | 3 |
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) |