orca-slicer, wxGTK31: remove dependency on libsoup2 (#430171)

This commit is contained in:
Sandro
2025-08-09 21:53:57 +02:00
committed by GitHub
6 changed files with 332 additions and 9 deletions

View File

@@ -32,6 +32,9 @@ let
hash = "sha256-xGL5I2+bPjmZGSTYe1L7VAmvLHbwd934o/cxg9baEvQ=";
fetchSubmodules = true;
};
patches = [
../../../by-name/wx/wxGTK31/0001-fix-assertion-using-hide-in-destroy.patch
];
});
versions = {

View File

@@ -35,7 +35,7 @@
pcre,
systemd,
tbb_2021,
webkitgtk_4_0,
webkitgtk_4_1,
wxGTK31,
xorg,
libnoise,
@@ -112,7 +112,7 @@ stdenv.mkDerivation (finalAttrs: {
openvdb
pcre
tbb_2021
webkitgtk_4_0
webkitgtk_4_1
wxGTK'
xorg.libX11
opencv.cxxdev

View File

@@ -20,15 +20,14 @@ index 9c5cb96..e92a0e3 100644
@@ -175,6 +175,11 @@ if (WIN32)
target_link_libraries(BambuStudio_app_gui PRIVATE boost_headeronly)
endif ()
+# We link against webkit2gtk symbols in src/slic3r/GUI/Widgets/WebView.cpp
+if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ target_link_libraries(libslic3r_gui "-lwebkit2gtk-4.0")
+ target_link_libraries(libslic3r_gui "-lwebkit2gtk-4.1")
+endif ()
+
# Link the resources dir to where Slic3r GUI expects it
set(output_dlls_Release "")
set(output_dlls_Debug "")
--
--
2.38.1

View File

@@ -0,0 +1,318 @@
diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake
index 3ff14ab91f..e47e9b0ceb 100644
--- a/build/cmake/init.cmake
+++ b/build/cmake/init.cmake
@@ -429,15 +429,21 @@ if(wxUSE_GUI)
if(wxUSE_WEBVIEW)
if(WXGTK)
if(wxUSE_WEBVIEW_WEBKIT)
- find_package(LIBSOUP)
+ set(WEBKIT_LIBSOUP_VERSION 2.4)
if(WXGTK2)
find_package(WEBKIT 1.0)
elseif(WXGTK3)
- find_package(WEBKIT2)
+ find_package(WEBKIT2 4.1)
+ if(WEBKIT2_FOUND)
+ set(WEBKIT_LIBSOUP_VERSION 3.0)
+ else()
+ find_package(WEBKIT2 4.0)
+ endif()
if(NOT WEBKIT2_FOUND)
find_package(WEBKIT 3.0)
endif()
endif()
+ find_package(LIBSOUP ${WEBKIT_LIBSOUP_VERSION})
endif()
set(wxUSE_WEBVIEW_WEBKIT OFF)
set(wxUSE_WEBVIEW_WEBKIT2 OFF)
diff --git a/build/cmake/modules/FindLIBSOUP.cmake b/build/cmake/modules/FindLIBSOUP.cmake
index cbfba1cf93..2433d141ea 100644
--- a/build/cmake/modules/FindLIBSOUP.cmake
+++ b/build/cmake/modules/FindLIBSOUP.cmake
@@ -31,19 +31,27 @@
# LibSoup does not provide an easy way to retrieve its version other than its
# .pc file, so we need to rely on PC_LIBSOUP_VERSION and REQUIRE the .pc file
# to be found.
+SET(LIBSOUP_VERSION 2.4)
+if(DEFINED LIBSOUP_FIND_VERSION)
+ SET(LIBSOUP_VERSION ${LIBSOUP_FIND_VERSION})
+endif()
+
+set(LIBSOUP_INCLUDE_DIRS LIBSOUP_INCLUDE_DIRS-NOTFOUND)
+set(LIBSOUP_LIBRARIES LIBSOUP_LIBRARIES-NOTFOUND)
+
FIND_PACKAGE(PkgConfig)
-PKG_CHECK_MODULES(PC_LIBSOUP QUIET libsoup-2.4)
+PKG_CHECK_MODULES(PC_LIBSOUP QUIET libsoup-${LIBSOUP_VERSION})
if(PC_LIBSOUP_FOUND)
FIND_PATH(LIBSOUP_INCLUDE_DIRS
NAMES libsoup/soup.h
HINTS ${PC_LIBSOUP_INCLUDEDIR}
${PC_LIBSOUP_INCLUDE_DIRS}
- PATH_SUFFIXES libsoup-2.4
+ PATH_SUFFIXES libsoup-${LIBSOUP_VERSION}
)
FIND_LIBRARY(LIBSOUP_LIBRARIES
- NAMES soup-2.4
+ NAMES soup-${LIBSOUP_VERSION}
HINTS ${PC_LIBSOUP_LIBDIR}
${PC_LIBSOUP_LIBRARY_DIRS}
)
diff --git a/build/cmake/modules/FindWEBKIT2.cmake b/build/cmake/modules/FindWEBKIT2.cmake
index 133e7a4563..e39077ac4a 100644
--- a/build/cmake/modules/FindWEBKIT2.cmake
+++ b/build/cmake/modules/FindWEBKIT2.cmake
@@ -5,7 +5,10 @@
# WEBKIT2_LIBRARIES - List of libraries when using Webkit2.
# WEBKIT2_FOUND - True if Webkit2 found.
-SET( WEBKIT2_VERSION 4.0)
+SET(WEBKIT2_VERSION 4.0)
+if(DEFINED WEBKIT2_FIND_VERSION)
+ SET(WEBKIT2_VERSION ${WEBKIT2_FIND_VERSION})
+endif()
set(WEBKIT2_INCLUDE_DIR WEBKIT2_INCLUDE_DIR-NOTFOUND)
set(WEBKIT2_LIBRARY WEBKIT2_LIBRARY-NOTFOUND)
diff --git a/configure b/configure
index 41e811071d..2f3ad0113e 100755
--- a/configure
+++ b/configure
@@ -1047,7 +1047,6 @@ infodir
docdir
oldincludedir
includedir
-runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -1495,7 +1494,6 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1748,15 +1746,6 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
- -runstatedir | --runstatedir | --runstatedi | --runstated \
- | --runstate | --runstat | --runsta | --runst | --runs \
- | --run | --ru | --r)
- ac_prev=runstatedir ;;
- -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
- | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
- | --run=* | --ru=* | --r=*)
- runstatedir=$ac_optarg ;;
-
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1894,7 +1883,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir runstatedir
+ libdir localedir mandir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -2047,7 +2036,6 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -41677,6 +41665,86 @@ pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WEBKIT" >&5
$as_echo_n "checking for WEBKIT... " >&6; }
+if test -n "$PKG_CONFIG"; then
+ if test -n "$WEBKIT_CFLAGS"; then
+ pkg_cv_WEBKIT_CFLAGS="$WEBKIT_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"webkit2gtk-4.1\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "webkit2gtk-4.1") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_WEBKIT_CFLAGS=`$PKG_CONFIG --cflags "webkit2gtk-4.1" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$WEBKIT_LIBS"; then
+ pkg_cv_WEBKIT_LIBS="$WEBKIT_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"webkit2gtk-4.1\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "webkit2gtk-4.1") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_WEBKIT_LIBS=`$PKG_CONFIG --libs "webkit2gtk-4.1" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ WEBKIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "webkit2gtk-4.1"`
+ else
+ WEBKIT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "webkit2gtk-4.1"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$WEBKIT_PKG_ERRORS" >&5
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: webkit2gtk-4.1 not found, falling back to webkit2gtk-4.0" >&5
+$as_echo "$as_me: WARNING: webkit2gtk-4.1 not found, falling back to webkit2gtk-4.0" >&2;}
+
+elif test $pkg_failed = untried; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: webkit2gtk-4.1 not found, falling back to webkit2gtk-4.0" >&5
+$as_echo "$as_me: WARNING: webkit2gtk-4.1 not found, falling back to webkit2gtk-4.0" >&2;}
+
+else
+ WEBKIT_CFLAGS=$pkg_cv_WEBKIT_CFLAGS
+ WEBKIT_LIBS=$pkg_cv_WEBKIT_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+ USE_WEBVIEW_WEBKIT2=1
+ CXXFLAGS="$CXXFLAGS $WEBKIT_CFLAGS"
+ EXTRALIBS_WEBVIEW="$WEBKIT_LIBS"
+
+fi
+ if test "$USE_WEBVIEW_WEBKIT2" = 0; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WEBKIT" >&5
+$as_echo_n "checking for WEBKIT... " >&6; }
+
if test -n "$PKG_CONFIG"; then
if test -n "$WEBKIT_CFLAGS"; then
pkg_cv_WEBKIT_CFLAGS="$WEBKIT_CFLAGS"
@@ -41732,13 +41800,13 @@ fi
echo "$WEBKIT_PKG_ERRORS" >&5
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: webkit2gtk not found, falling back to webkitgtk" >&5
-$as_echo "$as_me: WARNING: webkit2gtk not found, falling back to webkitgtk" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: webkit2gtk-4.0 not found, falling back to webkitgtk" >&5
+$as_echo "$as_me: WARNING: webkit2gtk-4.0 not found, falling back to webkitgtk" >&2;}
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: webkit2gtk not found, falling back to webkitgtk" >&5
-$as_echo "$as_me: WARNING: webkit2gtk not found, falling back to webkitgtk" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: webkit2gtk-4.0 not found, falling back to webkitgtk" >&5
+$as_echo "$as_me: WARNING: webkit2gtk-4.0 not found, falling back to webkitgtk" >&2;}
else
WEBKIT_CFLAGS=$pkg_cv_WEBKIT_CFLAGS
@@ -41746,11 +41814,12 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- USE_WEBVIEW_WEBKIT2=1
- CXXFLAGS="$CXXFLAGS $WEBKIT_CFLAGS"
- EXTRALIBS_WEBVIEW="$WEBKIT_LIBS"
+ USE_WEBVIEW_WEBKIT2=1
+ CXXFLAGS="$CXXFLAGS $WEBKIT_CFLAGS"
+ EXTRALIBS_WEBVIEW="$WEBKIT_LIBS"
fi
+ fi
fi
if test "$USE_WEBVIEW_WEBKIT2" = 0; then
webkitgtk=webkit-1.0
diff --git a/configure.in b/configure.in
index 41c4813def..a964272d51 100644
--- a/configure.in
+++ b/configure.in
@@ -7474,15 +7474,27 @@ if test "$wxUSE_WEBVIEW" = "yes"; then
if test "$wxUSE_GTK" = 1; then
if test "$WXGTK3" = 1; then
PKG_CHECK_MODULES([WEBKIT],
- [webkit2gtk-4.0],
+ [webkit2gtk-4.1],
[
USE_WEBVIEW_WEBKIT2=1
CXXFLAGS="$CXXFLAGS $WEBKIT_CFLAGS"
EXTRALIBS_WEBVIEW="$WEBKIT_LIBS"
],
[
- AC_MSG_WARN([webkit2gtk not found, falling back to webkitgtk])
+ AC_MSG_WARN([webkit2gtk-4.1 not found, falling back to webkit2gtk-4.0])
])
+ if test "$USE_WEBVIEW_WEBKIT2" = 0; then
+ PKG_CHECK_MODULES([WEBKIT],
+ [webkit2gtk-4.0],
+ [
+ USE_WEBVIEW_WEBKIT2=1
+ CXXFLAGS="$CXXFLAGS $WEBKIT_CFLAGS"
+ EXTRALIBS_WEBVIEW="$WEBKIT_LIBS"
+ ],
+ [
+ AC_MSG_WARN([webkit2gtk-4.0 not found, falling back to webkitgtk])
+ ])
+ fi
fi
if test "$USE_WEBVIEW_WEBKIT2" = 0; then
webkitgtk=webkit-1.0
diff --git a/src/gtk/webview_webkit2.cpp b/src/gtk/webview_webkit2.cpp
index a0161243f9..0fb9e823ca 100644
--- a/src/gtk/webview_webkit2.cpp
+++ b/src/gtk/webview_webkit2.cpp
@@ -166,15 +166,18 @@ wxgtk_webview_webkit_load_failed(WebKitWebView *,
{
switch (error->code)
{
+#if SOUP_MAJOR_VERSION < 3
case SOUP_STATUS_CANCELLED:
type = wxWEBVIEW_NAV_ERR_USER_CANCELLED;
break;
case SOUP_STATUS_CANT_RESOLVE:
+#endif
case SOUP_STATUS_NOT_FOUND:
type = wxWEBVIEW_NAV_ERR_NOT_FOUND;
break;
+#if SOUP_MAJOR_VERSION < 3
case SOUP_STATUS_CANT_RESOLVE_PROXY:
case SOUP_STATUS_CANT_CONNECT:
case SOUP_STATUS_CANT_CONNECT_PROXY:
@@ -186,6 +189,7 @@ wxgtk_webview_webkit_load_failed(WebKitWebView *,
case SOUP_STATUS_MALFORMED:
type = wxWEBVIEW_NAV_ERR_REQUEST;
break;
+#endif
case SOUP_STATUS_BAD_REQUEST:
type = wxWEBVIEW_NAV_ERR_REQUEST;

View File

@@ -21,7 +21,7 @@
withEGL ? true,
withMesa ? !stdenv.hostPlatform.isDarwin,
withWebKit ? stdenv.hostPlatform.isDarwin,
webkitgtk_4_0,
webkitgtk_4_1,
libpng,
}:
@@ -39,7 +39,10 @@ stdenv.mkDerivation rec {
patches = [
# https://github.com/wxWidgets/wxWidgets/issues/17942
./patches/0001-fix-assertion-using-hide-in-destroy.patch
./0001-fix-assertion-using-hide-in-destroy.patch
# Add support for libwebkit2gtk-4.1 and libsoup-3.0, cherry-picked from
# https://github.com/SoftFever/Orca-deps-wxWidgets/commit/1b8664426603376b68f8ca3c54de97ec630e5940
./0002-support-webkitgtk-41.patch
];
nativeBuildInputs = [ pkg-config ];
@@ -58,7 +61,7 @@ stdenv.mkDerivation rec {
]
++ lib.optional withCurl curl
++ lib.optional withMesa libGLU
++ lib.optional (withWebKit && !stdenv.hostPlatform.isDarwin) webkitgtk_4_0
++ lib.optional (withWebKit && !stdenv.hostPlatform.isDarwin) webkitgtk_4_1
++ lib.optionals stdenv.hostPlatform.isDarwin [
libpng
];