/flatpak-external-data-checker

A tool for checking if the external data used in Flatpak manifests is still up to date

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

Flatpak External Data Checker

This is a tool for checking for outdated or broken links of external data in Flatpak manifests.

Motivation

Flatpak apps are built using external data (git checkouts, tarballs, simple files, etc.). A very specific case of this is the use of extra data, which works as a way to download third party binaries at installation time.

Of course, the links pointing to external data can become obsolete, so it is very important to account for and correct such issues. This is especially critical for the extra data, in which a broken link impedes the installation of the application.

This project offers ways to easily check or monitor the state of such links, as well as the suggestion of new versions.

It works by extracting all the external data of a Flatpak manifest and giving it to a collection of checkers, which will set up the right state and, possibly, new versions of each external data.

Use

The simplest use of this tool is by calling:

flatpak-external-data-checker MANIFEST_FILE

it should display messages about any broken or outdated external data.

Changes to Flatpak manifests

For simple checks to see if a URL is broken, no changes are needed. However, the DebianRepoChecker and the RotatingURLChecker can read metadata from the manifest, in order to try to inform about new versions.

Debian repo checker

For the DebianRepoChecker, which deals only with deb packages, it can read the following metadata (add it to manifest element it refers to, e.g. where "type": "extra-data" is declared):

  "x-checker-data": {
                     "type": "debian-repo",
                     "package-name": "YOUR_PACKAGE_NAME",
                     "root": "ROOT_URL_TO_THE_DEBIAN_REPO",
                     "dist": "DEBIAN_DIST",
                     "component": "DEBIAN_COMPONENT"
                    }

Rotating URL checker

For the RotatingURLChecker you can use simply the following, as it will compare the URL in the checker-data section with the external data's one:

  "x-checker-data": {
                     "type": "rotating-url",
                     "url": "http://example.com/last-version"
                    }

License and Copyright

License: GPLv2

Copyright (c) 2018 Endless Mobile, Inc.