From 7f2789a0d6130b029b43dfa818f4652a6c9f48ee Mon Sep 17 00:00:00 2001 From: Sergio Costas Rodriguez Date: Thu, 19 Sep 2024 13:55:01 +0200 Subject: [PATCH] Add missing dependency and tool for checking There is a missing dependency in DEBS part: webp-pixbuf-loader. This patch adds it and also adds a check to ensure that any push fulfills the dependencies, ensuring that DEBS is ran after all the previous parts. --- .github/workflows/check-dependencies.yml | 22 ++++++++++++ snapcraft.yaml | 2 +- tools/check_dependencies.py | 46 ++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/check-dependencies.yml create mode 100644 tools/check_dependencies.py diff --git a/.github/workflows/check-dependencies.yml b/.github/workflows/check-dependencies.yml new file mode 100644 index 0000000..7e48ed6 --- /dev/null +++ b/.github/workflows/check-dependencies.yml @@ -0,0 +1,22 @@ +name: test-dependencies +on: + pull_request: + push: + branches: + - gnome-42-2204-sdk + +jobs: + check-deps: + runs-on: ubuntu-latest + container: + image: ubuntu:rolling + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install dependencies (Ubuntu) + run: | + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends python3 python3-yaml + - name: Verify dependencies + run: | + tools/check_dependencies.py diff --git a/snapcraft.yaml b/snapcraft.yaml index 26a8a39..9e7fa51 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -1522,7 +1522,7 @@ parts: fi debs: - after: [ libgnome-games-support, libadwaita, libgweather, poppler, libayatana-appindicator, intel-media-driver ] + after: [ libgnome-games-support, libadwaita, libgweather, poppler, libayatana-appindicator, intel-media-driver, webp-pixbuf-loader ] plugin: nil stage-packages: - appstream diff --git a/tools/check_dependencies.py b/tools/check_dependencies.py new file mode 100644 index 0000000..74580c4 --- /dev/null +++ b/tools/check_dependencies.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 + +import os +import sys +import yaml + +# Ensure that "deb" part depends on all previous parts + +config_file = "snapcraft.yaml" +if not os.path.exists(config_file): + config_file = os.path.join("snap", "snapcraft.yaml") + +data = yaml.safe_load(open(config_file, "r")) + +parts = {} +exceptions = ['buildenv'] + +for part in data['parts']: + if part == "debs": + break + if part in exceptions: + continue + parts[part] = False + +def filldeps(part): + global data + global parts + if 'after' not in data['parts'][part]: + return + + deps = data['parts'][part]['after'] + for dep in deps: + parts[dep] = True + filldeps(dep) + +filldeps("debs") +failed = False +for part in parts: + if parts[part]: + continue + print(f"DEBS must depend on {part}") + failed = True + +if failed: + sys.exit(1) +print("All dependencies are correct")