[arch-commits] Commit in usbguard/trunk (4 files)

Evangelos Foutras foutrelis at archlinux.org
Sun Mar 14 00:23:06 UTC 2021


    Date: Sunday, March 14, 2021 @ 00:23:06
  Author: foutrelis
Revision: 409837

Prepare bump to 1.0.0 for protobuf 3.15 rebuild

Added:
  usbguard/trunk/fix-compilation-errors-with-PEGTL-3.2.0.patch
  usbguard/trunk/increase-C++-version-to-c++17.patch
Modified:
  usbguard/trunk/PKGBUILD
Deleted:
  usbguard/trunk/make-explicitly-treat-pthread-as-first-level-depende.patch

------------------------------------------------------------+
 PKGBUILD                                                   |   21 
 fix-compilation-errors-with-PEGTL-3.2.0.patch              |  199 +++
 increase-C++-version-to-c++17.patch                        |   65 +
 make-explicitly-treat-pthread-as-first-level-depende.patch |  598 -----------
 4 files changed, 276 insertions(+), 607 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2021-03-13 22:59:51 UTC (rev 409836)
+++ PKGBUILD	2021-03-14 00:23:06 UTC (rev 409837)
@@ -2,10 +2,10 @@
 # Contributor: Ian Beringer <ian at ianberinger.com>
 
 pkgname=usbguard
-pkgver=0.7.5
-pkgrel=4
+pkgver=1.0.0
+pkgrel=0
 pkgdesc='Software framework for implementing USB device authorization policies'
-url='https://github.com/dkopecek/usbguard'
+url='https://github.com/USBGuard/usbguard'
 arch=('x86_64')
 license=('GPL2')
 depends=('glibc' 'libqb' 'libqb.so' 'libsodium' 'libcap-ng' 'protobuf' 'polkit' 'dbus-glib'
@@ -14,17 +14,20 @@
 provides=('libusbguard.so')
 backup=(etc/usbguard/usbguard-daemon.conf
         etc/usbguard/rules.conf)
-source=(https://github.com/dkopecek/usbguard/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.gz{,.sig}
-        make-explicitly-treat-pthread-as-first-level-depende.patch)
-sha512sums=('b14f1cfaec676b5bc2f3aa2bda8be96ea8a6b3f02fc78f0fa7a58dd079c57886aae2c33a9e99cb9ccd53e5d6fa27712b978a2d19cd58b75dda34516d8caed0c4'
+source=(https://github.com/USBGuard/usbguard/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.gz{,.asc}
+        increase-C++-version-to-c++17.patch
+        fix-compilation-errors-with-PEGTL-3.2.0.patch)
+sha512sums=('068a9be8bd5ea05efcdad79e2c4beb5e8b646b4703fbe1f8bb262e37ae9a6284a6eeb811a6bd441250a38bce1e45b7f44ad15726aa5963da2e1b56e85f5e16fd'
             'SKIP'
-            '02232be248aa11e543b0cd2f26e3ff735267b58bb3a255fc32e390f0efff302e4b749fee3927942585a799f0e7571836bc085f89aef43df5517a678b04596e5a')
-validpgpkeys=('FD9B3F9DCEBB5537A8FAF5213B0C109510712034') # Daniel Kopeček <dnk1618 at gmail.com>
+            '4b17564e2b21f1378d6369536d47a658e5f018ea9aef47ff726c272d3d40ae5ffadd3ca5ff7304c916cbf169c288b38fb9280dab61ff2edf9e4878847085ae78'
+            '31ebb71aa9c9d5dcec378d6974d63fe6f2675f748bdff6498a027f9840e0da03ad66c86d240eeccdceb4c1f2a966f6c528c8630226892d94271dac3ae11d1697')
+validpgpkeys=('DE78B93EAED8A620F5AA14DF52F7E84653274B59') # Radovan Sroka <rsroka at redhat.com>
 
 prepare() {
   cd ${pkgname}-${pkgver}
+  patch -Np1 -i ../increase-C++-version-to-c++17.patch
+  patch -Np1 -i ../fix-compilation-errors-with-PEGTL-3.2.0.patch
   sed 's|/usr/include/catch|/usr/include/catch2|g' -i configure.ac
-  patch -Np1 < ../make-explicitly-treat-pthread-as-first-level-depende.patch
   autoreconf -fiv
 }
 

Added: fix-compilation-errors-with-PEGTL-3.2.0.patch
===================================================================
--- fix-compilation-errors-with-PEGTL-3.2.0.patch	                        (rev 0)
+++ fix-compilation-errors-with-PEGTL-3.2.0.patch	2021-03-14 00:23:06 UTC (rev 409837)
@@ -0,0 +1,199 @@
+From 1c5433ef01b69a0f4c6277c742d703889f9ffb00 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zolt=C3=A1n=20Fridrich?= <zfridric at redhat.com>
+Date: Mon, 1 Mar 2021 16:25:03 +0100
+Subject: [PATCH] Fix Compilation errors with PEGTL 3.2.0 (#453)
+
+(cherry picked from commit 4bf21aedcb260314996f0fa521ef4a3a6ae4a2bb)
+---
+ configure.ac                               |  2 +-
+ src/Library/RuleParser/Grammar.hpp         | 46 +++++++++++-----------
+ src/Library/UEventParser.cpp               |  8 ++++
+ src/Library/UMockdevDeviceDefinition.cpp   | 20 +++++++---
+ src/Library/public/usbguard/RuleParser.cpp | 12 ++++++
+ 5 files changed, 58 insertions(+), 30 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index acca0e8..73021b6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -768,7 +768,7 @@ echo " libseccomp: $libseccomp_summary"
+ echo "  libcap-ng: $libcap_ng_summary"
+ echo "   protobuf: $protobuf_summary"
+ echo "      Catch: $catch_summary"
+-echo "      PEGTL: $pegtl_summary; version <= 2.6.0: $have_pegtl_lte_260"
++echo "      PEGTL: $pegtl_summary; version <= 3.2.0: $have_pegtl_lte_320"
+ echo "      GDBus: $dbus_summary"
+ echo "   umockdev: $umockdev_summary"
+ echo
+diff --git a/src/Library/RuleParser/Grammar.hpp b/src/Library/RuleParser/Grammar.hpp
+index c80eb2d..aebb727 100644
+--- a/src/Library/RuleParser/Grammar.hpp
++++ b/src/Library/RuleParser/Grammar.hpp
+@@ -34,29 +34,29 @@ namespace usbguard
+     /*
+      * Rule language keywords
+      */
+-    struct str_allow : TAOCPP_PEGTL_STRING("allow") {};
+-    struct str_block : TAOCPP_PEGTL_STRING("block") {};
+-    struct str_reject : TAOCPP_PEGTL_STRING("reject") {};
+-    struct str_match : TAOCPP_PEGTL_STRING("match") {};
+-    struct str_device : TAOCPP_PEGTL_STRING("device") {};
+-
+-    struct str_name : TAOCPP_PEGTL_STRING("name") {};
+-    struct str_hash : TAOCPP_PEGTL_STRING("hash") {};
+-    struct str_parent_hash : TAOCPP_PEGTL_STRING("parent-hash") {};
+-    struct str_via_port : TAOCPP_PEGTL_STRING("via-port") {};
+-    struct str_with_interface : TAOCPP_PEGTL_STRING("with-interface") {};
+-    struct str_with_connect_type : TAOCPP_PEGTL_STRING("with-connect-type") {};
+-    struct str_serial : TAOCPP_PEGTL_STRING("serial") {};
+-    struct str_if : TAOCPP_PEGTL_STRING("if") {};
+-    struct str_id : TAOCPP_PEGTL_STRING("id") {};
+-    struct str_label : TAOCPP_PEGTL_STRING("label") {};
+-
+-    struct str_all_of : TAOCPP_PEGTL_STRING("all-of") {};
+-    struct str_one_of : TAOCPP_PEGTL_STRING("one-of") {};
+-    struct str_none_of : TAOCPP_PEGTL_STRING("none-of") {};
+-    struct str_equals : TAOCPP_PEGTL_STRING("equals") {};
+-    struct str_equals_ordered : TAOCPP_PEGTL_STRING("equals-ordered") {};
+-    struct str_match_all: TAOCPP_PEGTL_STRING("match-all") {};
++    struct str_allow : TAO_PEGTL_STRING("allow") {};
++    struct str_block : TAO_PEGTL_STRING("block") {};
++    struct str_reject : TAO_PEGTL_STRING("reject") {};
++    struct str_match : TAO_PEGTL_STRING("match") {};
++    struct str_device : TAO_PEGTL_STRING("device") {};
++
++    struct str_name : TAO_PEGTL_STRING("name") {};
++    struct str_hash : TAO_PEGTL_STRING("hash") {};
++    struct str_parent_hash : TAO_PEGTL_STRING("parent-hash") {};
++    struct str_via_port : TAO_PEGTL_STRING("via-port") {};
++    struct str_with_interface : TAO_PEGTL_STRING("with-interface") {};
++    struct str_with_connect_type : TAO_PEGTL_STRING("with-connect-type") {};
++    struct str_serial : TAO_PEGTL_STRING("serial") {};
++    struct str_if : TAO_PEGTL_STRING("if") {};
++    struct str_id : TAO_PEGTL_STRING("id") {};
++    struct str_label : TAO_PEGTL_STRING("label") {};
++
++    struct str_all_of : TAO_PEGTL_STRING("all-of") {};
++    struct str_one_of : TAO_PEGTL_STRING("one-of") {};
++    struct str_none_of : TAO_PEGTL_STRING("none-of") {};
++    struct str_equals : TAO_PEGTL_STRING("equals") {};
++    struct str_equals_ordered : TAO_PEGTL_STRING("equals-ordered") {};
++    struct str_match_all: TAO_PEGTL_STRING("match-all") {};
+ 
+     /*
+      * Generic rule attribute
+diff --git a/src/Library/UEventParser.cpp b/src/Library/UEventParser.cpp
+index 1fb23ec..fba90e1 100644
+--- a/src/Library/UEventParser.cpp
++++ b/src/Library/UEventParser.cpp
+@@ -28,7 +28,11 @@
+ 
+ #include <fstream>
+ 
++#if TAO_PEGTL_VERSION_MAJOR >= 3
++#include <tao/pegtl/contrib/trace.hpp>
++#else
+ #include <tao/pegtl/contrib/tracer.hpp>
++#endif
+ using namespace tao;
+ 
+ namespace usbguard
+@@ -130,7 +134,11 @@ namespace usbguard
+         tao::pegtl::parse<G, UEventParser::actions>(in, uevent);
+       }
+       else {
++#if TAO_PEGTL_VERSION_MAJOR >= 3
++        tao::pegtl::complete_trace<G, UEventParser::actions>(in, uevent);
++#else
+         tao::pegtl::parse<G, UEventParser::actions, tao::pegtl::tracer>(in, uevent);
++#endif
+       }
+     }
+     catch (...) {
+diff --git a/src/Library/UMockdevDeviceDefinition.cpp b/src/Library/UMockdevDeviceDefinition.cpp
+index a8abb09..d63870e 100644
+--- a/src/Library/UMockdevDeviceDefinition.cpp
++++ b/src/Library/UMockdevDeviceDefinition.cpp
+@@ -26,7 +26,11 @@
+ #include <Common/Utility.hpp>
+ 
+ #include <tao/pegtl.hpp>
++#if TAO_PEGTL_VERSION_MAJOR >= 3
++#include <tao/pegtl/contrib/trace.hpp>
++#else
+ #include <tao/pegtl/contrib/tracer.hpp>
++#endif
+ 
+ namespace usbguard
+ {
+@@ -49,12 +53,12 @@ namespace usbguard
+      *  S:linkname: device node symlink (without the /dev/ prefix); ignored right now.
+      */
+ 
+-    struct str_path_prefix : TAOCPP_PEGTL_STRING("P:") {};
+-    struct str_property_prefix : TAOCPP_PEGTL_STRING("E:") {};
+-    struct str_ascii_attr_prefix : TAOCPP_PEGTL_STRING("A:") {};
+-    struct str_binary_attr_prefix : TAOCPP_PEGTL_STRING("H:") {};
+-    struct str_link_prefix : TAOCPP_PEGTL_STRING("L:") {};
+-    struct str_name_prefix : TAOCPP_PEGTL_STRING("N:") {};
++    struct str_path_prefix : TAO_PEGTL_STRING("P:") {};
++    struct str_property_prefix : TAO_PEGTL_STRING("E:") {};
++    struct str_ascii_attr_prefix : TAO_PEGTL_STRING("A:") {};
++    struct str_binary_attr_prefix : TAO_PEGTL_STRING("H:") {};
++    struct str_link_prefix : TAO_PEGTL_STRING("L:") {};
++    struct str_name_prefix : TAO_PEGTL_STRING("N:") {};
+ 
+     struct line_rest
+       : star<not_at<ascii::eol>, not_at<eof>, ascii::any> {};
+@@ -330,7 +334,11 @@ namespace usbguard
+ 
+     try {
+       tao::pegtl::string_input<> input(definitions_string, "<string>");
++#if TAO_PEGTL_VERSION_MAJOR >= 3
++      tao::pegtl::complete_trace<UMockdevParser::grammar, UMockdevParser::actions>(input, definitions, umockdev_name);
++#else
+       tao::pegtl::parse<UMockdevParser::grammar, UMockdevParser::actions, tao::pegtl::tracer>(input, definitions, umockdev_name);
++#endif
+     }
+     catch (...) {
+       USBGUARD_LOG(Error) << "UMockdevDeviceDefinition: " << "<string>" << ": parsing failed at line <LINE>";
+diff --git a/src/Library/public/usbguard/RuleParser.cpp b/src/Library/public/usbguard/RuleParser.cpp
+index 140bf14..288d81e 100644
+--- a/src/Library/public/usbguard/RuleParser.cpp
++++ b/src/Library/public/usbguard/RuleParser.cpp
+@@ -34,7 +34,11 @@
+ #include <stdexcept>
+ #include <stdlib.h>
+ 
++#if TAO_PEGTL_VERSION_MAJOR >= 3
++#include <tao/pegtl/contrib/trace.hpp>
++#else
+ #include <tao/pegtl/contrib/tracer.hpp>
++#endif
+ 
+ namespace usbguard
+ {
+@@ -48,7 +52,11 @@ namespace usbguard
+         tao::pegtl::parse<RuleParser::rule_grammar, RuleParser::rule_parser_actions>(input, rule);
+       }
+       else {
++#if TAO_PEGTL_VERSION_MAJOR >= 3
++        tao::pegtl::complete_trace<RuleParser::rule_grammar, RuleParser::rule_parser_actions>(input, rule);
++#else
+         tao::pegtl::parse<RuleParser::rule_grammar, RuleParser::rule_parser_actions, tao::pegtl::tracer>(input, rule);
++#endif
+       }
+ 
+       return rule;
+@@ -56,7 +64,11 @@ namespace usbguard
+     catch (const tao::pegtl::parse_error& ex) {
+       RuleParserError error(rule_spec);
+       error.setHint(ex.what());
++#if TAO_PEGTL_VERSION_MAJOR >= 3
++      error.setOffset(ex.positions().front().column);
++#else
+       error.setOffset(ex.positions[0].byte_in_line);
++#endif
+ 
+       if (!file.empty() || line != 0) {
+         error.setFileInfo(file, line);

Added: increase-C++-version-to-c++17.patch
===================================================================
--- increase-C++-version-to-c++17.patch	                        (rev 0)
+++ increase-C++-version-to-c++17.patch	2021-03-14 00:23:06 UTC (rev 409837)
@@ -0,0 +1,65 @@
+From 5197c44fcfca14fedf62264deb5b1a7c09cd958f Mon Sep 17 00:00:00 2001
+From: Zoltan Fridrich <zfridric at redhat.com>
+Date: Thu, 18 Feb 2021 12:54:24 +0100
+Subject: [PATCH] Increase C++ version to c++17
+
+(cherry picked from commit 8c86264986685bf646c65228abce2432e08e3c4c)
+---
+ README.adoc  | 5 +++--
+ configure.ac | 6 +++---
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/README.adoc b/README.adoc
+index ae4a6c2..3845ba5 100644
+--- a/README.adoc
++++ b/README.adoc
+@@ -15,7 +15,7 @@ image::https://img.shields.io/github/license/USBGuard/usbguard.svg[License, link
+ == About
+ 
+ USBGuard is a software framework for implementing USB device authorization policies (what kind of USB devices are authorized) as well as method of use policies (how a USB device may interact with the system).
+-Simply put, it is a USB device whitelisting tool.
++Simply put, it is a USB device allowlisting tool.
+ 
+ WARNING: The 0.x releases are not production ready packages.
+ They serve for tech-preview and user feedback purposes only.
+@@ -35,7 +35,8 @@ Please share your feedback or request a feature in the Github issue trackers for
+ 
+ == Compilation & Installation
+ 
+-To compile the sources from a release tarball, you'll need the development files for:
++To compile the source code, you will require at least C{plus}{plus}17. +
++If you are compiling sources from a release tarball, you'll need the development files for:
+ 
+  * https://github.com/ClusterLabs/libqb[libqb] - used for local UNIX socket based IPC
+  * https://github.com/google/protobuf[protobuf] - used for IPC message (de)serialization
+diff --git a/configure.ac b/configure.ac
+index 9a337a1..acca0e8 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -54,7 +54,7 @@ AX_CHECK_COMPILE_FLAG([-Wno-implicit-fallthrough],
+ #
+ # Final project CXXFLAGS are set after configure checks.
+ #
+-CXXFLAGS="-std=c++11 $EXTERNAL_CXXFLAGS"
++CXXFLAGS="-std=c++17 $EXTERNAL_CXXFLAGS"
+ CFLAGS="-std=c99 $EXTERNAL_CFLAGS"
+ CPPFLAGS="-DHAVE_BUILD_CONFIG_H $EXTERNAL_CPPFLAGS"
+ 
+@@ -350,7 +350,7 @@ if test "x$with_bundled_catch" = xyes; then
+ 	catch_summary="bundled; $catch_CFLAGS $catch_LIBS"
+ else
+ 	SAVE_CPPFLAGS=$CPPFLAGS
+-	CPPFLAGS="-std=c++11 $CPPFLAGS -I/usr/include/catch"
++	CPPFLAGS="-std=c++17 $CPPFLAGS -I/usr/include/catch"
+ 	AC_LANG_PUSH([C++])
+ 	AC_CHECK_HEADER([catch.hpp], [], [AC_MSG_FAILURE(catch.hpp not found or not usable. Re-run with --with-bundled-catch to use the bundled library.)])
+ 	AC_LANG_POP
+@@ -383,7 +383,7 @@ AC_SUBST([pegtl_AC_CFLAGS])
+ AC_SUBST([pegtl_LIBS])
+ 
+ SAVE_CPPFLAGS=$CPPFLAGS
+-CPPFLAGS="-std=c++11 $CPPFLAGS $pegtl_AC_CFLAGS"
++CPPFLAGS="-std=c++17 $CPPFLAGS $pegtl_AC_CFLAGS"
+ AC_LANG_PUSH([C++])
+ AC_CHECK_HEADER([tao/pegtl.hpp],
+ 		[AC_DEFINE([HAVE_TAO_PEGTL_HPP], [1], [PEGTL header file with .hpp extension is present])],

Deleted: make-explicitly-treat-pthread-as-first-level-depende.patch
===================================================================
--- make-explicitly-treat-pthread-as-first-level-depende.patch	2021-03-13 22:59:51 UTC (rev 409836)
+++ make-explicitly-treat-pthread-as-first-level-depende.patch	2021-03-14 00:23:06 UTC (rev 409837)
@@ -1,598 +0,0 @@
-From 2887cb6a49a9b04e968af00dc7d38d051785b600 Mon Sep 17 00:00:00 2001
-From: Levente Polyak <levente at leventepolyak.net>
-Date: Fri, 11 Oct 2019 23:14:40 +0200
-Subject: [PATCH] make: explicitly treat pthread as first level dependency
-
-Certain environments need to handle pthread explicitly and pass
-appropriate flags (like -pthread) to make the compiler/linker happy.
-Invoke the AX_PTHREAD macro to populate the pthread related flags and
-pass them accordingly.
-This fixes certain linking issues for the first level dependency
-usage pthread_sigmask.
----
- Makefile.am           |  12 +-
- configure.ac          |   1 +
- m4/ax_pthread.m4      | 485 ++++++++++++++++++++++++++++++++++++++++++
- src/Tests/Makefile.am |  12 +-
- 4 files changed, 506 insertions(+), 4 deletions(-)
- create mode 100644 m4/ax_pthread.m4
-
-diff --git a/Makefile.am b/Makefile.am
-index ceb9a33..b73f564 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -348,6 +348,9 @@ usbguard_daemon_SOURCES=\
- 	src/Daemon/LinuxAuditBackend.hpp \
- 	src/Daemon/LinuxAuditBackend.cpp
- 
-+usbguard_daemon_CXXFLAGS=\
-+	$(PTHREAD_CFLAGS)
-+
- usbguard_daemon_CPPFLAGS=\
- 	-fPIE \
- 	$(AM_CPPFLAGS) \
-@@ -361,7 +364,8 @@ usbguard_daemon_LDADD=\
- 	@ldap_LIBS@ \
- 	@seccomp_LIBS@ \
- 	@libcapng_LIBS@ \
--	@audit_LIBS@
-+	@audit_LIBS@ \
-+	$(PTHREAD_LIBS)
- 
- EXTRA_DIST +=\
- 	README.adoc \
-@@ -408,13 +412,17 @@ usbguard_SOURCES=\
- 	src/CLI/usbguard-remove-user.cpp \
- 	src/CLI/usbguard-remove-user.hpp
- 
-+usbguard_CXXFLAGS=\
-+	$(PTHREAD_CFLAGS)
-+
- usbguard_CPPFLAGS=\
- 	-fPIE \
- 	$(AM_CPPFLAGS) \
- 	-I$(top_srcdir)/src/CLI
- 
- usbguard_LDADD=\
--	$(top_builddir)/libusbguard.la
-+	$(top_builddir)/libusbguard.la \
-+	${PTHREAD_LIBS}
- 
- if BASH_COMPLETION_ENABLED
- bashcompletiondir = $(BASH_COMPLETION_DIR)
-diff --git a/configure.ac b/configure.ac
-index 2ccd714..44b31b7 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -142,6 +142,7 @@ AC_SUBST([atomic_LIBS])
- #
- # Checks for required libraries.
- #
-+AX_PTHREAD
- AC_MSG_CHECKING([for NETLINK_KOBJECT_UEVENT definition])
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
- #include <linux/netlink.h>
-diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4
-new file mode 100644
-index 0000000..d218d1a
---- /dev/null
-+++ b/m4/ax_pthread.m4
-@@ -0,0 +1,485 @@
-+# ===========================================================================
-+#        http://www.gnu.org/software/autoconf-archive/ax_pthread.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+#   AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-+#
-+# DESCRIPTION
-+#
-+#   This macro figures out how to build C programs using POSIX threads. It
-+#   sets the PTHREAD_LIBS output variable to the threads library and linker
-+#   flags, and the PTHREAD_CFLAGS output variable to any special C compiler
-+#   flags that are needed. (The user can also force certain compiler
-+#   flags/libs to be tested by setting these environment variables.)
-+#
-+#   Also sets PTHREAD_CC to any special C compiler that is needed for
-+#   multi-threaded programs (defaults to the value of CC otherwise). (This
-+#   is necessary on AIX to use the special cc_r compiler alias.)
-+#
-+#   NOTE: You are assumed to not only compile your program with these flags,
-+#   but also to link with them as well. For example, you might link with
-+#   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
-+#
-+#   If you are only building threaded programs, you may wish to use these
-+#   variables in your default LIBS, CFLAGS, and CC:
-+#
-+#     LIBS="$PTHREAD_LIBS $LIBS"
-+#     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-+#     CC="$PTHREAD_CC"
-+#
-+#   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
-+#   has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
-+#   that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
-+#
-+#   Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
-+#   PTHREAD_PRIO_INHERIT symbol is defined when compiling with
-+#   PTHREAD_CFLAGS.
-+#
-+#   ACTION-IF-FOUND is a list of shell commands to run if a threads library
-+#   is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
-+#   is not found. If ACTION-IF-FOUND is not specified, the default action
-+#   will define HAVE_PTHREAD.
-+#
-+#   Please let the authors know if this macro fails on any platform, or if
-+#   you have any other suggestions or comments. This macro was based on work
-+#   by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
-+#   from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
-+#   Alejandro Forero Cuervo to the autoconf macro repository. We are also
-+#   grateful for the helpful feedback of numerous users.
-+#
-+#   Updated for Autoconf 2.68 by Daniel Richard G.
-+#
-+# LICENSE
-+#
-+#   Copyright (c) 2008 Steven G. Johnson <stevenj at alum.mit.edu>
-+#   Copyright (c) 2011 Daniel Richard G. <skunk at iSKUNK.ORG>
-+#
-+#   This program is free software: you can redistribute it and/or modify it
-+#   under the terms of the GNU General Public License as published by the
-+#   Free Software Foundation, either version 3 of the License, or (at your
-+#   option) any later version.
-+#
-+#   This program is distributed in the hope that it will be useful, but
-+#   WITHOUT ANY WARRANTY; without even the implied warranty of
-+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-+#   Public License for more details.
-+#
-+#   You should have received a copy of the GNU General Public License along
-+#   with this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+#   As a special exception, the respective Autoconf Macro's copyright owner
-+#   gives unlimited permission to copy, distribute and modify the configure
-+#   scripts that are the output of Autoconf when processing the Macro. You
-+#   need not follow the terms of the GNU General Public License when using
-+#   or distributing such scripts, even though portions of the text of the
-+#   Macro appear in them. The GNU General Public License (GPL) does govern
-+#   all other use of the material that constitutes the Autoconf Macro.
-+#
-+#   This special exception to the GPL applies to versions of the Autoconf
-+#   Macro released by the Autoconf Archive. When you make and distribute a
-+#   modified version of the Autoconf Macro, you may extend this special
-+#   exception to the GPL to apply to your modified version as well.
-+
-+#serial 22
-+
-+AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
-+AC_DEFUN([AX_PTHREAD], [
-+AC_REQUIRE([AC_CANONICAL_HOST])
-+AC_REQUIRE([AC_PROG_CC])
-+AC_REQUIRE([AC_PROG_SED])
-+AC_LANG_PUSH([C])
-+ax_pthread_ok=no
-+
-+# We used to check for pthread.h first, but this fails if pthread.h
-+# requires special compiler flags (e.g. on Tru64 or Sequent).
-+# It gets checked for in the link test anyway.
-+
-+# First of all, check if the user has set any of the PTHREAD_LIBS,
-+# etcetera environment variables, and if threads linking works using
-+# them:
-+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
-+	ax_pthread_save_CC="$CC"
-+	ax_pthread_save_CFLAGS="$CFLAGS"
-+	ax_pthread_save_LIBS="$LIBS"
-+	AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
-+	CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-+	LIBS="$PTHREAD_LIBS $LIBS"
-+	AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
-+	AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
-+	AC_MSG_RESULT([$ax_pthread_ok])
-+	if test "x$ax_pthread_ok" = "xno"; then
-+		PTHREAD_LIBS=""
-+		PTHREAD_CFLAGS=""
-+	fi
-+	CC="$ax_pthread_save_CC"
-+	CFLAGS="$ax_pthread_save_CFLAGS"
-+	LIBS="$ax_pthread_save_LIBS"
-+fi
-+
-+# We must check for the threads library under a number of different
-+# names; the ordering is very important because some systems
-+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
-+# libraries is broken (non-POSIX).
-+
-+# Create a list of thread flags to try.  Items starting with a "-" are
-+# C compiler flags, and other items are library names, except for "none"
-+# which indicates that we try without any flags at all, and "pthread-config"
-+# which is a program returning the flags for the Pth emulation library.
-+
-+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
-+
-+# The ordering *is* (sometimes) important.  Some notes on the
-+# individual items follow:
-+
-+# pthreads: AIX (must check this before -lpthread)
-+# none: in case threads are in libc; should be tried before -Kthread and
-+#       other compiler flags to prevent continual compiler warnings
-+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
-+#           (Note: HP C rejects this with "bad form for `-t' option")
-+# -pthreads: Solaris/gcc (Note: HP C also rejects)
-+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-+#      doesn't hurt to check since this sometimes defines pthreads and
-+#      -D_REENTRANT too), HP C (must be checked before -lpthread, which
-+#      is present but should not be used directly; and before -mthreads,
-+#      because the compiler interprets this as "-mt" + "-hreads")
-+# -mthreads: Mingw32/gcc, Lynx/gcc
-+# pthread: Linux, etcetera
-+# --thread-safe: KAI C++
-+# pthread-config: use pthread-config program (for GNU Pth library)
-+
-+case $host_os in
-+
-+	freebsd*)
-+
-+	# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-+	# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-+
-+	ax_pthread_flags="-kthread lthread $ax_pthread_flags"
-+	;;
-+
-+	hpux*)
-+
-+	# From the cc(1) man page: "[-mt] Sets various -D flags to enable
-+	# multi-threading and also sets -lpthread."
-+
-+	ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
-+	;;
-+
-+	openedition*)
-+
-+	# IBM z/OS requires a feature-test macro to be defined in order to
-+	# enable POSIX threads at all, so give the user a hint if this is
-+	# not set. (We don't define these ourselves, as they can affect
-+	# other portions of the system API in unpredictable ways.)
-+
-+	AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
-+	    [
-+#	     if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
-+	     AX_PTHREAD_ZOS_MISSING
-+#	     endif
-+	    ],
-+	    [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
-+	;;
-+
-+	solaris*)
-+
-+	# On Solaris (at least, for some versions), libc contains stubbed
-+	# (non-functional) versions of the pthreads routines, so link-based
-+	# tests will erroneously succeed. (N.B.: The stubs are missing
-+	# pthread_cleanup_push, or rather a function called by this macro,
-+	# so we could check for that, but who knows whether they'll stub
-+	# that too in a future libc.)  So we'll check first for the
-+	# standard Solaris way of linking pthreads (-mt -lpthread).
-+
-+	ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
-+	;;
-+esac
-+
-+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
-+
-+AS_IF([test "x$GCC" = "xyes"],
-+      [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
-+
-+# The presence of a feature test macro requesting re-entrant function
-+# definitions is, on some systems, a strong hint that pthreads support is
-+# correctly enabled
-+
-+case $host_os in
-+	darwin* | hpux* | linux* | osf* | solaris*)
-+	ax_pthread_check_macro="_REENTRANT"
-+	;;
-+
-+	aix* | freebsd*)
-+	ax_pthread_check_macro="_THREAD_SAFE"
-+	;;
-+
-+	*)
-+	ax_pthread_check_macro="--"
-+	;;
-+esac
-+AS_IF([test "x$ax_pthread_check_macro" = "x--"],
-+      [ax_pthread_check_cond=0],
-+      [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
-+
-+# Are we compiling with Clang?
-+
-+AC_CACHE_CHECK([whether $CC is Clang],
-+    [ax_cv_PTHREAD_CLANG],
-+    [ax_cv_PTHREAD_CLANG=no
-+     # Note that Autoconf sets GCC=yes for Clang as well as GCC
-+     if test "x$GCC" = "xyes"; then
-+	AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
-+	    [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
-+#	     if defined(__clang__) && defined(__llvm__)
-+	     AX_PTHREAD_CC_IS_CLANG
-+#	     endif
-+	    ],
-+	    [ax_cv_PTHREAD_CLANG=yes])
-+     fi
-+    ])
-+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
-+
-+ax_pthread_clang_warning=no
-+
-+# Clang needs special handling, because older versions handle the -pthread
-+# option in a rather... idiosyncratic way
-+
-+if test "x$ax_pthread_clang" = "xyes"; then
-+
-+	# Clang takes -pthread; it has never supported any other flag
-+
-+	# (Note 1: This will need to be revisited if a system that Clang
-+	# supports has POSIX threads in a separate library.  This tends not
-+	# to be the way of modern systems, but it's conceivable.)
-+
-+	# (Note 2: On some systems, notably Darwin, -pthread is not needed
-+	# to get POSIX threads support; the API is always present and
-+	# active.  We could reasonably leave PTHREAD_CFLAGS empty.  But
-+	# -pthread does define _REENTRANT, and while the Darwin headers
-+	# ignore this macro, third-party headers might not.)
-+
-+	PTHREAD_CFLAGS="-pthread"
-+	PTHREAD_LIBS=
-+
-+	ax_pthread_ok=yes
-+
-+	# However, older versions of Clang make a point of warning the user
-+	# that, in an invocation where only linking and no compilation is
-+	# taking place, the -pthread option has no effect ("argument unused
-+	# during compilation").  They expect -pthread to be passed in only
-+	# when source code is being compiled.
-+	#
-+	# Problem is, this is at odds with the way Automake and most other
-+	# C build frameworks function, which is that the same flags used in
-+	# compilation (CFLAGS) are also used in linking.  Many systems
-+	# supported by AX_PTHREAD require exactly this for POSIX threads
-+	# support, and in fact it is often not straightforward to specify a
-+	# flag that is used only in the compilation phase and not in
-+	# linking.  Such a scenario is extremely rare in practice.
-+	#
-+	# Even though use of the -pthread flag in linking would only print
-+	# a warning, this can be a nuisance for well-run software projects
-+	# that build with -Werror.  So if the active version of Clang has
-+	# this misfeature, we search for an option to squash it.
-+
-+	AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
-+	    [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
-+	    [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
-+	     # Create an alternate version of $ac_link that compiles and
-+	     # links in two steps (.c -> .o, .o -> exe) instead of one
-+	     # (.c -> exe), because the warning occurs only in the second
-+	     # step
-+	     ax_pthread_save_ac_link="$ac_link"
-+	     ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
-+	     ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
-+	     ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
-+	     ax_pthread_save_CFLAGS="$CFLAGS"
-+	     for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
-+		AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
-+		CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
-+		ac_link="$ax_pthread_save_ac_link"
-+		AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
-+		    [ac_link="$ax_pthread_2step_ac_link"
-+		     AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
-+			 [break])
-+		    ])
-+	     done
-+	     ac_link="$ax_pthread_save_ac_link"
-+	     CFLAGS="$ax_pthread_save_CFLAGS"
-+	     AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
-+	     ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
-+	    ])
-+
-+	case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
-+		no | unknown) ;;
-+		*) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
-+	esac
-+
-+fi # $ax_pthread_clang = yes
-+
-+if test "x$ax_pthread_ok" = "xno"; then
-+for ax_pthread_try_flag in $ax_pthread_flags; do
-+
-+	case $ax_pthread_try_flag in
-+		none)
-+		AC_MSG_CHECKING([whether pthreads work without any flags])
-+		;;
-+
-+		-mt,pthread)
-+		AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])
-+		PTHREAD_CFLAGS="-mt"
-+		PTHREAD_LIBS="-lpthread"
-+		;;
-+
-+		-*)
-+		AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
-+		PTHREAD_CFLAGS="$ax_pthread_try_flag"
-+		;;
-+
-+		pthread-config)
-+		AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
-+		AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
-+		PTHREAD_CFLAGS="`pthread-config --cflags`"
-+		PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
-+		;;
-+
-+		*)
-+		AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
-+		PTHREAD_LIBS="-l$ax_pthread_try_flag"
-+		;;
-+	esac
-+
-+	ax_pthread_save_CFLAGS="$CFLAGS"
-+	ax_pthread_save_LIBS="$LIBS"
-+	CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-+	LIBS="$PTHREAD_LIBS $LIBS"
-+
-+	# Check for various functions.  We must include pthread.h,
-+	# since some functions may be macros.  (On the Sequent, we
-+	# need a special flag -Kthread to make this header compile.)
-+	# We check for pthread_join because it is in -lpthread on IRIX
-+	# while pthread_create is in libc.  We check for pthread_attr_init
-+	# due to DEC craziness with -lpthreads.  We check for
-+	# pthread_cleanup_push because it is one of the few pthread
-+	# functions on Solaris that doesn't have a non-functional libc stub.
-+	# We try pthread_create on general principles.
-+
-+	AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
-+#			if $ax_pthread_check_cond
-+#			 error "$ax_pthread_check_macro must be defined"
-+#			endif
-+			static void routine(void *a) { a = 0; }
-+			static void *start_routine(void *a) { return a; }],
-+		       [pthread_t th; pthread_attr_t attr;
-+			pthread_create(&th, 0, start_routine, 0);
-+			pthread_join(th, 0);
-+			pthread_attr_init(&attr);
-+			pthread_cleanup_push(routine, 0);
-+			pthread_cleanup_pop(0) /* ; */])],
-+	    [ax_pthread_ok=yes],
-+	    [])
-+
-+	CFLAGS="$ax_pthread_save_CFLAGS"
-+	LIBS="$ax_pthread_save_LIBS"
-+
-+	AC_MSG_RESULT([$ax_pthread_ok])
-+	AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
-+
-+	PTHREAD_LIBS=""
-+	PTHREAD_CFLAGS=""
-+done
-+fi
-+
-+# Various other checks:
-+if test "x$ax_pthread_ok" = "xyes"; then
-+	ax_pthread_save_CFLAGS="$CFLAGS"
-+	ax_pthread_save_LIBS="$LIBS"
-+	CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-+	LIBS="$PTHREAD_LIBS $LIBS"
-+
-+	# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
-+	AC_CACHE_CHECK([for joinable pthread attribute],
-+	    [ax_cv_PTHREAD_JOINABLE_ATTR],
-+	    [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
-+	     for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-+		 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
-+						 [int attr = $ax_pthread_attr; return attr /* ; */])],
-+				[ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
-+				[])
-+	     done
-+	    ])
-+	AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
-+	       test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
-+	       test "x$ax_pthread_joinable_attr_defined" != "xyes"],
-+	      [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
-+				  [$ax_cv_PTHREAD_JOINABLE_ATTR],
-+				  [Define to necessary symbol if this constant
-+				   uses a non-standard name on your system.])
-+	       ax_pthread_joinable_attr_defined=yes
-+	      ])
-+
-+	AC_CACHE_CHECK([whether more special flags are required for pthreads],
-+	    [ax_cv_PTHREAD_SPECIAL_FLAGS],
-+	    [ax_cv_PTHREAD_SPECIAL_FLAGS=no
-+	     case $host_os in
-+	     solaris*)
-+	     ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
-+	     ;;
-+	     esac
-+	    ])
-+	AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
-+	       test "x$ax_pthread_special_flags_added" != "xyes"],
-+	      [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
-+	       ax_pthread_special_flags_added=yes])
-+
-+	AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
-+	    [ax_cv_PTHREAD_PRIO_INHERIT],
-+	    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
-+					     [[int i = PTHREAD_PRIO_INHERIT;]])],
-+			    [ax_cv_PTHREAD_PRIO_INHERIT=yes],
-+			    [ax_cv_PTHREAD_PRIO_INHERIT=no])
-+	    ])
-+	AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
-+	       test "x$ax_pthread_prio_inherit_defined" != "xyes"],
-+	      [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
-+	       ax_pthread_prio_inherit_defined=yes
-+	      ])
-+
-+	CFLAGS="$ax_pthread_save_CFLAGS"
-+	LIBS="$ax_pthread_save_LIBS"
-+
-+	# More AIX lossage: compile with *_r variant
-+	if test "x$GCC" != "xyes"; then
-+	    case $host_os in
-+		aix*)
-+		AS_CASE(["x/$CC"],
-+		    [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
-+		    [#handle absolute path differently from PATH based program lookup
-+		     AS_CASE(["x$CC"],
-+			 [x/*],
-+			 [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
-+			 [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
-+		;;
-+	    esac
-+	fi
-+fi
-+
-+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
-+
-+AC_SUBST([PTHREAD_LIBS])
-+AC_SUBST([PTHREAD_CFLAGS])
-+AC_SUBST([PTHREAD_CC])
-+
-+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-+if test "x$ax_pthread_ok" = "xyes"; then
-+	ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
-+	:
-+else
-+	ax_pthread_ok=no
-+	$2
-+fi
-+AC_LANG_POP
-+])dnl AX_PTHREAD
-diff --git a/src/Tests/Makefile.am b/src/Tests/Makefile.am
-index 64fa71f..d8c8879 100644
---- a/src/Tests/Makefile.am
-+++ b/src/Tests/Makefile.am
-@@ -115,8 +115,12 @@ test_unit_SOURCES=\
- 	Unit/test_UMockdevDeviceDefinition.cpp \
- 	Unit/test_UMockdevDeviceDefinition.data.hpp
- 
-+test_unit_CXXFLAGS=\
-+	$(PTHREAD_CFLAGS)
-+
- test_unit_LDADD=\
--	$(top_builddir)/libusbguard.la
-+	$(top_builddir)/libusbguard.la \
-+	$(PTHREAD_LIBS)
- 
- test_unit_LDFLAGS=\
- 	-static
-@@ -128,6 +132,10 @@ test_regression_SOURCES=\
- 	Regression/test_Rule_ghi247.cpp \
- 	Regression/github-PR209-config-parser.cpp
- 
-+test_regression_CXXFLAGS=\
-+	$(PTHREAD_CFLAGS)
-+
- test_regression_LDADD=\
--	$(top_builddir)/libusbguard.la
-+	$(top_builddir)/libusbguard.la \
-+	$(PTHREAD_LIBS)
- 
--- 
-2.23.0
-



More information about the arch-commits mailing list