Go to file
2023-10-08 21:27:33 +02:00
.github/workflows ci: Modernize config, build for Debian stable / Fedora latest 2023-10-08 21:27:33 +02:00
contrib Include Yarn lockfile 2023-05-07 01:08:25 +02:00
data Add release information to metainfo file 2023-05-07 03:06:34 +02:00
docs Fix build with AppStream >= 0.16.0 2023-01-22 19:31:51 +01:00
src Build against AppStream 1.0 2023-10-08 21:24:39 +02:00
tests ci: Modernize config, build for Debian stable / Fedora latest 2023-10-08 21:27:33 +02:00
.editorconfig trivial: Set dfmt properties 2023-05-29 18:40:27 +02:00
.gitignore Add initial code and primitives 2016-03-03 20:59:03 +01:00
autoformat.sh Autoformat source code 2023-05-29 18:41:12 +02:00
LICENSE Update license 2016-03-03 20:59:11 +01:00
MAINTAINERS Add more documentation 2016-03-29 03:09:26 +02:00
meson_options.txt Allow to manually specify a GIR directory at build time 2023-05-06 23:26:10 +02:00
meson.build Build against AppStream 1.0 2023-10-08 21:24:39 +02:00
NEWS Release version 0.9.0 2023-01-26 23:12:44 +01:00
README.md trivial: typo 2023-05-14 21:07:50 +02:00
RELEASE trivial: post release version bump 2023-01-26 23:14:34 +01:00
snapcraft.yaml Snap updates 2023-06-18 18:34:45 +02:00
TODO trivial: Mark TODO entry as resolved 2020-01-20 20:24:50 +01:00

AppStream Generator

AppStream is an effort to provide additional metadata and unique IDs for all software available in a Linux system. This repository contains the server-side of the AppStream infrastructure, a tool to generate metadata from distribution packages. You can find out more about AppStream collection metadata at Freedesktop.

The AppStream generator is currently primarily used by Debian, but is written in a distribution agnostic way. Backends only need to implement two interfaces to to be ready.

If you are looking for the AppStream client-tools, the AppStream repository is where you want to go.

Install from Flathub

You can install an up-to-date version of AppStream Generator from Flathub if you just want to quickly test the software with your repository:

# Add Flathub remote
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Install appstream-generator
flatpak install org.freedesktop.appstream.generator

# Run appstream-generator
flatpak run org.freedesktop.appstream.generator --help

You can use AppStream Generator as documented, but you will need to replace all appstream-generator commands with flatpak run org.freedesktop.appstream.generator and may need to set the workspace as absolute path using -w instead of relying on autodetection.

Usage

Take a look at the docs/ directory in the source tree for information on how to use the generator and write configuration files for it.

Development

Build Test

Build dependencies

  • LDC1
  • Meson (>= 0.46) 2
  • GLibD 3
  • AppStream 4
  • libarchive (>= 3.2) 5
  • LMDB 6
  • GirToD 7
  • LibSoup
  • Cairo
  • GdkPixbuf 2.0
  • RSvg 2.0
  • FreeType
  • Fontconfig
  • Pango
  • Yarn (optional) 8

On Debian and derivatives of it, all build requirements can be installed using the following command:

sudo apt install meson ldc gir-to-d libappstream-dev libsoup2.4-dev libarchive-dev \
    libgdk-pixbuf2.0-dev librsvg2-dev libcairo2-dev libfreetype6-dev libfontconfig1-dev \
    libpango1.0-dev liblmdb-dev libglibd-2.0-dev

Build instructions

To build the tool with Meson, create a build subdirectory, change into it and run meson .. && ninja to build. In summary:

$ mkdir build && cd build
$ meson -Ddownload-js=true ..
$ ninja
$ sudo ninja install

We support several options to be set to influence the build. Change into the build directory and run mesonconf to see them all.

You might want to perform an optimized debug build by passing --buildtype=debugoptimized to meson or just do a release build straight away with --buildtype=release in case you want to use the resulting binaries productively. By default, the build happens without optimizations which slows down the generator.

Hacking

Pull-requests and patches are very welcome! If you are new to D, it is highly recommended to take a few minutes to look at the D tour to get a feeling of what the language can do: https://tour.dlang.org/