Skip to content
  • David Runge's avatar
    mkarchiso: Implement buildmodes that allow building bootstrap images · 2cac5396
    David Runge authored
    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
    2cac5396