diff --git a/srcpkgs/libratbag-devel b/srcpkgs/libratbag-devel new file mode 120000 index 00000000000..eaa4e0afd7e --- /dev/null +++ b/srcpkgs/libratbag-devel @@ -0,0 +1 @@ +libratbag \ No newline at end of file diff --git a/srcpkgs/libratbag/files/ratbagd/run b/srcpkgs/libratbag/files/ratbagd/run new file mode 100755 index 00000000000..1fbf9c8e5a7 --- /dev/null +++ b/srcpkgs/libratbag/files/ratbagd/run @@ -0,0 +1,3 @@ +#!/bin/sh +sv check dbus >/dev/null || exit 1 +exec ratbagd diff --git a/srcpkgs/libratbag/patches/ac384137bd56b0a4fa6c51f77015ef60eb964a97.patch b/srcpkgs/libratbag/patches/ac384137bd56b0a4fa6c51f77015ef60eb964a97.patch new file mode 100644 index 00000000000..a8f92cf7ade --- /dev/null +++ b/srcpkgs/libratbag/patches/ac384137bd56b0a4fa6c51f77015ef60eb964a97.patch @@ -0,0 +1,116 @@ +From ac384137bd56b0a4fa6c51f77015ef60eb964a97 Mon Sep 17 00:00:00 2001 +From: maxice8 <30738253+maxice8@users.noreply.github.com> +Date: Thu, 16 Aug 2018 19:33:42 -0300 +Subject: [PATCH] meson.build meson_options.txt: Add systemd switch (#510) + +Allows systems that provide libelogind (which provides a portion of +libsystemd that libratbag uses) to also compile without having to patch +out the rest of the build to remove the full systemd dependency. + +This commit: + +- Adds a systemd swith on meson_options.txt, a boolean set to true as +default to keep expected behaivour +- Adds a check on meson.build for the systemd switch and adds +dep_systemd +- Guards sections meant to generate systemd service units under the +systemd switch +--- + meson.build | 56 +++++++++++++++++++++++++++-------------------- + meson_options.txt | 6 +++++ + 2 files changed, 38 insertions(+), 24 deletions(-) + +--- meson.build ++++ meson.build +@@ -50,10 +50,14 @@ pkgconfig = import('pkgconfig') + dep_udev = dependency('libudev') + dep_libevdev = dependency('libevdev') + dep_libsystemd = dependency('libsystemd', version : '>=227') +-dep_systemd = dependency('systemd') + dep_glib = dependency('glib-2.0') + dep_lm = cc.find_library('m') + ++enable_systemd = get_option('systemd') ++if enable_systemd ++ dep_systemd = dependency('systemd') ++endif ++ + #### libutil.a #### + src_libutil = [ + 'src/libratbag-util.c', +@@ -437,35 +441,39 @@ configure_file(input : 'dbus/org.freedesktop.ratbag_devel1.conf.in', + configuration : config_ratbagd_devel) + + #### unit file #### +-unitdir = get_option('systemd-unit-dir') +-if unitdir == '' +- libdir = get_option('libdir') +- default_unitdir = dep_systemd.get_pkgconfig_variable('systemdsystemunitdir') +- # Fedora uses lib64 but systemd is in lib. Hack around this so it +- # works out of the box. +- intended_unitdir = join_paths(get_option('prefix'), get_option('libdir'), 'systemd') +- if get_option('prefix') == '/usr' and intended_unitdir != default_unitdir +- message(''' +- systemd unitdir libdir mismatch detected, changing unitdir to +- @0@ +- or specify with +- mesonconf -Dsystemd-unit-dir= +- +- See https://github.com/libratbag/libratbag/issues/188 +- '''.format(default_unitdir)) +- unitdir = default_unitdir +- else +- unitdir = intended_unitdir ++if enable_systemd ++ unitdir = get_option('systemd-unit-dir') ++ if unitdir == '' ++ libdir = get_option('libdir') ++ default_unitdir = dep_systemd.get_pkgconfig_variable('systemdsystemunitdir') ++ # Fedora uses lib64 but systemd is in lib. Hack around this so it ++ # works out of the box. ++ intended_unitdir = join_paths(get_option('prefix'), get_option('libdir'), 'systemd') ++ if get_option('prefix') == '/usr' and intended_unitdir != default_unitdir ++ message(''' ++ systemd unitdir libdir mismatch detected, changing unitdir to ++ @0@ ++ or specify with ++ mesonconf -Dsystemd-unit-dir= ++ ++ See https://github.com/libratbag/libratbag/issues/188 ++ '''.format(default_unitdir)) ++ unitdir = default_unitdir ++ else ++ unitdir = intended_unitdir ++ endif + endif + endif + + config_bindir = configuration_data() + config_bindir.set('bindir', join_paths(get_option('prefix'), get_option('bindir'))) + +-configure_file(input : 'ratbagd/ratbagd.service.in', +- output : 'ratbagd.service', +- configuration : config_bindir, +- install_dir : unitdir) ++if enable_systemd ++ configure_file(input : 'ratbagd/ratbagd.service.in', ++ output : 'ratbagd.service', ++ configuration : config_bindir, ++ install_dir : unitdir) ++endif + + dbusdir = get_option('dbus-root-dir') + if dbusdir == '' +--- meson_options.txt ++++ meson_options.txt +@@ -27,3 +27,9 @@ option('dbus-group', + type: 'string', + value : '', + description : 'The UNIX group that is granted access to the ratbagd D-Bus service. By default all users may access it.') ++ ++option('systemd', ++ type : 'boolean', ++ value : true, ++ description : 'Build systemd unit files' ++) + diff --git a/srcpkgs/libratbag/patches/fix-lack-of-limits_h.patch b/srcpkgs/libratbag/patches/fix-lack-of-limits_h.patch new file mode 100644 index 00000000000..248b320d2cb --- /dev/null +++ b/srcpkgs/libratbag/patches/fix-lack-of-limits_h.patch @@ -0,0 +1,24 @@ +Source: maxice8 +Upstream: https://github.com/libratbag/libratbag/pull/507 +Reason: fixes errors of PATH_MAX being undeclared due to limits.h not being included + +--- src/libratbag-data.c ++++ src/libratbag-data.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #include "libratbag.h" + #include "libratbag-private.h" +--- tools/lur-command.c ++++ tools/lur-command.c +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + #include + #include diff --git a/srcpkgs/libratbag/patches/fix-usage-of-error.patch b/srcpkgs/libratbag/patches/fix-usage-of-error.patch new file mode 100644 index 00000000000..ba76052090b --- /dev/null +++ b/srcpkgs/libratbag/patches/fix-usage-of-error.patch @@ -0,0 +1,76 @@ +Source: maxice8 +Upstream: No, but feel free +Reason: removes usage of non-portable of error.h + +--- tools/hidpp10-dump-page.c ++++ tools/hidpp10-dump-page.c +@@ -23,7 +23,7 @@ + + #include + #include +-#include ++#include + #include + + #include +@@ -95,7 +95,7 @@ main(int argc, char **argv) + path = argv[argc - 1]; + fd = open(path, O_RDWR); + if (fd < 0) +- error(1, errno, "Failed to open path %s", path); ++ err(errno, "Failed to open path %s", path); + + hidpp_device_init(&base, fd); + dev = hidpp10_device_new(&base, HIDPP_WIRED_DEVICE_IDX, HIDPP10_PROFILE_UNKNOWN, 5); +--- tools/hidpp20-dump-page.c ++++ tools/hidpp20-dump-page.c +@@ -23,7 +23,7 @@ + + #include + #include +-#include ++#include + #include + + #include +@@ -112,12 +112,12 @@ main(int argc, char **argv) + path = argv[argc - 1]; + fd = open(path, O_RDWR); + if (fd < 0) +- error(1, errno, "Failed to open path %s", path); ++ err(errno, "Failed to open path %s", path); + + hidpp_device_init(&base, fd); + dev = hidpp20_device_new(&base, 0xff); + if (!dev) +- error(1, 0, "Failed to open %s as a HID++ 2.0 device", path); ++ err(0, "Failed to open %s as a HID++ 2.0 device", path); + + hidpp20_onboard_profiles_get_profiles_desc(dev, &info); + +--- tools/hidpp20-reset.c ++++ tools/hidpp20-reset.c +@@ -23,7 +23,7 @@ + + #include + #include +-#include ++#include + #include + + #include +@@ -88,12 +88,12 @@ main(int argc, char **argv) + path = argv[argc - 1]; + fd = open(path, O_RDWR); + if (fd < 0) +- error(1, errno, "Failed to open path %s", path); ++ err(errno, "Failed to open path %s", path); + + hidpp_device_init(&base, fd); + dev = hidpp20_device_new(&base, 0xff); + if (!dev) +- error(1, 0, "Failed to open %s as a HID++ 2.0 device", path); ++ err(0, "Failed to open %s as a HID++ 2.0 device", path); + + hidpp20_onboard_profiles_get_profiles_desc(dev, &info); + diff --git a/srcpkgs/libratbag/template b/srcpkgs/libratbag/template new file mode 100644 index 00000000000..7fd0ca06548 --- /dev/null +++ b/srcpkgs/libratbag/template @@ -0,0 +1,39 @@ +# Template file for 'libratbag' +pkgname=libratbag +version=0.9.902 +revision=1 +build_style=meson +configure_args="-Denable-tests=false -Dsystemd-unit-dir='' + -Dsystemd=false" +hostmakedepends="pkg-config git swig" +makedepends="elogind-devel eudev-libudev-devel libglib-devel libevdev-devel + python3-devel" +depends="dbus python3-evdev python3-gobject" +short_desc="DBus daemon to configure gaming mice" +maintainer="maxice8 " +license="MIT" +homepage="https://github.com/libratbag/libratbag" +distfiles="https://github.com/libratbag/libratbag/archive/v${version}.tar.gz" +checksum=01c0dac6b8cd997c3bec84a51c0a86fc8727e3a20635bf7e2c5e0f0b8c5df34c + +if [ "$CROSS_BUILD" ]; then + case "$XBPS_TARGET_MACHINE" in + x86_64*|i686*) ;; + *) broken="Requires gobject introspection" + esac +fi + +post_install() { + vsv ratbagd + vlicense COPYING +} + +libratbag-devel_package() { + depends="libratbag-${version}_${revision}" + short_desc+=" - development files" + pkg_install() { + vmove usr/include + vmove usr/lib/pkgconfig + vmove "usr/lib/*.so" + } +}