Skip to content

Implement buildmodes that allow building bootstrap images

David Runge requested to merge issues/127 into master

archiso/mkarchiso:

Introduce a buildmodes array, that can be used to build towards more than one output artifact type. Add a buildmode for building a bootstrap image (a compressed file containing a very minimal Arch installation). The buildmodes can be set either using a buildmodes array in a profiledef.sh or by using the -m option flag to mkarchiso and providing a space delimited, quoted list. The 'iso' buildmode is always the default if no buildmodes are setup. Implement building a bootstrap image, when using the 'bootstrap' buildmode, which uses a profile's 'bootstrap_packages.$arch' file to install packages using pacstrap and compressing it to a bootstrap image. The name of the output file is currently constructed from the iso_name value by appending -bootstrap.

Replace the uses of airootfs_dir with the more generic pacstrap_dir, as the location denotes where pacstrap is being used. Replace uses of img_name with image_name and removing it from the global scope, so that it can be overridden per each buildmode. Rename _cleanup_airootfs_dir() to _cleanup_pacstrap_dir(). Make _run_once() more generic by prepending the state files with a string defined by run_once_mode. Add _validate_requirements_buildmode_all(), _validate_requirements_buildmode_bootstrap() and _validate_requirements_buildmode_iso() to validate the general requirements of the different buildmodes. Add _build_bootstrap_image() to generate the bootstrap image using bsdtar. Rename _build_iso() to _build_iso_image() to fit the naming of the respective bootstrap function. Extend _read_profile() to include the reading of bootstrap image specific packages from a file. Extend _validate_options() to include testing of the bootstrap packages and running of validation functions for all buildmodes. Change _set_overrides() to override the buildmodes if they are specified via the -m option flag. Change _make_version() to be used generically in all buildmodes. Change _make_pkglist() to be used generically in all buildmodes. Rename _build_profile() to _build_buildmode_iso() and set local variables that are specific to the buildmode, such as image_name, pacstrap_dir, run_once_mode , buildmode_packages and buildmode_pkg_list. Add _build_buildmode_bootstrap() and set local variables that are specific to the buildmode, such as image_name, pacstrap_dir, run_once_mode , buildmode_packages and buildmode_pkg_list. Add the -m option flag to the list of flags.

Closes #127 (closed)

Edited by David Runge

Merge request reports