diff --git a/.gitignore b/.gitignore index e69de29..75c1226 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,20 @@ +bolt-*/ +x86_64/ +results_bolt/ +*.log +*.rpm + +#testing +tests/artifacts/ +tests/source/ + +#tarballs +/bolt-0.1.tar.gz +/bolt-0.2.tar.gz +/bolt-0.3.tar.gz +/bolt-0.4.tar.gz +/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 diff --git a/bolt.spec b/bolt.spec new file mode 100644 index 0000000..9cc44cd --- /dev/null +++ b/bolt.spec @@ -0,0 +1,143 @@ +Name: bolt +Version: 0.9 +Release: 3%{?dist} +Summary: Thunderbolt device manager +License: LGPLv2+ +URL: https://gitlab.freedesktop.org/bolt/bolt +Source0: %{url}/-/archive/%{version}/%{name}-%{version}.tar.gz + +BuildRequires: gcc +BuildRequires: asciidoc +BuildRequires: meson +BuildRequires: libudev-devel +BuildRequires: pkgconfig(gio-2.0) +BuildRequires: pkgconfig(libudev) +BuildRequires: pkgconfig(systemd) +BuildRequires: polkit-devel +BuildRequires: systemd +%{?systemd_requires} + +# for the integration test (optional) +%if 0%{?fedora} || 0%{?rhel} > 8 +BuildRequires: pygobject3-devel +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 +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 +devices). It also emits signals if new devices are connected (or +removed). During enrollment devices can be set to be automatically +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. + +%prep +%autosetup -p1 + +%build +%meson -Ddb-name=boltd +%meson_build + +%check +%meson_test + +%install +%meson_install + +%post +%systemd_post %{name}.service + +%preun +%systemd_preun %{name}.service + +%postun +%systemd_postun_with_restart %{name}.service + +%files +%license COPYING +%doc README.md CHANGELOG.md +%{_bindir}/boltctl +%{_libexecdir}/boltd +%{_unitdir}/%{name}.service +%{_udevrulesdir}/*-%{name}.rules +%{_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 +%{_datadir}/dbus-1/system-services/org.freedesktop.bolt.service +%{_mandir}/man1/boltctl.1* +%{_mandir}/man8/boltd.8* +%ghost %dir %{_localstatedir}/lib/boltd + +%changelog +* 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 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 new file mode 100644 index 0000000..0889dd9 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (bolt-0.9.tar.gz) = 427e9ad95a8d018dd22326cc4b458fc9149b001d3aa6e4bb8e4047eaf6c3cf04a4dc3be9396049734dc0bd54f990b3bce31b6eef4031e3b671a6202a588cfe78 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 diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..c3c996b --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,23 @@ +--- +- hosts: localhost + roles: + - role: standard-test-source + tags: + - always + - role: standard-test-basic + tags: + - atomic + - classic + required_packages: + - bolt + - pygobject3-devel + - python3-dbus + - python3-dbusmock + - umockdev-devel + tests: + - smoke: + dir: smoke + run: boltctl --version + - integration: + dir: . + run: ./run-it.sh source/tests/test-integration