Skip to content

Commit cf5caba

Browse files
authored
Merge pull request #831 from dmbaturin/T6855-apt-entry-rework
build: T6855: make the custom APT entry and key syntax more flexible
2 parents 5674398 + 9ed7a29 commit cf5caba

File tree

4 files changed

+54
-18
lines changed

4 files changed

+54
-18
lines changed

data/architectures/amd64.toml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
additional_repositories = [
2-
"deb [arch=amd64] https://packages.vyos.net/saltproject/debian/11/amd64/3005 bullseye main",
3-
"deb https://repo.zabbix.com/zabbix/6.0/debian bookworm main"
4-
]
5-
61
# Packages added to images for x86 by default
72
packages = [
83
"grub2",
@@ -13,3 +8,11 @@ packages = [
138
"vyos-intel-ixgbe",
149
"vyos-intel-ixgbevf",
1510
]
11+
12+
[additional_repositories.salt]
13+
architecture = "amd64"
14+
url = "https://packages.vyos.net/saltproject/debian/11/amd64/3005"
15+
distribution = "bullseye"
16+
17+
[additional_repositories.zabbix]
18+
url = "https://repo.zabbix.com/zabbix/6.0/debian"

data/architectures/arm64.toml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
additional_repositories = [
2-
"deb [arch=arm64] https://packages.vyos.net/saltproject/debian/11/arm64/3005 bullseye main",
3-
"deb https://repo.zabbix.com/zabbix/6.0/debian-arm64 bookworm main"
4-
]
5-
61
# Packages included in ARM64 images by default
72
packages = [
83
"grub-efi-arm64",
94
]
105
bootloaders = "grub-efi"
6+
7+
[additional_repositories.salt]
8+
architecture = "arm64"
9+
url = "https://packages.vyos.net/saltproject/debian/11/amd64/3005"
10+
distribution = "bullseye"
11+
12+
[additional_repositories.zabbix]
13+
url = "https://repo.zabbix.com/zabbix/6.0/debian-arm64"

scripts/image-build/build-vyos-image

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import copy
2525
import uuid
2626
import glob
2727
import json
28+
import base64
2829
import shutil
2930
import argparse
3031
import datetime
@@ -503,8 +504,9 @@ DOCUMENTATION_URL="{build_config['documentation_url']}"
503504
## Create live-build configuration files
504505

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

509511
apt_file = defaults.VYOS_REPO_FILE
510512

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

518520
# Add custom APT entries
521+
print("I: Setting up additional APT entries")
519522
if build_config.get('additional_repositories', False):
520-
build_config['custom_apt_entry'] += build_config['additional_repositories']
523+
for r in build_config['additional_repositories']:
524+
repo_data = build_config['additional_repositories'][r]
525+
526+
url = repo_data.get('url', None)
527+
arch = repo_data.get('architecture', None)
528+
distro = repo_data.get('distribution', build_config['debian_distribution'])
529+
components = repo_data.get('components', 'main')
530+
531+
if not url:
532+
print(f'E: repository {r} does not specify URL')
533+
sys.exit(1)
534+
535+
if arch:
536+
arch_string = f'[arch={arch}]'
537+
else:
538+
arch_string = ''
539+
540+
entry = f'deb {arch_string} {url} {distro} {components}'
541+
build_config['custom_apt_entry'].append(entry)
542+
543+
if not repo_data.get('no_source', False):
544+
src_entry = f'deb-src {url} {distro} {components}'
545+
build_config['custom_apt_entry'].append(src_entry)
546+
547+
if repo_data.get('key', None):
548+
build_config['custom_apt_keys'].append({'name': r, 'key': repo_data['key']})
521549

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

532560
# Add custom APT keys
533-
if has_nonempty_key(build_config, 'custom_apt_key'):
561+
if has_nonempty_key(build_config, 'custom_apt_keys'):
534562
key_dir = defaults.ARCHIVES_DIR
535-
for k in build_config['custom_apt_key']:
536-
dst_name = '{0}.key.chroot'.format(os.path.basename(k))
537-
shutil.copy(k, os.path.join(key_dir, dst_name))
563+
for k in build_config['custom_apt_keys']:
564+
dst_name = '{0}.key.chroot'.format(k['name'])
565+
with open(os.path.join(key_dir, dst_name), 'bw') as f:
566+
key_data = base64.b64decode(k['key'])
567+
f.write(key_data)
538568

539569
# Add custom packages
540570
if has_nonempty_key(build_config, 'packages'):

scripts/image-build/defaults.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def get_default_build_by():
3535
# Hardcoded default values
3636
HARDCODED_BUILD = {
3737
'custom_apt_entry': [],
38-
'custom_apt_key': [],
38+
'custom_apt_keys': [],
3939
'custom_package': [],
4040
'reuse_iso': None,
4141
'disk_size': 10,

0 commit comments

Comments
 (0)