diff --git a/common/shlibs b/common/shlibs index d4f3677bb3..11442f1b93 100644 --- a/common/shlibs +++ b/common/shlibs @@ -3500,3 +3500,4 @@ liblog4cpp.so.5 log4cpp-1.1.3_1 libnuspell.so.2 libnuspell-2.3.0_1 liblog4c.so.3 log4c-1.2.4_1 libqb.so.0 libqb-1.0.5_1 +libusbguard.so.0 usbguard-0.7.5_1 diff --git a/srcpkgs/usbguard/files/usbguard/run b/srcpkgs/usbguard/files/usbguard/run new file mode 100644 index 0000000000..9c33365a71 --- /dev/null +++ b/srcpkgs/usbguard/files/usbguard/run @@ -0,0 +1,2 @@ +#!/bin/sh +exec usbguard-daemon diff --git a/srcpkgs/usbguard/patches/musl.patch b/srcpkgs/usbguard/patches/musl.patch new file mode 100644 index 0000000000..066c70c8e8 --- /dev/null +++ b/srcpkgs/usbguard/patches/musl.patch @@ -0,0 +1,84 @@ +--- src/CLI/usbguard.cpp.orig 2019-06-13 11:51:53.787863657 +0000 ++++ src/CLI/usbguard.cpp 2019-08-23 01:52:34.233056882 +0000 +@@ -26,10 +26,8 @@ + #include + #include + +-#ifndef _GNU_SOURCE +- #define _GNU_SOURCE +-#endif +-#include /* GNU version of basename(3) */ ++#include ++#include + + #include "usbguard.hpp" + #include "usbguard-get-parameter.hpp" +@@ -99,7 +97,7 @@ + + static int usbguard_cli(int argc, char* argv[]) + { +- usbguard_arg0 = ::basename(argv[0]); ++ usbguard_arg0 = ::basename(strdup(argv[0])); + + if (argc == 1) { + showTopLevelHelp(); +--- src/CLI/usbguard-rule-parser.cpp.orig 2019-06-13 11:51:53.783863704 +0000 ++++ src/CLI/usbguard-rule-parser.cpp 2019-08-23 01:52:34.234056870 +0000 +@@ -24,10 +24,8 @@ + #include "RuleParser.hpp" + + #include +-#ifndef _GNU_SOURCE +- #define _GNU_SOURCE +-#endif + #include ++#include + #include + + #include +@@ -43,8 +41,10 @@ + + static void showHelp(std::ostream& stream, const char* usbguard_arg0) + { +- stream << " Usage: " << ::basename(usbguard_arg0) << " [OPTIONS] " << std::endl; +- stream << " Usage: " << ::basename(usbguard_arg0) << " [OPTIONS] -f " << std::endl; ++ char *usbguard_arg0_copy = strdup(usbguard_arg0); ++ stream << " Usage: " << ::basename(usbguard_arg0_copy) << " [OPTIONS] " << std::endl; ++ stream << " Usage: " << ::basename(usbguard_arg0_copy) << " [OPTIONS] -f " << std::endl; ++ free(usbguard_arg0_copy); + stream << std::endl; + stream << " Options:" << std::endl; + stream << " -f, --file Interpret the argument as a path to a file that should be parsed." << std::endl; +--- src/DBus/gdbus-server.cpp.orig 2019-06-28 08:45:27.616687137 +0000 ++++ src/DBus/gdbus-server.cpp 2019-08-23 01:52:34.274056367 +0000 +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include "DBusBridge.hpp" + + static usbguard::DBusBridge* dbus_bridge = nullptr; +@@ -208,7 +209,9 @@ + + static void showHelp(std::ostream& stream) + { +- stream << " Usage: " << ::basename(usbguard_arg0) << " [OPTIONS]" << std::endl; ++ char *usbguard_arg0_copy = strdup(usbguard_arg0); ++ stream << " Usage: " << ::basename(usbguard_arg0_copy) << " [OPTIONS]" << std::endl; ++ free(usbguard_arg0_copy); + stream << std::endl; + stream << " Options:" << std::endl; + stream << " -s, --system Listen on the system bus." << std::endl; +--- src/Library/public/usbguard/Exception.hpp.orig 2019-06-28 08:45:27.620687089 +0000 ++++ src/Library/public/usbguard/Exception.hpp 2019-08-23 01:52:34.323055751 +0000 +@@ -116,7 +116,8 @@ + static std::string reasonFromErrno(const int errno_value) + { + char buffer[1024]; +- return std::string(strerror_r(errno_value, buffer, sizeof buffer)); ++ strerror_r(errno_value, buffer, sizeof buffer); ++ return std::string(buffer); + } + }; + diff --git a/srcpkgs/usbguard/template b/srcpkgs/usbguard/template new file mode 100644 index 0000000000..f4de1be507 --- /dev/null +++ b/srcpkgs/usbguard/template @@ -0,0 +1,20 @@ +# Template file for 'usbguard' +pkgname=usbguard +version=0.7.5 +revision=1 +build_style=gnu-configure +configure_args="--with-crypto-library=sodium --with-bundled-catch --with-bundled-pegtl" +conf_files="/etc/usbguard/*" +make_dirs="/var/log/usbguard 0755 root root" +hostmakedepends="automake libtool pkg-config asciidoc glib-devel protobuf" +makedepends="libqb-devel libsodium-devel protobuf-devel dbus-glib-devel polkit-devel libcap-ng-devel libseccomp-devel" +short_desc="Tool for whitelisting and blacklisting USB devices" +maintainer="Philoponus Bindle " +license="GPL-2.0-or-later" +homepage="https://usbguard.github.io" +distfiles="https://github.com/USBGuard/usbguard/releases/download/usbguard-$version/usbguard-$version.tar.gz" +checksum=ab98091969bf4ea68d7a950997cd7af98ddac84558aa6dfe733e8fa0a936454a + +post_install() { + vsv usbguard +}