vyos-build/scripts/live-build-config
Daniil Baturin 10fc439940 Reduce image bloat.
1. Do not install "recommended" packages
2. Do not keep apt indices in the binary image
3. Clean up firmware packages that are installed by metapackages but are not required for
   for network or storage hardware.
4. Revert vim to vim-tiny
2018-05-15 03:51:28 +02:00

91 lines
2.9 KiB
Python
Executable File

#!/usr/bin/env python3
#
# Copyright (C) 2018 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
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# File: live-build-config
# Purpose:
# Creates a live-build config command from template using the build config
# and executes it, to prepare the system for building the installation ISO.
import sys
import os
import json
import pystache
import defaults
import util
util.check_build_config()
lb_config_tmpl = """
lb config noauto \
--architectures {{architecture}} \
--bootappend-live "boot=live components hostname=vyos username=live nopersistence noautologin nonetworking union=overlay" \
--linux-flavours {{architecture}}-vyos \
--linux-packages linux-image-4.14.26 \
--bootloader syslinux \
--binary-images iso-hybrid \
--debian-installer false \
--distribution jessie \
--iso-application "VyOS" \
--iso-publisher "{{build_by}}" \
--iso-volume "VyOS" \
--debootstrap-options "--variant=minbase --exclude=isc-dhcp-client,isc-dhcp-common,ifupdown --include=apt-transport-https" \
--mirror-bootstrap {{debian_mirror}} \
--mirror-chroot {{debian_mirror}} \
--mirror-chroot-security {{debian_security_mirror}} \
--mirror-binary {{debian_mirror}} \
--mirror-binary-security {{debian_security_mirror}} \
--archive-areas "main contrib non-free" \
--firmware-chroot true \
--updates true \
--security true \
--apt-recommends false \
--apt-indices false
"${@}"
"""
with open(defaults.BUILD_CONFIG, 'r') as f:
build_config = json.load(f)
debug = build_config['debug']
# Add the additional repositories to package lists
print("Setting up additional APT entries")
vyos_repo_entry = "deb {0} {1} main\n".format(build_config['vyos_mirror'], build_config['vyos_branch'])
apt_file = os.path.join(build_config['build_dir'], defaults.VYOS_REPO_FILE)
if debug:
print("Adding these entries to {0}:".format(apt_file))
print("\t", vyos_repo_entry)
with open(apt_file, 'w') as f:
f.write(vyos_repo_entry)
# Configure live-build
lb_config_command = pystache.render(lb_config_tmpl, build_config)
print("Configuring live-build")
os.chdir(defaults.BUILD_DIR)
result = os.system(lb_config_command)
if result > 0:
print("live-build config failed")
sys.exit(1)