===========
mixer.build
===========

-----------------------------------
Build varioius pieces of OS content
-----------------------------------

:Copyright: \(C) 2018 Intel Corporation, CC-BY-SA-3.0
:Manual section: 1


SYNOPSIS
========

``mixer build [command] [flags]``


DESCRIPTION
===========

Builds various pieces of OS content and output update metadata to
`<mixer/workspace>/update/www/<version>/`. This metadata can be published
directly to a web-server and consumed by client update systems via the
`swupd(1) <swupd.1.html>`__ update tool. All steps can be run at once using ``build all`` or
the steps can be run individually using the subcommands.


OPTIONS
=======

In addition to the globally recognized ``mixer`` flags (see `mixer(1) <mixer.1.html>`__ for
more details), the following options are recognized across all ``build``
subcommands.

-  ``--bundle-workers``

   Number of parallel workers when building bundles, passing 0 or omitting this
   flag defaults the number of workers to the number of CPUs on the system.

-  ``--delta-workers``

   Number of parallel workers when creating deltas, passing 0 or omitting this
   flag defaults the number of workers to the number of CPUs on the system.

-  ``--fullfile-workers``

   Number of parallel workers when creating fullfiles, passing 0 or omitting this
   flag defaults the number of workers to the number of CPUs on the system.

-  ``--skip-format-check``

   Skip check for compatible upstream format when building on top of a new
   upstream.

-  ``-h, --help``

   Display ``build`` help information and exit.


SUBCOMMANDS
===========

``all``

    Build all content for the mix. Implicitly runs ``build bundles`` followed by
    ``build update``. In addition to the global options ``mixer build all``
    takes the following options.

    - ``-c, --config {path}``

      Optionally tell ``mixer`` to use the configuration file at `path`. Uses
      the default `builder.conf` in the mixer workspace if this option is not
      provided.

    - ``--format {number}``

      Supply the format number to use for the build.

    - ``-h, --help``

      Display ``build all`` help information and exit.

    - ``--increment``

      Automatically increment the mix version post build.

    - ``--min-version {version}``

      Supply minimum version for ``mixer`` to use old content from. This option
      tells ``mixer`` to regenerate all mix content starting from a certain
      version. ``mixer`` will not use any OS content from a version older than
      the min-version passed here.

   - ``--no-signing``

     Do not generate a certificate and do not sign the Manifest.MoM

   - ``--prefix {path}``

     Supply the `path` to the file system where the ``swupd`` binaries live.

``bundles``

    Build the bundles for your mix. This is done by extracting dependency
    information and file lists for each package in each bundle definition for the
    mix. In addition to the global options ``mixer build bundles`` takes the
    following options.

    - ``-c, --config {path}``

      Optionally tell ``mixer`` to use the configuration file at `path`. Uses
      the default `builder.conf` in the mixer workspace if this option is not
      provided.

    - ``-h, --help``

      Display ``build bundles`` help information and exit.

   - ``--no-signing``

     Do not generate a certificate and do not sign the Manifest.MoM

``delta-packs``

    Build packs to optimize ``swupd update``\s between versions. When a
    ``swupd`` client updates a bundle it looks for a pack file from its current
    version to the new version. If available ``swupd`` will download and apply
    the pack content to the file system. Delta packs contain binary diff files
    that describe changes between updates whenever possible and full files only
    when necessary. Because of this delta packs are a significant performance
    optimization for client updates. Because the client can fall back to full
    files if a pack is not available, delta packs are not necessary for a
    functional update. In addition to the global options ``mixer build
    delta-packs`` takes the following options.

    - ``-c, --config {path}``

      Optionally tell ``mixer`` to use the configuration file at `path`. Uses
      the default `builder.conf` in the mixer workspace if this option is not
      provided.

    - ``--from {version}``

      Generate packs from the specified `version`.

    - ``-h, --help``

      Display ``build delta-packs`` help information and exit.

    - ``--previous-versions {number}``

      Generate packs for `number` of previous versions.

    - ``--report``

      Report reason each file in the `to` manifest was packed in the delta pack
      or not.

    - ``--to {version}``

      Generate packs targeting a specific `to` `version`.

``delta-manifests``

    Build manifest deltas to optimize ``swupd update``\s between versions. When a
    ``swupd`` client update runs, it will first try to get a delta manifest file
    if it exists and apply that on the bundle manifest file for the version
    installed on their system (if it exists). This can save a large amount of
    content being downloaded in the case of few files changing in a manifest.
    Because the client can fall back to the full manifest file if a delta is not
    available, delta manifests are not necessary for a functional update. In
    addition to the global options ``mixer build delta-manifests`` takes the
    following options.

    - ``--from {version}``

      Generate packs from the specified `version`.

    - ``-h, --help``

      Display ``build delta-manifests`` help information and exit.

    - ``--previous-versions {number}``

      Generate packs for `number` of previous versions.

    - ``--to {version}``

      Generate packs targeting a specific `to` `version`.

``image``

    Build an image from the mix content. In addition to the global options
    ``mixer build image`` takes the following options.

    - ``-c, --config {path}``

      Optionally tell ``mixer`` to use the configuration file at `path`. Uses
      the default `builder.conf` in the mixer workspace if this option is not
      provided.

    - ``--format {number}``

      Supply the format `number` used for the mix.

    - ``-h, --help``

      Display ``build image`` help information and exit.

    - ``--template {path}``

      Provide the `path` to the image template file to use.

``update``

    Build the update content for the mix. This command builds the actual update
    metadata (manifests) and content (full files and zero packs) necessary for
    ``swupd`` to perform updates on client systems. ``update`` relies on the
    output of ``build bundles`` as the input for this step and expects the
    output of ``build bundles`` to exist in the
    `<mixer/workspace>/update/image/<version>` directory. In addition to the
    global options ``mixer build update`` takes the following options.

    - ``-c, --config {path}``

      Optionally tell ``mixer`` to use the configuration file at `path`. Uses
      the default `builder.conf` in the mixer workspace if this option is not
      provided.

    - ``--format {number}``

      Supply the format `number` used for the mix.

    - ``-h, --help``

      Display ``build update`` help information and exit.

    - ``--increment``

      Automatically increment the mix version post build.

    - ``--min-version {version}``

      Supply minimum version for ``mixer`` to use old content from. This option
      tells ``mixer`` to regenerate all mix content starting from a certain
      version. ``mixer`` will not use any OS content from a version older than
      the min-version passed here.

   - ``--no-signing``

     Do not generate a certificate and do not sign the Manifest.MoM

   - ``--prefix {path}``

     Supply the `path` to the file system where the ``swupd`` binaries live.

``validate``

    Compare two versions to validate that manifest file changes align with corresponding
    package changes. Inconsistencies between manifest entries and package contents are
    reported as errors. When no errors occur, package update statistics are displayed.

    - ``--from {version}``

      Compare manifests ``from`` a specific version

    - ``--to {version}``

      Compare manifests ``to`` a specific version

    - ``--from-repo-url {repo}={URL}``

      Overrides the baseurl value for the provided repo in the DNF config file for the ``from`` version

    - ``--to-repo-url {repo}={URL}``

      Overrides the baseurl value for the provided repo in the DNF config file for the ``to`` version

    - ``--table-width {width}``

      Max width of package statistics table, defaults to terminal width and disabled by negative numbers

    - ``-h, --help``

      Display ``build validate`` help information and exit.


EXIT STATUS
===========

On success, 0 is returned. A non-zero return code indicates a failure.

SEE ALSO
--------

* `mixer(1) <mixer.1.html>`__
* `swupd(1) <swupd.1.html>`__
