Ports: Port wayland-client
This commit is contained in:
parent
3440292e73
commit
3481e44d01
Notes:
sideshowbarker
2024-07-17 00:04:39 +09:00
Author: https://github.com/petelliott Commit: https://github.com/SerenityOS/serenity/commit/3481e44d01 Pull-request: https://github.com/SerenityOS/serenity/pull/17471 Reviewed-by: https://github.com/ADKaster Reviewed-by: https://github.com/linusg
8 changed files with 305 additions and 0 deletions
|
@ -272,6 +272,7 @@ This list is also available at [ports.serenityos.net](https://ports.serenityos.n
|
|||
| [`vlang`](vlang/) | V programming language | weekly.2021.31 | https://github.com/vlang/v |
|
||||
| [`vttest`](vttest/) | vttest | 20220215 | https://invisible-island.net/vttest/ |
|
||||
| [`VVVVVV`](VVVVVV/) | Terry Cavanagh's VVVVVV | 2.3.6 | https://github.com/TerryCavanagh/VVVVVV/ |
|
||||
| [`wayland`](wayland/) | Wayland client libraries | 1.21.0 | https://wayland.freedesktop.org/ |
|
||||
| [`wget`](wget/) | GNU Wget | 1.21.3 | https://www.gnu.org/software/wget/ |
|
||||
| [`which`](which/) | GNU which | 2.21 | https://www.gnu.org/software/which/ |
|
||||
| [`wireguard-tools`](wireguard-tools/) | WireGuard Tools | 1.0.20210914 | https://www.wireguard.com/ |
|
||||
|
|
36
Ports/wayland/package.sh
Executable file
36
Ports/wayland/package.sh
Executable file
|
@ -0,0 +1,36 @@
|
|||
#!/usr/bin/env -S bash ../.port_include.sh
|
||||
port='wayland'
|
||||
version='1.21.0'
|
||||
useconfigure='true'
|
||||
configopts=(
|
||||
"--buildtype=release"
|
||||
"--cross-file=${SERENITY_BUILD_DIR}/meson-cross-file.txt"
|
||||
"-Dlibraries=true"
|
||||
"-Dscanner=true"
|
||||
"-Dtests=false"
|
||||
"-Ddocumentation=false"
|
||||
)
|
||||
depends=(
|
||||
'expat'
|
||||
'libxml2'
|
||||
)
|
||||
files="https://gitlab.freedesktop.org/wayland/wayland/-/releases/${version}/downloads/wayland-${version}.tar.xz wayland-${version}.tar.xz 6dc64d7fc16837a693a51cfdb2e568db538bfdc9f457d4656285bb9594ef11ac"
|
||||
auth_type='sha256'
|
||||
|
||||
configure() {
|
||||
# TODO: Figure out why GCC doesn't autodetect that libgcc_s is needed.
|
||||
if [ "${SERENITY_TOOLCHAIN}" = "GNU" ]; then
|
||||
export LDFLAGS="-lgcc_s"
|
||||
fi
|
||||
|
||||
run meson build "${configopts[@]}"
|
||||
}
|
||||
|
||||
build() {
|
||||
run ninja -C build
|
||||
}
|
||||
|
||||
install() {
|
||||
export DESTDIR="${SERENITY_INSTALL_ROOT}"
|
||||
run meson install -C build
|
||||
}
|
97
Ports/wayland/patches/0001-Don-t-build-wayland-server.patch
Normal file
97
Ports/wayland/patches/0001-Don-t-build-wayland-server.patch
Normal file
|
@ -0,0 +1,97 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Elliott <pelliott@ualberta.ca>
|
||||
Date: Sat, 11 Feb 2023 13:22:20 -0700
|
||||
Subject: [PATCH] Don't build wayland-server
|
||||
|
||||
---
|
||||
meson.build | 4 ++--
|
||||
src/meson.build | 54 -------------------------------------------------
|
||||
2 files changed, 2 insertions(+), 56 deletions(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 8bb47c258228985667f1c6e0cc4ed64a02fa777a..52bf93bb278c75ee77bd3fcb29810752a1bc4ded 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -80,8 +80,8 @@ if get_option('libraries')
|
||||
ffi_dep = dependency('libffi')
|
||||
|
||||
decls = [
|
||||
- { 'header': 'sys/signalfd.h', 'symbol': 'SFD_CLOEXEC' },
|
||||
- { 'header': 'sys/timerfd.h', 'symbol': 'TFD_CLOEXEC' },
|
||||
+ #{ 'header': 'sys/signalfd.h', 'symbol': 'SFD_CLOEXEC' },
|
||||
+ #{ 'header': 'sys/timerfd.h', 'symbol': 'TFD_CLOEXEC' },
|
||||
{ 'header': 'time.h', 'symbol': 'CLOCK_MONOTONIC' },
|
||||
]
|
||||
|
||||
diff --git a/src/meson.build b/src/meson.build
|
||||
index a8a1d2ba979411a09fd754ef9b8ddf44a6f74653..c20d9b9df042004bcbe0e1ae466c409bd51d3f82 100644
|
||||
--- a/src/meson.build
|
||||
+++ b/src/meson.build
|
||||
@@ -167,58 +167,6 @@ if get_option('libraries')
|
||||
error('We probably need to bump the SONAME of libwayland-server and -client')
|
||||
endif
|
||||
|
||||
- wayland_server = library(
|
||||
- 'wayland-server',
|
||||
- sources: [
|
||||
- wayland_server_protocol_core_h,
|
||||
- wayland_server_protocol_h,
|
||||
- wayland_protocol_c,
|
||||
- 'wayland-server.c',
|
||||
- 'wayland-shm.c',
|
||||
- 'event-loop.c'
|
||||
- ],
|
||||
- # To avoid an unnecessary SONAME bump, wayland 1.x.y produces
|
||||
- # libwayland-server.so.0.x.y.
|
||||
- version: '.'.join(['0', wayland_version[1], wayland_version[2]]),
|
||||
- dependencies: [
|
||||
- epoll_dep,
|
||||
- ffi_dep,
|
||||
- wayland_private_dep,
|
||||
- wayland_util_dep,
|
||||
- mathlib_dep,
|
||||
- threads_dep,
|
||||
- rt_dep
|
||||
- ],
|
||||
- include_directories: root_inc,
|
||||
- install: true
|
||||
- )
|
||||
-
|
||||
- wayland_server_dep = declare_dependency(
|
||||
- link_with: wayland_server,
|
||||
- include_directories: [ root_inc, include_directories('.') ],
|
||||
- dependencies: [ epoll_dep, ffi_dep, mathlib_dep, threads_dep ],
|
||||
- sources: [
|
||||
- wayland_server_protocol_core_h,
|
||||
- wayland_server_protocol_h
|
||||
- ]
|
||||
- )
|
||||
-
|
||||
- pkgconfig.generate(
|
||||
- wayland_server,
|
||||
- name: 'Wayland Server',
|
||||
- description: 'Server side implementation of the Wayland protocol',
|
||||
- version: meson.project_version(),
|
||||
- filebase: 'wayland-server',
|
||||
- variables: [
|
||||
- 'datarootdir=' + join_paths('${prefix}', get_option('datadir')),
|
||||
- 'pkgdatadir=' + join_paths('${datarootdir}', meson.project_name())
|
||||
- ]
|
||||
- )
|
||||
-
|
||||
- if meson.version().version_compare('>= 0.54.0')
|
||||
- meson.override_dependency('wayland-server', wayland_server_dep)
|
||||
- endif
|
||||
-
|
||||
wayland_client = library(
|
||||
'wayland-client',
|
||||
sources: [
|
||||
@@ -269,8 +217,6 @@ if get_option('libraries')
|
||||
|
||||
install_headers([
|
||||
'wayland-util.h',
|
||||
- 'wayland-server.h',
|
||||
- 'wayland-server-core.h',
|
||||
'wayland-client.h',
|
||||
'wayland-client-core.h',
|
||||
])
|
23
Ports/wayland/patches/0002-Use-native-wayland-scanner.patch
Normal file
23
Ports/wayland/patches/0002-Use-native-wayland-scanner.patch
Normal file
|
@ -0,0 +1,23 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Elliott <pelliott@ualberta.ca>
|
||||
Date: Sat, 11 Feb 2023 13:40:47 -0700
|
||||
Subject: [PATCH] Use native wayland-scanner
|
||||
|
||||
---
|
||||
src/meson.build | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/meson.build b/src/meson.build
|
||||
index c20d9b9df042004bcbe0e1ae466c409bd51d3f82..2eafcdfb04ff05ab86eefcc06e8566d09e52cbfb 100644
|
||||
--- a/src/meson.build
|
||||
+++ b/src/meson.build
|
||||
@@ -78,8 +78,7 @@ if get_option('scanner')
|
||||
endif
|
||||
|
||||
if meson.is_cross_build() or not get_option('scanner')
|
||||
- scanner_dep = dependency('wayland-scanner', native: true, version: meson.project_version())
|
||||
- wayland_scanner_for_build = find_program(scanner_dep.get_variable(pkgconfig: 'wayland_scanner'))
|
||||
+ wayland_scanner_for_build = find_program('wayland-scanner')
|
||||
else
|
||||
wayland_scanner_for_build = wayland_scanner
|
||||
endif
|
|
@ -0,0 +1,60 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Elliott <pelliott@ualberta.ca>
|
||||
Date: Sat, 11 Feb 2023 13:52:12 -0700
|
||||
Subject: [PATCH] Remove unsupported OS features
|
||||
|
||||
---
|
||||
src/wayland-os.c | 18 ------------------
|
||||
src/wayland-os.h | 3 ---
|
||||
2 files changed, 21 deletions(-)
|
||||
|
||||
diff --git a/src/wayland-os.c b/src/wayland-os.c
|
||||
index a9066cae9c93b607ea92ad1da1746f3b37a2bcb3..4872c4837c67178f46e3ab05d9006a8c512664cc 100644
|
||||
--- a/src/wayland-os.c
|
||||
+++ b/src/wayland-os.c
|
||||
@@ -33,7 +33,6 @@
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
-#include <sys/epoll.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/un.h>
|
||||
#ifdef HAVE_SYS_UCRED_H
|
||||
@@ -188,23 +187,6 @@ wl_os_recvmsg_cloexec(int sockfd, struct msghdr *msg, int flags)
|
||||
return recvmsg_cloexec_fallback(sockfd, msg, flags);
|
||||
}
|
||||
|
||||
-int
|
||||
-wl_os_epoll_create_cloexec(void)
|
||||
-{
|
||||
- int fd;
|
||||
-
|
||||
-#ifdef EPOLL_CLOEXEC
|
||||
- fd = epoll_create1(EPOLL_CLOEXEC);
|
||||
- if (fd >= 0)
|
||||
- return fd;
|
||||
- if (errno != EINVAL)
|
||||
- return -1;
|
||||
-#endif
|
||||
-
|
||||
- fd = epoll_create(1);
|
||||
- return set_cloexec_or_close(fd);
|
||||
-}
|
||||
-
|
||||
int
|
||||
wl_os_accept_cloexec(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
||||
{
|
||||
diff --git a/src/wayland-os.h b/src/wayland-os.h
|
||||
index 068fd2fea3da8e0a13a3ab993fcc7d4c609a366d..ca4de54161b39e612b14332364cfb697e53d9afc 100644
|
||||
--- a/src/wayland-os.h
|
||||
+++ b/src/wayland-os.h
|
||||
@@ -41,9 +41,6 @@ wl_os_dupfd_cloexec(int fd, int minfd);
|
||||
ssize_t
|
||||
wl_os_recvmsg_cloexec(int sockfd, struct msghdr *msg, int flags);
|
||||
|
||||
-int
|
||||
-wl_os_epoll_create_cloexec(void);
|
||||
-
|
||||
int
|
||||
wl_os_accept_cloexec(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
|
||||
|
22
Ports/wayland/patches/0004-Don-t-use-CMSG_CLOEXEC.patch
Normal file
22
Ports/wayland/patches/0004-Don-t-use-CMSG_CLOEXEC.patch
Normal file
|
@ -0,0 +1,22 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Elliott <pelliott@ualberta.ca>
|
||||
Date: Sat, 11 Feb 2023 14:58:38 -0700
|
||||
Subject: [PATCH] Don't use CMSG_CLOEXEC
|
||||
|
||||
---
|
||||
meson.build | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 52bf93bb278c75ee77bd3fcb29810752a1bc4ded..622899a3076577218d93f5075d03279765723acc 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -51,7 +51,7 @@ foreach f: have_funcs
|
||||
config_h.set('HAVE_' + f.underscorify().to_upper(), cc.has_function(f))
|
||||
endforeach
|
||||
config_h.set10('HAVE_XUCRED_CR_PID', cc.has_member('struct xucred', 'cr_pid', prefix : '#include <sys/ucred.h>'))
|
||||
-have_broken_msg_cmsg_cloexec = false
|
||||
+have_broken_msg_cmsg_cloexec = true
|
||||
if host_machine.system() == 'freebsd'
|
||||
have_broken_msg_cmsg_cloexec = not cc.compiles('''
|
||||
#include <sys/param.h> /* To get __FreeBSD_version. */
|
|
@ -0,0 +1,39 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Elliott <pelliott@ualberta.ca>
|
||||
Date: Sat, 11 Feb 2023 15:17:27 -0700
|
||||
Subject: [PATCH] Remove call to open_memstream(3) from wl_closure_print
|
||||
|
||||
---
|
||||
src/connection.c | 11 +----------
|
||||
1 file changed, 1 insertion(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/connection.c b/src/connection.c
|
||||
index bf976762df7d31205a4945cf6df0963c5f27c70a..1adf30fdd2b5e211dbbe69607f4c97eff182d99b 100644
|
||||
--- a/src/connection.c
|
||||
+++ b/src/connection.c
|
||||
@@ -1273,12 +1273,8 @@ wl_closure_print(struct wl_closure *closure, struct wl_object *target,
|
||||
unsigned int time;
|
||||
uint32_t nval;
|
||||
FILE *f;
|
||||
- char *buffer;
|
||||
- size_t buffer_length;
|
||||
|
||||
- f = open_memstream(&buffer, &buffer_length);
|
||||
- if (f == NULL)
|
||||
- return;
|
||||
+ f = stderr;
|
||||
|
||||
clock_gettime(CLOCK_REALTIME, &tp);
|
||||
time = (tp.tv_sec * 1000000L) + (tp.tv_nsec / 1000);
|
||||
@@ -1354,11 +1350,6 @@ wl_closure_print(struct wl_closure *closure, struct wl_object *target,
|
||||
}
|
||||
|
||||
fprintf(f, ")\n");
|
||||
-
|
||||
- if (fclose(f) == 0) {
|
||||
- fprintf(stderr, "%s", buffer);
|
||||
- free(buffer);
|
||||
- }
|
||||
}
|
||||
|
||||
static int
|
27
Ports/wayland/patches/ReadMe.md
Normal file
27
Ports/wayland/patches/ReadMe.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
# Patches for wayland on SerenityOS
|
||||
|
||||
## `0001-Don-t-build-wayland-server.patch`
|
||||
|
||||
Don't build wayland-server
|
||||
|
||||
|
||||
## `0002-Use-native-wayland-scanner.patch`
|
||||
|
||||
Use native wayland-scanner
|
||||
|
||||
|
||||
## `0003-Remove-unsupported-OS-features.patch`
|
||||
|
||||
Remove unsupported OS features
|
||||
|
||||
|
||||
## `0004-Don-t-use-CMSG_CLOEXEC.patch`
|
||||
|
||||
Don't use CMSG_CLOEXEC
|
||||
|
||||
|
||||
## `0005-Remove-call-to-open_memstream-3-from-wl_closure_prin.patch`
|
||||
|
||||
Remove call to open_memstream(3) from wl_closure_print
|
||||
|
||||
|
Loading…
Add table
Reference in a new issue