appstream-generator/snapcraft.yaml
Heather Ellsworth 041fb049b6 Snap updates
- Update $SNAPCRAFT* to $CRAFT*
  - Update dependencies where necessary
  - Alphabetize build-packages
  - Add meson and ninja for newer versions
  - Add single quotes to avoid tag confusion
  - Remove sudo when creating yarn.list
  - Add LD_LIBRARY_PATH to appstream part
  - Bump version of gir-to-d to v0.23.1
  - Bump version of glibd to v2.4.2
  - Add GIR_PATH and GIREPOSITORY paths to glibd part
  - Move env vars to build-environment
  - Remove unnecessary empty lines for readability
2023-06-18 18:34:45 +02:00

287 lines
8.7 KiB
YAML

#
# Copyright (C) 2020 Matthias Klumpp <matthias@tenstral.net>
# Copyright (C) 2020 Canonical Ltd
# Author: Iain Lane <iain@orangesquash.org.uk>
#
# SPDX-License-Identifier: FSFAP
#
# This Snapcraft file and the resulting Snap is NOT OFFICIALLY SUPPORTED.
# If you can, please use a provided native build for your distribution.
# Patches to improve this file are very welcome though, and so is testing the Snap!
#
# This snap is strict, but it has an important limitation:
# - it needs read/write access to wherever the user puts the workspace
# definition (could be anywhere, but most commonly it's in /srv, in /home or
# in /var), access to a local archive mount (can be in /mnt), and that should
# be it (unless optipng and ffprobe have extra requirements).
#
# Until that is overcome, this snap should be installed using `--devmode` to
# effectively disable the confinement.
#
# This Snap is autobuilt, you can check its status at https://build.snapcraft.io/user/ximion/appstream-generator
name: appstream-generator
license: LGPL-3.0
base: core22
adopt-info: appstream-generator
confinement: strict
grade: stable
architectures:
- build-on: [amd64]
apps:
appstream-generator:
command: usr/bin/appstream-generator
extensions: [gnome]
common-id: org.freedesktop.appstream.generator
plugs:
- network
- home
environment:
GSETTINGS_SCHEMA_DIR: "$SNAP/usr/share/glib-2.0/schemas"
GIO_EXTRA_MODULES: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/gio/modules"
layout:
/usr/share/appstream:
bind: $SNAP/usr/share/appstream
/usr/lib/$CRAFT_ARCH_TRIPLET/gdk-pixbuf-2.0:
bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/gdk-pixbuf-2.0
/usr/share/i18n:
bind: $SNAP/usr/share/i18n
/usr/share/mime:
bind: $SNAP/usr/share/mime
parts:
ninja:
plugin: nil
source: https://github.com/ninja-build/ninja.git
source-tag: 'v1.11.1'
source-depth: 1
override-build: |
rm -rf build
rm -f ninja
rm -f ninja_bootstrap
sed -i 's_^#!/usr/bin/env python$_#!/usr/bin/env python3_g' configure.py
./configure.py --bootstrap
mv ninja ninja_bootstrap
rm -rf build
./ninja_bootstrap
rm -f ninja_bootstrap
mkdir -p $CRAFT_PART_INSTALL/usr/bin
mv ninja $CRAFT_PART_INSTALL/usr/bin/
build-packages:
- python3
meson-deps:
after: [ ninja ]
plugin: nil
source: https://github.com/mesonbuild/meson.git
source-tag: '1.1.1'
source-depth: 1
override-build: |
python3 -m pip install .
mkdir -p $CRAFT_PART_INSTALL/usr/lib/python3/dist-packages
rm -rf $CRAFT_PART_INSTALL/usr/lib/python3/dist-packages/meson*
python3 -m pip install --target=$CRAFT_PART_INSTALL/usr .
mv $CRAFT_PART_INSTALL/usr/bin/meson /usr/local/bin/meson
sed -i "s%^#!/usr/bin/python3$%#!/usr/bin/env python3%g" /usr/local/bin/meson
build-packages:
- python3-pip
appstream-generator:
source: .
source-type: git
parse-info: [usr/share/metainfo/org.freedesktop.appstream.generator.metainfo.xml]
override-pull: |
craftctl default
# set version from Git
craftctl set version=$(git describe --always | sed -e 's/v//;s/-/+git/;y/-/./')
# adjust to an absolute path to help finding the GIR file from the AppStream part
sed -i 's|AppStream-1.0.gir|$CRAFT_STAGE/usr/share/gir-1.0/AppStream-1.0.gir|g' ${CRAFT_PART_SRC}/contrib/girwrap/APILookupAppStream.txt
sed -i 's|AppStreamCompose-1.0.gir|$CRAFT_STAGE/usr/share/gir-1.0/AppStreamCompose-1.0.gir|g' ${CRAFT_PART_SRC}/contrib/girwrap/APILookupAppStreamCompose.txt
plugin: meson
build-environment:
- LD_LIBRARY_PATH: $CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET/
override-build: |
# install yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
apt-get update && apt-get install --no-install-recommends -y yarn nodejs
# actually build asgen - we need to run everything manually here,
# because snapcraft will kill the build if run with maximum amount of ninja jobs,
# and I found no way to limit the amount of permitted ninja jobs other than overriding everything
meson --prefix=/usr --buildtype=debugoptimized -Ddownload-js=true ${CRAFT_PART_BUILD} ${CRAFT_PART_SRC}
ninja -C "${CRAFT_PART_BUILD}" -j4
meson test -C "${CRAFT_PART_BUILD}" --verbose
DESTDIR=${CRAFT_PART_INSTALL} ninja -C "${CRAFT_PART_BUILD}" install
override-prime: |
set -eux
craftctl default
for dir in usr/lib/*/gdk-pixbuf-2.0; do
if [ -d "${dir}" ]; then
for subdir in "${dir}"/*; do
if [ -d "${subdir}" ] && [ -d "${subdir}/loaders" ]; then
GDK_PIXBUF_MODULEDIR="$(pwd)/${subdir}/loaders" "${dir}/gdk-pixbuf-query-loaders" > "${subdir}/loaders.cache"
sed -i "s,$(pwd),," "${subdir}/loaders.cache"
fi
done
fi
done
update-mime-database -V usr/share/mime/
usr/lib/${CRAFT_ARCH_TRIPLET}/glib-2.0/glib-compile-schemas usr/share/glib-2.0/schemas
build-packages:
- curl
- docbook-xsl
- docbook-xml
- ffmpeg
- libarchive-dev
- libcairo2-dev
- libcurl4-gnutls-dev
- libfontconfig1-dev
- libfreetype6-dev
- libgdk-pixbuf2.0-dev
- libglib2.0-dev
- liblmdb-dev
- libpango1.0-dev
- librsvg2-dev
- xsltproc
stage-packages:
- ffmpeg
- freeglut3
- gdb
- glib-networking
- libarchive13
- libc-bin
- libcairo2
- libcurl3-gnutls
- libdatrie1
- libfontconfig1
- libfreetype6
- libgdk-pixbuf2.0-0
- libglib2.0-0
- libglib2.0-bin
- libglu1-mesa
- libgraphite2-3
- libharfbuzz0b
- libpango-1.0-0
- libpangocairo-1.0-0
- libpangoft2-1.0-0
- libpixman-1-0
- libpng16-16
- librsvg2-2
- librsvg2-common
- libslang2
- libthai0
- libx11-6
- libxau6
- libxcb-render0
- libxcb-shm0
- libxcb1
- libxdmcp6
- libxext6
- libxrender1
- locales
- locales-all
- optipng
- shared-mime-info
after:
- ninja
- meson-deps
- appstream
- ldc
- gir-to-d
- glibd
appstream:
source: https://github.com/ximion/appstream.git
source-type: git
source-tag: 'v0.16.2'
plugin: meson
build-environment:
- LD_LIBRARY_PATH: $CRAFT_PART_BUILD/src${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
meson-parameters:
- --prefix=/usr
- --buildtype=debugoptimized
- -Dcompose=true
- -Dapidocs=false
- -Dsystemd=false
build-packages:
- build-essential
- docbook-xml
- docbook-xsl
- gettext
- gobject-introspection
- gperf
- itstool
- libcurl4-gnutls-dev
- liblzma-dev
- libffi-dev
- libgirepository1.0-dev
- libglib2.0-dev
- libstemmer-dev
- libxml2-dev
- libxmlb-dev
- libyaml-dev
- xsltproc
stage-packages:
- libcurl3-gnutls
- libicu70
- liblmdb0
- libstemmer0d
- libxml2
after:
- ninja
- meson-deps
gir-to-d:
source: https://github.com/gtkd-developers/gir-to-d.git
source-type: git
source-tag: 'v0.23.1'
plugin: meson
meson-parameters:
- --prefix=/usr
- --buildtype=release
build-environment:
# obtained from https://raw.githubusercontent.com/archlinux/svntogit-community/packages/gir-to-d/trunk/PKGBUILD
- DC: ldc2
- LDFLAGS: "$(echo -ne $LDFLAGS | sed -e 's/-flto=auto/-flto=full/')"
- DFLAGS: "--allinst"
- DESTDIR: $CRAFT_PART_INSTALL
after:
- ldc
- ninja
- meson-deps
glibd:
source: https://github.com/gtkd-developers/GlibD.git
source-type: git
source-tag: 'v2.4.2'
plugin: meson
build-environment:
- GIR_PATH: /snap/gnome-42-2204-sdk/current/usr/share/gir-1.0${GIR_PATH:+:$GIR_PATH}
- GIREPOSITORY_PATH: /snap/gnome-42-2204-sdk/current/usr/lib/girepository-1.0${GIREPOSITORY_PATH:+:$GIREPOSITORY_PATH}
meson-parameters:
- --prefix=/usr
- --buildtype=release
build-packages:
- gobject-introspection
- libgirepository1.0-dev
- libglib2.0-dev
after:
- gir-to-d
- ldc
- ninja
- meson-deps
ldc:
plugin: dump
source: https://github.com/ldc-developers/ldc/releases/download/v1.32.2/ldc2-1.32.2-linux-x86_64.tar.xz
override-build: |
# link shared by default
sed -i '/\sswitches =/a \ "-link-defaultlib-shared",' etc/ldc2.conf
# remove unneeded libs
rm -rf lib32
craftctl default