package/seatd: bump to version 0.6.2

Update seatd to version 0.6.2, which makes the patches unnecessary (they
have all been integrated in 0.6.0) and fixes a number of bugs. Some
Meson build options have been renamed, so the build recipe is updated
accordingly, too.

Release notes:

  https://git.sr.ht/~kennylevinsen/seatd/refs/0.6.0
  https://git.sr.ht/~kennylevinsen/seatd/refs/0.6.1
  https://git.sr.ht/~kennylevinsen/seatd/refs/0.6.2

Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
Adrian Perez de Castro 2021-09-17 21:31:32 +03:00 committed by Yann E. MORIN
parent 90f175045a
commit c54f85ca0d
5 changed files with 8 additions and 316 deletions

View File

@ -1,37 +0,0 @@
From 11bf7d5d11424749d549239540e5db06b8754bb5 Mon Sep 17 00:00:00 2001
From: Kenny Levinsen <kl@kl.wtf>
Date: Sun, 25 Apr 2021 20:16:19 +0200
Subject: [PATCH] meson: Support building builtin without seatd
The builtin backend relies on the seatd backend implementation. When
builtin was enabled without seatd, compilation would fail due to the
implementation not being included.
Include the implementation if either seatd or builtin is enabled.
Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
Upstream-Status: backport [with adaptations]
---
meson.build | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index ff56845..8cb4fc6 100644
--- a/meson.build
+++ b/meson.build
@@ -105,8 +105,11 @@ server_files = [
'seatd/server.c',
]
-if get_option('seatd').enabled()
+if get_option('seatd').enabled() or get_option('builtin').enabled()
private_files += 'libseat/backend/seatd.c'
+endif
+
+if get_option('seatd').enabled()
add_project_arguments('-DSEATD_ENABLED=1', language: 'c')
endif
--
2.31.1

View File

@ -1,223 +0,0 @@
From 9a7824b7c3ff5c957632671e91454fc84fbcdda8 Mon Sep 17 00:00:00 2001
From: Simon Ser <contact@emersion.fr>
Date: Fri, 26 Mar 2021 10:05:12 +0100
Subject: [PATCH] Add no-op session
This is useful for headless testing, for instance with VKMS:
modprobe vkms
export WLR_DRM_DEVICES=/dev/dri/card1
export WLR_BACKENDS=drm
export LIBSEAT_BACKEND=noop
sway
We don't need any of the VT handling in this case.
[Retrieved from:
https://github.com/kennylevinsen/seatd/commit/9a7824b7c3ff5c957632671e91454fc84fbcdda8]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
include/libseat.h | 2 +
libseat/backend/noop.c | 135 +++++++++++++++++++++++++++++++++++++++++
libseat/libseat.c | 5 ++
meson.build | 2 +-
4 files changed, 143 insertions(+), 1 deletion(-)
create mode 100644 libseat/backend/noop.c
diff --git a/include/libseat.h b/include/libseat.h
index 5375cd6..82098ea 100644
--- a/include/libseat.h
+++ b/include/libseat.h
@@ -1,6 +1,8 @@
#ifndef _LIBSEAT_H
#define _LIBSEAT_H
+#include <stdarg.h>
+
/*
* An opaque struct containing an opened seat, created by libseat_open_seat and
* destroyed by libseat_close_seat.
diff --git a/libseat/backend/noop.c b/libseat/backend/noop.c
new file mode 100644
index 0000000..71d0224
--- /dev/null
+++ b/libseat/backend/noop.c
@@ -0,0 +1,135 @@
+#include <assert.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <poll.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <unistd.h>
+
+#include "backend.h"
+#include "log.h"
+
+struct backend_noop {
+ struct libseat base;
+ struct libseat_seat_listener *seat_listener;
+ void *seat_listener_data;
+
+ bool initial_setup;
+ int sockets[2];
+};
+
+extern const struct seat_impl noop_impl;
+
+static struct backend_noop *backend_noop_from_libseat_backend(struct libseat *base) {
+ assert(base->impl == &noop_impl);
+ return (struct backend_noop *)base;
+}
+
+static void destroy(struct backend_noop *backend) {
+ close(backend->sockets[0]);
+ close(backend->sockets[1]);
+ free(backend);
+}
+
+static int close_seat(struct libseat *base) {
+ struct backend_noop *backend = backend_noop_from_libseat_backend(base);
+ destroy(backend);
+ return 0;
+}
+
+static int disable_seat(struct libseat *base) {
+ (void)base;
+ return 0;
+}
+
+static const char *seat_name(struct libseat *base) {
+ (void)base;
+ return "noop";
+}
+
+static int open_device(struct libseat *base, const char *path, int *fd) {
+ (void)base;
+
+ int tmpfd = open(path, O_RDWR | O_CLOEXEC);
+ if (tmpfd < 0) {
+ log_errorf("Failed to open device: %s", strerror(errno));
+ return -1;
+ }
+
+ *fd = tmpfd;
+ return tmpfd;
+}
+
+static int close_device(struct libseat *base, int device_id) {
+ (void)base;
+ (void)device_id;
+ return 0;
+}
+
+static int switch_session(struct libseat *base, int s) {
+ (void)base;
+ (void)s;
+ log_errorf("No-op backend cannot switch to session %d", s);
+ return -1;
+}
+
+static int get_fd(struct libseat *base) {
+ struct backend_noop *backend = backend_noop_from_libseat_backend(base);
+ return backend->sockets[0];
+}
+
+static int dispatch_background(struct libseat *base, int timeout) {
+ struct backend_noop *backend = backend_noop_from_libseat_backend(base);
+
+ if (backend->initial_setup) {
+ backend->initial_setup = false;
+ backend->seat_listener->enable_seat(&backend->base, backend->seat_listener_data);
+ }
+
+ struct pollfd fd = {
+ .fd = backend->sockets[0],
+ .events = POLLIN,
+ };
+ if (poll(&fd, 1, timeout) < 0) {
+ if (errno == EAGAIN || errno == EINTR) {
+ return 0;
+ } else {
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+static struct libseat *noop_open_seat(struct libseat_seat_listener *listener, void *data) {
+ struct backend_noop *backend = calloc(1, sizeof(struct backend_noop));
+ if (backend == NULL) {
+ return NULL;
+ }
+
+ if (socketpair(AF_UNIX, SOCK_STREAM, 0, backend->sockets) != 0) {
+ log_errorf("socketpair() failed: %s", strerror(errno));
+ free(backend);
+ return NULL;
+ }
+
+ backend->seat_listener = listener;
+ backend->seat_listener_data = data;
+ backend->base.impl = &noop_impl;
+
+ return &backend->base;
+}
+
+const struct seat_impl noop_impl = {
+ .open_seat = noop_open_seat,
+ .disable_seat = disable_seat,
+ .close_seat = close_seat,
+ .seat_name = seat_name,
+ .open_device = open_device,
+ .close_device = close_device,
+ .switch_session = switch_session,
+ .get_fd = get_fd,
+ .dispatch = dispatch_background,
+};
diff --git a/libseat/libseat.c b/libseat/libseat.c
index b1e8bb2..a7e079c 100644
--- a/libseat/libseat.c
+++ b/libseat/libseat.c
@@ -13,6 +13,7 @@
extern const struct seat_impl seatd_impl;
extern const struct seat_impl logind_impl;
extern const struct seat_impl builtin_impl;
+extern const struct seat_impl noop_impl;
static const struct named_backend impls[] = {
#ifdef SEATD_ENABLED
@@ -24,6 +25,7 @@ static const struct named_backend impls[] = {
#ifdef BUILTIN_ENABLED
{"builtin", &builtin_impl},
#endif
+ {"noop", &noop_impl},
{NULL, NULL},
};
@@ -62,6 +64,9 @@ struct libseat *libseat_open_seat(struct libseat_seat_listener *listener, void *
struct libseat *backend = NULL;
for (const struct named_backend *iter = impls; iter->backend != NULL; iter++) {
+ if (iter->backend == &noop_impl) {
+ continue;
+ }
backend = iter->backend->open_seat(listener, data);
if (backend != NULL) {
log_infof("Seat opened with backend '%s'", iter->name);
diff --git a/meson.build b/meson.build
index f41b621..c3800ae 100644
--- a/meson.build
+++ b/meson.build
@@ -145,7 +145,7 @@ symbols_file = 'libseat/libseat.syms'
symbols_flag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), symbols_file)
lib = library(
'seat', # This results in the library being called 'libseat'
- [ 'libseat/libseat.c' ],
+ [ 'libseat/libseat.c', 'libseat/backend/noop.c' ],
soversion: libseat_soversion,
link_with: private_lib,
include_directories: [include_directories('.', 'include')],

View File

@ -1,48 +0,0 @@
From 0b32c33978fbe8772df6d185c9b9d646c442dc5d Mon Sep 17 00:00:00 2001
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Date: Sun, 8 Aug 2021 19:00:35 +0200
Subject: [PATCH] meson.build: fix build with gcc < 7
Test if -Wimplicit-fallthrough is available before using it as it has
been added only since gcc 7.1 and
https://github.com/gcc-mirror/gcc/commit/81fea426da8c4687bb32e6894dc26f00ae211822
and so it will raise the following build failure with gcc < 7:
arm-none-linux-gnueabi-gcc: error: unrecognized command line option '-Wimplicit-fallthrough'
Fixes:
- http://autobuild.buildroot.org/results/0ee6816a7cceebdafd07612677a594bdf68e0790
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
[Upstream status: https://github.com/kennylevinsen/seatd/pull/1]
---
meson.build | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 1131b4b..c366a59 100644
--- a/meson.build
+++ b/meson.build
@@ -31,7 +31,6 @@ add_project_arguments(
'-Wold-style-definition', # nop
'-Wpointer-arith',
'-Wstrict-prototypes',
- '-Wimplicit-fallthrough',
'-Wmissing-prototypes',
'-Wno-unknown-warning-option',
'-Wno-unused-command-line-argument',
@@ -45,6 +44,11 @@ add_project_arguments(
language: 'c',
)
+cc = meson.get_compiler('c')
+if cc.has_argument('-Wimplicit-fallthrough')
+ add_project_arguments('-Wimplicit-fallthrough' , language : 'c')
+endif
+
if ['debugoptimized', 'release', 'minsize'].contains(get_option('buildtype'))
add_project_arguments('-D_FORTIFY_SOURCE=2', language: 'c')
endif
--
2.30.2

View File

@ -1,5 +1,5 @@
# Calculated locally
sha256 274b56324fc81ca6002bc1cdd387668dee34a6e1063e5f3896805c3770948988 0.5.0.tar.gz
sha256 1e2745ea39266de40d5beb24011782da95468b81ecfa410dd0db5ff75c665727 0.6.2.tar.gz
# License files
sha256 282a494803d666616bd726e0279636b5f6a31387ae19a707459074050f2600d3 LICENSE

View File

@ -4,7 +4,7 @@
#
################################################################################
SEATD_VERSION = 0.5.0
SEATD_VERSION = 0.6.2
SEATD_SOURCE = $(SEATD_VERSION).tar.gz
SEATD_SITE = https://git.sr.ht/~kennylevinsen/seatd/archive
SEATD_LICENSE = MIT
@ -17,20 +17,20 @@ SEATD_CONF_OPTS += \
-Dwerror=false
ifeq ($(BR2_PACKAGE_SYSTEMD_LOGIND),y)
SEATD_CONF_OPTS += -Dlogind=enabled
SEATD_CONF_OPTS += -Dlibseat-logind=enabled
SEATD_DEPENDENCIES += systemd
else
SEATD_CONF_OPTS += -Dlogind=disabled
SEATD_CONF_OPTS += -Dlibseat-logind=disabled
endif
ifeq ($(BR2_PACKAGE_SEATD_BUILTIN),y)
SEATD_CONF_OPTS += -Dbuiltin=enabled
SEATD_CONF_OPTS += -Dlibseat-builtin=enabled
else
SEATD_CONF_OPTS += -Dbuiltin=disabled
SEATD_CONF_OPTS += -Dlibseat-builtin=disabled
endif
ifeq ($(BR2_PACKAGE_SEATD_DAEMON),y)
SEATD_CONF_OPTS += -Dseatd=enabled -Dserver=enabled
SEATD_CONF_OPTS += -Dlibseat-seatd=enabled -Dserver=enabled
define SEATD_USERS
- - video -1 - - - - -
@ -47,7 +47,7 @@ define SEATD_INSTALL_INIT_SYSTEMD
endef
else
SEATD_CONF_OPTS += -Dseatd=disabled -Dserver=disabled
SEATD_CONF_OPTS += -Dlibseat-seatd=disabled -Dserver=disabled
endif
$(eval $(meson-package))