fwupd/contrib/ci
Aleksander Morgado fc8093626c modem-manager: implement support for qmi-pdc
If a device reports that qmi-pdc is supported (e.g. DW5821e that
supports both fastboot and qmi-pdc), we'll end up first running the
fastboot installation before doing the qmi-pdc installation procedure.

These changes also make sure that the MM device inhibition is kept for
as long as the whole process is ongoing. Only after the last method is
run, the inhibition will be removed.

In order to handle devices being exposed in the system while the MM
inhibition is in place, e.g. to be able to run qmi-pdc after fastboot,
a simple udev based watcher is included, which will take care of
creating the FuMmDevice that is not associated to any modem currently
exposed by MM, but that shares all the details of the original device.

This new logic assumes that the devices don't change their USB layout
during a firmware upgrade, which is not a very good assumption, but it
works for the case at hand. If this is not the case, we may need to
end up doing some custom AT port probing instead of relying on the
original one reported by MM being still valid (note that we don't rely
on the device name, as that may change if some other device is plugged
in the system while we're doing the update, we rely on the USB
interface number).
2019-02-27 16:09:13 +00:00
..
arch.sh contrib/ci: Fix synapticmst test under arch ci build 2018-04-12 20:31:30 -05:00
centos.sh Add a plugin to support ModemManager hardware 2019-02-27 16:09:13 +00:00
check_missing_translations.sh Catch missing translation files in POTFILES.in 2018-06-29 06:43:06 +01:00
debian_s390x.sh Add a plugin to support ModemManager hardware 2019-02-27 16:09:13 +00:00
debian.sh trivial: debian: disable test suite if fwupd is currently installed 2018-08-23 10:58:50 -05:00
dependencies.xml modem-manager: implement support for qmi-pdc 2019-02-27 16:09:13 +00:00
Dockerfile-arch.in contrib: Don't declare OS variable in docker run command (Fixes: #413) 2018-02-21 13:30:12 -06:00
Dockerfile-centos.in Port from libappstream-glib to libxmlb 2018-10-17 14:41:13 +01:00
Dockerfile-debian.in Revert "contrib/debian: Switch to debian unstable" 2019-02-25 10:59:13 -06:00
Dockerfile-fedora.in trivial: Do not use the testing remote for the Fedora CI 2019-01-29 22:28:09 +00:00
Dockerfile-flatpak.in trivial: Move Fedora CI to f29 2019-01-28 15:42:30 +00:00
Dockerfile-snap.in trivial: snap: pull from edge channel to build 2019-02-25 21:27:18 -06:00
Dockerfile-ubuntu.in ci: Run clang static analysis for Ubuntu build rather than just clang compiler 2018-09-21 07:35:08 +01:00
fedora.sh modem-manager: implement support for qmi-pdc 2019-02-27 16:09:13 +00:00
flatpak.py trivial: ci: Don't use strict when parsing json 2019-02-25 21:27:18 -06:00
generate_debian.py contrib/debian: generate debian/copyright dynamically 2018-08-05 08:22:23 -05:00
generate_docker.py trivial: snap: disable use of plugs for classic snap 2018-09-09 21:52:28 -05:00
README.md modem-manager: implement support for qmi-pdc 2019-02-27 16:09:13 +00:00
s390x_cross.txt Introduce an s390x cross compile target to CI 2017-09-08 09:24:54 +01:00
snap.sh Add support for creating snaps 2018-05-31 14:12:06 -05:00
snapcraft-wrapper trivial: snap: pull from edge channel to build 2019-02-25 21:27:18 -06:00
ubuntu.sh trivial: read and use all build flags used by Debian and Ubuntu builds 2019-02-04 08:56:43 -06:00

Continuous Integration

Continuous integration for fwupd is provided by Travis CI.

By using Travis CI, builds are exercised across a variety of environments attempting to maximize code coverage. For every commit or pull request 6 builds are performed:

Fedora (x86_64)

  • A fully packaged RPM build with all plugins enabled
  • Compiled under gcc with AddressSanitizer
  • Tests with -Werror enabled
  • Tests with the built in local test suite for all plugins.
  • All packages are installed
  • An installed testing run with the "test" plugin and pulling from LVFS.
  • With modem manager disabled

Debian testing (x86_64)

  • A fully packaged DEB build with all plugins enabled
  • Compiled under gcc
  • Tests with -Werror enabled
  • Tests with the built in local test suite for all plugins.
  • All packages are installed
  • An installed testing run with the "test" plugin and pulling from LVFS.
  • All packages are removed

Debian testing (i386)

  • A fully packaged DEB build with all plugins enabled
  • Compiled under gcc
  • Tests with -Werror enabled
  • Tests with the built in local test suite for all plugins.
  • All packages are installed
  • An installed testing run with the "test" plugin and pulling from LVFS.
  • All packages are removed

Ubuntu devel release (x86_64)

  • A fully packaged DEB build with all plugins enabled
  • Compiled under clang
  • Tests without -Werror enabled
  • Tests with the built in local test suite for all plugins.
  • All packages are installed
  • An installed testing run with the "test" plugin and pulling from LVFS.
  • All packages are removed

Debian testing (cross compile s390x)

  • Not packaged
  • Tests for missing translation files
  • No redfish support
  • Compiled under gcc
  • Tests with -Werror enabled
  • Runs local test suite using qemu-user
  • Modem manager disabled

Arch Linux (x86_64)

  • A fully packaged pkg build with all plugins enabled
  • Compiled under gcc
  • Tests with -Werror enabled
  • Compile with the deprecated USB plugin enabled
  • Tests with the built in local test suite for all plugins.
  • All packages are installed

Flatpak

  • A flatpak bundle with all plugins enabled
  • Compiled under gcc with the org.gnome.Sdk/x86_64/3.28 runtime
  • Builds without the daemon, so only fwupdtool is available
  • No GPG, PKCS-7, GObjectIntrospection, systemd or ConsoleKit support
  • No tests

Adding a new target

Dockerfiles are generated dynamically by the python script generate_dockerfile.py. The python script will recognize the environment variable OS to determine what target to generate a Dockerfile for.

dependencies.xml

Initially the python script will read in dependencies.xml to generate a dependency list for that target. The XML is organized by a top level element representing the dependencies needed for building fwupd.

The child elements represent individual dependencies for all distributions.

  • This element has an attribute id that represents the most common package name used by distributions
  • This element has an attribute type that reprsents if the package is needed at build time or runtime.

Each dependency then has a mapping to individual distributions (distro).

  • This element has an attribute id that represents the distribution.

Each distribution will have package elements and control elements. Package elements represent the name of the package needed for the distribution.

  • An optional attribute variant represents one deviation of that distribution. For example building a specific architecture or with a different compiler.
  • If the package element is empty the id of the element will be used. Control elements represent specific requirements associated to a dependency. They will contain elements with individual details.
  • version elements represent a minimum version to be installed
  • inclusive elements represent an inclusive list of architectures to be installed on
  • exclusive elements represent an exclusive list of architectures to not be installed on

Dockerfile.in

The Dockerfile.in file will be used as a template to build the container. No hardcoded dependencies should be put in this file. They should be stored in dependencies.xml.