From aa74915a68fa8f441b084e9a3c207d2eec8809eb Mon Sep 17 00:00:00 2001 From: Stefan Hansson Date: Fri, 5 Sep 2025 17:57:52 +0200 Subject: [PATCH] CI: Add deviceinfo linting via dint Needs https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/-/merge_requests/2679 to run locally. Tested and works locally with 'pmbootstrap ci' as well as in GitLab CI. Closes https://gitlab.postmarketos.org/postmarketOS/pmaports/-/issues/2583 Part-of: --- .ci/dint.sh | 13 +++++++++++++ .ci/lib/deviceinfo_linting.py | 18 ++++++++++++++++++ .gitlab-ci.yml | 13 +++++++++++++ 3 files changed, 44 insertions(+) create mode 100755 .ci/dint.sh create mode 100755 .ci/lib/deviceinfo_linting.py diff --git a/.ci/dint.sh b/.ci/dint.sh new file mode 100755 index 000000000..22b365ffd --- /dev/null +++ b/.ci/dint.sh @@ -0,0 +1,13 @@ +#!/bin/sh -e +# Description: Validate and lint deviceinfo files +# Options: with-dot-git +# https://postmarketos.org/pmb-ci + +if [ "$(id -u)" = 0 ]; then + set -x + apk add git python3 + apk add dint --allow-untrusted --repository=https://mirror.postmarketos.org/postmarketos/master + exec su "${TESTUSER:-build}" -c "sh -e $0" +fi + +.ci/lib/deviceinfo_linting.py diff --git a/.ci/lib/deviceinfo_linting.py b/.ci/lib/deviceinfo_linting.py new file mode 100755 index 000000000..af78acccd --- /dev/null +++ b/.ci/lib/deviceinfo_linting.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 +# Copyright 2025 Stefan Hansson +# SPDX-License-Identifier: GPL-3.0-or-later + +import common +import os.path +import subprocess +import sys + +if __name__ == "__main__": + common.add_upstream_git_remote() + deviceinfo_files = {file for file in common.get_changed_files(removed=False) + if os.path.basename(file) == "deviceinfo"} + + try: + subprocess.run(["dint", "check", *deviceinfo_files], text=True, check=True) + except subprocess.CalledProcessError as exception: + sys.exit(exception.returncode) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 59107e824..738b35701 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -101,6 +101,19 @@ aport-lint: - .ci/apkbuild-lint.sh allow_failure: true +# deviceinfo linting +dint: + stage: lint + rules: + - if: *mr_rule + changes: + - .ci/**/* + - .gitlab-ci.yml + - device/*/device-*/deviceinfo + script: + - .ci/lib/gitlab_prepare_ci.sh + - .ci/dint.sh + # kernel kconfig check kernel-kconfig: stage: lint