Skip to content

Commit

Permalink
Merge pull request #831 from dmbaturin/T6855-apt-entry-rework
Browse files Browse the repository at this point in the history
build: T6855: make the custom APT entry and key syntax more flexible
  • Loading branch information
sever-sever authored Nov 6, 2024
2 parents 5674398 + 9ed7a29 commit cf5caba
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 18 deletions.
13 changes: 8 additions & 5 deletions data/architectures/amd64.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
additional_repositories = [
"deb [arch=amd64] https://packages.vyos.net/saltproject/debian/11/amd64/3005 bullseye main",
"deb https://repo.zabbix.com/zabbix/6.0/debian bookworm main"
]

# Packages added to images for x86 by default
packages = [
"grub2",
Expand All @@ -13,3 +8,11 @@ packages = [
"vyos-intel-ixgbe",
"vyos-intel-ixgbevf",
]

[additional_repositories.salt]
architecture = "amd64"
url = "https://packages.vyos.net/saltproject/debian/11/amd64/3005"
distribution = "bullseye"

[additional_repositories.zabbix]
url = "https://repo.zabbix.com/zabbix/6.0/debian"
13 changes: 8 additions & 5 deletions data/architectures/arm64.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
additional_repositories = [
"deb [arch=arm64] https://packages.vyos.net/saltproject/debian/11/arm64/3005 bullseye main",
"deb https://repo.zabbix.com/zabbix/6.0/debian-arm64 bookworm main"
]

# Packages included in ARM64 images by default
packages = [
"grub-efi-arm64",
]
bootloaders = "grub-efi"

[additional_repositories.salt]
architecture = "arm64"
url = "https://packages.vyos.net/saltproject/debian/11/amd64/3005"
distribution = "bullseye"

[additional_repositories.zabbix]
url = "https://repo.zabbix.com/zabbix/6.0/debian-arm64"
44 changes: 37 additions & 7 deletions scripts/image-build/build-vyos-image
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import copy
import uuid
import glob
import json
import base64
import shutil
import argparse
import datetime
Expand Down Expand Up @@ -503,8 +504,9 @@ DOCUMENTATION_URL="{build_config['documentation_url']}"
## Create live-build configuration files

# Add the additional repositories to package lists
print("I: Setting up additional APT entries")
print("I: Setting up VyOS repository APT entries")
vyos_repo_entry = "deb {vyos_mirror} {vyos_branch} main\n".format(**build_config)
vyos_repo_entry += "deb-src {vyos_mirror} {vyos_branch} main\n".format(**build_config)

apt_file = defaults.VYOS_REPO_FILE

Expand All @@ -516,10 +518,36 @@ DOCUMENTATION_URL="{build_config['documentation_url']}"
f.write(vyos_repo_entry)

# Add custom APT entries
print("I: Setting up additional APT entries")
if build_config.get('additional_repositories', False):
build_config['custom_apt_entry'] += build_config['additional_repositories']
for r in build_config['additional_repositories']:
repo_data = build_config['additional_repositories'][r]

url = repo_data.get('url', None)
arch = repo_data.get('architecture', None)
distro = repo_data.get('distribution', build_config['debian_distribution'])
components = repo_data.get('components', 'main')

if not url:
print(f'E: repository {r} does not specify URL')
sys.exit(1)

if arch:
arch_string = f'[arch={arch}]'
else:
arch_string = ''

entry = f'deb {arch_string} {url} {distro} {components}'
build_config['custom_apt_entry'].append(entry)

if not repo_data.get('no_source', False):
src_entry = f'deb-src {url} {distro} {components}'
build_config['custom_apt_entry'].append(src_entry)

if repo_data.get('key', None):
build_config['custom_apt_keys'].append({'name': r, 'key': repo_data['key']})

if build_config.get('custom_apt_entry', False):
if build_config.get('custom_apt_entry', []):
custom_apt_file = defaults.CUSTOM_REPO_FILE
entries = "\n".join(build_config['custom_apt_entry'])
if debug:
Expand All @@ -530,11 +558,13 @@ DOCUMENTATION_URL="{build_config['documentation_url']}"
f.write("\n")

# Add custom APT keys
if has_nonempty_key(build_config, 'custom_apt_key'):
if has_nonempty_key(build_config, 'custom_apt_keys'):
key_dir = defaults.ARCHIVES_DIR
for k in build_config['custom_apt_key']:
dst_name = '{0}.key.chroot'.format(os.path.basename(k))
shutil.copy(k, os.path.join(key_dir, dst_name))
for k in build_config['custom_apt_keys']:
dst_name = '{0}.key.chroot'.format(k['name'])
with open(os.path.join(key_dir, dst_name), 'bw') as f:
key_data = base64.b64decode(k['key'])
f.write(key_data)

# Add custom packages
if has_nonempty_key(build_config, 'packages'):
Expand Down
2 changes: 1 addition & 1 deletion scripts/image-build/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def get_default_build_by():
# Hardcoded default values
HARDCODED_BUILD = {
'custom_apt_entry': [],
'custom_apt_key': [],
'custom_apt_keys': [],
'custom_package': [],
'reuse_iso': None,
'disk_size': 10,
Expand Down

0 comments on commit cf5caba

Please sign in to comment.