diff --git a/patches/libsoup-2.65.1.patch b/patches/libsoup-2.65.1.patch deleted file mode 100644 index 6ae1615d..00000000 --- a/patches/libsoup-2.65.1.patch +++ /dev/null @@ -1,107 +0,0 @@ -diff -ruN a/Makefile.in b/Makefile.in ---- a/Makefile.in 2018-10-08 05:56:21.000000000 -0700 -+++ b/Makefile.in 2020-04-06 14:11:06.000000000 -0700 -@@ -452,7 +452,7 @@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ - ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} --SUBDIRS = libsoup po tests examples docs -+SUBDIRS = libsoup - EXTRA_DIST = \ - libsoup-2.4.pc.in \ - libsoup-gnome-2.4.pc.in \ -diff -ruN a/configure b/configure ---- a/configure 2018-10-08 05:56:21.000000000 -0700 -+++ b/configure 2020-04-06 14:12:07.000000000 -0700 -@@ -12970,7 +12970,7 @@ - - fi - -- -+if false; then # disable dependency checks - - pkg_failed=no - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML" >&5 -@@ -13251,8 +13251,7 @@ - - fi - -- -- -+fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Win32" >&5 - $as_echo_n "checking for Win32... " >&6; } -@@ -13304,7 +13303,7 @@ - $as_echo "$USE_NLS" >&6; } - - -- -+if false; then # disable intltool check - - case "$am__api_version" in - 1.01234) -@@ -13828,7 +13827,7 @@ - # Substitute ALL_LINGUAS so we can use it in po/Makefile - - -- -+fi - - - GETTEXT_PACKAGE=libsoup -diff -ruN a/libsoup/Makefile.in b/libsoup/Makefile.in ---- a/libsoup/Makefile.in 2018-10-08 05:56:22.000000000 -0700 -+++ b/libsoup/Makefile.in 2020-04-06 14:07:04.000000000 -0700 -@@ -175,9 +175,6 @@ - libsoup_2_4_la-soup-content-sniffer-stream.lo \ - libsoup_2_4_la-soup-converter-wrapper.lo \ - libsoup_2_4_la-soup-cookie.lo \ -- libsoup_2_4_la-soup-cookie-jar.lo \ -- libsoup_2_4_la-soup-cookie-jar-db.lo \ -- libsoup_2_4_la-soup-cookie-jar-text.lo \ - libsoup_2_4_la-soup-date.lo \ - libsoup_2_4_la-soup-directory-input-stream.lo \ - libsoup_2_4_la-soup-enum-types.lo \ -@@ -211,13 +208,11 @@ - libsoup_2_4_la-soup-session-sync.lo \ - libsoup_2_4_la-soup-socket.lo \ - libsoup_2_4_la-soup-socket-properties.lo \ -- libsoup_2_4_la-soup-status.lo libsoup_2_4_la-soup-tld.lo \ -+ libsoup_2_4_la-soup-status.lo \ - libsoup_2_4_la-soup-uri.lo libsoup_2_4_la-soup-value-utils.lo \ - libsoup_2_4_la-soup-version.lo \ - libsoup_2_4_la-soup-websocket.lo \ -- libsoup_2_4_la-soup-websocket-connection.lo \ -- libsoup_2_4_la-soup-xmlrpc.lo \ -- libsoup_2_4_la-soup-xmlrpc-old.lo -+ libsoup_2_4_la-soup-websocket-connection.lo - libsoup_2_4_la_OBJECTS = $(am_libsoup_2_4_la_OBJECTS) - AM_V_lt = $(am__v_lt_@AM_V@) - am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -@@ -733,9 +728,6 @@ - soup-converter-wrapper.h \ - soup-converter-wrapper.c \ - soup-cookie.c \ -- soup-cookie-jar.c \ -- soup-cookie-jar-db.c \ -- soup-cookie-jar-text.c \ - soup-date.c \ - soup-directory-input-stream.h \ - soup-directory-input-stream.c \ -@@ -786,14 +778,11 @@ - soup-socket-private.h \ - soup-socket-properties.c \ - soup-status.c \ -- soup-tld.c \ - soup-uri.c \ - soup-value-utils.c \ - soup-version.c \ - soup-websocket.c \ -- soup-websocket-connection.c \ -- soup-xmlrpc.c \ -- soup-xmlrpc-old.c -+ soup-websocket-connection.c - - @BUILD_LIBSOUP_GNOME_TRUE@libsoupgnomeincludedir = $(includedir)/libsoup-gnome-2.4/libsoup - @BUILD_LIBSOUP_GNOME_TRUE@libsoupgnomeinclude_HEADERS = \ diff --git a/patches/libsoup-2.74.2.patch b/patches/libsoup-2.74.2.patch new file mode 100644 index 00000000..dae2f76e --- /dev/null +++ b/patches/libsoup-2.74.2.patch @@ -0,0 +1,114 @@ +From 119abc03aac8c5cf1af0845a0e64b3027ce1fa78 Mon Sep 17 00:00:00 2001 +From: osy <50960678+osy@users.noreply.github.com> +Date: Sat, 5 Mar 2022 17:02:38 -0800 +Subject: [PATCH] soup-tld: disabled when libpsl is optional + +When building without libpsl, we no longer have soup-tld.c. As a result, +we do not provide those APIs in the built library and additionally the +following change is made to soup_cookie_jar_add_cookie_full() + +1. We no longer reject cookies for public domains +2. If the accept policy is not SOUP_COOKIE_JAR_ACCEPT_ALWAYS we assume + all incoming cookie is third party and reject it. +--- + libsoup/meson.build | 4 +++- + libsoup/soup-cookie-jar.c | 6 ++++++ + meson.build | 5 ++++- + tests/meson.build | 7 ++++++- + 4 files changed, 19 insertions(+), 3 deletions(-) + +diff --git a/libsoup/meson.build b/libsoup/meson.build +index e585b3fe..ec0aca23 100644 +--- a/libsoup/meson.build ++++ b/libsoup/meson.build +@@ -76,7 +76,6 @@ soup_sources = [ + 'soup-socket.c', + 'soup-socket-properties.c', + 'soup-status.c', +- 'soup-tld.c', + 'soup-uri.c', + 'soup-value-utils.c', + 'soup-version.c', +@@ -208,6 +207,9 @@ if brotlidec_dep.found() + soup_headers += 'soup-brotli-decompressor.h' + endif + ++if libpsl_dep.found() ++ soup_sources += 'soup-tld.c' ++endif + + includedir = join_paths(libsoup_api_name, meson.project_name()) + install_headers(soup_installed_headers, subdir : includedir) +diff --git a/libsoup/soup-cookie-jar.c b/libsoup/soup-cookie-jar.c +index c8231f0e..5e35e135 100644 +--- a/libsoup/soup-cookie-jar.c ++++ b/libsoup/soup-cookie-jar.c +@@ -595,18 +595,24 @@ soup_cookie_jar_add_cookie_full (SoupCookieJar *jar, SoupCookie *cookie, SoupURI + g_return_if_fail (SOUP_IS_COOKIE_JAR (jar)); + g_return_if_fail (cookie != NULL); + ++#ifdef HAVE_TLD + /* Never accept cookies for public domains. */ + if (!g_hostname_is_ip_address (cookie->domain) && + soup_tld_domain_is_public_suffix (cookie->domain)) { + soup_cookie_free (cookie); + return; + } ++#endif + + priv = soup_cookie_jar_get_instance_private (jar); + + if (first_party != NULL) { ++#ifdef HAVE_TLD + if (priv->accept_policy == SOUP_COOKIE_JAR_ACCEPT_NEVER || + incoming_cookie_is_third_party (jar, cookie, first_party, priv->accept_policy)) { ++#else // no TLD, assume every cookie is third-party ++ if (priv->accept_policy != SOUP_COOKIE_JAR_ACCEPT_ALWAYS) { ++#endif + soup_cookie_free (cookie); + return; + } +diff --git a/meson.build b/meson.build +index 3cc56fb9..5865dfc7 100644 +--- a/meson.build ++++ b/meson.build +@@ -148,7 +148,10 @@ endif + + libpsl_required_version = '>= 0.20' + libpsl_dep = dependency('libpsl', version : libpsl_required_version, +- fallback : ['libpsl', 'libpsl_dep']) ++ fallback : ['libpsl', 'libpsl_dep'], required : false) ++if libpsl_dep.found() ++ cdata.set('HAVE_TLD', '1') ++endif + + if cc.has_function('gmtime_r', prefix : '#include ', args : default_source_flag) + cdata.set('HAVE_GMTIME_R', '1') +diff --git a/tests/meson.build b/tests/meson.build +index 5482aa86..d5b32a12 100644 +--- a/tests/meson.build ++++ b/tests/meson.build +@@ -62,7 +62,6 @@ tests = [ + ['ssl', true, []], + ['streaming', true, []], + ['timeout', true, []], +- ['tld', true, []], + ['uri-parsing', true, []], + ['websocket', true, [libz_dep]] + ] +@@ -82,6 +81,12 @@ if brotlidec_dep.found() + endif + endif + ++if libpsl_dep.found() ++ tests += [ ++ ['tld', true, []], ++ ] ++endif ++ + if have_apache + tests += [ + ['auth', false, []], +-- +2.32.0 (Apple Git-132) + diff --git a/patches/phodav-2.2.patch b/patches/phodav-2.2.patch deleted file mode 100644 index b5ca259c..00000000 --- a/patches/phodav-2.2.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -ruN a/Makefile.in b/Makefile.in ---- a/Makefile.in 2017-02-16 08:57:28.000000000 -0800 -+++ b/Makefile.in 2020-04-06 14:21:57.000000000 -0700 -@@ -528,7 +528,7 @@ - makeflags_0 = --no-print-directory -s - makeflags_1 = - AM_MAKEFLAGS = $(makeflags_$(V)) --SUBDIRS = . po spice libphodav doc -+SUBDIRS = . spice libphodav - lib_LTLIBRARIES = libphodav-2.0.la - AM_CPPFLAGS = \ - -DLOCALEDIR=\""$(localedir)"\" \ -@@ -568,7 +568,6 @@ - - libphodav_2_0_la_LDFLAGS = \ - -version-info 0:0:0 \ -- -Wl,--version-script=${srcdir}/libphodav.syms \ - -no-undefined \ - $(NULL) - -diff -ruN a/configure b/configure ---- a/configure 2017-02-16 08:57:27.000000000 -0800 -+++ b/configure 2020-04-06 14:22:02.000000000 -0700 -@@ -13446,7 +13446,7 @@ - $as_echo "$USE_NLS" >&6; } - - -- -+if false; then # disable intltool check - - case "$am__api_version" in - 1.01234) -@@ -13970,7 +13970,7 @@ - # Substitute ALL_LINGUAS so we can use it in po/Makefile - - -- -+fi - - - diff --git a/patches/phodav-2.5.patch b/patches/phodav-2.5.patch new file mode 100644 index 00000000..460a3539 --- /dev/null +++ b/patches/phodav-2.5.patch @@ -0,0 +1,135 @@ +From c0d495a77c7934e982d280a33deaaa9f6595785e Mon Sep 17 00:00:00 2001 +From: osy <50960678+osy@users.noreply.github.com> +Date: Sat, 5 Mar 2022 17:40:07 -0800 +Subject: [PATCH 1/4] method: fix compile on Darwin + +On Darwin systems, removexattr() is defined with 3 arguments. +--- + libphodav/phodav-method-proppatch.c | 4 ++++ + tests/meson.build | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/libphodav/phodav-method-proppatch.c b/libphodav/phodav-method-proppatch.c +index 4cd8211..3421e32 100644 +--- a/libphodav/phodav-method-proppatch.c ++++ b/libphodav/phodav-method-proppatch.c +@@ -59,7 +59,11 @@ set_attr (GFile *file, xmlNodePtr attrnode, + return SOUP_STATUS_FORBIDDEN; + gchar *path = g_file_get_path (file); + #ifdef HAVE_SYS_XATTR_H ++#ifdef __APPLE__ ++ removexattr (path, attrname, 0); ++#else + removexattr (path, attrname); ++#endif + #else + g_debug ("cannot remove xattr from %s, not supported", path); /* FIXME? */ + #endif +diff --git a/tests/meson.build b/tests/meson.build +index aeb48e3..43e9a13 100644 +--- a/tests/meson.build ++++ b/tests/meson.build +@@ -1,6 +1,6 @@ + tests_sources = [] + +-if host_machine.system() != 'windows' ++if host_machine.system() not in ['darwin', 'ios', 'windows'] + tests_sources += 'virtual-dir.c' + endif + +-- +2.32.0 (Apple Git-132) + +From 8060e63fb82baba60dee6f3360780c6e83d16472 Mon Sep 17 00:00:00 2001 +From: osy <50960678+osy@users.noreply.github.com> +Date: Sat, 5 Mar 2022 17:41:18 -0800 +Subject: [PATCH 2/4] meson: fix build on unsupported --no-undefined + +Clang on Darwin systems do not support this flag. +--- + libphodav/meson.build | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/libphodav/meson.build b/libphodav/meson.build +index 5443ce0..4ab6821 100644 +--- a/libphodav/meson.build ++++ b/libphodav/meson.build +@@ -30,7 +30,10 @@ if not dependency('glib-2.0', version : '>= 2.51.2', required: false).found() + endif + + mapfile = 'libphodav.syms' +-vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile) ++vflag = compiler.get_supported_link_arguments( ++ '-Wl,--no-undefined', ++ '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile) ++) + + libphodav = library( + 'phodav-2.0', +@@ -38,7 +41,7 @@ libphodav = library( + c_args : [ '-DG_LOG_DOMAIN="phodav"' ], + include_directories : incdir, + version: '0.0.0', +- link_args : [ '-Wl,--no-undefined', vflag ], ++ link_args : vflag, + link_depends : mapfile, + dependencies : deps, + install : true, +-- +2.32.0 (Apple Git-132) + +From 450361cefca48f6b8ca191a7024cad29beaa0825 Mon Sep 17 00:00:00 2001 +From: osy <50960678+osy@users.noreply.github.com> +Date: Sat, 5 Mar 2022 17:49:26 -0800 +Subject: [PATCH 3/4] spice-webdavd: support macOS port + +--- + bin/spice-webdavd.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/bin/spice-webdavd.c b/bin/spice-webdavd.c +index ee713bd..b9453ff 100644 +--- a/bin/spice-webdavd.c ++++ b/bin/spice-webdavd.c +@@ -655,7 +655,11 @@ run_service (ServiceData *service_data) + + loop = g_main_loop_new (NULL, TRUE); + #ifdef G_OS_UNIX ++#ifdef __APPLE__ ++ open_mux_path ("/dev/tty.org.spice-space.webdav.0"); ++#else + open_mux_path ("/dev/virtio-ports/org.spice-space.webdav.0"); ++#endif + #else + open_mux_path ("\\\\.\\Global\\org.spice-space.webdav.0"); + #endif +-- +2.32.0 (Apple Git-132) + +From f5c7f192644d8f30817ab23a98425e3179a0021d Mon Sep 17 00:00:00 2001 +From: osy <50960678+osy@users.noreply.github.com> +Date: Sat, 5 Mar 2022 23:40:27 -0800 +Subject: [PATCH 4/4] meson: link statically with libsoup and libxml + +--- + meson.build | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/meson.build b/meson.build +index b8ff125..7ab6da1 100644 +--- a/meson.build ++++ b/meson.build +@@ -34,8 +34,8 @@ else + deps += dependency('gio-unix-2.0', version : '>= 2.44') + endif + +-deps += dependency('libsoup-2.4', version : '>= 2.48.0') +-deps += dependency('libxml-2.0') ++deps += dependency('libsoup-2.4', version : '>= 2.48.0', static : true) ++deps += dependency('libxml-2.0', static : true) + + d1 = dependency('avahi-gobject', required : get_option('avahi')) + d2 = dependency('avahi-client', required : get_option('avahi')) +-- +2.32.0 (Apple Git-132) + diff --git a/patches/sources b/patches/sources index 1689ba1b..ac71193f 100644 --- a/patches/sources +++ b/patches/sources @@ -22,13 +22,13 @@ USBREDIR_SRC="https://www.spice-space.org/download/usbredir/usbredir-0.8.0.tar.b QEMU_SRC="https://github.com/utmapp/qemu/releases/download/v6.2.0-utm/qemu-6.2.0-utm.tar.bz2" # Source files for spice-client -JSON_GLIB_SRC="https://ftp.gnome.org/pub/GNOME/sources/json-glib/1.2/json-glib-1.2.8.tar.xz" +JSON_GLIB_SRC="https://download.gnome.org/sources/json-glib/1.6/json-glib-1.6.6.tar.xz" GST_SRC="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.19.1.tar.xz" GST_BASE_SRC="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.19.1.tar.xz" GST_GOOD_SRC="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.19.1.tar.xz" -XML2_SRC="http://xmlsoft.org/sources/libxml2-2.9.10.tar.gz" -SOUP_SRC="https://ftp.gnome.org/pub/GNOME/sources/libsoup/2.65/libsoup-2.65.1.tar.xz" -PHODAV_SRC="http://ftp.gnome.org/pub/GNOME/sources/phodav/2.2/phodav-2.2.tar.xz" +XML2_SRC="http://xmlsoft.org/sources/libxml2-2.9.12.tar.gz" +SOUP_SRC="https://ftp.gnome.org/pub/GNOME/sources/libsoup/2.74/libsoup-2.74.2.tar.xz" +PHODAV_SRC="http://ftp.gnome.org/pub/GNOME/sources/phodav/2.5/phodav-2.5.tar.xz" SPICE_CLIENT_SRC="https://www.spice-space.org/download/gtk/spice-gtk-0.40.tar.xz" # Source files for GPU acceleration diff --git a/scripts/build_dependencies.sh b/scripts/build_dependencies.sh index c4261f68..76507588 100755 --- a/scripts/build_dependencies.sh +++ b/scripts/build_dependencies.sh @@ -479,10 +479,10 @@ build_qemu () { build_spice_client () { meson_build "$QEMU_DIR/subprojects/libucontext" -Ddefault_library=static -Dfreestanding=true - build $JSON_GLIB_SRC + meson_build $JSON_GLIB_SRC -Dintrospection=disabled build $XML2_SRC --enable-shared=no --without-python - build $SOUP_SRC --without-gnome --without-krb5-config --enable-shared=no --disable-tls-check - build $PHODAV_SRC + meson_build $SOUP_SRC --default-library static -Dsysprof=disabled -Dtls_check=false -Dintrospection=disabled + meson_build $PHODAV_SRC meson_build $SPICE_CLIENT_SRC -Dcoroutine=libucontext -Dusb-cd=disabled }