diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index 3bf8b9c..7a0be71 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,10 @@ results_bolt/ *.log *.rpm +#testing +tests/artifacts/ +tests/source/ + #tarballs /bolt-0.1.tar.gz /bolt-0.2.tar.gz @@ -12,3 +16,14 @@ results_bolt/ /bolt-0.5.tar.gz /bolt-0.6.tar.gz /bolt-0.7.tar.gz +/bolt-0.8.tar.gz +/bolt-0.9.tar.gz +/bolt-0.9.1.tar.gz +/bolt-0.9.2.tar.gz +/bolt-0.9.3.tar.gz +/bolt-0.9.5.tar.gz +/bolt-0.9.6.tar.gz +/bolt-0.9.7.tar.gz +/bolt-0.9.8.tar.gz +/bolt-0.9.9.tar.gz +/bolt-0.9.10.tar.gz diff --git a/0001-test-test-unix-skip-unix-domain-socket-test.patch b/0001-test-test-unix-skip-unix-domain-socket-test.patch new file mode 100644 index 0000000..d0b1f94 --- /dev/null +++ b/0001-test-test-unix-skip-unix-domain-socket-test.patch @@ -0,0 +1,31 @@ +From 74eace0d89b63be92615364568ba36ad7d748477 Mon Sep 17 00:00:00 2001 +From: Kate Hsuan +Date: Tue, 14 Feb 2023 16:25:04 +0800 +Subject: [PATCH] test: test-unix: skip unix domain socket test + +Skip the test since we can't test unix domain socket in mock. +--- + tests/test-unix.c | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/tests/test-unix.c b/tests/test-unix.c +index 98de3db..366488f 100644 +--- a/tests/test-unix.c ++++ b/tests/test-unix.c +@@ -198,13 +198,6 @@ main (int argc, char **argv) + test_pid_is_alive, + NULL); + +- g_test_add ("/common/unix/bolt_sd_notify", +- TestNotify, +- NULL, +- test_notify_setup, +- test_sd_notify, +- test_notify_teardown); +- + g_test_add ("/common/unix/sd_watchdog_enabled", + TestDummy, + NULL, +-- +2.39.1 + diff --git a/bolt.spec b/bolt.spec index 0bd4219..065e815 100644 --- a/bolt.spec +++ b/bolt.spec @@ -1,10 +1,11 @@ Name: bolt -Version: 0.7 -Release: 2%{?dist} +Version: 0.9.10 +Release: %autorelease Summary: Thunderbolt device manager -License: LGPLv2+ +License: LGPL-2.1-or-later URL: https://gitlab.freedesktop.org/bolt/bolt Source0: %{url}/-/archive/%{version}/%{name}-%{version}.tar.gz +Patch0: 0001-test-test-unix-skip-unix-domain-socket-test.patch BuildRequires: gcc BuildRequires: asciidoc @@ -18,16 +19,16 @@ BuildRequires: systemd %{?systemd_requires} # for the integration test (optional) -%if 0%{?fedora} -BuildRequires: pygobject3-devel +%if 0%{?fedora} || 0%{?rhel} > 8 +BuildRequires: python3-gobject-base BuildRequires: python3-dbus BuildRequires: python3-dbusmock BuildRequires: umockdev-devel %endif %description -bolt is a system daemon to manage thunderbolt 3 devices via a D-BUS -API. Thunderbolt 3 features different security modes that require +bolt is a system daemon to manage Thunderbolt devices via a D-BUS +API. Thunderbolt 3 introduced different security modes that require devices to be authorized before they can be used. The D-Bus API can be used to list devices, enroll them (authorize and store them in the local database) and forget them again (remove previously enrolled @@ -37,11 +38,19 @@ authorized as soon as they are connected. A command line tool, called boltctl, can be used to control the daemon and perform all the above mentioned tasks. +%package tests +Summary: Test files for bolt +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description tests +Test files for bolt + %prep -%setup -q +%autosetup -p1 %build -%meson -Ddb-name=boltd +sed -i "s/WatchdogSec=3min/#WatchdogSec=3min/g" data/bolt.service.in +%meson -Ddb-name=boltd -Dinstall-tests=true %meson_build %check @@ -61,12 +70,12 @@ mentioned tasks. %files %license COPYING -%doc README.md +%doc README.md CHANGELOG.md %{_bindir}/boltctl %{_libexecdir}/boltd %{_unitdir}/%{name}.service %{_udevrulesdir}/*-%{name}.rules -%{_sysconfdir}/dbus-1/system.d/org.freedesktop.bolt.conf +%{_datadir}/dbus-1/system.d/org.freedesktop.bolt.conf %{_datadir}/dbus-1/interfaces/org.freedesktop.bolt.xml %{_datadir}/polkit-1/actions/org.freedesktop.bolt.policy %{_datadir}/polkit-1/rules.d/org.freedesktop.bolt.rules @@ -75,42 +84,8 @@ mentioned tasks. %{_mandir}/man8/boltd.8* %ghost %dir %{_localstatedir}/lib/boltd +%files tests +%{_libexecdir}/installed-tests/bolt + %changelog -* Thu Jan 31 2019 Fedora Release Engineering - 0.7-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Tue Jan 1 2019 Christian Kellner - 0.7-1 -- bolt 0.7 release - -* Wed Nov 28 2018 Christian Kellner - 0.6-1 -- bolt 0.6 release - -* Fri Sep 21 2018 Christian Kellner - 0.5-1 -- bolt 0.5 release -- Remove forge macros again and use gitlab as authorative source -- Testing depedencies are now only pulled in on Fedora - -* Thu Jul 12 2018 Fedora Release Engineering - 0.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Mon May 28 2018 Christian Kellner - 0.4-1 -- bolt 0.4 upstream release - -* Tue Apr 10 2018 Christian Kellner - 0.3-1 -- bolt 0.3 upstream release -- Update BuildRequires to include gcc -- Use forge macros - -* Tue Mar 6 2018 Christian Kellner - 0.2-1 -- bolt 0.2 upstream release -- Update BuildRequires dependencies. - -* Wed Feb 07 2018 Fedora Release Engineering - 0.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Sun Dec 17 2017 Christian Kellner - 0.1-2 -- Set database path to /var/lib/boltd, create it during - installation, which is needed for the service file to work. - -* Thu Dec 14 2017 Christian Kellner - 0.1-1 -- Initial upstream release +%autochangelog diff --git a/changelog b/changelog new file mode 100644 index 0000000..b98a8e0 --- /dev/null +++ b/changelog @@ -0,0 +1,133 @@ +* Thu Jan 16 2025 Fedora Release Engineering - 0.9.8-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Jul 17 2024 Fedora Release Engineering - 0.9.8-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri May 31 2024 Kate Hsuan - 0.9.8-2 +- Update python3-gobject-base dependency for test + +* Wed May 22 2024 Kate Hsuan - 0.9.8-1 +- A new NHI for REMBRANDT. +- systemd configuration improvement. +- Fixed: Determine the string length before writing file. +- Fixed: Free on error to prevent resource leak. + +* Fri Mar 1 2024 Kate Hsuan - 0.9.7-1 +- bolt 0.9.7 release +- Support 'nopcie' security level +- Bug fixes + +* Thu Feb 1 2024 Kate Hsuan - 0.9.6-4 +- Update SPDX license + +* Tue Jan 23 2024 Fedora Release Engineering - 0.9.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 0.9.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Sep 13 2023 Kate Hsuan - 0.9.6-1 +- Update 0.9.6 release +- Fixing for compiler warning and log message issues + +* Wed Jul 19 2023 Fedora Release Engineering - 0.9.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Feb 14 2023 Kate hsuan - 0.9.5-1 +- Updated to upstream version + +* Wed Jan 18 2023 Fedora Release Engineering - 0.9.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Aug 23 2022 Simon Steinbeiss - 0.9.3-1 +- New upstream release + +* Wed Jul 20 2022 Fedora Release Engineering - 0.9.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jan 27 2022 Christian Kellner - 0.9.2-1 +- bolt 0.9.2 release + +* Wed Jan 19 2022 Fedora Release Engineering - 0.9.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 0.9.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 0.9.1-3 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Tue Jan 26 2021 Fedora Release Engineering - 0.9.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Dec 1 2020 Christian Kellner - 0.9.1-1 +- bolt 0.9.1 release +- Update description with less emphasis on Thunderbolt version + +* Sat Aug 01 2020 Fedora Release Engineering - 0.9-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 0.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jun 15 2020 Christian Kellner - 0.9-1 +- bolt 0.9 release + Drop all patches (all merged upstream). + +* Tue Jan 28 2020 Fedora Release Engineering - 0.8-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jan 23 2020 Christian Kellner - 0.8-3 +- Add patch to ignore uevents from wakeup devices. See upstream issue + https://gitlab.freedesktop.org/bolt/bolt/issues/156 +- Add patch to fix BoltError not being a typedef. + +* Wed Jul 24 2019 Fedora Release Engineering - 0.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jun 13 2019 Christian Kellner - 0.8-1 +- bolt 0.8 release + D-Bus Configuration moved from sysconfdir to datadir. + Package new CHNAGELOG.md. + +* Thu Jan 31 2019 Fedora Release Engineering - 0.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Jan 1 2019 Christian Kellner - 0.7-1 +- bolt 0.7 release + +* Wed Nov 28 2018 Christian Kellner - 0.6-1 +- bolt 0.6 release + +* Fri Sep 21 2018 Christian Kellner - 0.5-1 +- bolt 0.5 release +- Remove forge macros again and use gitlab as authorative source +- Testing depedencies are now only pulled in on Fedora + +* Thu Jul 12 2018 Fedora Release Engineering - 0.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon May 28 2018 Christian Kellner - 0.4-1 +- bolt 0.4 upstream release + +* Tue Apr 10 2018 Christian Kellner - 0.3-1 +- bolt 0.3 upstream release +- Update BuildRequires to include gcc +- Use forge macros + +* Tue Mar 6 2018 Christian Kellner - 0.2-1 +- bolt 0.2 upstream release +- Update BuildRequires dependencies. + +* Wed Feb 07 2018 Fedora Release Engineering - 0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sun Dec 17 2017 Christian Kellner - 0.1-2 +- Set database path to /var/lib/boltd, create it during + installation, which is needed for the service file to work. + +* Thu Dec 14 2017 Christian Kellner - 0.1-1 +- Initial upstream release \ No newline at end of file diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..f2c6454 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,12 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_testing +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_stable +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} diff --git a/sources b/sources index d79317f..91dd35e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (bolt-0.7.tar.gz) = 6786f701501cc2680fac52cda7cdfe37971044abcf058b5c83bfa9f1d0a0381ba00e3377cfc97fcccf53760a2eafc1f8f6d0754f0e121d94201711ad8e40a135 +SHA512 (bolt-0.9.10.tar.gz) = a0707ec57b1b048906ac8f803acfa313e37bc31eb0acb77978f28a3200d026c019ce30157681ff39f1e0076dc9d828361fcd46cc058db7ac5ad9c890b64a88a0 diff --git a/tests/main.fmf b/tests/main.fmf new file mode 100644 index 0000000..20e6de3 --- /dev/null +++ b/tests/main.fmf @@ -0,0 +1,12 @@ +summary: + Test for bolt +prepare: + how: install + package: + - bolt-tests + - python3-gobject-base + - python3-dbus + - python3-dbusmock + - umockdev-devel +execute: + script: tests/run-it.sh /usr/libexec/installed-tests/bolt/test-integration diff --git a/tests/run-it.sh b/tests/run-it.sh new file mode 100755 index 0000000..5153471 --- /dev/null +++ b/tests/run-it.sh @@ -0,0 +1,51 @@ +#!/usr/bin/bash +set -u + +# helper functions +vcmp_lt () { + # argument $1 is less than $2 + MV=$(echo "$@" | tr " " "\n" | sort -rV | head -n1) + test "$1" != "$MV" +} + +# main script +IT="${1:-source/tests/test-integration}" + +# check if we need to install additional packages +# which is the case if we are on RHEL 8 +source /etc/os-release || exit 1 + +if [[ "$ID" = *"rhel"* ]] && [[ "$VERSION_ID" == *"8"* ]]; then + dnf config-manager -y --add-repo umockdev.repo + dnf install -y umockdev-devel python3-gobject-base + pip3 install python-dbusmock +fi + +BOLT_VERSION=$(boltctl --version | cut -d " " -f2) + +# check if we can even discover the tests +"$IT" list-tests > /dev/null || exit 1 + +# The format of "list-tests" changed with 0.6 +if vcmp_lt $BOLT_VERSION 0.6; then + echo "Old style integration test names" + DELIM=" " +else + DELIM=$'\n' +fi + +# discover all the tests +declare -a TESTS=() +while IFS= read -r -d "$DELIM" line; do + TESTS+=( "${line% *}" ) +done < <( $IT list-tests ) + +# execute all the tests, one by one +RESULT=0 +for test in ${TESTS[@]}; do + echo "$test" + umockdev-wrapper "$IT" "$test" + ((RESULT += $?)) +done + +exit $RESULT