diff --git a/Mk/Uses/qt-dist.mk b/Mk/Uses/qt-dist.mk index 61d215ae0fd9..c8cf63ef5bae 100644 --- a/Mk/Uses/qt-dist.mk +++ b/Mk/Uses/qt-dist.mk @@ -1,522 +1,522 @@ # There are three Qt related USES files with different access to Qt. # - qmake: The port requires Qt's qmake to build -- creates the configure target # - auto includes qt.mk # - qt-dist: The port is a port for a part of Qt # - auto includes qt.mk # - qt.mk - Dependency handling. USE_QT=foo bar # # # Usage # qt-dist:[,yes|modulename] # # MAINTAINER: kde@FreeBSD.org .if !defined(_QT_DIST_MK_INCLUDED) _QT_DIST_MK_INCLUDED= qt-dist.mk # Suck in qt.mk and qmake.mk qt_ARGS?= # empty .include "${USESDIR}/qt.mk" qmake_ARGS?= # empty .include "${USESDIR}/qmake.mk" # Supported distribution arguments _COMMON_DISTS= 3d base charts datavis3d declarative imageformats multimedia \ networkauth quick3d quicktimeline remoteobjects scxml sensors \ serialbus serialport svg tools translations virtualkeyboard \ - wayland webchannel websockets + wayland webchannel webengine websockets _QT5_DISTS= connectivity gamepad graphicaleffects location quickcontrols \ - quickcontrols2 script speech webengine webglplugin webview \ + quickcontrols2 script speech webglplugin webview \ x11extras xmlpatterns _QT6_DISTS= 5compat doc languageserver lottie positioning shadertools _QT_DISTS= ${_COMMON_DISTS} \ ${_QT${_QT_VER}_DISTS} # We only accept one item as an argument. The fetch target further below works # around this. _QT_DIST= # empty . for dist in ${_QT_DISTS:O:u} . if ${qt-dist_ARGS:M${dist}} . if empty(_QT_DIST) _QT_DIST= ${dist} . else IGNORE= cannot be installed: different Qt dists specified via qt-dist:[${qt-dist_ARGS:S/ /,/g}] . endif . endif . endfor # Fall back to sensible defaults for _QT_DIST . if empty(_QT_DIST) _QT_DIST= ${PORTNAME} # don't force qt-dist to be set for Qt5 ports which 75% of time are ${PORTNAME} . endif # Check validitiy . if empty(_QT_DISTS:M${_QT_DIST}) IGNORE= Unsupported qt-dist ${_QT_DIST} for qt:${_QT_VER} . endif ################################################################################ # Set standard bsd.port.mk variables. LICENSE?= LGPL21 WWW?= https://www.qt.io/ . if !exists(${PKGDIR}/pkg-descr) DESCR?= ${PORTSDIR}/devel/${_QT_RELNAME}/pkg-descr . endif # Stage support. _QT5_DESTDIRNAME= INSTALL_ROOT _QT6_DESTDIRNAME= DESTDIR DESTDIRNAME= ${_QT${_QT_VER}_DESTDIRNAME} # Qt's tarballs are xz compressed. . if empty(USES:Mtar) EXTRACT_SUFX?= .tar.xz . endif # Qt5 specific master sites _QT5_MASTER_SITES_kde= LOCAL _QT5_MASTER_SITE_SUBDIR_kde= kde/KDE/Qt/${_QT_VERSION} _QT5_MASTER_SITES= ${MASTER_SITE_QT} _QT5_MASTER_SITE_SUBDIR= official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules/ # Qt6 specific master sites _QT6_MASTER_SITES= ${MASTER_SITE_QT} _QT6_MASTER_SITE_SUBDIR= official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules \ official_releases/additional_libraries/${_QT_VERSION:R}/${_QT_VERSION}/ # Qt5 specific distnames _QT5_DISTNAME= ${_QT_DIST:S,^,qt,:S,$,-everywhere-src-${DISTVERSION},} _QT5_DISTNAME_kde= ${_QT_DIST:S,^,kde-qt,:S,$,-${DISTVERSION},} # Qt6 specific distnames _QT6_DISTNAME= ${_QT_DIST:S,^,qt,:S,$,-everywhere-src-${DISTVERSION},} # Effective master sites and disfile valus MASTER_SITES= ${_QT${_QT_VER}_MASTER_SITES${_KDE_${_QT_DIST}:D_kde}} MASTER_SITE_SUBDIR= ${_QT${_QT_VER}_MASTER_SITE_SUBDIR${_KDE_${_QT_DIST}:D_kde}} DISTNAME= ${_QT${_QT_VER}_DISTNAME${_KDE_${_QT_DIST}:D_kde}} DISTFILES= ${DISTNAME:S,$,${EXTRACT_SUFX},} DIST_SUBDIR= KDE/Qt/${_QT_VERSION} . if ${_QT_VER:M5} # KDE maintains a repository with a patched Qt5 distribution. _KDE_3d= 6 _KDE_base= 177 _KDE_charts= 0 _KDE_connectivity= 5 _KDE_datavis3d= 0 _KDE_declarative= 25 _KDE_gamepad= 0 _KDE_graphicaleffects= 0 _KDE_imageformats= 6 _KDE_location= 3 _KDE_multimedia= 1 _KDE_networkauth= 0 _KDE_quick3d= 1 _KDE_quickcontrols= 0 _KDE_quickcontrols2= 7 _KDE_quicktimeline= 0 _KDE_remoteobjects= 0 _KDE_script= 0 _KDE_script_ORIGIN_TAG= v5.15.11-lts _KDE_script_VERSION= 5.15.11 _KDE_scxml= 0 _KDE_sensors= 0 _KDE_serialbus= 0 _KDE_serialport= 0 _KDE_speech= 1 _KDE_svg= 9 _KDE_tools= 1 _KDE_translations= 0 _KDE_virtualkeyboard= 0 _KDE_wayland= 58 _KDE_webchannel= 3 _KDE_webglplugin= 0 _KDE_websockets= 2 _KDE_webview= 0 _KDE_x11extras= 0 _KDE_xmlpatterns= 0 . if defined(_KDE_${_QT_DIST}) QT5_KDE_PATCH= p${_KDE_${_QT_DIST}} _KDE_${_QT_DIST}_VERSION?= ${_QT_VERSION} _KDE_${_QT_DIST}_ORIGIN_TAG?= v${_KDE_${_QT_DIST}_VERSION}-lts-lgpl COMMENT+= (KDE patched) . else QT5_KDE_PATCH= # . endif . endif # ${_QT_VER:M5} # Environment setup for Qt5 . if ${_QT_VER:M5} # Qt (at least when used with qmake) has a tendency to overlink: some libraries # have dependencies on others in the mkspec configurations and the latter are # always passed to the linker even if they are not actually used. By passing # --as-needed to the linker by default when building the Qt ports we do not # have to declare a lot of unnecessary dependencies in USE_QT5. LDFLAGS+= -Wl,--as-needed . if ${_QT_DIST} == "base" && ${PORTNAME} != "qmake" # Qt configure requires pkg-config to detect dependencies. .include "${USESDIR}/pkgconfig.mk" . endif # -nomake is only used by qtbase's configure script. # Other ports from other Qt modules will automatically build examples and # tests if the directories exist because of mkspecs/features/qt_parts.prf. EXTRACT_AFTER_ARGS?= ${DISTNAME:S,$,/examples,:S,^,--exclude ,} \ ${DISTNAME:S,$,/tests,:S,^,--exclude ,} \ --no-same-owner --no-same-permissions . endif # ! ${_QT_VER:M5} # Build setup for Qt6 . if ${_QT_VER:M6} CMAKE_ARGS+= -DCMAKE_INSTALL_PREFIX=${PREFIX} \ -DINSTALL_BINDIR=${PREFIX}/${QT_BINDIR_REL} \ -DINSTALL_PUBLICBINDIR=${PREFIX}/bin \ -DINSTALL_LIBDIR=${PREFIX}/${QT_LIBDIR_REL} \ -DINSTALL_LIBEXECDIR=${PREFIX}/${QT_LIBEXECDIR_REL} \ -DINSTALL_DOCDIR=${PREFIX}/${QT_DOCDIR_REL} \ -DINSTALL_ARCHDATADIR=${PREFIX}/${QT_ARCHDIR_REL} \ -DINSTALL_DATADIR=${PREFIX}/${QT_DATADIR_REL} \ -DINSTALL_INCLUDEDIR=${PREFIX}/${QT_INCDIR_REL} \ -DINSTALL_MKSPECSDIR=${PREFIX}/${QT_MKSPECDIR_REL} \ -DINSTALL_EXAMPLESDIR=${PREFIX}/${QT_EXAMPLEDIR_REL} \ -DINSTALL_DESCRIPTIONSDIR=${PREFIX}/${QT_DESCRIPTIONSDIR_REL} \ -DQT_QMAKE_TARGET_MKSPEC:String=freebsd-clang \ --log-level=TRACE . endif # Build setup for Qt5 . if ${_QT_VER:M5} CONFIGURE_ENV+= MAKE="${MAKE:T}" CONFIGURE_ARGS+= -opensource -confirm-license \ -no-pch \ -prefix ${PREFIX} \ -bindir ${PREFIX}/${QT_BINDIR_REL} \ -headerdir ${PREFIX}/${QT_INCDIR_REL} \ -libdir ${PREFIX}/${QT_LIBDIR_REL} \ -plugindir ${PREFIX}/${QT_PLUGINDIR_REL} \ -importdir ${PREFIX}/${QT_IMPORTDIR_REL} \ -datadir ${PREFIX}/${QT_DATADIR_REL} \ -docdir ${PREFIX}/${QT_DOCDIR_REL} \ -translationdir ${PREFIX}/${QT_L10NDIR_REL} \ -sysconfdir ${PREFIX}/${QT_ETCDIR_REL} \ -nomake examples -nomake tests \ -platform ${QMAKESPECNAME} \ -archdatadir ${PREFIX}/${QT_ARCHDIR_REL} \ -libexecdir ${PREFIX}/${QT_LIBEXECDIR_REL} \ -qmldir ${PREFIX}/${QT_QMLDIR_REL} \ -examplesdir ${PREFIX}/${QT_EXAMPLEDIR_REL} \ -testsdir ${PREFIX}/${QT_TESTDIR_REL} . if ${ARCH} == i386 && empty(MACHINE_CPU:Msse2) CONFIGURE_ARGS+= -no-sse2 . endif # Work around a bug in current binutils, where the gold linker creates # duplicate symbols. See pr 218187. Disable the gold-linker for Qt5 ports. CONFIGURE_ARGS+= -no-use-gold-linker # Pass -recheck-all so that multiple calls to the configure script really # re-run all checks. CONFIGURE_ARGS+= -recheck-all . endif # ${_QT_VER:M5} . if defined(WANT_QT_DEBUG) || defined(WITH_DEBUG) WITH_DEBUG= yes STRIP= # It's done prior to bsd.qt.mk inclusion. CONFIGURE_ARGS+= -debug -separate-debug-info # Override configuration in global qconfig.pri. QMAKE_ARGS+= QT_CONFIG+="debug separate_debug_info" \ QT_CONFIG-="release" . else CONFIGURE_ARGS+= -release -no-separate-debug-info QMAKE_ARGS+= QT_CONFIG+="release" \ QT_CONFIG-="debug separate_debug_info" . endif # defined(WANT_QT_DEBUG) || defined(WITH_DEBUG) . if defined(WANT_QT_VERBOSE_CONFIGURE) CONFIGURE_ARGS+= -verbose . endif . if ${_QT_DIST} == "base" _EXTRA_PATCHES_QT5= ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_features_create__cmake.prf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_features_qt__module.prf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_common_bsd_bsd.conf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_freebsd-clang_qmake.conf . if ${ARCH:Mmips*} || (${ARCH:Mpowerpc*} && !exists(/usr/bin/clang)) || ${ARCH} == sparc64 _EXTRA_PATCHES_QT5+= ${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_g++-base.conf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_gcc-base.conf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_freebsd-g++_qmake.conf USE_GCC= yes . elif ${ARCH} == armv7 || ${ARCH} == powerpc _EXTRA_PATCHES_QT5+= ${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_g++-base.conf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_gcc-base.conf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_freebsd-g++_qmake.conf . endif . if ${_QT_VER:M5} EXTRA_PATCHES?= ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-configure \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-sync.profiles \ ${_EXTRA_PATCHES_QT5} . endif # ${_QT_VER:M5} . endif # ${_QT_DIST} == "base" # Override settings installed in qconfig.h and *.pri files. The flags will be # installed along with the port, but have to be passed as arguments while # building the port itself. Flags prefixed with "-" (e.g., "-CUPS" and "-cups") # are needed to disable some features. . if !defined(${QT_MODNAME}) || empty(${QT_MODNAME}) # Used for both qconfig-*.h and qt_config_*.pri; it can't be empty. QT_MODNAME= ${PORTNAME} . endif QT_DEFINES?= # For qconfig.h flags (without "QT_" prefix). QT_CONFIG?= # For *.pri files QT_CONFIG flags. . if ${QT_DEFINES} QMAKE_ARGS+= DEFINES+="${QT_DEFINES:O:u:C/^([^-])/QT_\1/:C/^-/QT_NO_/:O}" . endif # ${QT_DEFINES} PKGDEINSTALL= ${WRKDIR}/pkg-deinstall PKGINSTALL= ${WRKDIR}/pkg-install . if ${QT_CONFIG:N-*} QMAKE_ARGS+= QT_CONFIG+="${QT_CONFIG:N-*:O:u}" . endif . if ${QT_CONFIG:M-*} QMAKE_ARGS+= QT_CONFIG-="${QT_CONFIG:M-*:O:u:C/^-//}" . endif PLIST_SUB+= SHORTVER=${_QT_VERSION:R} \ FULLVER=${_QT_VERSION:C/-.*//} # Handle additional PLIST directories, which should only be used for Qt-dist ports. . for dir in ETC # Export QT_ETCDIR. PLIST_SUB+= QT_${dir}DIR="${QT_${dir}DIR_REL}" . endfor . if ${_QT_VER:M5} . for dir in CMAKE # Export QT_CMAKEDIR. PLIST_SUB+= QT_${dir}DIR="${QT_${dir}DIR_REL}" . endfor . endif . if ${_QT_VER:M5} . if ${_QT_DIST} == "base" # qtbase requires some tools to be symlinked to the build directory. _QT_TOOLS= # empty . if ${PORTNAME} != "qmake" _QT_TOOLS+= ${QMAKE} . endif . if ${PORTNAME} != "buildtools" _QT_TOOLS+= ${MOC} ${RCC} . endif . if ${PORTNAME} != "qdoc" _QT_TOOLS+= qdoc . endif . if ${PORTNAME} != "dbus" _QT_TOOLS+= qdbuscpp2xml qdbusxml2cpp . endif . if ${PORTNAME} != "widgets" _QT_TOOLS+= ${UIC} . endif # The list of QtBase components that need to be linked into WRKSRC/lib for # other QtBase ports. See below. _QT5_BASE= core dbus gui network sql widgets _QT5_ADDITIONAL_LINK?= # Ensure definition . if ${_QT_VER:M5} post-patch: gcc-post-patch gcc-post-patch: ${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/mkspecs/common/gcc-base.conf \ ${WRKSRC}/mkspecs/freebsd-g++/qmake.conf ${REINPLACE_CMD} 's|%%GCC_DEFAULT%%|${GCC_DEFAULT}|g' \ ${WRKSRC}/mkspecs/common/gcc-base.conf \ ${WRKSRC}/mkspecs/common/g++-base.conf \ ${WRKSRC}/mkspecs/common/bsd/bsd.conf \ ${WRKSRC}/mkspecs/freebsd-g++/qmake.conf . endif pre-configure: qtbase-pre-configure qtbase-pre-configure: . for tool in ${_QT_TOOLS} @${TEST} -e ${QT_BINDIR}/${tool:T} && \ ${LN} -sf ${QT_BINDIR}/${tool:T} ${CONFIGURE_WRKSRC}/bin/${tool:T} || \ ${TRUE} . endfor # The following is a fix for the inplace upgrade problem we faced (see # QTBUG-40825 and ports bugs 194088, 195105 and 198720) previously, # which previously was adressed by making sure, that ${LOCALBASE}/lib, which # would often gets added by pkgconf for the dependencies, was passed after # ${WRKSRC}/lib. # * We fix the inplace upgrade problem by moving the Qt5 libraries into # ${LOCALBASE}/lib/qt5. Therefore a -L${LOCALBASE}/lib does no harm anymore. # * However, this means, that the ports belonging to the split up QtBase package # now no longer can find their depending QtBase libraries. We fix this by # linking these into ${CONFIGURE_WRKSRC}/lib if the given QtBase port depends # on them. . if ${_QT_DIST:Mbase} . for basedep in ${_QT5_BASE} . if ! empty(USE_QT:M${basedep}) ${LN} -sf ${QT_LIBDIR}/${${basedep}_LIB} ${CONFIGURE_WRKSRC}/lib . endif . endfor . endif # # **** THIS PART IS OBSOLETE FOR THE NEXT QT UPGRADE **** # # Add ${LOCALBASE}/lib to DEFAULT_LIBDIRS, which we use to filter out # certain paths from pkg-config calls (see the explanation in # devel/qt5/files/patch-configure) as well as for setting # QMAKE_DEFAULT_LIBDIR in mkspecs/qconfig.pri. Part of the solution for # ports/194088. post-patch: qtbase-post-patch qtbase-post-patch: ${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/mkspecs/common/bsd/bsd.conf \ ${WRKSRC}/mkspecs/freebsd-clang/qmake.conf . if ${PORTNAME} != "qmake" _QMAKE= ${CONFIGURE_WRKSRC}/bin/qmake . endif . endif pre-configure: qt5-pre-configure qt5-pre-configure: # Qt 5.3.2 introduced a check in mkspecs/features/create_cmake.prf that # requires tests/auto/cmake to be present, otherwise the configure stage will # fail. # Since we cannot extract tests/auto/cmake/ and exclude tests/ at the same # time, we have to disable the check in a cache file (the only way to get this # value through to the configure script in qtbase). ${MKDIR} ${CONFIGURE_WRKSRC} ${ECHO_CMD} 'CMAKE_MODULE_TESTS = -' > ${CONFIGURE_WRKSRC}/.qmake.cache # configure will run syncqt.pl if it finds a .git entry in the working directory touch ${WRKSRC}/.git # As the patch collection was created after a version bump, all module verisions # are tagged as 5.15.3 touch ${WRKSRC}/.qmake.conf # easier than to -f before the sed ${REINPLACE_CMD} -e '/MODULE_VERSION/s|5\.15\.[0-9]|${_QT_VERSION}|g' \ ${WRKSRC}/.qmake.conf # **** THIS PART IS OBSOLETE FOR THE NEXT QT UPGRADE **** # # We piggyback on QMAKE_LIBDIR_FLAGS to make sure -L${WRKSRC}/lib is passed to # the linker before -L/usr/local/lib. By default, the opposite happens, which # is a problem when a Qt port is being upgraded, since an existing library # would end up being picked up instead of those built in ${WRKSRC}/lib. Since # qmake appends the value of QMAKE_LIBDIR to QMAKE_LIBDIR_FLAGS, we can use the # latter to get the linker path order right. qmake is smart enough to strip # occurrences of ${WRKSRC}/lib from .pc and .prl files when installing them. # See QTBUG-40825 and ports bugs 194088, 195105 and 198720. ${ECHO_CMD} 'QMAKE_LIBDIR_FLAGS = -L${CONFIGURE_WRKSRC}/lib' >> ${CONFIGURE_WRKSRC}/.qmake.cache ${ECHO_CMD} 'QMAKE_DEFAULT_LIBDIRS += ${LOCALBASE}/lib /usr/lib /lib' >> ${CONFIGURE_WRKSRC}/.qmake.cache ${ECHO_CMD} 'QMAKE_DEFAULT_INCDIRS += ${LOCALBASE}/include /usr/include' >> ${CONFIGURE_WRKSRC}/.qmake.cache # Allow linking of further libraries to the configure directory. . if !empty(_QT5_ADDITIONAL_LINK) . for dep in ${_QT5_ADDITIONAL_LINK} ${MKDIR} ${CONFIGURE_WRKSRC}/lib . if ! empty(USE_QT:M${dep}) ${LN} -sf ${QT_LIBDIR}/${qt-${dep}_LIB} ${CONFIGURE_WRKSRC}/lib . endif . endfor . endif . if ${QT_DEFINES:N-*} # There **are** defines, so we need to **add** this port to the # qconfig-modules.h header; make @need_add empty and comment out # the @need_remove lines in the script (see below in qt-post-install). # If there are no defines, do it the other way around. _sub_need_add= _sub_need_remove= \#\# . else _sub_need_add= \#\# _sub_need_remove= . endif # If a port installs Qt version-specific binaries (e.g. "designer" which # existed as a Qt4 application and exists as a Qt5 application and will # probably be a Qt6 application) the port should set `QT_BINARIES=yes`. . if defined(QT_BINARIES) _sub_need_bin= . else _sub_need_bin= \#\# . endif . if ${QT_MODNAME} == core # QtCore (e.g. devel/qt5-core) is the one that starts the header, # and is also the one that can clean it up when deinstalled. _sub_need_clean= . else _sub_need_clean= \#\# . endif post-install: qt-post-install qt-post-install: # We can't use SUB_FILES with the shared pkg-change.in. # We need it to be a script instead of a group of @unexecs. # Do two steps of processing -- introducing the Qt variables, # and replacing the @tags with comment (or nothing) characters # according to the port's settings -- in one sed and write # to pkg-change.tmp. Then split it up and minify for the # install and deinstall step. @${SED} -e 's,%%QT_MODNAME%%,${QT_MODNAME},g' \ -e 's,%%QT_INCDIR%%,${QT_INCDIR},g' \ -e 's,@need_add,${_sub_need_add},' \ -e 's,@need_remove,${_sub_need_remove},' \ -e 's,@need_clean,${_sub_need_clean},' \ -e 's,@need_bin,${_sub_need_bin},' \ ${PORTSDIR}/devel/${_QT_RELNAME}/${FILESDIR:T}/pkg-change.in > \ ${WRKDIR}/pkg-change.tmp @${SED} -e 's,@install,,' -e 's,@deinstall,##,' ${WRKDIR}/pkg-change.tmp | ${SED} -e '/##/d' > ${PKGINSTALL} @${SED} -e 's,@install,##,' -e 's,@deinstall,,' ${WRKDIR}/pkg-change.tmp | ${SED} -e '/##/d' > ${PKGDEINSTALL} # Drop all leading spaces in the script, to minify @${REINPLACE_CMD} 's/^ *//' ${PKGINSTALL} ${PKGDEINSTALL} . if ${QT_DEFINES:N-*} @${MKDIR} ${STAGEDIR}${QT_INCDIR}/QtCore/modules @${ECHO_CMD} -n \ > ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h . for def in ${QT_DEFINES:N-*:O:u:C/=.*$//} @${ECHO_CMD} "#if !defined(QT_${def}) && !defined(QT_NO_${def})" \ >> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h ${ECHO_CMD} "# define QT_${def}" \ >> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h @${ECHO_CMD} "#endif" \ >> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h @${ECHO_CMD} \ >> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h . endfor @${ECHO_CMD} "${PREFIX}/${QT_INCDIR_REL}/QtCore/modules/qconfig-${QT_MODNAME}.h" \ >> ${TMPPLIST} . endif # ${QT_DEFINES:N-*} . if ${QT_CONFIG:N-*} @${MKDIR} ${STAGEDIR}${QT_MKSPECDIR}/modules ${ECHO_CMD} "QT_CONFIG += ${QT_CONFIG:N-*:O:u}" \ > ${STAGEDIR}${QT_MKSPECDIR}/modules/qt_config_${QT_MODNAME}.pri @${ECHO_CMD} "${PREFIX}/${QT_MKSPECDIR_REL}/modules/qt_config_${QT_MODNAME}.pri" \ >> ${TMPPLIST} . endif # ${QT_CONFIG:N-*} . endif # M5 . if ${_QT_VER:M6} post-stage: qt6-post-stage # Clean-up of empty directories, as we install # * cmake to ${LOCALBASE}/lib/cmake not ${QT_LIBDIR}/cmake. # * pkgconfig to ${LOCALBASE}/libexec/pkgconfig not ${QT_LIBDIR}/pkgconfig qt6-post-stage: ${RM} -r ${STAGEDIR}${QT_LIBDIR}/cmake ${RM} -r ${STAGEDIR}${QT_LIBDIR}/pkgconfig . endif qt-create-kde-distfile: ${MKDIR} ${DISTDIR}/${DIST_SUBDIR} ${SH} ${PORTSDIR}/devel/${_QT_RELNAME}/files/create_kde-qt_release.sh \ ${_QT_DIST} \ ${DISTDIR}/${DIST_SUBDIR} \ ${_KDE_${_QT_DIST}_VERSION} \ ${_KDE_${_QT_DIST}_ORIGIN_TAG} .endif # defined(_QT_DIST_MK_INCLUDED) diff --git a/Mk/Uses/qt.mk b/Mk/Uses/qt.mk index da49ce7bbf4c..79429a8fb583 100644 --- a/Mk/Uses/qt.mk +++ b/Mk/Uses/qt.mk @@ -1,440 +1,440 @@ # There are three Qt related USES files with different access to Qt. # - qmake: The port requires Qt's qmake to build -- creates the configure target # - auto includes qt.mk # - qt-dist: The port is a port for a part of Qt # - auto includes qt.mk and qmake.mk # - qt.mk - Dependency handling. USE_QT=foo bar # # Usage: # USES=qt:[,no_env] # # Versions: 5, 6 # # Port variables: # USE_QT - List of Qt modules to depend on, with optional ':build' # and ':run' suffixes. Define it empty to include this file # without depending on Qt ports. # # MAINTAINER: kde@FreeBSD.org .if !defined(_QT_MK_INCLUDED) _QT_MK_INCLUDED= qt.mk # Qt versions currently supported by the framework. _QT_SUPPORTED?= 5 6 QT5_VERSION?= 5.15.7 QT6_VERSION?= 6.4.2 # We accept the Qt version to be passed by either or all of the three mk files. . if empty(qt_ARGS) && empty(qmake_ARGS) && empty(qt-dist_ARGS) IGNORE= qt needs a version (${_QT_SUPPORTED}) passed via qt, qmake or qt-dist. . endif # Gather all the args together _QT_GLOBAL_ARGS= ${qt_ARGS} ${qmake_ARGS} ${qt-dist_ARGS} # Check fo the Qt version to be used _QT_VER= # empty . for ver in ${_QT_SUPPORTED:O:u} . if ${_QT_GLOBAL_ARGS:M${ver}} . if !defined(_QT_VERSION) _QT_VER= ${ver} . else . if ${_QT_VERSION} != ${ver} IGNORE?= cannot be installed: different Qt versions specified via qt:[${_QT_SUPPORTED:S/ //g}], qmake:[${_QT_SUPPORTED:S/ //g}] a qt-dist:[${_QT_SUPPORTED:S/ //g}] . endif . endif . endif . endfor . if empty(_QT_VER) IGNORE?= cannot decide what Qt version to use: specify one via qt:[${_QT_SUPPORTED:S/ //g}], qmake:[${_QT_SUPPORTED:S/ //g}] or qt-dist:[${_QT_SUPPORTED:S/ //g}] . endif # Set the shortcuts used from now on _QT_RELNAME= qt${_QT_VER} _QT_VERSION= ${QT${_QT_VER}_VERSION} QT_BINDIR_REL?= ${QT_ARCHDIR_REL}/bin QT_INCDIR_REL?= include/${_QT_RELNAME} QT_LIBDIR_REL?= lib/${_QT_RELNAME} QT_ARCHDIR_REL?= ${QT_LIBDIR_REL} QT_PLUGINDIR_REL?= ${QT_ARCHDIR_REL}/plugins QT_DESCRIPTIONSDIR_REL?=${QT_DATADIR_REL}/modules QT_LIBEXECDIR_REL?= libexec/${_QT_RELNAME} QT_IMPORTDIR_REL?= ${QT_ARCHDIR_REL}/imports QT_QMLDIR_REL?= ${QT_ARCHDIR_REL}/qml QT_DATADIR_REL?= share/${_QT_RELNAME} QT_DOCDIR_REL?= share/doc/${_QT_RELNAME} QT_L10NDIR_REL?= ${QT_DATADIR_REL}/translations QT_ETCDIR_REL?= etc/xdg QT_EXAMPLEDIR_REL?= share/examples/${_QT_RELNAME} QT_TESTDIR_REL?= ${QT_DATADIR_REL}/tests QT_CMAKEDIR_REL?= lib/cmake _QT5_TOOLDIR_REL= ${QT_BINDIR_REL} _QT6_TOOLDIR_REL= ${QT_LIBEXECDIR_REL} QT_TOOLDIR_REL= ${_QT${_QT_VER}_TOOLDIR_REL} # Not customizable. QT_MKSPECDIR_REL= ${QT_ARCHDIR_REL}/mkspecs _QT_LIBVER= ${_QT_VERSION:R:R} LCONVERT?= ${QT_BINDIR}/lconvert LRELEASE?= ${QT_BINDIR}/lrelease LUPDATE?= ${QT_BINDIR}/lupdate MOC?= ${QT_TOOLDIR}/moc RCC?= ${QT_TOOLDIR}/rcc UIC?= ${QT_TOOLDIR}/uic QMAKE?= ${QT_BINDIR}/qmake QCOLLECTIONGENERATOR?= ${QT_TOOLDIR}/qcollectiongenerator QHELPGENERATOR?= ${QT_TOOLDIR}/qhelpgenerator # Needed to redefine the qmake target for internal Qt configuration. _QMAKE?= ${QMAKE} QMAKESPECNAME?= freebsd-${QMAKE_COMPILER} QMAKESPEC?= ${QT_MKSPECDIR}/${QMAKESPECNAME} # The whole Qt distribution should be built with the same compiler, but it's # better to support custom settings. Dereferencing the detection allows to # avoid forking a shell on each inclusion of this file, and to catch any CXX # customization (via USE_GCC, etc.). QMAKE_COMPILER= $$(ccver="$$(${CXX} --version)"; case "$$ccver" in *clang*) echo clang ;; *) echo g++ ;; esac) . for dir in BIN INC LIB ARCH PLUGIN LIBEXEC IMPORT \ QML DATA DOC L10N ETC EXAMPLE TEST MKSPEC \ CMAKE TOOL QT_${dir}DIR= ${PREFIX}/${QT_${dir}DIR_REL} # Export all directories to the plist substituion for QT_DIST ports. # For the others, exclude QT_CMAKEDIR and QT_ETCDIR. . if ${dir:NCMAKE} && ${dir:NETC} PLIST_SUB+= QT_${dir}DIR="${QT_${dir}DIR_REL}" . endif . endfor CONFIGURE_ENV+= QT_SELECT=${_QT_RELNAME} MAKE_ENV+= QT_SELECT=${_QT_RELNAME} # Make sure both the installed mkspecs as well as the ones being built are # found, with the ones from the port being built having preference. CONFIGURE_ENV+= QMAKEMODULES="${WRKSRC}/mkspecs/modules:${LOCALBASE}/${QT_MKSPECDIR_REL}/modules" MAKE_ENV+= QMAKEMODULES="${WRKSRC}/mkspecs/modules:${LOCALBASE}/${QT_MKSPECDIR_REL}/modules" _USES_POST+= qt .endif # _QT_MK_INCLUDED # ============================================================================= # # ============================================================================= .if defined(_POSTMKINCLUDED) && !defined(_QT_MK_POST_INCLUDED) _QT_MK_POST_INCLUDED= qt.mk # The Qt components supported by qt.mk: list of shared, and version specific ones _USE_QT_COMMON= 3d charts datavis3d declarative doc imageformats multimedia \ networkauth quick3d quicktimeline remoteobjects scxml \ sensors serialbus serialport svg virtualkeyboard wayland \ - webchannel websockets + webchannel webengine websockets _USE_QT5_ONLY= assistant buildtools concurrent connectivity core dbus \ declarative-test designer diag examples gamepad \ graphicaleffects gui help l10n linguist linguisttools location \ network opengl paths phonon4 pixeltool plugininfo printsupport \ qdbus qdbusviewer qdoc qdoc-data qev qmake quickcontrols \ quickcontrols2 script scripttools speech sql sql-mysql sql-odbc \ sql-pgsql sql-sqlite2 sql-sqlite3 sql-tds testlib uiplugin \ - uitools webengine webglplugin webkit websockets-qml webview \ + uitools webglplugin webkit websockets-qml webview \ widgets x11extras xml xmlpatterns . if ${ARCH} == amd64 || ${ARCH} == i386 _USE_QT5_ONLY+= sql-ibase . endif _USE_QT6_ONLY= 5compat base languageserver lottie positioning shadertools \ tools translations # Dependency tuples: _LIB should be preferred if possible. qt-3d_PORT= graphics/${_QT_RELNAME}-3d qt-3d_LIB= libQt${_QT_LIBVER}3DCore.so qt-5compat_PORT= devel/${_QT_RELNAME}-5compat qt-5compat_LIB= libQt${_QT_LIBVER}Core5Compat.so qt-assistant_PORT= devel/${_QT_RELNAME}-assistant qt-assistant_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/assistant # Always build with *this* version's buildtools qt-buildtools_PORT= devel/${_QT_RELNAME}-buildtools qt-buildtools_PATH= ${_QT_RELNAME}-buildtools>=${_QT_VERSION:R} qt-base_PORT= devel/${_QT_RELNAME}-base qt-base_LIB= libQt${_QT_LIBVER}Core.so qt-charts_PORT= x11-toolkits/${_QT_RELNAME}-charts qt-charts_LIB= libQt${_QT_LIBVER}Charts.so qt-concurrent_PORT= devel/${_QT_RELNAME}-concurrent qt-concurrent_LIB= libQt${_QT_LIBVER}Concurrent.so qt-connectivity_PORT= comms/${_QT_RELNAME}-connectivity qt-connectivity_LIB= libQt${_QT_LIBVER}Bluetooth.so qt-core_PORT= devel/${_QT_RELNAME}-core qt-core_LIB= libQt${_QT_LIBVER}Core.so qt-datavis3d_PORT= x11-toolkits/${_QT_RELNAME}-datavis3d qt-datavis3d_LIB= libQt${_QT_LIBVER}DataVisualization.so qt-dbus_PORT= devel/${_QT_RELNAME}-dbus qt-dbus_LIB= libQt${_QT_LIBVER}DBus.so qt-declarative_PORT= x11-toolkits/${_QT_RELNAME}-declarative qt-declarative_LIB= libQt${_QT_LIBVER}Qml.so qt-declarative-test_PORT= x11-toolkits/${_QT_RELNAME}-declarative-test qt-declarative-test_LIB= libQt${_QT_LIBVER}QuickTest.so qt-designer_PORT= devel/${_QT_RELNAME}-designer qt-designer_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/designer qt-diag_PORT= sysutils/${_QT_RELNAME}-qtdiag qt-diag_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qtdiag qt-doc_PORT= misc/${_QT_RELNAME}-doc qt-doc_PATH= ${_QT_RELNAME}-doc>=${_QT_VERSION:R:R} qt-examples_PORT= misc/${_QT_RELNAME}-examples qt-examples_PATH= ${_QT_RELNAME}-examples>=${_QT_VERSION:R:R} qt-gamepad_PORT= x11-toolkits/${_QT_RELNAME}-gamepad qt-gamepad_LIB= libQt${_QT_LIBVER}Gamepad.so qt-graphicaleffects_PORT= graphics/${_QT_RELNAME}-graphicaleffects qt-graphicaleffects_PATH= ${LOCALBASE}/${QT_QMLDIR_REL}/QtGraphicalEffects/qmldir qt-gui_PORT= x11-toolkits/${_QT_RELNAME}-gui qt-gui_LIB= libQt${_QT_LIBVER}Gui.so qt-help_PORT= devel/${_QT_RELNAME}-help qt-help_LIB= libQt${_QT_LIBVER}Help.so qt-imageformats_PORT= graphics/${_QT_RELNAME}-imageformats qt-imageformats_PATH= ${LOCALBASE}/${QT_PLUGINDIR_REL}/imageformats/libqtiff.so qt-languageserver_PORT= devel/${_QT_RELNAME}-languageserver qt-languageserver_LIB= libQt${_QT_LIBVER}LanguageServer.so qt-lottie_PORT= graphics/${_QT_RELNAME}-lottie qt-lottie_LIB= libQt${_QT_LIBVER}Bodymovin.so qt-linguist_PORT= devel/${_QT_RELNAME}-linguist qt-linguist_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/linguist qt-linguisttools_PORT= devel/${_QT_RELNAME}-linguisttools qt-linguisttools_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/lrelease qt-location_PORT= devel/${_QT_RELNAME}-location qt-location_LIB= libQt${_QT_LIBVER}Location.so qt-l10n_PORT= misc/${_QT_RELNAME}-l10n qt-l10n_PATH= ${_QT_RELNAME}-l10n>=${_QT_VERSION:R:R} qt-multimedia_PORT= multimedia/${_QT_RELNAME}-multimedia qt-multimedia_LIB= libQt${_QT_LIBVER}Multimedia.so qt-network_PORT= net/${_QT_RELNAME}-network qt-network_LIB= libQt${_QT_LIBVER}Network.so qt-networkauth_PORT= net/${_QT_RELNAME}-networkauth qt-networkauth_LIB= libQt${_QT_LIBVER}NetworkAuth.so qt-opengl_PORT= graphics/${_QT_RELNAME}-opengl qt-opengl_LIB= libQt${_QT_LIBVER}OpenGL.so qt-paths_PORT= sysutils/${_QT_RELNAME}-qtpaths qt-paths_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qtpaths qt-pixeltool_PORT= graphics/${_QT_RELNAME}-pixeltool qt-pixeltool_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/pixeltool qt-phonon4_PORT= multimedia/phonon qt-phonon4_LIB= libphonon4${_QT_RELNAME}.so qt-positioning_PORT= devel/${_QT_RELNAME}-positioning qt-positioning_LIB= libQt${_QT_LIBVER}Positioning.so qt-plugininfo_PORT= sysutils/${_QT_RELNAME}-qtplugininfo qt-plugininfo_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qtplugininfo qt-printsupport_PORT= print/${_QT_RELNAME}-printsupport qt-printsupport_LIB= libQt${_QT_LIBVER}PrintSupport.so qt-qdbus_PORT= devel/${_QT_RELNAME}-qdbus qt-qdbus_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qdbus qt-qdbusviewer_PORT= devel/${_QT_RELNAME}-qdbusviewer qt-qdbusviewer_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qdbusviewer qt-qdoc_PORT= devel/${_QT_RELNAME}-qdoc qt-qdoc_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qdoc qt-qdoc-data_PORT= devel/${_QT_RELNAME}-qdoc-data qt-qdoc-data_PATH= ${LOCALBASE}/${QT_DOCDIR_REL}/global/config.qdocconf qt-qev_PORT= x11/${_QT_RELNAME}-qev qt-qev_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qev # Always build with *this* version's qmake qt-qmake_PORT= devel/${_QT_RELNAME}-qmake qt-qmake_PATH= ${_QT_RELNAME}-qmake>=${_QT_VERSION:R} qt-quick3d_PORT= x11-toolkits/${_QT_RELNAME}-quick3d qt-quick3d_LIB= libQt${_QT_LIBVER}Quick3D.so qt-quickcontrols_PORT= x11-toolkits/${_QT_RELNAME}-quickcontrols qt-quickcontrols_PATH= ${LOCALBASE}/${QT_QMLDIR_REL}/QtQuick/Controls/qmldir qt-quickcontrols2_PORT= x11-toolkits/${_QT_RELNAME}-quickcontrols2 qt-quickcontrols2_LIB= libQt${_QT_LIBVER}QuickControls2.so qt-quicktimeline_PORT= x11-toolkits/${_QT_RELNAME}-quicktimeline qt-quicktimeline_PATH= ${LOCALBASE}/${QT_QMLDIR_REL}/QtQuick/Timeline/libqtquicktimelineplugin.so qt-remoteobjects_PORT= devel/${_QT_RELNAME}-remoteobjects qt-remoteobjects_LIB= libQt${_QT_LIBVER}RemoteObjects.so qt-sensors_PORT= comms/${_QT_RELNAME}-sensors qt-sensors_LIB= libQt${_QT_LIBVER}Sensors.so qt-script_PORT= devel/${_QT_RELNAME}-script qt-script_LIB= libQt${_QT_LIBVER}Script.so qt-scripttools_PORT= devel/${_QT_RELNAME}-scripttools qt-scripttools_LIB= libQt${_QT_LIBVER}ScriptTools.so qt-scxml_PORT= devel/${_QT_RELNAME}-scxml qt-scxml_LIB= libQt${_QT_LIBVER}Scxml.so qt-serialbus_PORT= comms/${_QT_RELNAME}-serialbus qt-serialbus_LIB= libQt${_QT_LIBVER}SerialBus.so qt-serialport_PORT= comms/${_QT_RELNAME}-serialport qt-serialport_LIB= libQt${_QT_LIBVER}SerialPort.so qt-shadertools_PORT= x11-toolkits/${_QT_RELNAME}-shadertools qt-shadertools_LIB= libQt${_QT_LIBVER}ShaderTools.so qt-speech_PORT= accessibility/${_QT_RELNAME}-speech qt-speech_LIB= libQt${_QT_LIBVER}TextToSpeech.so qt-sql_PORT= databases/${_QT_RELNAME}-sql qt-sql_LIB= libQt${_QT_LIBVER}Sql.so qt-sql-pgsql_PATH= ${LOCALBASE}/${QT_PLUGINDIR_REL}/sqldrivers/libqsqlpsql.so qt-sql-sqlite3_PATH= ${LOCALBASE}/${QT_PLUGINDIR_REL}/sqldrivers/libqsqlite.so . for db in ibase mysql odbc pgsql sqlite2 sqlite3 tds qt-sql-${db}_PORT= databases/${_QT_RELNAME}-sqldrivers-${db} qt-sql-${db}_PATH?= ${LOCALBASE}/${QT_PLUGINDIR_REL}/sqldrivers/libqsql${db:C/^sql//}.so . endfor qt-svg_PORT= graphics/${_QT_RELNAME}-svg qt-svg_LIB= libQt${_QT_LIBVER}Svg.so qt-testlib_PORT= devel/${_QT_RELNAME}-testlib qt-testlib_LIB= libQt${_QT_LIBVER}Test.so qt-tools_PORT= devel/${_QT_RELNAME}-tools qt-tools_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/lupdate qt-translations_PORT= devel/${_QT_RELNAME}-translations qt-translations_PATH= ${LOCALBASE}/${QT_DATADIR_REL}/translations/qt_en.qm qt-uiplugin_PORT= x11-toolkits/${_QT_RELNAME}-uiplugin qt-uiplugin_PATH= ${LOCALBASE}/${QT_INCDIR_REL}/QtUiPlugin/QtUiPlugin qt-uitools_PORT= devel/${_QT_RELNAME}-uitools qt-uitools_PATH= ${LOCALBASE}/${QT_LIBDIR_REL}/libQt${_QT_LIBVER}UiTools.a qt-virtualkeyboard_PORT= x11-toolkits/${_QT_RELNAME}-virtualkeyboard qt-virtualkeyboard_PATH= ${LOCALBASE}/${QT_PLUGINDIR_REL}/platforminputcontexts/libqtvirtualkeyboardplugin.so qt-wayland_PORT= graphics/${_QT_RELNAME}-wayland qt-wayland_LIB= libQt${_QT_LIBVER}WaylandClient.so qt-webchannel_PORT= www/${_QT_RELNAME}-webchannel qt-webchannel_LIB= libQt${_QT_LIBVER}WebChannel.so qt-webengine_PORT= www/${_QT_RELNAME}-webengine -qt-webengine_LIB= libQt${_QT_LIBVER}WebEngine.so +qt-webengine_LIB= libQt${_QT_LIBVER}WebEngineCore.so qt-webglplugin_PORT= www/${_QT_RELNAME}-webglplugin qt-webglplugin_PATH= ${LOCALBASE}/${QT_PLUGINDIR_REL}/platforms/libqwebgl.so qt-websockets_PORT= www/${_QT_RELNAME}-websockets qt-websockets_LIB= libQt${_QT_LIBVER}WebSockets.so qt-websockets-qml_PORT= www/${_QT_RELNAME}-websockets-qml qt-websockets-qml_PATH= ${LOCALBASE}/${QT_QMLDIR_REL}/QtWebSockets/qmldir qt-webkit_PORT= www/${_QT_RELNAME}-webkit qt-webkit_LIB= libQt${_QT_LIBVER}WebKit.so qt-webview_PORT= www/${_QT_RELNAME}-webview qt-webview_LIB= libQt${_QT_LIBVER}WebView.so qt-widgets_PORT= x11-toolkits/${_QT_RELNAME}-widgets qt-widgets_LIB= libQt${_QT_LIBVER}Widgets.so qt-x11extras_PORT= x11/${_QT_RELNAME}-x11extras qt-x11extras_LIB= libQt${_QT_LIBVER}X11Extras.so qt-xml_PORT= textproc/${_QT_RELNAME}-xml qt-xml_LIB= libQt${_QT_LIBVER}Xml.so qt-xmlpatterns_PORT= textproc/${_QT_RELNAME}-xmlpatterns qt-xmlpatterns_LIB= libQt${_QT_LIBVER}XmlPatterns.so # Actually add the dependencies to the proper lists. _USE_QT_ALL= ${_USE_QT_COMMON} \ ${_USE_QT${_QT_VER}_ONLY} _USE_QT= ${USE_QT} # Iterate through components deprived of suffix. . for component in ${_USE_QT:O:u:C/:(build|run)$//} # Check that the component is valid. . if ${_USE_QT_ALL:M${component}} != "" # Skip meta-components (currently none). . if defined(qt-${component}_PORT) && (defined(qt-${component}_PATH) || defined(qt-${component}_LIB)) # Check if a dependency type is explicitly requested. . if ${_USE_QT:M${component}\:*} != "" && ${_USE_QT:M${component}} == "" qt-${component}_TYPE= # empty . if ${_USE_QT:M${component}\:build} != "" qt-${component}_TYPE+= build . endif . if ${_USE_QT:M${component}\:run} != "" qt-${component}_TYPE+= run . endif . endif # ${_USE_QT:M${component}_*} != "" && ${_USE_QT:M${component}} == "" # If no dependency type is set, default to full dependency. . if !defined(qt-${component}_TYPE) qt-${component}_TYPE= build run . endif # Set real dependencies. . if defined(qt-${component}_LIB) && ${qt-${component}_TYPE:Mbuild} && ${qt-${component}_TYPE:Mrun} LIB_DEPENDS+= ${qt-${component}_LIB}:${qt-${component}_PORT} . else qt-${component}_PATH?= ${QT_LIBDIR}/${qt-${component}_LIB} qt-${component}_DEPENDS= ${qt-${component}_PATH}:${qt-${component}_PORT} . if ${qt-${component}_TYPE:Mbuild} != "" BUILD_DEPENDS+= ${qt-${component}_DEPENDS} . endif . if ${qt-${component}_TYPE:Mrun} != "" RUN_DEPENDS+= ${qt-${component}_DEPENDS} . endif . endif # ${qt-${component}_LIB} && ${qt-${component}_TYPE:Mbuild} && ${qt-${component}_TYPE:Mrun} . endif # defined(qt-${component}_PORT) && defined(qt-${component}_PATH) . else # ! ${_USE_QT_ALL:M${component}} != "" IGNORE= cannot be installed: unknown USE_QT component '${component}' . endif # ${_USE_QT_ALL:M${component}} != "" . endfor .endif # defined(_QT_MK_POST_INCLUDED) diff --git a/www/Makefile b/www/Makefile index fe7e8b59e24e..53d93bb8d57d 100644 --- a/www/Makefile +++ b/www/Makefile @@ -1,2428 +1,2429 @@ COMMENT = Ports related to the World Wide Web SUBDIR += R-cran-RgoogleMaps SUBDIR += R-cran-Rook SUBDIR += R-cran-bslib SUBDIR += R-cran-crosstalk SUBDIR += R-cran-downloader SUBDIR += R-cran-gh SUBDIR += R-cran-htmlwidgets SUBDIR += R-cran-httpuv SUBDIR += R-cran-httr SUBDIR += R-cran-jquerylib SUBDIR += R-cran-rvest SUBDIR += R-cran-scrapeR SUBDIR += R-cran-selectr SUBDIR += R-cran-servr SUBDIR += R-cran-shiny SUBDIR += R-cran-webshot SUBDIR += Stikked SUBDIR += UniversalFeedCreator SUBDIR += adguardhome SUBDIR += adzap SUBDIR += alef-webfont SUBDIR += amfora SUBDIR += amphetadesk SUBDIR += analog SUBDIR += anyremote2html SUBDIR += anyterm SUBDIR += apache-mode.el SUBDIR += apache24 SUBDIR += apt-cacher-ng SUBDIR += aquatone SUBDIR += archiva SUBDIR += aria2 SUBDIR += asql SUBDIR += authelia SUBDIR += awffull SUBDIR += awstats SUBDIR += axis2 SUBDIR += bacula-web SUBDIR += baculum-api SUBDIR += baculum-common SUBDIR += baculum-web SUBDIR += badwolf SUBDIR += baikal SUBDIR += bareos-webui SUBDIR += bareos18-webui SUBDIR += bareos19-webui SUBDIR += bareos20-webui SUBDIR += beehive SUBDIR += bkmrkconv SUBDIR += bluefish SUBDIR += bolt SUBDIR += bozohttpd SUBDIR += browsh SUBDIR += bugzilla2atom SUBDIR += buku SUBDIR += butterfly SUBDIR += c-icap SUBDIR += c-icap-modules SUBDIR += cadaver SUBDIR += caddy SUBDIR += caddy-custom SUBDIR += calamaris SUBDIR += calamaris-devel SUBDIR += caldavzap SUBDIR += carbonapi SUBDIR += castget SUBDIR += castor SUBDIR += cgi-lib SUBDIR += cgi-lib.pl SUBDIR += cgicc SUBDIR += cgichk SUBDIR += cgiwrap SUBDIR += checkbot SUBDIR += chems SUBDIR += chisel SUBDIR += choqok SUBDIR += chpasswd SUBDIR += chrome-gnome-shell SUBDIR += chromium SUBDIR += cinny SUBDIR += civetweb SUBDIR += ckeditor SUBDIR += cl-lml SUBDIR += cl-lml-sbcl SUBDIR += clearsilver SUBDIR += closure-compiler SUBDIR += cntlm SUBDIR += cobalt SUBDIR += codeigniter SUBDIR += colly SUBDIR += coppermine SUBDIR += cplanet SUBDIR += cpp-httplib SUBDIR += cpr SUBDIR += crawl SUBDIR += css-mode.el SUBDIR += cssed SUBDIR += csso SUBDIR += csstidy SUBDIR += ctemplate SUBDIR += cutelyst SUBDIR += darkhttpd SUBDIR += davical SUBDIR += davix SUBDIR += dddbl SUBDIR += ddgr SUBDIR += deno SUBDIR += devd SUBDIR += dfileserver SUBDIR += dhttpd SUBDIR += dillo2 SUBDIR += dojo SUBDIR += dokuwiki SUBDIR += dolibarr SUBDIR += dolibarr13 SUBDIR += dolibarr14 SUBDIR += dolibarr15 SUBDIR += domoticz SUBDIR += dooble SUBDIR += dot-http SUBDIR += drill SUBDIR += drupal10 SUBDIR += drupal7 SUBDIR += drupal7-wysiwyg SUBDIR += drupal8 SUBDIR += drupal9 SUBDIR += drush SUBDIR += dtse SUBDIR += dufs SUBDIR += e107 SUBDIR += e2guardian SUBDIR += edbrowse SUBDIR += eden SUBDIR += element-web SUBDIR += elgg SUBDIR += elinks SUBDIR += emacs-w3m SUBDIR += encode-explorer SUBDIR += envoy SUBDIR += eolie SUBDIR += ephemera SUBDIR += epiphany SUBDIR += fabio SUBDIR += falkon SUBDIR += fancybox SUBDIR += faup SUBDIR += fcgi SUBDIR += fcgiwrap SUBDIR += ffproxy SUBDIR += ffsend SUBDIR += fgallery SUBDIR += filtron SUBDIR += firedm SUBDIR += firefox SUBDIR += firefox-esr SUBDIR += flat-frog SUBDIR += flexget SUBDIR += flickcurl SUBDIR += fnord SUBDIR += formication SUBDIR += foswiki SUBDIR += fpc-fastcgi SUBDIR += fpc-googleapi SUBDIR += fpc-httpd22 SUBDIR += fpc-httpd24 SUBDIR += fpc-libmicrohttpd SUBDIR += fpc-webidl SUBDIR += free-sa-devel SUBDIR += fswiki SUBDIR += fusionpbx SUBDIR += g-cows SUBDIR += g-gcl SUBDIR += gallery-dl SUBDIR += gallery2 SUBDIR += garage SUBDIR += gatling SUBDIR += gauche-makiki SUBDIR += geckodriver SUBDIR += geneweb SUBDIR += geolizer SUBDIR += get_flash_videos SUBDIR += gist SUBDIR += gitea SUBDIR += gitlab-ce SUBDIR += gitlab-pages SUBDIR += gitlab-workhorse SUBDIR += glassfish SUBDIR += glassfish4 SUBDIR += glewlwyd SUBDIR += glpi SUBDIR += gnome-user-share SUBDIR += go-www SUBDIR += gobuffalo SUBDIR += gohugo SUBDIR += googlebook_dl SUBDIR += googler SUBDIR += goose SUBDIR += gophernicus SUBDIR += gopherus SUBDIR += gotty SUBDIR += gpx2map SUBDIR += grafana8 SUBDIR += grafana9 SUBDIR += grails SUBDIR += gregarius SUBDIR += groupoffice SUBDIR += grr SUBDIR += gstreamer1-plugins-neon SUBDIR += gstreamer1-plugins-srt SUBDIR += gtkhtml4 SUBDIR += guacamole-client SUBDIR += guile-www SUBDIR += gurl SUBDIR += gwsocket SUBDIR += h2c SUBDIR += h2o SUBDIR += h2o-devel SUBDIR += habari SUBDIR += hiawatha SUBDIR += hiawatha-monitor SUBDIR += horde-ansel SUBDIR += horde-base SUBDIR += horde-passwd SUBDIR += horde-trean SUBDIR += horde-wicked SUBDIR += hotcrp SUBDIR += hs-DAV SUBDIR += hs-hjsmin SUBDIR += hs-postgrest SUBDIR += hs-wai-app-static SUBDIR += hs-yesod-bin SUBDIR += htdigest SUBDIR += htdump SUBDIR += html2hdml SUBDIR += html2wml SUBDIR += htmlcompressor SUBDIR += htmlcxx SUBDIR += httest SUBDIR += http-parser SUBDIR += http_get SUBDIR += http_load SUBDIR += http_post SUBDIR += httpasyncclient SUBDIR += httpclient SUBDIR += httpcore SUBDIR += httptunnel SUBDIR += httrack SUBDIR += hurl SUBDIR += hypermail SUBDIR += igal2 SUBDIR += ikiwiki SUBDIR += ilias SUBDIR += interchange SUBDIR += iridium SUBDIR += itop SUBDIR += janus SUBDIR += jericho-html SUBDIR += jesred SUBDIR += jetty10 SUBDIR += jetty8 SUBDIR += jetty9 SUBDIR += jira-cli SUBDIR += jitsi-meet SUBDIR += jmeter SUBDIR += joomla3 SUBDIR += joomla4 SUBDIR += jwt-cli SUBDIR += kanboard SUBDIR += kannel SUBDIR += kannel-sqlbox SUBDIR += kcgi SUBDIR += kdsoap SUBDIR += kf5-kdewebkit SUBDIR += kf5-khtml SUBDIR += kf5-kjs SUBDIR += kf5-kjsembed SUBDIR += kineto SUBDIR += kiwix-tools SUBDIR += kohana SUBDIR += kristall SUBDIR += lagrange SUBDIR += larbin SUBDIR += libapreq2 SUBDIR += libdatachannel SUBDIR += libdom SUBDIR += libecap SUBDIR += libepc SUBDIR += libevhtp SUBDIR += libhsts SUBDIR += libhubbub SUBDIR += libjwt SUBDIR += libmicrohttpd SUBDIR += libnghttp2 SUBDIR += libnghttp3 SUBDIR += libresonic-standalone SUBDIR += librespeed SUBDIR += librtcdcpp SUBDIR += libwpe SUBDIR += libwww SUBDIR += lightsquid SUBDIR += lighttpd SUBDIR += lighttpd-mod_h264_streaming SUBDIR += limesurvey SUBDIR += linklint SUBDIR += links SUBDIR += links1 SUBDIR += linux-c7-qtwebkit SUBDIR += linux-opera SUBDIR += litmus SUBDIR += ljdeps SUBDIR += llhttp SUBDIR += logswan SUBDIR += logtools SUBDIR += ls-qpack SUBDIR += lua-resty-core SUBDIR += lua-resty-http SUBDIR += lua-resty-lrucache SUBDIR += luakit SUBDIR += luakit-devel SUBDIR += lux SUBDIR += lychee SUBDIR += lynx SUBDIR += lynx-current SUBDIR += madsonic SUBDIR += man2web SUBDIR += mathjax SUBDIR += mathjax3 SUBDIR += mathopd SUBDIR += matomo SUBDIR += mattermost-server SUBDIR += mattermost-webapp SUBDIR += mediawiki135 SUBDIR += mediawiki137 SUBDIR += mediawiki138 SUBDIR += mediawiki139 SUBDIR += mergelog SUBDIR += mhonarc SUBDIR += micro_httpd SUBDIR += microbin SUBDIR += middleman SUBDIR += midori SUBDIR += mimetex SUBDIR += mini_httpd SUBDIR += miniflux SUBDIR += minio SUBDIR += minio-client SUBDIR += miniserve SUBDIR += mirrorselect SUBDIR += mitmproxy SUBDIR += mknmz-wwwoffle SUBDIR += mnogosearch SUBDIR += mod_amazon_proxy SUBDIR += mod_asn SUBDIR += mod_auth_cas SUBDIR += mod_auth_cookie_mysql2 SUBDIR += mod_auth_gssapi SUBDIR += mod_auth_kerb2 SUBDIR += mod_auth_mellon SUBDIR += mod_auth_mysql2 SUBDIR += mod_auth_mysql_another SUBDIR += mod_auth_openid SUBDIR += mod_auth_openidc SUBDIR += mod_auth_pam2 SUBDIR += mod_auth_pgsql2 SUBDIR += mod_auth_pubtkt SUBDIR += mod_auth_tkt SUBDIR += mod_auth_xradius SUBDIR += mod_authn_dovecot SUBDIR += mod_authnz_external24 SUBDIR += mod_cfg_ldap SUBDIR += mod_cloudflare SUBDIR += mod_dav_svn SUBDIR += mod_defensible SUBDIR += mod_dnssd SUBDIR += mod_evasive SUBDIR += mod_fastcgi SUBDIR += mod_fcgid SUBDIR += mod_fileiri SUBDIR += mod_gnutls SUBDIR += mod_h264_streaming SUBDIR += mod_http2 SUBDIR += mod_jk SUBDIR += mod_limitipconn2 SUBDIR += mod_log_sql SUBDIR += mod_maxminddb SUBDIR += mod_memcache SUBDIR += mod_memcache_block SUBDIR += mod_mono SUBDIR += mod_mpm_itk SUBDIR += mod_perl2 SUBDIR += mod_php80 SUBDIR += mod_php81 SUBDIR += mod_php82 SUBDIR += mod_proctitle SUBDIR += mod_qos SUBDIR += mod_realdoc SUBDIR += mod_reproxy SUBDIR += mod_rivet SUBDIR += mod_rpaf2 SUBDIR += mod_scgi SUBDIR += mod_security SUBDIR += mod_setenvifplus SUBDIR += mod_tidy SUBDIR += mod_umask SUBDIR += mod_webauth SUBDIR += mod_webkit SUBDIR += mod_wsgi4 SUBDIR += mod_xsendfile SUBDIR += mohawk SUBDIR += moinmoin SUBDIR += moinmoincli SUBDIR += mongoose SUBDIR += mongrel2 SUBDIR += monolith SUBDIR += moodle311 SUBDIR += moodle39 SUBDIR += moodle40 SUBDIR += moodle41 SUBDIR += morty SUBDIR += mozplugger SUBDIR += multisort SUBDIR += multiwatch SUBDIR += mybb SUBDIR += mysqlphp2postgres SUBDIR += mythplugin-mythweb SUBDIR += nanoblogger SUBDIR += nanoblogger-extra SUBDIR += neon SUBDIR += netrik SUBDIR += netstiff SUBDIR += netsurf SUBDIR += newsboat SUBDIR += nextcloud SUBDIR += nextcloud-appointments SUBDIR += nextcloud-calendar SUBDIR += nextcloud-contacts SUBDIR += nextcloud-deck SUBDIR += nextcloud-forms SUBDIR += nextcloud-groupfolders SUBDIR += nextcloud-notes SUBDIR += nextcloud-tasks SUBDIR += nghttp2 SUBDIR += nginx SUBDIR += nginx-devel SUBDIR += nginx-full SUBDIR += nginx-lite SUBDIR += nginx-naxsi SUBDIR += nginx-prometheus-exporter SUBDIR += nginx-ultimate-bad-bot-blocker SUBDIR += nginx-vts-exporter SUBDIR += nibbleblog SUBDIR += nift SUBDIR += node SUBDIR += node14 SUBDIR += node16 SUBDIR += nostromo SUBDIR += novnc SUBDIR += novnc-websockify SUBDIR += npapi-xine SUBDIR += npc SUBDIR += npm SUBDIR += npm-node14 SUBDIR += npm-node16 SUBDIR += npm-node18 SUBDIR += oauth2-proxy SUBDIR += obhttpd SUBDIR += oneshot SUBDIR += onionbalance SUBDIR += onionshare SUBDIR += onionshare-cli SUBDIR += onlyoffice-documentserver SUBDIR += opencart SUBDIR += openresty SUBDIR += orangehrm SUBDIR += osrm-backend SUBDIR += osticket SUBDIR += ot-recorder SUBDIR += otrs SUBDIR += otter-browser SUBDIR += owncast SUBDIR += owncloud SUBDIR += p5-AMF-Perl SUBDIR += p5-Acme-Monta SUBDIR += p5-Amon2 SUBDIR += p5-Amon2-Lite SUBDIR += p5-Amon2-Plugin-LogDispatch SUBDIR += p5-Amon2-Plugin-Web-CSRFDefender SUBDIR += p5-Amon2-Plugin-Web-MobileAgent SUBDIR += p5-Any-Template SUBDIR += p5-Any-URI-Escape SUBDIR += p5-AnyEvent-HTTP SUBDIR += p5-AnyEvent-HTTP-LWP-UserAgent SUBDIR += p5-AnyEvent-HTTPD SUBDIR += p5-AnyEvent-ReverseHTTP SUBDIR += p5-AnyEvent-SCGI SUBDIR += p5-AnyEvent-WebSocket-Client SUBDIR += p5-Apache-ASP SUBDIR += p5-Apache-Admin-Config SUBDIR += p5-Apache-AuthCookie SUBDIR += p5-Apache-AuthTicket SUBDIR += p5-Apache-Clean2 SUBDIR += p5-Apache-Config-Preproc SUBDIR += p5-Apache-ConfigFile SUBDIR += p5-Apache-ConfigParser SUBDIR += p5-Apache-DB SUBDIR += p5-Apache-DBI SUBDIR += p5-Apache-Defaults SUBDIR += p5-Apache-Htgroup SUBDIR += p5-Apache-LogFormat-Compiler SUBDIR += p5-Apache-MP3 SUBDIR += p5-Apache-ParseFormData SUBDIR += p5-Apache-Profiler SUBDIR += p5-Apache-Session SUBDIR += p5-Apache-Session-PHP SUBDIR += p5-Apache-Session-SQLite3 SUBDIR += p5-Apache-Session-SharedMem SUBDIR += p5-Apache-Session-Wrapper SUBDIR += p5-Apache-SessionX SUBDIR += p5-Apache-Singleton SUBDIR += p5-Apache2-SiteControl SUBDIR += p5-ApacheBench SUBDIR += p5-App-Nopaste SUBDIR += p5-App-gist SUBDIR += p5-Ark SUBDIR += p5-Bigtop SUBDIR += p5-Blog-Spam SUBDIR += p5-Browser-Open SUBDIR += p5-Business-PayPal SUBDIR += p5-CGI SUBDIR += p5-CGI-Ajax SUBDIR += p5-CGI-Application SUBDIR += p5-CGI-Application-Dispatch SUBDIR += p5-CGI-Application-Dispatch-Server SUBDIR += p5-CGI-Application-PSGI SUBDIR += p5-CGI-Application-Plugin-AnyTemplate SUBDIR += p5-CGI-Application-Plugin-Apache SUBDIR += p5-CGI-Application-Plugin-Authentication SUBDIR += p5-CGI-Application-Plugin-Authorization SUBDIR += p5-CGI-Application-Plugin-AutoRunmode SUBDIR += p5-CGI-Application-Plugin-Config-YAML SUBDIR += p5-CGI-Application-Plugin-ConfigAuto SUBDIR += p5-CGI-Application-Plugin-DBH SUBDIR += p5-CGI-Application-Plugin-DebugScreen SUBDIR += p5-CGI-Application-Plugin-DevPopup SUBDIR += p5-CGI-Application-Plugin-Forward SUBDIR += p5-CGI-Application-Plugin-HTDot SUBDIR += p5-CGI-Application-Plugin-HTMLPrototype SUBDIR += p5-CGI-Application-Plugin-HtmlTidy SUBDIR += p5-CGI-Application-Plugin-JSON SUBDIR += p5-CGI-Application-Plugin-LinkIntegrity SUBDIR += p5-CGI-Application-Plugin-LogDispatch SUBDIR += p5-CGI-Application-Plugin-MessageStack SUBDIR += p5-CGI-Application-Plugin-Redirect SUBDIR += p5-CGI-Application-Plugin-Session SUBDIR += p5-CGI-Application-Plugin-Stream SUBDIR += p5-CGI-Application-Plugin-TT SUBDIR += p5-CGI-Application-Plugin-ValidateRM SUBDIR += p5-CGI-Application-Plugin-ViewCode SUBDIR += p5-CGI-Application-Server SUBDIR += p5-CGI-ArgChecker SUBDIR += p5-CGI-Builder SUBDIR += p5-CGI-Builder-TT2 SUBDIR += p5-CGI-Cache SUBDIR += p5-CGI-Compile SUBDIR += p5-CGI-Compress-Gzip SUBDIR += p5-CGI-Cookie-Splitter SUBDIR += p5-CGI-Cookie-XS SUBDIR += p5-CGI-Deurl-XS SUBDIR += p5-CGI-Emulate-PSGI SUBDIR += p5-CGI-EncryptForm SUBDIR += p5-CGI-Enurl SUBDIR += p5-CGI-Ex SUBDIR += p5-CGI-Expand SUBDIR += p5-CGI-ExtDirect SUBDIR += p5-CGI-FCKeditor SUBDIR += p5-CGI-Fast SUBDIR += p5-CGI-FastTemplate SUBDIR += p5-CGI-FormBuilder SUBDIR += p5-CGI-Framework SUBDIR += p5-CGI-Kwiki SUBDIR += p5-CGI-Lite SUBDIR += p5-CGI-Minimal SUBDIR += p5-CGI-PSGI SUBDIR += p5-CGI-Pager SUBDIR += p5-CGI-Prototype SUBDIR += p5-CGI-Response SUBDIR += p5-CGI-SSI SUBDIR += p5-CGI-Session SUBDIR += p5-CGI-Session-ExpireSessions SUBDIR += p5-CGI-Simple SUBDIR += p5-CGI-SpeedyCGI SUBDIR += p5-CGI-Struct SUBDIR += p5-CGI-Thin SUBDIR += p5-CGI-Tiny SUBDIR += p5-CGI-Untaint SUBDIR += p5-CGI-Untaint-date SUBDIR += p5-CGI-Untaint-email SUBDIR += p5-CGI-Upload SUBDIR += p5-CGI-Utils SUBDIR += p5-CGI-XMLApplication SUBDIR += p5-CIF-Client SUBDIR += p5-CSS-DOM SUBDIR += p5-CSS-Inliner SUBDIR += p5-Catalyst-Action-REST SUBDIR += p5-Catalyst-Action-RenderView SUBDIR += p5-Catalyst-Action-Serialize-XML-Hash-LX SUBDIR += p5-Catalyst-ActionRole-ACL SUBDIR += p5-Catalyst-Authentication-Credential-HTTP SUBDIR += p5-Catalyst-Authentication-Credential-OpenID SUBDIR += p5-Catalyst-Authentication-Store-DBIx-Class SUBDIR += p5-Catalyst-Authentication-Store-LDAP SUBDIR += p5-Catalyst-Component-ACCEPT_CONTEXT SUBDIR += p5-Catalyst-Component-InstancePerContext SUBDIR += p5-Catalyst-Controller-ActionRole SUBDIR += p5-Catalyst-Controller-BindLex SUBDIR += p5-Catalyst-Controller-FormBuilder SUBDIR += p5-Catalyst-Controller-HTML-FormFu SUBDIR += p5-Catalyst-Controller-RateLimit SUBDIR += p5-Catalyst-Controller-RequestToken SUBDIR += p5-Catalyst-Controller-SOAP SUBDIR += p5-Catalyst-Devel SUBDIR += p5-Catalyst-DispatchType-Regex SUBDIR += p5-Catalyst-Engine-Apache SUBDIR += p5-Catalyst-Engine-HTTP-Prefork SUBDIR += p5-Catalyst-Engine-PSGI SUBDIR += p5-Catalyst-Enzyme SUBDIR += p5-Catalyst-Helper-Controller-Scaffold SUBDIR += p5-Catalyst-Manual SUBDIR += p5-Catalyst-Model-Adaptor SUBDIR += p5-Catalyst-Model-CDBI SUBDIR += p5-Catalyst-Model-CDBI-Plain SUBDIR += p5-Catalyst-Model-CDBI-Sweet SUBDIR += p5-Catalyst-Model-DBIC-Plain SUBDIR += p5-Catalyst-Model-DBIC-Schema SUBDIR += p5-Catalyst-Model-DynamicAdaptor SUBDIR += p5-Catalyst-Model-LDAP SUBDIR += p5-Catalyst-Model-Memcached SUBDIR += p5-Catalyst-Model-Oryx SUBDIR += p5-Catalyst-Model-Tarantool SUBDIR += p5-Catalyst-Model-XML-Feed SUBDIR += p5-Catalyst-Model-Xapian SUBDIR += p5-Catalyst-Plugin-AtomServer SUBDIR += p5-Catalyst-Plugin-Authentication SUBDIR += p5-Catalyst-Plugin-Authentication-CDBI SUBDIR += p5-Catalyst-Plugin-Authentication-OpenID SUBDIR += p5-Catalyst-Plugin-Authentication-Store-Htpasswd SUBDIR += p5-Catalyst-Plugin-Authorization-ACL SUBDIR += p5-Catalyst-Plugin-Authorization-Roles SUBDIR += p5-Catalyst-Plugin-AutoCRUD SUBDIR += p5-Catalyst-Plugin-Browser SUBDIR += p5-Catalyst-Plugin-C3 SUBDIR += p5-Catalyst-Plugin-Cache SUBDIR += p5-Catalyst-Plugin-Cache-FastMmap SUBDIR += p5-Catalyst-Plugin-Cache-Memcached SUBDIR += p5-Catalyst-Plugin-Cache-Memcached-Fast SUBDIR += p5-Catalyst-Plugin-Captcha SUBDIR += p5-Catalyst-Plugin-ConfigLoader SUBDIR += p5-Catalyst-Plugin-ConfigLoader-Environment SUBDIR += p5-Catalyst-Plugin-CookiedSession SUBDIR += p5-Catalyst-Plugin-DateTime SUBDIR += p5-Catalyst-Plugin-DefaultEnd SUBDIR += p5-Catalyst-Plugin-Email SUBDIR += p5-Catalyst-Plugin-ErrorCatcher SUBDIR += p5-Catalyst-Plugin-FillInForm SUBDIR += p5-Catalyst-Plugin-FormBuilder SUBDIR += p5-Catalyst-Plugin-FormValidator SUBDIR += p5-Catalyst-Plugin-I18N SUBDIR += p5-Catalyst-Plugin-Log-Dispatch SUBDIR += p5-Catalyst-Plugin-Log-Handler SUBDIR += p5-Catalyst-Plugin-LogWarnings SUBDIR += p5-Catalyst-Plugin-PageCache SUBDIR += p5-Catalyst-Plugin-Params-Nested SUBDIR += p5-Catalyst-Plugin-Pluggable SUBDIR += p5-Catalyst-Plugin-Prototype SUBDIR += p5-Catalyst-Plugin-RunAfterRequest SUBDIR += p5-Catalyst-Plugin-Scheduler SUBDIR += p5-Catalyst-Plugin-Server SUBDIR += p5-Catalyst-Plugin-Session SUBDIR += p5-Catalyst-Plugin-Session-FastMmap SUBDIR += p5-Catalyst-Plugin-Session-PerUser SUBDIR += p5-Catalyst-Plugin-Session-State-Cookie SUBDIR += p5-Catalyst-Plugin-Session-State-URI SUBDIR += p5-Catalyst-Plugin-Session-Store-Cache SUBDIR += p5-Catalyst-Plugin-Session-Store-DBI SUBDIR += p5-Catalyst-Plugin-Session-Store-DBIC SUBDIR += p5-Catalyst-Plugin-Session-Store-Delegate SUBDIR += p5-Catalyst-Plugin-Session-Store-FastMmap SUBDIR += p5-Catalyst-Plugin-Session-Store-File SUBDIR += p5-Catalyst-Plugin-Session-Store-Memcached SUBDIR += p5-Catalyst-Plugin-Session-Store-Memcached-Fast SUBDIR += p5-Catalyst-Plugin-Setenv SUBDIR += p5-Catalyst-Plugin-SmartURI SUBDIR += p5-Catalyst-Plugin-StackTrace SUBDIR += p5-Catalyst-Plugin-Static SUBDIR += p5-Catalyst-Plugin-Static-Simple SUBDIR += p5-Catalyst-Plugin-StatusMessage SUBDIR += p5-Catalyst-Plugin-SubRequest SUBDIR += p5-Catalyst-Plugin-Textile SUBDIR += p5-Catalyst-Plugin-Unicode SUBDIR += p5-Catalyst-Plugin-XMLRPC SUBDIR += p5-Catalyst-Runtime SUBDIR += p5-Catalyst-TraitFor-Controller-DBIC-DoesPaging SUBDIR += p5-Catalyst-TraitFor-Request-BrowserDetect SUBDIR += p5-Catalyst-View-ClearSilver SUBDIR += p5-Catalyst-View-Email SUBDIR += p5-Catalyst-View-GraphViz SUBDIR += p5-Catalyst-View-HTML-Template SUBDIR += p5-Catalyst-View-HTML-Template-Compiled SUBDIR += p5-Catalyst-View-JSON SUBDIR += p5-Catalyst-View-Jemplate SUBDIR += p5-Catalyst-View-Mason SUBDIR += p5-Catalyst-View-REST-XML SUBDIR += p5-Catalyst-View-RRDGraph SUBDIR += p5-Catalyst-View-TT SUBDIR += p5-Catalyst-View-TT-Alloy SUBDIR += p5-Catalyst-View-TT-ControllerLocal SUBDIR += p5-Catalyst-View-Template-Declare SUBDIR += p5-Catalyst-View-Templated SUBDIR += p5-Catalyst-View-XML-Feed SUBDIR += p5-Catalyst-View-XML-Simple SUBDIR += p5-Catalyst-View-XSLT SUBDIR += p5-Catalyst-View-vCard SUBDIR += p5-CatalystX-AppBuilder SUBDIR += p5-CatalystX-Component-Traits SUBDIR += p5-CatalystX-InjectComponent SUBDIR += p5-CatalystX-LeakChecker SUBDIR += p5-CatalystX-Profile SUBDIR += p5-CatalystX-REPL SUBDIR += p5-CatalystX-RoleApplicator SUBDIR += p5-CatalystX-SimpleLogin SUBDIR += p5-CatalystX-VirtualComponents SUBDIR += p5-Class-DBI-FromForm SUBDIR += p5-ClearSilver SUBDIR += p5-Compress-LeadingBlankSpaces SUBDIR += p5-Continuity SUBDIR += p5-Cookie-Baker SUBDIR += p5-Corona SUBDIR += p5-Dancer SUBDIR += p5-Dancer-Logger-Log4perl SUBDIR += p5-Dancer-Plugin-CORS SUBDIR += p5-Dancer-Plugin-ExtDirect SUBDIR += p5-Dancer-Plugin-Feed SUBDIR += p5-Dancer-Plugin-FlashMessage SUBDIR += p5-Dancer-Plugin-Lexicon SUBDIR += p5-Dancer-Plugin-Memcached SUBDIR += p5-Dancer-Plugin-REST SUBDIR += p5-Dancer-Plugin-RPC SUBDIR += p5-Dancer-Plugin-SiteMap SUBDIR += p5-Dancer-Plugin-Swagger SUBDIR += p5-Dancer-Plugin-ValidationClass SUBDIR += p5-Dancer-Session-Cookie SUBDIR += p5-Dancer-Template-Xslate SUBDIR += p5-Dancer2 SUBDIR += p5-Dancer2-Plugin-Ajax SUBDIR += p5-Dancer2-Plugin-Deferred SUBDIR += p5-Dancer2-Plugin-FormValidator SUBDIR += p5-Dancer2-Plugin-Interchange6 SUBDIR += p5-Dancer2-Plugin-Path-Class SUBDIR += p5-Data-TreeDumper-Renderer-DHTML SUBDIR += p5-Data-Validate-URI SUBDIR += p5-Emplacken SUBDIR += p5-FAQ-OMatic SUBDIR += p5-FCGI SUBDIR += p5-FCGI-Async SUBDIR += p5-FCGI-Client SUBDIR += p5-FCGI-Engine SUBDIR += p5-FCGI-ProcManager SUBDIR += p5-FCGI-Spawn SUBDIR += p5-FEAR-API SUBDIR += p5-Facebook-Graph SUBDIR += p5-Feed-Find SUBDIR += p5-Feersum SUBDIR += p5-File-Mork SUBDIR += p5-Firefox-Marionette SUBDIR += p5-Flea SUBDIR += p5-Flickr-API SUBDIR += p5-Flickr-Upload SUBDIR += p5-Fliggy SUBDIR += p5-Furl SUBDIR += p5-FurlX-Coro SUBDIR += p5-Gantry SUBDIR += p5-Gazelle SUBDIR += p5-Geo-Caching SUBDIR += p5-Google-Search SUBDIR += p5-Gungho SUBDIR += p5-GunghoX-FollowLinks SUBDIR += p5-HTML-Adsense SUBDIR += p5-HTML-Breadcrumbs SUBDIR += p5-HTML-CalendarMonthSimple SUBDIR += p5-HTML-Chunks SUBDIR += p5-HTML-Clean SUBDIR += p5-HTML-ContentExtractor SUBDIR += p5-HTML-DOM SUBDIR += p5-HTML-Declare SUBDIR += p5-HTML-Defang SUBDIR += p5-HTML-Defaultify SUBDIR += p5-HTML-Diff SUBDIR += p5-HTML-Display SUBDIR += p5-HTML-Element-Extended SUBDIR += p5-HTML-Element-Library SUBDIR += p5-HTML-Element-Replacer SUBDIR += p5-HTML-Encoding SUBDIR += p5-HTML-Escape SUBDIR += p5-HTML-ExtractContent SUBDIR += p5-HTML-ExtractMain SUBDIR += p5-HTML-Field SUBDIR += p5-HTML-FillInForm SUBDIR += p5-HTML-FillInForm-ForceUTF8 SUBDIR += p5-HTML-FillInForm-Lite SUBDIR += p5-HTML-Form SUBDIR += p5-HTML-FormFu SUBDIR += p5-HTML-FormFu-Imager SUBDIR += p5-HTML-FormFu-Model-DBIC SUBDIR += p5-HTML-FormFu-MultiForm SUBDIR += p5-HTML-FormHandler SUBDIR += p5-HTML-FromANSI SUBDIR += p5-HTML-FromText SUBDIR += p5-HTML-GenToc SUBDIR += p5-HTML-GenerateUtil SUBDIR += p5-HTML-GoogleMaps SUBDIR += p5-HTML-Gumbo SUBDIR += p5-HTML-Highlight SUBDIR += p5-HTML-LinkExtractor SUBDIR += p5-HTML-LinkList SUBDIR += p5-HTML-Lint SUBDIR += p5-HTML-Location SUBDIR += p5-HTML-Macro SUBDIR += p5-HTML-Mason SUBDIR += p5-HTML-Mason-PSGIHandler SUBDIR += p5-HTML-MobileConverter SUBDIR += p5-HTML-Pager SUBDIR += p5-HTML-Parser SUBDIR += p5-HTML-Parser-Simple SUBDIR += p5-HTML-Perlinfo SUBDIR += p5-HTML-PrettyPrinter SUBDIR += p5-HTML-Prototype SUBDIR += p5-HTML-Query SUBDIR += p5-HTML-QuickCheck SUBDIR += p5-HTML-RSSAutodiscovery SUBDIR += p5-HTML-ResolveLink SUBDIR += p5-HTML-Restrict SUBDIR += p5-HTML-RobotsMETA SUBDIR += p5-HTML-Scrubber SUBDIR += p5-HTML-Seamstress SUBDIR += p5-HTML-Selector-XPath SUBDIR += p5-HTML-Shakan SUBDIR += p5-HTML-SimpleLinkExtor SUBDIR += p5-HTML-SimpleParse SUBDIR += p5-HTML-StickyQuery SUBDIR += p5-HTML-StickyQuery-DoCoMoGUID SUBDIR += p5-HTML-Stream SUBDIR += p5-HTML-Strip SUBDIR += p5-HTML-StripScripts SUBDIR += p5-HTML-StripScripts-Parser SUBDIR += p5-HTML-Summary SUBDIR += p5-HTML-Table SUBDIR += p5-HTML-TableContentParser SUBDIR += p5-HTML-TableExtract SUBDIR += p5-HTML-TableLayout SUBDIR += p5-HTML-TableParser SUBDIR += p5-HTML-TableTiler SUBDIR += p5-HTML-TagCloud SUBDIR += p5-HTML-TagCloud-Extended SUBDIR += p5-HTML-TagParser SUBDIR += p5-HTML-Tagset SUBDIR += p5-HTML-Template SUBDIR += p5-HTML-Template-Associate SUBDIR += p5-HTML-Template-Compiled SUBDIR += p5-HTML-Template-Expr SUBDIR += p5-HTML-Template-HashWrapper SUBDIR += p5-HTML-Template-JIT SUBDIR += p5-HTML-Template-Pluggable SUBDIR += p5-HTML-Template-Pro SUBDIR += p5-HTML-Toc SUBDIR += p5-HTML-TokeParser-Simple SUBDIR += p5-HTML-Tree SUBDIR += p5-HTML-TreeBuilder-LibXML SUBDIR += p5-HTML-TreeBuilder-XPath SUBDIR += p5-HTML-Widgets-SelectLayers SUBDIR += p5-HTML-WikiConverter SUBDIR += p5-HTML-WikiConverter-DokuWiki SUBDIR += p5-HTML-WikiConverter-GoogleCode SUBDIR += p5-HTML-WikiConverter-Kwiki SUBDIR += p5-HTML-WikiConverter-Markdown SUBDIR += p5-HTML-WikiConverter-MediaWiki SUBDIR += p5-HTML-WikiConverter-MoinMoin SUBDIR += p5-HTML-WikiConverter-Oddmuse SUBDIR += p5-HTML-WikiConverter-PbWiki SUBDIR += p5-HTML-WikiConverter-PhpWiki SUBDIR += p5-HTML-WikiConverter-PmWiki SUBDIR += p5-HTML-WikiConverter-SnipSnap SUBDIR += p5-HTML-WikiConverter-Socialtext SUBDIR += p5-HTML-WikiConverter-TikiWiki SUBDIR += p5-HTML-WikiConverter-UseMod SUBDIR += p5-HTML-WikiConverter-WakkaWiki SUBDIR += p5-HTML-WikiConverter-WikkaWiki SUBDIR += p5-HTML5-DOM SUBDIR += p5-HTTP-AnyUA SUBDIR += p5-HTTP-Async SUBDIR += p5-HTTP-Body SUBDIR += p5-HTTP-BrowserDetect SUBDIR += p5-HTTP-Cache-Transparent SUBDIR += p5-HTTP-CookieJar SUBDIR += p5-HTTP-Cookies SUBDIR += p5-HTTP-Cookies-Mozilla SUBDIR += p5-HTTP-Cookies-iCab SUBDIR += p5-HTTP-Cookies-w3m SUBDIR += p5-HTTP-DAV SUBDIR += p5-HTTP-Daemon SUBDIR += p5-HTTP-Daemon-SSL SUBDIR += p5-HTTP-Date SUBDIR += p5-HTTP-Engine SUBDIR += p5-HTTP-Engine-Middleware SUBDIR += p5-HTTP-Entity-Parser SUBDIR += p5-HTTP-Exception SUBDIR += p5-HTTP-HeaderParser-XS SUBDIR += p5-HTTP-Headers-ActionPack SUBDIR += p5-HTTP-Headers-Fast SUBDIR += p5-HTTP-Link-Parser SUBDIR += p5-HTTP-Lite SUBDIR += p5-HTTP-MHTTP SUBDIR += p5-HTTP-Message SUBDIR += p5-HTTP-MobileAgent SUBDIR += p5-HTTP-MobileAgent-Plugin-Charset SUBDIR += p5-HTTP-MobileAgent-Plugin-Locator SUBDIR += p5-HTTP-MultiPartParser SUBDIR += p5-HTTP-Negotiate SUBDIR += p5-HTTP-OAI SUBDIR += p5-HTTP-Parser SUBDIR += p5-HTTP-Parser-XS SUBDIR += p5-HTTP-Proxy SUBDIR += p5-HTTP-ProxyPAC SUBDIR += p5-HTTP-Recorder SUBDIR += p5-HTTP-Request-AsCGI SUBDIR += p5-HTTP-Request-Params SUBDIR += p5-HTTP-Response-Encoding SUBDIR += p5-HTTP-Router SUBDIR += p5-HTTP-Server-Simple SUBDIR += p5-HTTP-Server-Simple-Authen SUBDIR += p5-HTTP-Server-Simple-Mason SUBDIR += p5-HTTP-Server-Simple-PSGI SUBDIR += p5-HTTP-Server-Simple-Recorder SUBDIR += p5-HTTP-Server-Simple-Static SUBDIR += p5-HTTP-Session SUBDIR += p5-HTTP-Session-State-MobileAgentID SUBDIR += p5-HTTP-Session-Store-DBI SUBDIR += p5-HTTP-Session2 SUBDIR += p5-HTTP-Simple SUBDIR += p5-HTTP-SimpleLinkChecker SUBDIR += p5-HTTP-Size SUBDIR += p5-HTTP-Thin SUBDIR += p5-HTTP-Throwable SUBDIR += p5-HTTP-Tiny SUBDIR += p5-HTTP-Tiny-Multipart SUBDIR += p5-HTTP-Tiny-SPDY SUBDIR += p5-HTTP-Tiny-UA SUBDIR += p5-HTTP-Tiny-UNIX SUBDIR += p5-HTTP-WebTest SUBDIR += p5-HTTP-XSCookies SUBDIR += p5-HTTPD-Log-Filter SUBDIR += p5-HTTPD-User-Manage SUBDIR += p5-Hijk SUBDIR += p5-I18N-AcceptLanguage SUBDIR += p5-IMDB-Film SUBDIR += p5-Image-Delivery SUBDIR += p5-Interchange6 SUBDIR += p5-JE SUBDIR += p5-JSON-API SUBDIR += p5-JSON-WebToken SUBDIR += p5-Jemplate SUBDIR += p5-Jifty SUBDIR += p5-LWP-Authen-Negotiate SUBDIR += p5-LWP-Authen-OAuth SUBDIR += p5-LWP-Authen-OAuth2 SUBDIR += p5-LWP-Authen-Wsse SUBDIR += p5-LWP-ConnCache-MaxKeepAliveRequests SUBDIR += p5-LWP-MediaTypes SUBDIR += p5-LWP-Online SUBDIR += p5-LWP-Protocol-PSGI SUBDIR += p5-LWP-Protocol-connect SUBDIR += p5-LWP-Protocol-http10 SUBDIR += p5-LWP-Protocol-https SUBDIR += p5-LWP-Protocol-socks SUBDIR += p5-LWP-UserAgent-Cached SUBDIR += p5-LWP-UserAgent-Determined SUBDIR += p5-LWP-UserAgent-POE SUBDIR += p5-LWP-UserAgent-WithCache SUBDIR += p5-LWPx-ParanoidAgent SUBDIR += p5-LWPx-TimedHTTP SUBDIR += p5-Markup-Perl SUBDIR += p5-Mason SUBDIR += p5-MasonX-Interp-WithCallbacks SUBDIR += p5-MasonX-Profiler SUBDIR += p5-MasonX-Request-WithApacheSession SUBDIR += p5-MasonX-WebApp SUBDIR += p5-Maypole SUBDIR += p5-Maypole-Authentication-UserSessionCookie SUBDIR += p5-Maypole-Component SUBDIR += p5-McBain SUBDIR += p5-McBain-WithPSGI SUBDIR += p5-MediaWiki SUBDIR += p5-MediaWiki-API SUBDIR += p5-Mobile-UserAgent SUBDIR += p5-ModPerl-VersionUtil SUBDIR += p5-Mojo-IOLoop-Delay SUBDIR += p5-Mojo-IOLoop-ForkCall SUBDIR += p5-Mojo-Server-FastCGI SUBDIR += p5-Mojo-Weixin SUBDIR += p5-MojoMojo SUBDIR += p5-MojoX-Log-Dispatch-Simple SUBDIR += p5-MojoX-Renderer-Xslate SUBDIR += p5-Mojolicious SUBDIR += p5-Mojolicious-Plugin-Authentication SUBDIR += p5-Mojolicious-Plugin-Database SUBDIR += p5-Mojolicious-Plugin-HamlRenderer SUBDIR += p5-Mojolicious-Plugin-Mongodb SUBDIR += p5-Mojolicious-Plugin-OpenAPI SUBDIR += p5-Mojolicious-Plugin-SetUserGroup SUBDIR += p5-Mojolicious-Plugin-TtRenderer SUBDIR += p5-Mojolicious-Plugin-YamlConfig SUBDIR += p5-Monoceros SUBDIR += p5-Mozilla-CA SUBDIR += p5-Net-Akismet SUBDIR += p5-Net-Amazon-AWIS SUBDIR += p5-Net-Async-FastCGI SUBDIR += p5-Net-Async-HTTP SUBDIR += p5-Net-Curl SUBDIR += p5-Net-FastCGI SUBDIR += p5-Net-FireEagle SUBDIR += p5-Net-Flickr-API SUBDIR += p5-Net-Flickr-Backup SUBDIR += p5-Net-Flickr-RDF SUBDIR += p5-Net-FreshBooks-API SUBDIR += p5-Net-GeoPlanet SUBDIR += p5-Net-Plurk SUBDIR += p5-Net-STF-Client SUBDIR += p5-Net-Trac SUBDIR += p5-Net-UPS SUBDIR += p5-Net-YAP SUBDIR += p5-Net-eBay SUBDIR += p5-Newsletter SUBDIR += p5-Nginx-ReadBody SUBDIR += p5-Nginx-Simple SUBDIR += p5-OpenAPI-Client SUBDIR += p5-PHP-Session SUBDIR += p5-POE-Component-Client-HTTP SUBDIR += p5-POE-Component-Client-UserAgent SUBDIR += p5-POE-Component-Server-HTTP SUBDIR += p5-POE-Component-Server-HTTPServer SUBDIR += p5-POE-Component-Server-PSGI SUBDIR += p5-POE-Component-Server-SOAP SUBDIR += p5-POE-Component-Server-SimpleHTTP SUBDIR += p5-POE-Filter-HTTP-Parser SUBDIR += p5-POEx-Role-PSGIServer SUBDIR += p5-PSGI SUBDIR += p5-ParallelUserAgent SUBDIR += p5-Parse-HTTP-UserAgent SUBDIR += p5-Path-Class-URI SUBDIR += p5-Perlanet SUBDIR += p5-Perlbal-Plugin-PSGI SUBDIR += p5-Plack SUBDIR += p5-Plack-App-Proxy SUBDIR += p5-Plack-Builder-Conditionals SUBDIR += p5-Plack-Handler-AnyEvent-HTTPD SUBDIR += p5-Plack-Handler-AnyEvent-ReverseHTTP SUBDIR += p5-Plack-Handler-AnyEvent-SCGI SUBDIR += p5-Plack-Handler-CLI SUBDIR += p5-Plack-Handler-SCGI SUBDIR += p5-Plack-Middleware-AMF SUBDIR += p5-Plack-Middleware-AddDefaultCharset SUBDIR += p5-Plack-Middleware-Auth-Digest SUBDIR += p5-Plack-Middleware-AutoRefresh SUBDIR += p5-Plack-Middleware-ConsoleLogger SUBDIR += p5-Plack-Middleware-CrossOrigin SUBDIR += p5-Plack-Middleware-DBIx-DisconnectAll SUBDIR += p5-Plack-Middleware-Debug SUBDIR += p5-Plack-Middleware-Deflater SUBDIR += p5-Plack-Middleware-Expires SUBDIR += p5-Plack-Middleware-ExtDirect SUBDIR += p5-Plack-Middleware-File-Sass SUBDIR += p5-Plack-Middleware-FixMissingBodyInRedirect SUBDIR += p5-Plack-Middleware-ForceEnv SUBDIR += p5-Plack-Middleware-Header SUBDIR += p5-Plack-Middleware-IEnosniff SUBDIR += p5-Plack-Middleware-InteractiveDebugger SUBDIR += p5-Plack-Middleware-JSConcat SUBDIR += p5-Plack-Middleware-MemoryUsage SUBDIR += p5-Plack-Middleware-MethodOverride SUBDIR += p5-Plack-Middleware-NoMultipleSlashes SUBDIR += p5-Plack-Middleware-Precompressed SUBDIR += p5-Plack-Middleware-RemoveRedundantBody SUBDIR += p5-Plack-Middleware-Reproxy SUBDIR += p5-Plack-Middleware-ReverseProxy SUBDIR += p5-Plack-Middleware-Rewrite SUBDIR += p5-Plack-Middleware-ServerStatus-Lite SUBDIR += p5-Plack-Middleware-Session SUBDIR += p5-Plack-Middleware-SocketIO SUBDIR += p5-Plack-Middleware-Status SUBDIR += p5-Plack-Middleware-Test-StashWarnings SUBDIR += p5-Plack-Middleware-Throttle SUBDIR += p5-Plack-Middleware-XForwardedFor SUBDIR += p5-Plack-Server-Coro SUBDIR += p5-Plack-Server-POE SUBDIR += p5-Plack-Server-ReverseHTTP SUBDIR += p5-Plack-Test-ExternalServer SUBDIR += p5-PocketIO SUBDIR += p5-Pod-Site SUBDIR += p5-PodToHTML SUBDIR += p5-Protocol-HTTP2 SUBDIR += p5-Protocol-SocketIO SUBDIR += p5-Protocol-WebSocket SUBDIR += p5-Protocol-XMLRPC SUBDIR += p5-REST-Client SUBDIR += p5-REST-Google-Apps-Provisioning SUBDIR += p5-RPC-ExtDirect SUBDIR += p5-RT-Client-REST SUBDIR += p5-RT-Extension-CommandByMail SUBDIR += p5-RT-Extension-Gravatar SUBDIR += p5-RT-Extension-LDAPImport SUBDIR += p5-RT-Extension-MandatoryOnTransition SUBDIR += p5-RT-Extension-RepeatTicket SUBDIR += p5-RT-Extension-RepeatTicket2 SUBDIR += p5-RTx-Calendar SUBDIR += p5-Reaction SUBDIR += p5-Reddit SUBDIR += p5-Reddit-Client SUBDIR += p5-Role-REST-Client SUBDIR += p5-Rose-HTML-Objects SUBDIR += p5-Router-Boom SUBDIR += p5-Router-Simple SUBDIR += p5-Router-Simple-Sinatraish SUBDIR += p5-SCGI SUBDIR += p5-SOAP-Transport-HTTP-Plack SUBDIR += p5-SRU SUBDIR += p5-STF-Dispatcher-PSGI SUBDIR += p5-SWF-Chart SUBDIR += p5-Scrappy SUBDIR += p5-Selenium-Remote-Driver SUBDIR += p5-Session-Storage-Secure SUBDIR += p5-Squatting SUBDIR += p5-Squatting-On-PSGI SUBDIR += p5-Starlet SUBDIR += p5-Starman SUBDIR += p5-Syntax-Highlight-HTML SUBDIR += p5-Syntax-Highlight-Shell SUBDIR += p5-Task-Catalyst SUBDIR += p5-Task-Plack SUBDIR += p5-Tatsumaki SUBDIR += p5-Template-Alloy SUBDIR += p5-Template-GD SUBDIR += p5-Template-Iterator-AlzaboWrapperCursor SUBDIR += p5-Template-Multilingual SUBDIR += p5-Template-Mustache SUBDIR += p5-Template-Plugin-Class SUBDIR += p5-Template-Plugin-Clickable SUBDIR += p5-Template-Plugin-Clickable-Email SUBDIR += p5-Template-Plugin-Comma SUBDIR += p5-Template-Plugin-FillInForm SUBDIR += p5-Template-Plugin-Gettext SUBDIR += p5-Template-Plugin-JSON SUBDIR += p5-Template-Plugin-JavaScript SUBDIR += p5-Template-Plugin-MP3 SUBDIR += p5-Template-Plugin-Markdown SUBDIR += p5-Template-Plugin-Monta SUBDIR += p5-Template-Plugin-Number-Format SUBDIR += p5-Template-Plugin-StripScripts SUBDIR += p5-Template-Plugin-Subst SUBDIR += p5-Template-Plugin-VMethods SUBDIR += p5-Template-Provider-Encoding SUBDIR += p5-Template-Provider-FromDATA SUBDIR += p5-Template-Simple SUBDIR += p5-Template-Stash-AutoEscape SUBDIR += p5-Template-Timer SUBDIR += p5-Template-Toolkit SUBDIR += p5-Template-Toolkit-Simple SUBDIR += p5-Tenjin SUBDIR += p5-Test-HTTP SUBDIR += p5-Test-HTTP-LocalServer SUBDIR += p5-Test-HTTP-Server-Simple SUBDIR += p5-Test-LWP-UserAgent SUBDIR += p5-Test-Nginx SUBDIR += p5-TestGen4Web-Runner SUBDIR += p5-Text-MultiMarkdown-ApacheHandler SUBDIR += p5-Tie-TinyURL SUBDIR += p5-Toader SUBDIR += p5-Toadfarm SUBDIR += p5-Twiggy SUBDIR += p5-Twiggy-TLS SUBDIR += p5-URI-Encode SUBDIR += p5-URI-Escape-JavaScript SUBDIR += p5-URI-Escape-XS SUBDIR += p5-URI-Fetch SUBDIR += p5-URI-Normalize SUBDIR += p5-URI-ParseSearchString SUBDIR += p5-URI-Sequin SUBDIR += p5-URI-Title SUBDIR += p5-URI-ToDisk SUBDIR += p5-URL-Encode SUBDIR += p5-URL-Encode-XS SUBDIR += p5-VUser-Google-ProvisioningAPI SUBDIR += p5-W3C-LinkChecker SUBDIR += p5-W3C-LogValidator SUBDIR += p5-WWW-AtMovies-TV SUBDIR += p5-WWW-Babelfish SUBDIR += p5-WWW-Baseball-NPB SUBDIR += p5-WWW-Comic SUBDIR += p5-WWW-Contact SUBDIR += p5-WWW-Curl SUBDIR += p5-WWW-DHL SUBDIR += p5-WWW-Dilbert SUBDIR += p5-WWW-Facebook-API SUBDIR += p5-WWW-Form-UrlEncoded SUBDIR += p5-WWW-FreeProxy SUBDIR += p5-WWW-GitHub-Gist SUBDIR += p5-WWW-Google-Calculator SUBDIR += p5-WWW-Google-News SUBDIR += p5-WWW-Google-News-TW SUBDIR += p5-WWW-Google-PageRank SUBDIR += p5-WWW-HatenaDiary SUBDIR += p5-WWW-HatenaLogin SUBDIR += p5-WWW-HatenaStar SUBDIR += p5-WWW-IMDb SUBDIR += p5-WWW-Instapaper-Client SUBDIR += p5-WWW-LongURL SUBDIR += p5-WWW-Mechanize SUBDIR += p5-WWW-Mechanize-CGI SUBDIR += p5-WWW-Mechanize-DecodedContent SUBDIR += p5-WWW-Mechanize-FormFiller SUBDIR += p5-WWW-Mechanize-GZip SUBDIR += p5-WWW-Mechanize-Meta SUBDIR += p5-WWW-Mechanize-Pluggable SUBDIR += p5-WWW-Mechanize-Plugin-phpBB SUBDIR += p5-WWW-Mechanize-Shell SUBDIR += p5-WWW-Mechanize-SpamCop SUBDIR += p5-WWW-Mechanize-TreeBuilder SUBDIR += p5-WWW-Mediawiki-Client SUBDIR += p5-WWW-Mixi SUBDIR += p5-WWW-Mixi-Scraper SUBDIR += p5-WWW-Myspace SUBDIR += p5-WWW-NicoVideo-Download SUBDIR += p5-WWW-NioTV SUBDIR += p5-WWW-OAuth SUBDIR += p5-WWW-OpenSVN SUBDIR += p5-WWW-OpenSearch SUBDIR += p5-WWW-Pastebin-PastebinCom-Create SUBDIR += p5-WWW-Plurk SUBDIR += p5-WWW-Robot SUBDIR += p5-WWW-RobotRules SUBDIR += p5-WWW-RobotRules-Parser SUBDIR += p5-WWW-Salesforce SUBDIR += p5-WWW-Scraper-ISBN SUBDIR += p5-WWW-Scraper-ISBN-Amazon_Driver SUBDIR += p5-WWW-Scraper-ISBN-ORA_Driver SUBDIR += p5-WWW-Scripter SUBDIR += p5-WWW-Scripter-Plugin-Ajax SUBDIR += p5-WWW-Scripter-Plugin-JavaScript SUBDIR += p5-WWW-Search SUBDIR += p5-WWW-Search-AltaVista SUBDIR += p5-WWW-Search-Google SUBDIR += p5-WWW-Search-MSN SUBDIR += p5-WWW-Shorten SUBDIR += p5-WWW-Shorten-0rz SUBDIR += p5-WWW-Shorten-Bitly SUBDIR += p5-WWW-Shorten-Googl SUBDIR += p5-WWW-Shorten-Yourls SUBDIR += p5-WWW-SourceForge SUBDIR += p5-WWW-Spinn3r SUBDIR += p5-WWW-TV SUBDIR += p5-WWW-TWSMS SUBDIR += p5-WWW-Telegram-BotAPI SUBDIR += p5-WWW-TinySong SUBDIR += p5-WWW-Tumblr SUBDIR += p5-WWW-VenusEnvy SUBDIR += p5-WWW-WebArchive SUBDIR += p5-WWW-Wikipedia SUBDIR += p5-WWW-Yandex-TIC SUBDIR += p5-WWW-iTunesConnect SUBDIR += p5-Web-Machine SUBDIR += p5-Web-Query SUBDIR += p5-Web-Scraper SUBDIR += p5-Web-Scraper-Config SUBDIR += p5-Web-Simple SUBDIR += p5-Web-oEmbed SUBDIR += p5-WebDAO SUBDIR += p5-WebDriver-Tiny SUBDIR += p5-WebService-Basecamp SUBDIR += p5-WebService-Bloglines SUBDIR += p5-WebService-BuzzurlAPI SUBDIR += p5-WebService-CIA SUBDIR += p5-WebService-GData SUBDIR += p5-WebService-Google-Reader SUBDIR += p5-WebService-Google-Sets SUBDIR += p5-WebService-IMDB SUBDIR += p5-WebService-ISBNDB SUBDIR += p5-WebService-Linode SUBDIR += p5-WebService-MoviePosterDB SUBDIR += p5-WebService-MusicBrainz SUBDIR += p5-WebService-NoPaste SUBDIR += p5-WebService-Pushover SUBDIR += p5-WebService-Rakuten SUBDIR += p5-WebService-Redmine SUBDIR += p5-WebService-Simple SUBDIR += p5-WebService-Technorati SUBDIR += p5-WebService-YouTube SUBDIR += p5-Woothee SUBDIR += p5-WordPress-XMLRPC SUBDIR += p5-Yahoo-Search SUBDIR += p5-chklinks SUBDIR += p5-jQuery-File-Upload SUBDIR += p5-libapreq2 SUBDIR += p5-libservlet SUBDIR += p5-libwww SUBDIR += p5-pQuery SUBDIR += p5-webservice-validator-css-w3c SUBDIR += p5-webservice-validator-html-w3c SUBDIR += payara SUBDIR += pear-HTML_AJAX SUBDIR += pear-HTML_TagCloud SUBDIR += pear-HTTP SUBDIR += pear-HTTP_Client SUBDIR += pear-HTTP_Download SUBDIR += pear-HTTP_FloodControl SUBDIR += pear-HTTP_Header SUBDIR += pear-HTTP_Request SUBDIR += pear-HTTP_Request2 SUBDIR += pear-HTTP_Server SUBDIR += pear-HTTP_Session2 SUBDIR += pear-HTTP_Upload SUBDIR += pear-HTTP_WebDAV_Client SUBDIR += pear-HTTP_WebDAV_Server SUBDIR += pear-Horde_Browser SUBDIR += pear-Horde_Css_Parser SUBDIR += pear-Horde_Dav SUBDIR += pear-Horde_Editor SUBDIR += pear-Horde_Feed SUBDIR += pear-Horde_Form SUBDIR += pear-Horde_Http SUBDIR += pear-Horde_Routes SUBDIR += pear-Horde_Service_Facebook SUBDIR += pear-Horde_Service_Gravatar SUBDIR += pear-Horde_Service_Twitter SUBDIR += pear-Horde_Service_UrlShortener SUBDIR += pear-Horde_Service_Weather SUBDIR += pear-Horde_SessionHandler SUBDIR += pear-Horde_Template SUBDIR += pear-Services_Amazon SUBDIR += pear-Services_Amazon_S3 SUBDIR += pear-Services_Blogging SUBDIR += pear-Services_Compete SUBDIR += pear-Services_Delicious SUBDIR += pear-Services_Digg SUBDIR += pear-Services_Facebook SUBDIR += pear-Services_GeoNames SUBDIR += pear-Services_Google SUBDIR += pear-Services_OpenSearch SUBDIR += pear-Services_ShortURL SUBDIR += pear-Services_TinyURL SUBDIR += pear-Services_TwitPic SUBDIR += pear-Services_W3C_CSSValidator SUBDIR += pear-Services_W3C_HTMLValidator SUBDIR += pear-Services_Yadis SUBDIR += pear-Services_Yahoo SUBDIR += pear-Services_urlTea SUBDIR += pear-Structures_DataGrid_Renderer_Flexy SUBDIR += pear-Structures_DataGrid_Renderer_Pager SUBDIR += pear-Structures_DataGrid_Renderer_Smarty SUBDIR += pear-Text_Wiki SUBDIR += pear-UDDI SUBDIR += pear-XML_GRDDL SUBDIR += pear-twig SUBDIR += pecl-http SUBDIR += pecl-solr SUBDIR += pecl-yaf SUBDIR += pecl-yar SUBDIR += perlbal SUBDIR += persepolis SUBDIR += pglogd SUBDIR += phalcon SUBDIR += php80-opcache SUBDIR += php80-session SUBDIR += php80-tidy SUBDIR += php81-opcache SUBDIR += php81-session SUBDIR += php81-tidy SUBDIR += php82-opcache SUBDIR += php82-session SUBDIR += php82-tidy SUBDIR += phpbb SUBDIR += phpbb3 SUBDIR += phpgroupware SUBDIR += phpmustache SUBDIR += phpmyfaq SUBDIR += phprecipebook SUBDIR += phpsysinfo SUBDIR += phpvirtualbox SUBDIR += phpvirtualbox-legacy SUBDIR += piwigo SUBDIR += plasma5-plasma-browser-integration SUBDIR += pmwiki SUBDIR += pnews SUBDIR += podcastamatic SUBDIR += polipo SUBDIR += pomerium SUBDIR += pound SUBDIR += privatebin SUBDIR += privoxy SUBDIR += protovis SUBDIR += proxygen SUBDIR += pserv SUBDIR += publicfile SUBDIR += punbb SUBDIR += py-Pituophis SUBDIR += py-Tenjin SUBDIR += py-WebError SUBDIR += py-WebFlash SUBDIR += py-WebTest SUBDIR += py-adblock SUBDIR += py-aioh2 SUBDIR += py-aiohttp SUBDIR += py-aiohttp-middlewares SUBDIR += py-aiohttp-session SUBDIR += py-aiohttp-wsgi SUBDIR += py-aiohttp_cors SUBDIR += py-aioquic SUBDIR += py-aiostream SUBDIR += py-arxiv SUBDIR += py-asgi-csrf SUBDIR += py-asgiref SUBDIR += py-autobahn SUBDIR += py-azure-common SUBDIR += py-azure-storage SUBDIR += py-beaker SUBDIR += py-beautifulsoup SUBDIR += py-betamax SUBDIR += py-biscuits SUBDIR += py-bjoern SUBDIR += py-bleach SUBDIR += py-bokeh SUBDIR += py-boto3 SUBDIR += py-botocore-stubs SUBDIR += py-bottle SUBDIR += py-bottle-cork SUBDIR += py-branca SUBDIR += py-cachecontrol SUBDIR += py-cachelib SUBDIR += py-caldav SUBDIR += py-cheroot SUBDIR += py-cherrypy SUBDIR += py-cinemagoer SUBDIR += py-cookies SUBDIR += py-crossplane SUBDIR += py-css-parser SUBDIR += py-csscompressor SUBDIR += py-cssmin SUBDIR += py-cssselect SUBDIR += py-cssutils SUBDIR += py-dj-database-url SUBDIR += py-dj40-django-auth-ldap SUBDIR += py-dj40-django-cors-headers SUBDIR += py-dj40-django-debug-toolbar SUBDIR += py-dj40-django-filter SUBDIR += py-dj40-django-graphiql-debug-toolbar SUBDIR += py-dj40-django-js-asset SUBDIR += py-dj40-django-mptt SUBDIR += py-dj40-django-prometheus SUBDIR += py-dj40-django-redis SUBDIR += py-dj40-django-rich SUBDIR += py-dj40-django-tables2 SUBDIR += py-dj40-django-taggit SUBDIR += py-dj40-django-timezone-field SUBDIR += py-dj40-djangorestframework SUBDIR += py-dj40-drf-yasg SUBDIR += py-django-admin-rangefilter SUBDIR += py-django-advanced-filters SUBDIR += py-django-allauth SUBDIR += py-django-annoying SUBDIR += py-django-appconf SUBDIR += py-django-assets SUBDIR += py-django-auth-ldap SUBDIR += py-django-autocomplete-light SUBDIR += py-django-bakery SUBDIR += py-django-bitfield SUBDIR += py-django-bleach SUBDIR += py-django-bootstrap-pagination SUBDIR += py-django-bootstrap3 SUBDIR += py-django-bootstrap4 SUBDIR += py-django-braces SUBDIR += py-django-cacheops SUBDIR += py-django-ckeditor-5 SUBDIR += py-django-classy-tags SUBDIR += py-django-cms SUBDIR += py-django-configurations SUBDIR += py-django-constance SUBDIR += py-django-contact-form SUBDIR += py-django-context-decorator SUBDIR += py-django-contrib-comments SUBDIR += py-django-cors-headers SUBDIR += py-django-countries SUBDIR += py-django-crispy-forms SUBDIR += py-django-cron SUBDIR += py-django-csp SUBDIR += py-django-debreach SUBDIR += py-django-debug-toolbar SUBDIR += py-django-dpaste SUBDIR += py-django-extensions SUBDIR += py-django-filer SUBDIR += py-django-filter SUBDIR += py-django-formset-js-improved SUBDIR += py-django-formtools SUBDIR += py-django-graphiql-debug-toolbar SUBDIR += py-django-gravatar2 SUBDIR += py-django-guardian SUBDIR += py-django-hashid-field SUBDIR += py-django-haystack SUBDIR += py-django-hierarkey SUBDIR += py-django-hijack SUBDIR += py-django-htmlmin SUBDIR += py-django-i18nfield SUBDIR += py-django-jquery-js SUBDIR += py-django-js-asset SUBDIR += py-django-jsonview SUBDIR += py-django-ldapdb SUBDIR += py-django-libsass SUBDIR += py-django-markdownx SUBDIR += py-django-markwhat SUBDIR += py-django-mezzanine-filebrowser SUBDIR += py-django-mezzanine-grappelli SUBDIR += py-django-model-utils SUBDIR += py-django-modelcluster SUBDIR += py-django-mptt SUBDIR += py-django-netfields SUBDIR += py-django-object-actions SUBDIR += py-django-otp SUBDIR += py-django-otp-yubikey SUBDIR += py-django-permissionedforms SUBDIR += py-django-pglocks SUBDIR += py-django-photologue SUBDIR += py-django-picklefield SUBDIR += py-django-pipeline SUBDIR += py-django-polymorphic SUBDIR += py-django-post_office SUBDIR += py-django-prometheus SUBDIR += py-django-pyscss SUBDIR += py-django-radius SUBDIR += py-django-ranged-response SUBDIR += py-django-recaptcha SUBDIR += py-django-redis SUBDIR += py-django-registration SUBDIR += py-django-registration-redux SUBDIR += py-django-reversion SUBDIR += py-django-reversion-compare SUBDIR += py-django-rich SUBDIR += py-django-sekizai SUBDIR += py-django-simple-captcha SUBDIR += py-django-simple-history SUBDIR += py-django-smart-selects SUBDIR += py-django-solo SUBDIR += py-django-sortedm2m SUBDIR += py-django-star-ratings SUBDIR += py-django-statici18n SUBDIR += py-django-staticinline SUBDIR += py-django-storages SUBDIR += py-django-tables2 SUBDIR += py-django-tagging SUBDIR += py-django-taggit SUBDIR += py-django-tastypie SUBDIR += py-django-templatetag-sugar SUBDIR += py-django-timezone-field SUBDIR += py-django-tinymce SUBDIR += py-django-treebeard SUBDIR += py-django-voting SUBDIR += py-django-webpack-loader SUBDIR += py-django-widget-tweaks SUBDIR += py-django32 SUBDIR += py-django40 SUBDIR += py-django41 SUBDIR += py-django_compressor SUBDIR += py-djangocms-admin-style SUBDIR += py-djangoql SUBDIR += py-djangorestframework SUBDIR += py-djangorestframework-csv SUBDIR += py-djangorestframework-filters SUBDIR += py-djangorestframework-xml SUBDIR += py-draftjs-exporter SUBDIR += py-drf-yasg SUBDIR += py-dropbox SUBDIR += py-dtflickr SUBDIR += py-enmerkar SUBDIR += py-fake-useragent SUBDIR += py-falcon SUBDIR += py-fastapi SUBDIR += py-fastapi-users SUBDIR += py-feedgenerator SUBDIR += py-flask SUBDIR += py-flask-admin SUBDIR += py-flask-api SUBDIR += py-flask-apscheduler SUBDIR += py-flask-assets SUBDIR += py-flask-babelex SUBDIR += py-flask-bootstrap SUBDIR += py-flask-cache SUBDIR += py-flask-caching SUBDIR += py-flask-collect SUBDIR += py-flask-compress SUBDIR += py-flask-cors SUBDIR += py-flask-flatpages SUBDIR += py-flask-json SUBDIR += py-flask-jwt-extended SUBDIR += py-flask-login SUBDIR += py-flask-marshmallow SUBDIR += py-flask-migrate SUBDIR += py-flask-moment SUBDIR += py-flask-mongoengine SUBDIR += py-flask-oauthlib SUBDIR += py-flask-peewee SUBDIR += py-flask-principal SUBDIR += py-flask-restful SUBDIR += py-flask-restx SUBDIR += py-flask-script SUBDIR += py-flask-security SUBDIR += py-flask-smorest SUBDIR += py-flask-socketio SUBDIR += py-flask-sockets SUBDIR += py-flask-uploads SUBDIR += py-flask-wtf SUBDIR += py-flup6 SUBDIR += py-folium SUBDIR += py-forcediphttpsadapter SUBDIR += py-formencode SUBDIR += py-fqdn SUBDIR += py-freenit SUBDIR += py-frozen-flask SUBDIR += py-gandi.cli SUBDIR += py-gevent-websocket SUBDIR += py-ghp-import SUBDIR += py-google SUBDIR += py-google-api-core SUBDIR += py-google-api-python-client SUBDIR += py-google-cloud-appengine-logging SUBDIR += py-google-cloud-audit-log SUBDIR += py-google-cloud-bigtable SUBDIR += py-google-cloud-core SUBDIR += py-google-cloud-datastore SUBDIR += py-google-cloud-dlp SUBDIR += py-google-cloud-logging SUBDIR += py-google-cloud-speech SUBDIR += py-google-cloud-storage SUBDIR += py-google-cloud-translate SUBDIR += py-google-cloud-vision SUBDIR += py-google-resumable-media SUBDIR += py-grafana-dashboard-manager SUBDIR += py-graphite-api SUBDIR += py-grequests SUBDIR += py-grip SUBDIR += py-gunicorn SUBDIR += py-h2 SUBDIR += py-habanero SUBDIR += py-hdfs SUBDIR += py-horizon SUBDIR += py-hpack SUBDIR += py-hstspreload SUBDIR += py-html3 SUBDIR += py-html5-parser SUBDIR += py-html5lib SUBDIR += py-httmock SUBDIR += py-http-parser SUBDIR += py-httpbin SUBDIR += py-httpcore SUBDIR += py-httpie SUBDIR += py-httplib2 SUBDIR += py-httpretty SUBDIR += py-httptools SUBDIR += py-httpx SUBDIR += py-httpx-gssapi SUBDIR += py-httpx-oauth SUBDIR += py-httpx-socks SUBDIR += py-httpx013 SUBDIR += py-hypercorn SUBDIR += py-hyperframe SUBDIR += py-hyperlink SUBDIR += py-imdbpy SUBDIR += py-inlinestyler SUBDIR += py-instabot SUBDIR += py-internetarchive SUBDIR += py-jonpy SUBDIR += py-jsonfield SUBDIR += py-lektor SUBDIR += py-lesscpy SUBDIR += py-libsass SUBDIR += py-livereload SUBDIR += py-mechanicalsoup SUBDIR += py-mechanize SUBDIR += py-multidict SUBDIR += py-mwoauth SUBDIR += py-nevow SUBDIR += py-notebook SUBDIR += py-onetimepass SUBDIR += py-openbrokerapi SUBDIR += py-pafy SUBDIR += py-paste SUBDIR += py-pastedeploy SUBDIR += py-path-and-address SUBDIR += py-pecan SUBDIR += py-pelican SUBDIR += py-planet SUBDIR += py-postorius SUBDIR += py-praw SUBDIR += py-prawcore SUBDIR += py-priority SUBDIR += py-priority1 SUBDIR += py-protego SUBDIR += py-puppetboard SUBDIR += py-py-restclient SUBDIR += py-pygsheets SUBDIR += py-pyjwt SUBDIR += py-pyjwt1 SUBDIR += py-pylsqpack SUBDIR += py-pyocclient SUBDIR += py-pyramid SUBDIR += py-pyramid-mako SUBDIR += py-pyramid_rpc SUBDIR += py-pysmartdl SUBDIR += py-python-digitalocean SUBDIR += py-python-dotenv SUBDIR += py-python-multipart SUBDIR += py-pyweblib SUBDIR += py-pywikibot SUBDIR += py-qt5-webengine SUBDIR += py-quilt3 SUBDIR += py-recaptcha SUBDIR += py-requests SUBDIR += py-requests-aws4auth SUBDIR += py-requests-cache SUBDIR += py-requests-cache93 SUBDIR += py-requests-file SUBDIR += py-requests-futures SUBDIR += py-requests-futures0 SUBDIR += py-requests-gssapi SUBDIR += py-requests-mock SUBDIR += py-requests-oauthlib SUBDIR += py-requests-toolbelt SUBDIR += py-requests-unixsocket SUBDIR += py-requests-wsgi-adapter SUBDIR += py-requests_ntlm SUBDIR += py-respx SUBDIR += py-restclient SUBDIR += py-rfc3986 SUBDIR += py-rfc3987 SUBDIR += py-rollbar SUBDIR += py-routes SUBDIR += py-rules SUBDIR += py-scgi SUBDIR += py-scrapy SUBDIR += py-seafdav SUBDIR += py-seafobj SUBDIR += py-secure-cookie SUBDIR += py-selector SUBDIR += py-selenium SUBDIR += py-selenium-wire SUBDIR += py-semiphemeral SUBDIR += py-sentinelhub SUBDIR += py-slimit SUBDIR += py-slumber SUBDIR += py-social-auth-app-django SUBDIR += py-sockjs-tornado SUBDIR += py-soupsieve SUBDIR += py-splinter SUBDIR += py-spyne SUBDIR += py-sseclient SUBDIR += py-starlette SUBDIR += py-swapper SUBDIR += py-textile SUBDIR += py-tornado SUBDIR += py-tornado4 SUBDIR += py-tornado5 SUBDIR += py-treq SUBDIR += py-ttrv SUBDIR += py-tuir SUBDIR += py-turbogears2 SUBDIR += py-tvdb_api SUBDIR += py-urlgrabber SUBDIR += py-urlman SUBDIR += py-urlobject SUBDIR += py-urlwatch SUBDIR += py-user_agent SUBDIR += py-utidylib SUBDIR += py-uvicorn SUBDIR += py-w3lib SUBDIR += py-wagtail SUBDIR += py-waitress SUBDIR += py-webargs SUBDIR += py-webassets SUBDIR += py-webob SUBDIR += py-websocket-client SUBDIR += py-webunit SUBDIR += py-werkzeug SUBDIR += py-wfuzz SUBDIR += py-whitenoise SUBDIR += py-wikipedia SUBDIR += py-wikitools SUBDIR += py-woob SUBDIR += py-woob-qt SUBDIR += py-wsaccel SUBDIR += py-wsgidav SUBDIR += py-yarl SUBDIR += pydio-cells SUBDIR += qdecoder SUBDIR += qhttpengine SUBDIR += qt5-webchannel SUBDIR += qt5-webengine SUBDIR += qt5-webglplugin SUBDIR += qt5-webkit SUBDIR += qt5-websockets SUBDIR += qt5-websockets-qml SUBDIR += qt5-webview SUBDIR += qt6-webchannel + SUBDIR += qt6-webengine SUBDIR += qt6-websockets SUBDIR += quark SUBDIR += qutebrowser SUBDIR += radicale SUBDIR += rearx SUBDIR += reddsaver SUBDIR += redmine42 SUBDIR += redmine50 SUBDIR += rejik SUBDIR += remark42 SUBDIR += reportmagic SUBDIR += repos-style SUBDIR += reproxy SUBDIR += resin3 SUBDIR += restbed SUBDIR += restinio SUBDIR += retawq SUBDIR += rss-bridge SUBDIR += rsskit SUBDIR += rssroll SUBDIR += rsstail SUBDIR += rsstool SUBDIR += rt44 SUBDIR += rt50 SUBDIR += rubygem-ace-rails-ap SUBDIR += rubygem-actioncable5 SUBDIR += rubygem-actioncable50 SUBDIR += rubygem-actioncable52 SUBDIR += rubygem-actioncable60 SUBDIR += rubygem-actioncable61 SUBDIR += rubygem-actioncable70 SUBDIR += rubygem-actionpack4 SUBDIR += rubygem-actionpack5 SUBDIR += rubygem-actionpack50 SUBDIR += rubygem-actionpack52 SUBDIR += rubygem-actionpack60 SUBDIR += rubygem-actionpack61 SUBDIR += rubygem-actionpack70 SUBDIR += rubygem-activeresource SUBDIR += rubygem-activeresource4 SUBDIR += rubygem-acts-as-taggable-on SUBDIR += rubygem-acts_as_taggable SUBDIR += rubygem-addressable SUBDIR += rubygem-adsf SUBDIR += rubygem-akami SUBDIR += rubygem-amazon-ecs SUBDIR += rubygem-anemone SUBDIR += rubygem-asana SUBDIR += rubygem-asana0 SUBDIR += rubygem-asana1 SUBDIR += rubygem-async-http SUBDIR += rubygem-async-pool SUBDIR += rubygem-async-rest SUBDIR += rubygem-async-websocket SUBDIR += rubygem-async_sinatra SUBDIR += rubygem-atlassian-jwt SUBDIR += rubygem-best_in_place SUBDIR += rubygem-best_in_place-rails5 SUBDIR += rubygem-bluecloth SUBDIR += rubygem-bootstrap-sass SUBDIR += rubygem-browser SUBDIR += rubygem-cal-heatmap-rails SUBDIR += rubygem-carrierwave SUBDIR += rubygem-cgi SUBDIR += rubygem-cgi_multipart_eof_fix SUBDIR += rubygem-chosen-rails SUBDIR += rubygem-chromedriver-helper SUBDIR += rubygem-cookiejar SUBDIR += rubygem-crass SUBDIR += rubygem-cssbundling-rails SUBDIR += rubygem-cuba SUBDIR += rubygem-d3_rails SUBDIR += rubygem-davclient SUBDIR += rubygem-deckar01-task_list SUBDIR += rubygem-domainatrix SUBDIR += rubygem-dropzonejs-rails SUBDIR += rubygem-em-http-request SUBDIR += rubygem-em-socksify SUBDIR += rubygem-em-twitter SUBDIR += rubygem-em-websocket SUBDIR += rubygem-emk-sinatra-url-for SUBDIR += rubygem-erubi SUBDIR += rubygem-erubi19 SUBDIR += rubygem-erubis SUBDIR += rubygem-ethon SUBDIR += rubygem-eventmachine_httpserver SUBDIR += rubygem-faraday SUBDIR += rubygem-faraday-em_http SUBDIR += rubygem-faraday-em_synchrony SUBDIR += rubygem-faraday-follow_redirects SUBDIR += rubygem-faraday-http-cache SUBDIR += rubygem-faraday-httpclient SUBDIR += rubygem-faraday-httpclient1 SUBDIR += rubygem-faraday-multipart SUBDIR += rubygem-faraday-net_http SUBDIR += rubygem-faraday-net_http1 SUBDIR += rubygem-faraday-net_http_persistent SUBDIR += rubygem-faraday-net_http_persistent1 SUBDIR += rubygem-faraday-patron SUBDIR += rubygem-faraday-patron1 SUBDIR += rubygem-faraday-rack SUBDIR += rubygem-faraday-rack1 SUBDIR += rubygem-faraday-retry SUBDIR += rubygem-faraday-retry1 SUBDIR += rubygem-faraday0 SUBDIR += rubygem-faraday1 SUBDIR += rubygem-faraday14 SUBDIR += rubygem-faraday_middleware SUBDIR += rubygem-faraday_middleware0 SUBDIR += rubygem-faye SUBDIR += rubygem-faye-websocket SUBDIR += rubygem-fcgi SUBDIR += rubygem-feed-normalizer SUBDIR += rubygem-feedjira SUBDIR += rubygem-flowdock SUBDIR += rubygem-fuzzyurl SUBDIR += rubygem-geminabox SUBDIR += rubygem-gitlab-flowdock-git-hook SUBDIR += rubygem-gitlab-gollum-lib SUBDIR += rubygem-gitlab-gollum-rugged_adapter SUBDIR += rubygem-gitlab-turbolinks-classic SUBDIR += rubygem-goldfinger SUBDIR += rubygem-gollum SUBDIR += rubygem-gollum-grit_adapter SUBDIR += rubygem-gollum-grit_adapter10 SUBDIR += rubygem-gollum-lib SUBDIR += rubygem-gollum-rugged_adapter SUBDIR += rubygem-gon-rails5 SUBDIR += rubygem-gon-rails50 SUBDIR += rubygem-gon-rails60 SUBDIR += rubygem-gon-rails61 SUBDIR += rubygem-hackpad-cli SUBDIR += rubygem-haml SUBDIR += rubygem-haml-coderay SUBDIR += rubygem-haml-contrib SUBDIR += rubygem-haml-rails-rails4 SUBDIR += rubygem-haml5 SUBDIR += rubygem-hamlit SUBDIR += rubygem-hamlit-rails SUBDIR += rubygem-hamlit-rails-rails5 SUBDIR += rubygem-hamlit-rails-rails50 SUBDIR += rubygem-hamlit-rails-rails61 SUBDIR += rubygem-hashicorp-checkpoint SUBDIR += rubygem-heroics SUBDIR += rubygem-heroku-api SUBDIR += rubygem-heroku-nav SUBDIR += rubygem-hpricot SUBDIR += rubygem-html2haml SUBDIR += rubygem-http SUBDIR += rubygem-http-accept SUBDIR += rubygem-http-cookie SUBDIR += rubygem-http-form_data SUBDIR += rubygem-http3 SUBDIR += rubygem-http4 SUBDIR += rubygem-http_router SUBDIR += rubygem-httparty SUBDIR += rubygem-httpclient SUBDIR += rubygem-httpi SUBDIR += rubygem-hurley SUBDIR += rubygem-importmap-rails SUBDIR += rubygem-innate SUBDIR += rubygem-jekyll SUBDIR += rubygem-jekyll-sanity SUBDIR += rubygem-jekyll-seo-tag SUBDIR += rubygem-jekyll-watch SUBDIR += rubygem-jekyll3 SUBDIR += rubygem-journey SUBDIR += rubygem-jquery-atwho-rails SUBDIR += rubygem-jquery-rails SUBDIR += rubygem-jquery-rails-rails5 SUBDIR += rubygem-jquery-rails-rails50 SUBDIR += rubygem-jquery-scrollto-rails SUBDIR += rubygem-jquery-turbolinks SUBDIR += rubygem-jquery-ui-rails-rails4 SUBDIR += rubygem-jruby-rack SUBDIR += rubygem-jsbundling-rails SUBDIR += rubygem-jsobfu SUBDIR += rubygem-json-jwt SUBDIR += rubygem-json-jwt115 SUBDIR += rubygem-jwt SUBDIR += rubygem-kaminari SUBDIR += rubygem-kaminari-actionview SUBDIR += rubygem-kaminari-actionview-rails5 SUBDIR += rubygem-kaminari-actionview-rails50 SUBDIR += rubygem-kaminari-actionview-rails52 SUBDIR += rubygem-kaminari-actionview-rails60 SUBDIR += rubygem-kaminari-actionview-rails61 SUBDIR += rubygem-kaminari-activerecord SUBDIR += rubygem-kaminari-activerecord-rails5 SUBDIR += rubygem-kaminari-activerecord-rails50 SUBDIR += rubygem-kaminari-activerecord-rails52 SUBDIR += rubygem-kaminari-activerecord-rails60 SUBDIR += rubygem-kaminari-activerecord-rails61 SUBDIR += rubygem-kaminari-core SUBDIR += rubygem-kaminari-rails4 SUBDIR += rubygem-kaminari-rails5 SUBDIR += rubygem-kaminari-rails50 SUBDIR += rubygem-kaminari-rails52 SUBDIR += rubygem-kaminari-rails60 SUBDIR += rubygem-kaminari-rails61 SUBDIR += rubygem-kubeclient SUBDIR += rubygem-layout_yullio_generator SUBDIR += rubygem-less SUBDIR += rubygem-lighthouse-api SUBDIR += rubygem-link_header SUBDIR += rubygem-llhttp-ffi SUBDIR += rubygem-lograge SUBDIR += rubygem-lograge-rails5 SUBDIR += rubygem-lograge-rails52 SUBDIR += rubygem-lograge-rails60 SUBDIR += rubygem-lograge-rails61 SUBDIR += rubygem-maruku SUBDIR += rubygem-mechanize SUBDIR += rubygem-merb-assets SUBDIR += rubygem-merb-core SUBDIR += rubygem-merb-haml SUBDIR += rubygem-merb-helpers SUBDIR += rubygem-merb-param-protection SUBDIR += rubygem-mousetrap-rails SUBDIR += rubygem-multipart-post SUBDIR += rubygem-nanoc SUBDIR += rubygem-nanoc-checking SUBDIR += rubygem-nanoc-cli SUBDIR += rubygem-nanoc-core SUBDIR += rubygem-nanoc-deploying SUBDIR += rubygem-nested_form SUBDIR += rubygem-net-http SUBDIR += rubygem-net-http-digest_auth SUBDIR += rubygem-net-http-persistent SUBDIR += rubygem-net-http-persistent2 SUBDIR += rubygem-net-http-pipeline SUBDIR += rubygem-nicovideo SUBDIR += rubygem-ntlm-http SUBDIR += rubygem-octopress SUBDIR += rubygem-oembed SUBDIR += rubygem-ostatus2 SUBDIR += rubygem-pagerduty SUBDIR += rubygem-passenger SUBDIR += rubygem-patron SUBDIR += rubygem-platform-api SUBDIR += rubygem-propshaft SUBDIR += rubygem-protocol-hpack SUBDIR += rubygem-protocol-http SUBDIR += rubygem-protocol-http1 SUBDIR += rubygem-protocol-http2 SUBDIR += rubygem-protocol-rack SUBDIR += rubygem-protocol-websocket SUBDIR += rubygem-puma SUBDIR += rubygem-puma_worker_killer SUBDIR += rubygem-pusher-client SUBDIR += rubygem-rabbirack SUBDIR += rubygem-rack SUBDIR += rubygem-rack-accept SUBDIR += rubygem-rack-attack SUBDIR += rubygem-rack-cache SUBDIR += rubygem-rack-contrib SUBDIR += rubygem-rack-cors SUBDIR += rubygem-rack-mount SUBDIR += rubygem-rack-openid SUBDIR += rubygem-rack-protection SUBDIR += rubygem-rack-protection1 SUBDIR += rubygem-rack-protection2 SUBDIR += rubygem-rack-proxy SUBDIR += rubygem-rack-ssl SUBDIR += rubygem-rack-test SUBDIR += rubygem-rack-timeout SUBDIR += rubygem-rack16 SUBDIR += rubygem-rack22 SUBDIR += rubygem-rack_csrf SUBDIR += rubygem-rackup SUBDIR += rubygem-rails-settings-cached SUBDIR += rubygem-rails-settings-cached-rails5 SUBDIR += rubygem-rails-settings-cached-rails50 SUBDIR += rubygem-rails-settings-cached-rails61 SUBDIR += rubygem-rails4 SUBDIR += rubygem-rails5 SUBDIR += rubygem-rails50 SUBDIR += rubygem-rails52 SUBDIR += rubygem-rails60 SUBDIR += rubygem-rails61 SUBDIR += rubygem-rails70 SUBDIR += rubygem-rails_12factor SUBDIR += rubygem-rails_autolink SUBDIR += rubygem-rails_serve_static_assets SUBDIR += rubygem-rails_stdout_logging SUBDIR += rubygem-railties4 SUBDIR += rubygem-railties5 SUBDIR += rubygem-railties50 SUBDIR += rubygem-railties52 SUBDIR += rubygem-railties60 SUBDIR += rubygem-railties61 SUBDIR += rubygem-railties70 SUBDIR += rubygem-raindrops SUBDIR += rubygem-ramaze SUBDIR += rubygem-raphael-rails SUBDIR += rubygem-rate_throttle_client SUBDIR += rubygem-rbovirt SUBDIR += rubygem-rdf SUBDIR += rubygem-rdf-normalize SUBDIR += rubygem-redcloth SUBDIR += rubygem-redis-rack SUBDIR += rubygem-redis-rails SUBDIR += rubygem-redis-rails-rails5 SUBDIR += rubygem-redis-rails-rails50 SUBDIR += rubygem-redis-rails-rails52 SUBDIR += rubygem-redis-rails-rails60 SUBDIR += rubygem-redis-rails-rails61 SUBDIR += rubygem-responders SUBDIR += rubygem-responders-rails5 SUBDIR += rubygem-responders-rails52 SUBDIR += rubygem-responders-rails60 SUBDIR += rubygem-responders-rails61 SUBDIR += rubygem-responders-rails70 SUBDIR += rubygem-rest-client SUBDIR += rubygem-rfacebook SUBDIR += rubygem-rfeedfinder SUBDIR += rubygem-rinku SUBDIR += rubygem-rkelly-remix SUBDIR += rubygem-robotex SUBDIR += rubygem-robots SUBDIR += rubygem-roda SUBDIR += rubygem-rqrcode SUBDIR += rubygem-rqrcode-rails3 SUBDIR += rubygem-rqrcode2 SUBDIR += rubygem-rqrcode_core SUBDIR += rubygem-rss SUBDIR += rubygem-rtlit SUBDIR += rubygem-ruby-oembed SUBDIR += rubygem-ruby-readability SUBDIR += rubygem-savon SUBDIR += rubygem-sawyer SUBDIR += rubygem-select2-rails SUBDIR += rubygem-selenium-webdriver SUBDIR += rubygem-semantic-ui-sass SUBDIR += rubygem-simple-rss SUBDIR += rubygem-sinatra SUBDIR += rubygem-sinatra-contrib SUBDIR += rubygem-sinatra-contrib1 SUBDIR += rubygem-sinatra-contrib2 SUBDIR += rubygem-sinatra-r18n SUBDIR += rubygem-sinatra-respond_to SUBDIR += rubygem-sinatra1 SUBDIR += rubygem-sinatra2 SUBDIR += rubygem-sitemap_generator SUBDIR += rubygem-smashing SUBDIR += rubygem-socksify SUBDIR += rubygem-stimulus-rails SUBDIR += rubygem-swd SUBDIR += rubygem-tailwindcss-rails SUBDIR += rubygem-task_list SUBDIR += rubygem-thin SUBDIR += rubygem-tinyatom SUBDIR += rubygem-tinymce-rails SUBDIR += rubygem-toml-rb SUBDIR += rubygem-totoridipjp SUBDIR += rubygem-tumblr_client SUBDIR += rubygem-turbo-rails SUBDIR += rubygem-turbolinks SUBDIR += rubygem-turbolinks-source SUBDIR += rubygem-typhoeus SUBDIR += rubygem-uglifier SUBDIR += rubygem-underscore-rails SUBDIR += rubygem-unicorn SUBDIR += rubygem-unicorn-worker-killer SUBDIR += rubygem-url_escape SUBDIR += rubygem-url_mount SUBDIR += rubygem-vcr SUBDIR += rubygem-vegas SUBDIR += rubygem-wasabi SUBDIR += rubygem-webdrivers SUBDIR += rubygem-webmock SUBDIR += rubygem-webrick SUBDIR += rubygem-webrobots SUBDIR += rubygem-websocket SUBDIR += rubygem-websocket-client-simple SUBDIR += rubygem-websocket-driver SUBDIR += rubygem-websocket-extensions SUBDIR += rubygem-yapra SUBDIR += rustypaste SUBDIR += rustypaste-cli SUBDIR += s SUBDIR += sabredav SUBDIR += sahi SUBDIR += samdruckerserver SUBDIR += sarg SUBDIR += scloader SUBDIR += screego SUBDIR += script4rss SUBDIR += seahub SUBDIR += searx SUBDIR += selenium SUBDIR += serendipity SUBDIR += serf SUBDIR += servlet-api SUBDIR += sfeed SUBDIR += sfnt2woff SUBDIR += shellinabox SUBDIR += silicon SUBDIR += simple-web-server SUBDIR += sitecopy SUBDIR += slowcgi SUBDIR += slowhttptest SUBDIR += smarty SUBDIR += smarty2 SUBDIR += smarty3 SUBDIR += smb_auth SUBDIR += snarf SUBDIR += so SUBDIR += sogo SUBDIR += sogo-activesync SUBDIR += sogo2 SUBDIR += sogo2-activesync SUBDIR += spawn-fcgi SUBDIR += spreadlogd SUBDIR += sqstat SUBDIR += squid SUBDIR += squid-devel SUBDIR += squid_radius_auth SUBDIR += squidanalyzer SUBDIR += squidclamav SUBDIR += squidguard SUBDIR += squidpurge SUBDIR += squidview SUBDIR += srg SUBDIR += srt SUBDIR += stagit SUBDIR += stork SUBDIR += subsonic-standalone SUBDIR += suphp SUBDIR += surf SUBDIR += swiggle SUBDIR += tcexam SUBDIR += tclhttpd SUBDIR += tclwebtest SUBDIR += tdiary SUBDIR += tdom SUBDIR += template_ SUBDIR += templatelite SUBDIR += thirtybees SUBDIR += threejs SUBDIR += threema-web SUBDIR += thttpd SUBDIR += thumbnail_index SUBDIR += thundercache SUBDIR += thundersnarf SUBDIR += tidy SUBDIR += tidy-devel SUBDIR += tidy-html5 SUBDIR += tidy-lib SUBDIR += tikiwiki SUBDIR += tinymce SUBDIR += tinyproxy SUBDIR += tivoka SUBDIR += tntnet SUBDIR += tokyopromenade SUBDIR += tomcat-devel SUBDIR += tomcat-native SUBDIR += tomcat10 SUBDIR += tomcat101 SUBDIR += tomcat85 SUBDIR += tomcat9 SUBDIR += tomee SUBDIR += tor-browser SUBDIR += trac-devel SUBDIR += trafficserver SUBDIR += transmission-web SUBDIR += transproxy SUBDIR += tt-rss SUBDIR += tuifeed SUBDIR += tusc SUBDIR += tusd SUBDIR += twiki SUBDIR += twiki-BehaviourContrib SUBDIR += twiki-BlogAddOn SUBDIR += twiki-BugzillaLinkPlugin SUBDIR += twiki-ClassicSkin SUBDIR += twiki-CommentPlugin SUBDIR += twiki-EditTablePlugin SUBDIR += twiki-EmptyPlugin SUBDIR += twiki-GluePlugin SUBDIR += twiki-InterwikiPlugin SUBDIR += twiki-JSCalendarContrib SUBDIR += twiki-LDAPPasswordChangerPlugin SUBDIR += twiki-LdapContrib SUBDIR += twiki-LdapNgPlugin SUBDIR += twiki-MailerContrib SUBDIR += twiki-MathModePlugin SUBDIR += twiki-NewUserPlugin SUBDIR += twiki-PatternSkin SUBDIR += twiki-PreferencesPlugin SUBDIR += twiki-RenderListPlugin SUBDIR += twiki-SlideShowPlugin SUBDIR += twiki-SmiliesPlugin SUBDIR += twiki-SpreadSheetPlugin SUBDIR += twiki-SubscribePlugin SUBDIR += twiki-TWikiUserMappingContrib SUBDIR += twiki-TablePlugin SUBDIR += twiki-TagMePlugin SUBDIR += twiki-TinyMCEPlugin SUBDIR += twiki-TipsContrib SUBDIR += twiki-TopicVarsPlugin SUBDIR += twiki-TwistyContrib SUBDIR += twiki-TwistyPlugin SUBDIR += twiki-WysiwygPlugin SUBDIR += twms SUBDIR += typo3-11 SUBDIR += typo3-12 SUBDIR += uchiwa SUBDIR += ufdbguard SUBDIR += ulfius SUBDIR += ungoogled-chromium SUBDIR += unit SUBDIR += unit-java SUBDIR += unit-perl SUBDIR += unit-php SUBDIR += unit-python SUBDIR += unit-ruby SUBDIR += uwebsockets SUBDIR += uwsgi SUBDIR += uwsgitop SUBDIR += validator SUBDIR += varnish-ip2location SUBDIR += varnish-ip2proxy SUBDIR += varnish-libvmod-digest SUBDIR += varnish-libvmod-dynamic SUBDIR += varnish-libvmod-fileserver SUBDIR += varnish-libvmod-geoip2 SUBDIR += varnish-libvmod-maxminddb SUBDIR += varnish-libvmod-querystring SUBDIR += varnish-libvmod-redis SUBDIR += varnish-modules SUBDIR += varnish-nagios SUBDIR += varnish6 SUBDIR += varnish7 SUBDIR += varnish_exporter SUBDIR += vdr-plugin-live SUBDIR += vdradmin-am SUBDIR += vertx SUBDIR += vger SUBDIR += vimb SUBDIR += visitors SUBDIR += volta SUBDIR += vultr-cli SUBDIR += w3m SUBDIR += w3m-img SUBDIR += w3mir SUBDIR += wabt SUBDIR += web2ldap SUBDIR += webalizer SUBDIR += webbrowser SUBDIR += webcopy SUBDIR += webcrawl SUBDIR += webfs SUBDIR += webgrind SUBDIR += webhook SUBDIR += webinject SUBDIR += webkit2-gtk3 SUBDIR += webkit2-gtk4 SUBDIR += weblint++ SUBDIR += webpy SUBDIR += webresolve SUBDIR += websh SUBDIR += websocat SUBDIR += websocketd SUBDIR += webstone SUBDIR += webstone-ssl SUBDIR += webtrees SUBDIR += webtrees20 SUBDIR += wget2 SUBDIR += wgetpaste SUBDIR += wiki-tui SUBDIR += wikicalc SUBDIR += wordpress SUBDIR += wpebackend-fdo SUBDIR += writeas-cli SUBDIR += writefreely SUBDIR += wsdlpull SUBDIR += wslay SUBDIR += wsmake SUBDIR += wt SUBDIR += wuzz SUBDIR += wwwoffle SUBDIR += xapian-omega SUBDIR += xapian-omega12 SUBDIR += xcaddy SUBDIR += xfce4-smartbookmark-plugin SUBDIR += xh SUBDIR += xist SUBDIR += xoops SUBDIR += xsp SUBDIR += yabb SUBDIR += yanopaste SUBDIR += yarn SUBDIR += yarn-node14 SUBDIR += yarn-node16 SUBDIR += yarn-node18 SUBDIR += yarr SUBDIR += yaws SUBDIR += you-get SUBDIR += yourls SUBDIR += youtube_dl SUBDIR += yt-dlp SUBDIR += ytdl SUBDIR += yuicompressor SUBDIR += zend-framework SUBDIR += zenphoto SUBDIR += zerowait-httpd SUBDIR += zola .include diff --git a/www/qt6-webengine/Makefile b/www/qt6-webengine/Makefile new file mode 100644 index 000000000000..b9a0e87c6be4 --- /dev/null +++ b/www/qt6-webengine/Makefile @@ -0,0 +1,142 @@ +# QtWebEngine itself is a very thin layer of Qt code on top of a large part of +# Chromium (everything up to the content/ layer). As such, most of the work in +# this port revolves around taming Chromium and getting it to build on FreeBSD. +# While it does build at the moment, there are several items that should be +# investigated or improved: +# - We are using several stub files, especially in Chromium's base/ and net/ +# layers. We should look at implementing the missing bits instead. +# - We are currently not using any sandboxing mechanism. +# - The process of porting QtWebEngine needs to be documented so we can move to +# newer releases more easily. +# +# Also note that, due to the insane amount of patches this port needs, it tends +# to lag behind the rest of the official Qt6 ones, which is why we set +# QT6_VERSION and DISTINFO_FILE here. + +PORTNAME= webengine +DISTVERSION= ${QT6_VERSION} +CATEGORIES= www +PKGNAMEPREFIX= qt6- + +MAINTAINER= kde@FreeBSD.org +COMMENT= Qt 6 library to render web content + +BUILD_DEPENDS= ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \ + ${PYTHON_PKGNAMEPREFIX}html5lib>0:www/py-html5lib@${PY_FLAVOR} \ + ${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers +LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg \ + libdbus-1.so:devel/dbus \ + libevent.so:devel/libevent \ + libexpat.so:textproc/expat2 \ + libfontconfig.so:x11-fonts/fontconfig \ + libfreetype.so:print/freetype2 \ + libharfbuzz.so:print/harfbuzz \ + liblcms2.so:graphics/lcms2 \ + libnspr4.so:devel/nspr \ + libnss3.so:security/nss \ + libopenh264.so:multimedia/openh264 \ + libopus.so:audio/opus \ + libpci.so:devel/libpci \ + libpng.so:graphics/png \ + libre2.so:devel/re2 \ + libsnappy.so:archivers/snappy \ + libvpx.so:multimedia/libvpx \ + libwebp.so:graphics/webp \ + libxkbcommon.so:x11/libxkbcommon + +USES= bison cmake gl gnome gperf jpeg localbase:ldflags minizip ninja:build \ + nodejs:build,lts pkgconfig python:build qt-dist:6,webengine xorg +USE_GL= gl +USE_GNOME= glib20 libxml2 libxslt +USE_QT= base declarative:run positioning quick3d:build webchannel +USE_XORG= x11 xcb xcomposite xcursor xdamage xext xfixes xi xkbfile \ + xrandr xrender xscrnsaver xshmfence xtst + +CMAKE_ON= QT_FEATURE_webengine_system_ffmpeg QT_FEATURE_webengine_proprietary_codecs + +# The build system reads the environment variable $NINJA_PATH to decide whether +# to boostrap ninja or not (and also to invoke it afterwards). CC and CXX are +# read by some Chromium code to determine which compiler to invoke when running +# some configuration tests. +CONFIGURE_ENV+= NINJAFLAGS="-j${MAKE_JOBS_NUMBER}" \ + NINJA_PATH="${LOCALBASE}/bin/ninja" \ + PATH=${CONFIGURE_WRKSRC}/bin:${LOCALBASE}/bin:${PATH} +MAKE_ENV+= CC="${CC}" CXX="${CXX}" \ + C_INCLUDE_PATH=${LOCALBASE}/include \ + CPLUS_INCLUDE_PATH=${LOCALBASE}/include \ + ${CONFIGURE_ENV} +# Avoid running multiple make(1) jobs, but only those. Otherwise the build +# fails intermittently due race conditions if multiple ninja instances are +# running at the same time (mostly for the targets "WebEngineCore" and +# "convert_dict"). +# +# MAKE_JOBS_UNSAFE is too invasive because it also affects the number of jobs +# for ninja(1) and would slow everything down which we don't want. We pass the +# real number of make jobs via MAKE_JOBS_NUMBER to ninja(1) to CONFIGURE_ENV. +DO_MAKE_BUILD= ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} -j1 ${MAKE_ARGS:N${DESTDIRNAME}=*} + +BINARY_ALIAS= python=${PYTHON_CMD} + +# Add extra-patch-no-mempcpy-nasm only when there's no mempcpy() in base. +# Nested variable expansion avoids executing the test when not needed for +# expanding EXTRA_PATCHES. +# mempcpy was introduced in ee37f64cf875255338f917a9da76c643cf59786c +EXTRA_PATCHES+= ${"${:!${GREP} mempcpy ${CROSS_SYSROOT}/usr/include/string.h \ + || ${TRUE}!}" == "":?${PATCHDIR}/extra-patch-no-mempcpy-nasm:} + +DISTINFO_FILE= ${.CURDIR}/distinfo +QT6_VERSION= 6.4.2 + +OPTIONS_DEFAULT= ALSA +OPTIONS_SINGLE= AUDIO +OPTIONS_SINGLE_AUDIO= ALSA PULSEAUDIO SNDIO + +AUDIO_DESC= Audio backend + +# Need the alsa plugins to get sound at runtime, otherwise messages +# that the pcm_oss plugin can't be opened. +ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib +ALSA_RUN_DEPENDS= alsa-plugins>=0:audio/alsa-plugins +ALSA_CMAKE_ON= -DQT_FEATURE_webengine_system_alsa:BOOL=ON +ALSA_CMAKE_OFF= -DQT_FEATURE_webengine_system_alsa:BOOL=OFF +PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio +PULSEAUDIO_CMAKE_ON= -DQT_FEATURE_webengine_system_pulseaudio:BOOL=ON +PULSEAUDIO_CMAKE_OFF= -DQT_FEATURE_webengine_system_pulseaudio:BOOL=OFF +SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio +SNDIO_CMAKE_ON= -DQT_FEATURE_webengine_system_sndio:BOOL=ON +SNDIO_CMAKE_OFF= -DQT_FEATURE_webengine_system_sndio:BOOL=OFF + +.include + +.if ${ARCH} == i386 +EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-i386-compress_files_js +.endif + +post-extract: + @${MKDIR} ${WRKSRC}/src/3rdparty/chromium/media/audio/sndio \ + ${WRKSRC}/src/3rdparty/chromium/sandbox/policy/freebsd \ + ${WRKSRC}/src/3rdparty/chromium/sandbox/policy/openbsd + +post-patch: + @${REINPLACE_CMD} -e 's|%%DISTVERSION%%|${DISTVERSION}|' \ + ${WRKSRC}/CMakeLists.txt + @${REINPLACE_CMD} -e 's|%%CPPFLAGS%%|${CPPFLAGS}|;s|%%CXXFLAGS%%|${CXXFLAGS}|;s|%%LDFLAGS%%|${LDFLAGS}|' \ + ${WRKSRC}/src/host/BUILD.toolchain.gn.in + @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ + ${WRKSRC}/src/3rdparty/chromium/third_party/pdfium/core/fxge/linux/fx_linux_impl.cpp \ + ${WRKSRC}/src/3rdparty/chromium/third_party/wayland/features.gni + +pre-configure: +# We used to remove bundled libraries to be sure that webengine uses +# system libraries and not shipped ones. +# +# Leads to missing header errors: icu, libvpx, libwebp, re2, snappy, zlib +# No-Op: flac +# +# cd ${WRKSRC} && ${PYTHON_CMD} \ +# ./build/linux/unbundle/remove_bundled_libraries.py [list of preserved] + cd ${WRKSRC}/src/3rdparty/chromium && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} \ + ./build/linux/unbundle/replace_gn_files.py --system-libraries \ + fontconfig freetype harfbuzz-ng libdrm libevent libpng libxml libxslt openh264 opus || ${FALSE} + +.include diff --git a/www/qt6-webengine/distinfo b/www/qt6-webengine/distinfo new file mode 100644 index 000000000000..f6a54f0fbaf2 --- /dev/null +++ b/www/qt6-webengine/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1673107224 +SHA256 (KDE/Qt/6.4.2/qtwebengine-everywhere-src-6.4.2.tar.xz) = ffa945518d1cc8d9ee73523e8d9c2090844f5a2d9c7eac05c4ad079472a119c9 +SIZE (KDE/Qt/6.4.2/qtwebengine-everywhere-src-6.4.2.tar.xz) = 440538956 diff --git a/www/qt6-webengine/files/extra-patch-i386-compress_files_js b/www/qt6-webengine/files/extra-patch-i386-compress_files_js new file mode 100644 index 000000000000..80ea9a241cf1 --- /dev/null +++ b/www/qt6-webengine/files/extra-patch-i386-compress_files_js @@ -0,0 +1,14 @@ +Reduce Brotli compression on i386 to have more memory available. Otherwise, +node.js stops with either SIGSEGV or SIGABRT after ~530 processed files. + +--- src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/compress_files.js.orig 2023-01-10 09:16:05 UTC ++++ src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/compress_files.js +@@ -52,7 +52,7 @@ async function brotli(sourceData, compressedFilename) + output.write(Buffer.from(brotliConst)); + output.write(Buffer.from(sizeHeader)); + return new Promise((resolve, reject) => { +- pipeline(Readable.from(sourceData), zlib.createBrotliCompress(), output, err => { ++ pipeline(Readable.from(sourceData), zlib.createBrotliCompress({ params: { [zlib.constants.BROTLI_PARAM_QUALITY]: 5 } }), output, err => { + return err ? reject(err) : resolve(); + }); + }); diff --git a/www/qt6-webengine/files/extra-patch-no-mempcpy-nasm b/www/qt6-webengine/files/extra-patch-no-mempcpy-nasm new file mode 100644 index 000000000000..b9b39c0d846a --- /dev/null +++ b/www/qt6-webengine/files/extra-patch-no-mempcpy-nasm @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/nasm/config/config-linux.h.orig 2022-06-08 06:40:31 UTC ++++ src/3rdparty/chromium/third_party/nasm/config/config-linux.h +@@ -336,7 +336,7 @@ + #define HAVE_MEMORY_H 1 + + /* Define to 1 if you have the `mempcpy' function. */ +-#define HAVE_MEMPCPY 1 ++/* #undef HAVE_MEMPCPY */ + + /* Define to 1 if you have a working `mmap' system call. */ + #define HAVE_MMAP 1 diff --git a/www/qt6-webengine/files/patch-CMakeLists.txt b/www/qt6-webengine/files/patch-CMakeLists.txt new file mode 100644 index 000000000000..bf0b352933df --- /dev/null +++ b/www/qt6-webengine/files/patch-CMakeLists.txt @@ -0,0 +1,15 @@ +Set the actual version of www/qt6-webengine, otherwise the version of qt6-base, +which is present in the ports tree, would be assumed and used during +compilation. + +--- CMakeLists.txt.orig 2023-01-06 21:06:32 UTC ++++ CMakeLists.txt +@@ -12,7 +12,7 @@ project(QtWebEngine + find_package(Qt6 6.2 CONFIG REQUIRED COMPONENTS BuildInternals Core) + + project(QtWebEngine +- VERSION ${Qt6Core_VERSION} ++ VERSION %%DISTVERSION%% + DESCRIPTION "QtWebEngine and QtPdf modules" + HOMEPAGE_URL "https://qt.io/" + LANGUAGES CXX C diff --git a/www/qt6-webengine/files/patch-cmake_Functions.cmake b/www/qt6-webengine/files/patch-cmake_Functions.cmake new file mode 100644 index 000000000000..a517ad1cb479 --- /dev/null +++ b/www/qt6-webengine/files/patch-cmake_Functions.cmake @@ -0,0 +1,104 @@ +--- cmake/Functions.cmake.orig 2022-11-08 21:18:48 UTC ++++ cmake/Functions.cmake +@@ -429,7 +429,7 @@ function(add_linker_options target buildDir completeSt + set(archives_rsp "${buildDir}/${ninjaTarget}_archives.rsp") + set(libs_rsp "${buildDir}/${ninjaTarget}_libs.rsp") + set_target_properties(${cmakeTarget} PROPERTIES STATIC_LIBRARY_OPTIONS "@${objects_rsp}") +- if(LINUX) ++ if(LINUX OR FREEBSD) + get_gn_arch(cpu ${TEST_architecture_arch}) + if(CMAKE_CROSSCOMPILING AND cpu STREQUAL "arm" AND ${config} STREQUAL "Debug") + target_link_options(${cmakeTarget} PRIVATE "LINKER:--long-plt") +@@ -667,6 +667,8 @@ function(get_gn_os result) + set(${result} "mac" PARENT_SCOPE) + elseif(IOS) + set(${result} "ios" PARENT_SCOPE) ++ elseif(FREEBSD) ++ set(${result} "freebsd" PARENT_SCOPE) + else() + message(DEBUG "Unrecognized OS") + endif() +@@ -854,7 +856,7 @@ macro(append_build_type_setup) + + extend_gn_list(gnArgArg + ARGS enable_precompiled_headers +- CONDITION BUILD_WITH_PCH AND NOT LINUX ++ CONDITION BUILD_WITH_PCH AND NOT (LINUX OR FREEBSD) + ) + extend_gn_list(gnArgArg + ARGS dcheck_always_on +@@ -902,7 +904,7 @@ macro(append_compiler_linker_sdk_setup) + use_libcxx=true + ) + endif() +- if(DEFINED QT_FEATURE_stdlib_libcpp AND LINUX) ++ if(DEFINED QT_FEATURE_stdlib_libcpp AND (LINUX OR FREEBSD)) + extend_gn_list(gnArgArg ARGS use_libcxx + CONDITION QT_FEATURE_stdlib_libcpp + ) +@@ -930,7 +932,7 @@ macro(append_compiler_linker_sdk_setup) + ) + endif() + get_gn_arch(cpu ${TEST_architecture_arch}) +- if(LINUX AND CMAKE_CROSSCOMPILING AND cpu STREQUAL "arm") ++ if((LINUX OR FREEBSD) AND CMAKE_CROSSCOMPILING AND cpu STREQUAL "arm") + + extend_gn_list_cflag(gnArgArg + ARG arm_tune +@@ -997,7 +999,7 @@ macro(append_toolchain_setup) + endmacro() + + macro(append_toolchain_setup) +- if(LINUX) ++ if(LINUX OR FREEBSD) + list(APPEND gnArgArg + custom_toolchain="${buildDir}/target_toolchain:target" + host_toolchain="${buildDir}/host_toolchain:host" +@@ -1024,7 +1026,7 @@ macro(append_pkg_config_setup) + + + macro(append_pkg_config_setup) +- if(LINUX) ++ if(LINUX OR FREEBSD) + list(APPEND gnArgArg + pkg_config="${PKG_CONFIG_EXECUTABLE}" + host_pkg_config="${PKG_CONFIG_HOST_EXECUTABLE}" +@@ -1100,6 +1102,20 @@ function(add_gn_build_aritfacts_to_target cmakeTarget + set_target_properties(${cmakeTarget} PROPERTIES + LINK_DEPENDS ${buildDir}/${config}/${arch}/${ninjaTarget}.stamp + ) ++ # For some reason when the build of QtWebEngine's "convert_dict" is ++ # completed the "convert_dict.stamp" isn't created. ++ # ++ # Work around this issue by creating "convert_dict.stamp" manually. ++ if(${ninjaTarget} STREQUAL "convert_dict") ++ add_custom_command( ++ POST_BUILD ++ COMMENT "Add workaround for missing ${ninjaTarget}.stamp file after build" ++ COMMAND ${CMAKE_COMMAND} -E touch ${buildDir}/${config}/${arch}/${ninjaTarget}.stamp ++ TARGET ${target} ++ DEPENDS run_${module}_NinjaDone ++ USES_TERMINAL ++ ) ++ endif() + if(QT_IS_MACOS_UNIVERSAL) + add_intermediate_archive(${target} ${buildDir}/${config}/${arch} ${completeStatic}) + elseif(IOS) +@@ -1222,7 +1238,7 @@ function(check_for_ulimit) + + function(check_for_ulimit) + message("-- Checking 'ulimit -n'") +- execute_process(COMMAND bash -c "ulimit -n" ++ execute_process(COMMAND sh -c "ulimit -n" + OUTPUT_VARIABLE ulimitOutput + ) + string(REGEX MATCHALL "[0-9]+" limit "${ulimitOutput}") +@@ -1231,7 +1247,7 @@ function(check_for_ulimit) + if(NOT ${CMAKE_VERSION} VERSION_LESS "3.21.0") + message(" -- Creating linker launcher") + file(GENERATE OUTPUT ${PROJECT_BINARY_DIR}/linker_ulimit.sh +- CONTENT "#!/bin/bash\nulimit -n 4096\nexec \"$@\"" ++ CONTENT "#!/bin/sh\nulimit -n 4096\nexec \"$@\"" + FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ + ) + set(COIN_BUG_699 ON PARENT_SCOPE) diff --git a/www/qt6-webengine/files/patch-configure.cmake b/www/qt6-webengine/files/patch-configure.cmake new file mode 100644 index 000000000000..75ec26e9cf29 --- /dev/null +++ b/www/qt6-webengine/files/patch-configure.cmake @@ -0,0 +1,44 @@ +--- configure.cmake.orig 2022-09-26 10:05:50 UTC ++++ configure.cmake +@@ -59,7 +59,7 @@ endif() + endif() + + #### Tests +-if(LINUX) ++if(LINUX OR FREEBSD) + check_for_ulimit() + endif() + +@@ -403,7 +403,7 @@ qt_feature("webengine-ozone-x11" PRIVATE + + qt_feature("webengine-ozone-x11" PRIVATE + LABEL "Support GLX on qpa-xcb" +- CONDITION LINUX ++ CONDITION LINUX OR FREEBSD + AND TARGET Qt::Gui + AND QT_FEATURE_xcb + AND X11_FOUND +@@ -440,12 +440,12 @@ add_check_for_support( + ) + add_check_for_support( + MODULES QtWebEngine +- CONDITION LINUX OR (WIN32 AND NOT WIN_ARM_64) OR MACOS ++ CONDITION LINUX OR (WIN32 AND NOT WIN_ARM_64) OR MACOS OR FREEBSD + MESSAGE "Build can be done only on Linux, Windows or macOS." + ) + add_check_for_support( + MODULES QtPdf +- CONDITION LINUX OR (WIN32 AND NOT WIN_ARM_64) OR MACOS OR IOS ++ CONDITION LINUX OR (WIN32 AND NOT WIN_ARM_64) OR MACOS OR IOS OR FREEBSD + MESSAGE "Build can be done only on Linux, Windows, macOS or iOS." + ) + if(LINUX AND CMAKE_CROSSCOMPILING) +@@ -546,6 +546,8 @@ add_check_for_support( + CONDITION + (LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL GNU) OR + (LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL Clang) OR ++ (FREEBSD AND CMAKE_CXX_COMPILER_ID STREQUAL GNU) OR ++ (FREEBSD AND CMAKE_CXX_COMPILER_ID STREQUAL Clang) OR + (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL MSVC) OR + (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL Clang AND + CMAKE_CXX_SIMULATE_ID STREQUAL MSVC) OR diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_BUILD.gn new file mode 100644 index 000000000000..2a0bae22b541 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_BUILD.gn @@ -0,0 +1,56 @@ +--- src/3rdparty/chromium/BUILD.gn.orig 2022-11-08 21:18:48 UTC ++++ src/3rdparty/chromium/BUILD.gn +@@ -55,7 +55,7 @@ declare_args() { + qtwebengine_target = "//tools/gn" + } + +-if (is_official_build) { ++if (is_official_build && !is_bsd) { + # An official (maximally optimized!) component (optimized for build times) + # build doesn't make sense and usually doesn't work. + assert(!is_component_build) +@@ -451,7 +451,7 @@ group("gn_all") { + ] + } + +- if (is_linux || is_chromeos || is_android) { ++ if ((is_linux && !is_bsd) || is_chromeos || is_android) { + deps += [ + "//third_party/breakpad:breakpad_unittests", + "//third_party/breakpad:core-2-minidump", +@@ -696,7 +696,7 @@ group("gn_all") { + host_os == "win" && !use_qt) { + deps += [ "//chrome/test/mini_installer:mini_installer_tests" ] + } +- } else if (!is_android && !is_ios && !is_fuchsia && !is_win) { ++ } else if (!is_android && !is_ios && !is_fuchsia && !is_win && !is_bsd) { + deps += [ "//third_party/breakpad:symupload($host_toolchain)" ] + } + +@@ -1172,7 +1172,7 @@ if (!is_ios && !use_qt) { + data_deps += [ "//content/web_test:web_test_common_mojom_js_data_deps" ] + } + +- if (!is_win && !is_android) { ++ if (!is_win && !is_android && !is_bsd) { + data_deps += + [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ] + } +@@ -1181,7 +1181,7 @@ if (!is_ios && !use_qt) { + data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] + } + +- if (is_linux || is_chromeos) { ++ if ((is_linux && !is_bsd) || is_chromeos) { + data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] + } + +@@ -1580,7 +1580,7 @@ group("chromium_builder_perf") { + + if (is_win) { + data_deps += [ "//chrome/installer/mini_installer:mini_installer" ] +- } else { ++ } else if (!is_bsd) { + data_deps += + [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ] + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_BUILD.gn new file mode 100644 index 000000000000..562495d3c1b5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_BUILD.gn @@ -0,0 +1,148 @@ +--- src/3rdparty/chromium/base/BUILD.gn.orig 2022-11-08 21:18:48 UTC ++++ src/3rdparty/chromium/base/BUILD.gn +@@ -1000,7 +1000,7 @@ jumbo_component("base") { + "timer/hi_res_timer_manager_posix.cc", + ] + +- if (!is_nacl && !is_apple) { ++ if (!is_nacl && !is_apple && !is_bsd) { + sources += [ + "cpu_affinity_posix.cc", + "cpu_affinity_posix.h", +@@ -1011,6 +1011,12 @@ jumbo_component("base") { + "profiler/thread_delegate_posix.h", + ] + } ++ ++ if (is_bsd) { ++ sources += [ ++ "profiler/stack_sampler_posix.cc", ++ ] ++ } + } + + jumbo_excluded_sources = [ +@@ -1360,7 +1366,6 @@ jumbo_component("base") { + "process/process_metrics_linux.cc", + "threading/platform_thread_linux.cc", + ] +- jumbo_excluded_sources += [ "process/memory_linux.cc" ] + } + + if (is_linux || is_chromeos || is_android || is_fuchsia) { +@@ -1502,6 +1507,18 @@ jumbo_component("base") { + libs += [ "atomic" ] + } + ++ # *BSD needs libkvm ++ if (is_bsd) { ++ libs += [ "kvm" ] ++ } ++ ++ if (is_freebsd) { ++ libs += [ ++ "execinfo", ++ "util", ++ ] ++ } ++ + if (use_allocator_shim) { + sources += [ + "allocator/allocator_shim.cc", +@@ -1529,7 +1546,7 @@ jumbo_component("base") { + ] + configs += [ "//base/allocator:mac_no_default_new_delete_symbols" ] + } +- if (is_chromeos || is_linux) { ++ if (is_chromeos || (is_linux && !is_bsd)) { + sources += [ + "allocator/allocator_shim_override_cpp_symbols.h", + "allocator/allocator_shim_override_glibc_weak_symbols.h", +@@ -1585,7 +1602,7 @@ jumbo_component("base") { + + # Allow more direct string conversions on platforms with native utf8 + # strings +- if (is_apple || is_chromeos || is_chromecast || is_fuchsia) { ++ if (is_apple || is_chromeos || is_chromecast || is_fuchsia || is_bsd) { + defines += [ "SYSTEM_NATIVE_UTF8" ] + } + +@@ -2163,6 +2180,42 @@ jumbo_component("base") { + } + } + ++ if (is_bsd) { ++ sources -= [ ++ "files/file_path_watcher_inotify.cc", ++ "files/file_util_linux.cc", ++ "files/scoped_file_linux.cc", ++ "process/memory_linux.cc", ++ "process/process_linux.cc", ++ "system/sys_info_linux.cc", ++ "process/process_iterator_linux.cc", ++ "process/process_metrics_linux.cc", ++ "process/process_handle_linux.cc" ++ ] ++ sources += [ ++ "process/memory_stubs.cc", ++ "files/file_path_watcher_kqueue.cc", ++ "files/file_path_watcher_kqueue.h", ++ "files/file_path_watcher_bsd.cc", ++ ] ++ } ++ ++ if (is_openbsd) { ++ sources += [ ++ "process/process_handle_openbsd.cc", ++ "process/process_iterator_openbsd.cc", ++ "process/process_metrics_openbsd.cc", ++ "system/sys_info_openbsd.cc", ++ ] ++ } else if (is_freebsd) { ++ sources += [ ++ "process/process_handle_freebsd.cc", ++ "process/process_iterator_freebsd.cc", ++ "process/process_metrics_freebsd.cc", ++ "system/sys_info_freebsd.cc", ++ ] ++ } ++ + # iOS + if (is_ios) { + sources -= [ +@@ -3452,7 +3505,7 @@ test("base_unittests") { + } + } + +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + sources += [ + "debug/proc_maps_linux_unittest.cc", + "files/scoped_file_linux_unittest.cc", +@@ -3500,7 +3553,7 @@ test("base_unittests") { + "posix/unix_domain_socket_unittest.cc", + "task/thread_pool/task_tracker_posix_unittest.cc", + ] +- if (!is_nacl && !is_apple) { ++ if (!is_nacl && !is_apple && !is_bsd) { + sources += [ + "cpu_affinity_posix_unittest.cc", + "profiler/stack_copier_signal_unittest.cc", +@@ -3511,7 +3564,7 @@ test("base_unittests") { + + # Allow more direct string conversions on platforms with native utf8 + # strings +- if (is_apple || is_chromeos || is_chromecast || is_fuchsia) { ++ if (is_apple || is_chromeos || is_chromecast || is_fuchsia || is_bsd) { + defines += [ "SYSTEM_NATIVE_UTF8" ] + } + +@@ -3673,7 +3726,7 @@ test("base_unittests") { + } + } + +- if (is_fuchsia || is_linux || is_chromeos) { ++ if ((is_fuchsia || is_linux || is_chromeos) && !is_bsd) { + sources += [ + "debug/elf_reader_unittest.cc", + "debug/test_elf_image_builder.cc", diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_address__space__randomization.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_address__space__randomization.h new file mode 100644 index 000000000000..600707fc9f11 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_address__space__randomization.h @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/address_space_randomization.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/address_space_randomization.h +@@ -38,7 +38,7 @@ AslrMask(uintptr_t bits) { + + #if defined(ARCH_CPU_64_BITS) + +- #if defined(MEMORY_TOOL_REPLACES_ALLOCATOR) ++ #if defined(MEMORY_TOOL_REPLACES_ALLOCATOR) && !defined(OS_BSD) + + // We shouldn't allocate system pages at all for sanitizer builds. However, + // we do, and if random hint addresses interfere with address ranges +@@ -121,7 +121,7 @@ AslrMask(uintptr_t bits) { + return AslrAddress(0x20000000ULL); + } + +- #elif BUILDFLAG(IS_LINUX) ++ #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + + // Linux on arm64 can use 39, 42, 48, or 52-bit user space, depending on + // page size and number of levels of translation pages used. We use diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator.h new file mode 100644 index 000000000000..d478228c4770 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator.h +@@ -194,7 +194,7 @@ constexpr BASE_EXPORT bool DecommittedMemoryIsAlwaysZe + // Whether decommitted memory is guaranteed to be zeroed when it is + // recommitted. Do not assume that this will not change over time. + constexpr BASE_EXPORT bool DecommittedMemoryIsAlwaysZeroed() { +-#if BUILDFLAG(IS_APPLE) ++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) + return false; + #else + return true; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator__constants.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator__constants.h new file mode 100644 index 000000000000..126aa403ea69 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator__constants.h @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h +@@ -24,7 +24,7 @@ + // elimination. + #define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const)) + +-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + // This should work for all POSIX (if needed), but currently all other + // supported OS/architecture combinations use either hard-coded values + // (such as x86) or have means to determine these values without needing +@@ -79,7 +79,7 @@ PageAllocationGranularityShift() { + return 14; // 16kB + #elif BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS) + return vm_page_shift; +-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + // arm64 supports 4kb (shift = 12), 16kb (shift = 14), and 64kb (shift = 16) + // page sizes. Retrieve from or initialize cache. + int shift = page_characteristics.shift.load(std::memory_order_relaxed); +@@ -99,7 +99,7 @@ PageAllocationGranularity() { + // This is literally equivalent to |1 << PageAllocationGranularityShift()| + // below, but was separated out for IS_APPLE to avoid << on a non-constexpr. + return vm_page_size; +-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + // arm64 supports 4kb, 16kb, and 64kb page sizes. Retrieve from or + // initialize cache. + int size = page_characteristics.size.load(std::memory_order_relaxed); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator__internals__posix.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator__internals__posix.h new file mode 100644 index 000000000000..9af9d257cf60 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator__internals__posix.h @@ -0,0 +1,16 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_internals_posix.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_internals_posix.h +@@ -352,8 +352,12 @@ void DiscardSystemPagesInternal(uintptr_t address, siz + + void DiscardSystemPagesInternal(uintptr_t address, size_t length) { + void* ptr = reinterpret_cast(address); +-#if BUILDFLAG(IS_APPLE) ++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) ++#if BUILDFLAG(IS_BSD) ++ int ret = madvise(ptr, length, MADV_FREE); ++#else + int ret = madvise(ptr, length, MADV_FREE_REUSABLE); ++#endif + if (ret) { + // MADV_FREE_REUSABLE sometimes fails, so fall back to MADV_DONTNEED. + ret = madvise(ptr, length, MADV_DONTNEED); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__address__space.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__address__space.cc new file mode 100644 index 000000000000..d5eb2f8e6ab8 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__address__space.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/partition_address_space.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/partition_address_space.cc +@@ -184,7 +184,7 @@ void PartitionAddressSpace::UninitConfigurablePoolForT + setup_.configurable_pool_ = 0; + } + +-#if BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + + PageCharacteristics page_characteristics; + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__alloc.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__alloc.cc new file mode 100644 index 000000000000..bcd2666febd2 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__alloc.cc @@ -0,0 +1,17 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc.cc.orig 2022-11-06 10:07:10 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc.cc +@@ -63,8 +63,14 @@ void PartitionAllocGlobalInit(OomFunction on_out_of_me + "maximum direct mapped allocation"); + + // Check that some of our zanier calculations worked out as expected. ++#if defined(__i386__) && defined(OS_FREEBSD) ++ // alignof(std::max_align_t) is only 4 on FreeBSD/i386 ++ static_assert(internal::kSmallestBucket >= internal::kAlignment, ++ "generic smallest bucket"); ++#else + static_assert(internal::kSmallestBucket == internal::kAlignment, + "generic smallest bucket"); ++#endif + static_assert(internal::kMaxBucketed == 917504, "generic max bucketed"); + STATIC_ASSERT_OR_PA_CHECK( + internal::MaxSystemPagesPerRegularSlotSpan() <= 16, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__alloc__config.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__alloc__config.h new file mode 100644 index 000000000000..bf2ddbcbaf2b --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__alloc__config.h @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_config.h.orig 2022-11-06 10:11:11 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_config.h +@@ -66,7 +66,7 @@ static_assert(sizeof(void*) != 8, ""); + + // POSIX is not only UNIX, e.g. macOS and other OSes. We do use Linux-specific + // features such as futex(2). +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + #define PA_HAS_LINUX_KERNEL + #endif + +@@ -186,7 +186,7 @@ constexpr bool kUseLazyCommit = false; + + // On these platforms, lock all the partitions before fork(), and unlock after. + // This may be required on more platforms in the future. +-#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #define PA_HAS_ATFORK_HANDLER + #endif + +@@ -225,7 +225,7 @@ constexpr bool kUseLazyCommit = false; + // + // Also enabled on ARM64 macOS, as the 16kiB pages on this platform lead to + // larger slot spans. +-#if BUILDFLAG(IS_LINUX) || (BUILDFLAG(IS_MAC) && defined(ARCH_CPU_ARM64)) ++#if BUILDFLAG(IS_LINUX) || (BUILDFLAG(IS_MAC) && defined(ARCH_CPU_ARM64)) || BUILDFLAG(IS_BSD) + #define PA_PREFER_SMALLER_SLOT_SPANS + #endif // BUILDFLAG(IS_LINUX) + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__alloc__constants.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__alloc__constants.h new file mode 100644 index 000000000000..ca9926dc66b4 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__alloc__constants.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h +@@ -80,7 +80,7 @@ PartitionPageShift() { + return 18; // 256 KiB + } + #elif (BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS)) || \ +- (BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)) ++ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64)) + PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t + PartitionPageShift() { + return PageAllocationGranularityShift() + 2; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__page.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__page.h new file mode 100644 index 000000000000..3b40855b8424 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__page.h @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/partition_page.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/partition_page.h +@@ -130,13 +130,14 @@ struct SlotSpanMetadata { + PartitionBucket* const bucket = nullptr; + + // CHECK()ed in AllocNewSlotSpan(). +-#if defined(PA_HAS_64_BITS_POINTERS) && BUILDFLAG(IS_APPLE) ++#if (defined(PA_HAS_64_BITS_POINTERS) && BUILDFLAG(IS_APPLE)) || \ ++ (BUILDFLAG(IS_FREEBSD) && defined(__i386__)) + // System page size is not a constant on Apple OSes, but is either 4 or 16kiB + // (1 << 12 or 1 << 14), as checked in PartitionRoot::Init(). And + // PartitionPageSize() is 4 times the OS page size. + static constexpr size_t kMaxSlotsPerSlotSpan = + 4 * (1 << 14) / kSmallestBucket; +-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + // System page size can be 4, 16, or 64 kiB on Linux on arm64. 64 kiB is + // currently (kMaxSlotsPerSlotSpanBits == 13) not supported by the code, + // so we use the 16 kiB maximum (64 kiB will crash). +@@ -150,7 +151,9 @@ struct SlotSpanMetadata { + #endif // defined(PA_HAS_64_BITS_POINTERS) && BUILDFLAG(IS_APPLE) + // The maximum number of bits needed to cover all currently supported OSes. + static constexpr size_t kMaxSlotsPerSlotSpanBits = 13; ++#if !BUILDFLAG(IS_FREEBSD) && defined(__i386__) + static_assert(kMaxSlotsPerSlotSpan < (1 << kMaxSlotsPerSlotSpanBits), ""); ++#endif + + // |marked_full| isn't equivalent to being full. Slot span is marked as full + // iff it isn't on the active slot span list (or any other list). diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__root.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__root.cc new file mode 100644 index 000000000000..14f10c71b2fe --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__root.cc @@ -0,0 +1,38 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/partition_root.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/partition_root.cc +@@ -29,7 +29,7 @@ + #include "wow64apiset.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include + #endif + +@@ -226,7 +226,7 @@ void PartitionAllocMallocInitOnce() { + if (!g_global_init_called.compare_exchange_strong(expected, true)) + return; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // When fork() is called, only the current thread continues to execute in the + // child process. If the lock is held, but *not* by this thread when fork() is + // called, we have a deadlock. +@@ -305,7 +305,7 @@ static size_t PartitionPurgeSlotSpan( + constexpr size_t kMaxSlotCount = + (PartitionPageSize() * kMaxPartitionPagesPerRegularSlotSpan) / + SystemPageSize(); +-#elif BUILDFLAG(IS_APPLE) || (BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)) ++#elif BUILDFLAG(IS_APPLE) || ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64)) + // It's better for slot_usage to be stack-allocated and fixed-size, which + // demands that its size be constexpr. On IS_APPLE and Linux on arm64, + // PartitionPageSize() is always SystemPageSize() << 2, so regardless of +@@ -648,7 +648,7 @@ void PartitionRoot::Init(PartitionOptions + // apple OSes. + PA_CHECK((internal::SystemPageSize() == (size_t{1} << 12)) || + (internal::SystemPageSize() == (size_t{1} << 14))); +-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + // Check runtime pagesize. Though the code is currently the same, it is + // not merged with the IS_APPLE case above as a 1 << 16 case needs to be + // added here in the future, to allow 64 kiB pagesize. That is only diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_spinning__mutex.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_spinning__mutex.cc new file mode 100644 index 000000000000..fe81f9d7a012 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_spinning__mutex.cc @@ -0,0 +1,47 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/spinning_mutex.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/spinning_mutex.cc +@@ -17,7 +17,15 @@ + + #if defined(PA_HAS_LINUX_KERNEL) + #include ++#if defined(OS_OPENBSD) ++#include ++#elif defined(OS_FREEBSD) ++#include ++#include ++#include ++#else + #include ++#endif + #include + #include + #endif // defined(PA_HAS_LINUX_KERNEL) +@@ -116,8 +124,13 @@ void SpinningMutex::FutexWait() { + // |kLockedContended| anymore. Note that even without spurious wakeups, the + // value of |state_| is not guaranteed when this returns, as another thread + // may get the lock before we get to run. ++#if defined(OS_FREEBSD) ++ int err = _umtx_op(&state_, UMTX_OP_WAIT_UINT_PRIVATE, ++ kLockedContended, nullptr, nullptr); ++#else + int err = syscall(SYS_futex, &state_, FUTEX_WAIT | FUTEX_PRIVATE_FLAG, + kLockedContended, nullptr, nullptr, 0); ++#endif + + if (err) { + // These are programming error, check them. +@@ -129,8 +142,14 @@ void SpinningMutex::FutexWake() { + + void SpinningMutex::FutexWake() { + int saved_errno = errno; ++#if defined(OS_FREEBSD) ++ long retval = _umtx_op(&state_, UMTX_OP_WAKE_PRIVATE, ++ 1 /* wake up a single waiter */, nullptr, nullptr); ++#else + long retval = syscall(SYS_futex, &state_, FUTEX_WAKE | FUTEX_PRIVATE_FLAG, + 1 /* wake up a single waiter */, nullptr, nullptr, 0); ++#endif ++ + PA_CHECK(retval != -1); + errno = saved_errno; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_spinning__mutex.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_spinning__mutex.h new file mode 100644 index 000000000000..2b8db33decb3 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_spinning__mutex.h @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/spinning_mutex.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/spinning_mutex.h +@@ -114,7 +114,7 @@ class LOCKABLE BASE_EXPORT SpinningMutex { + + #if defined(PA_HAS_FAST_MUTEX) + +-#if defined(PA_HAS_LINUX_KERNEL) ++#if defined(PA_HAS_LINUX_KERNEL) || defined(PA_HAS_FREEBSD_KERNEL) + void FutexWait(); + void FutexWake(); + +@@ -166,7 +166,7 @@ inline constexpr SpinningMutex::SpinningMutex() = defa + + #if defined(PA_HAS_FAST_MUTEX) + +-#if defined(PA_HAS_LINUX_KERNEL) ++#if defined(PA_HAS_LINUX_KERNEL) || defined(PA_HAS_FREEBSD_KERNEL) + + ALWAYS_INLINE bool SpinningMutex::Try() { + // Using the weak variant of compare_exchange(), which may fail spuriously. On diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_starscan_stack_stack.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_starscan_stack_stack.cc new file mode 100644 index 000000000000..797bbb22cb23 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_starscan_stack_stack.cc @@ -0,0 +1,50 @@ +--- src/3rdparty/chromium/base/allocator/partition_allocator/starscan/stack/stack.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/allocator/partition_allocator/starscan/stack/stack.cc +@@ -17,6 +17,10 @@ + #include + #endif + ++#if defined(OS_BSD) ++#include ++#endif ++ + #if defined(LIBC_GLIBC) + extern "C" void* __libc_stack_end; + #endif +@@ -47,6 +51,36 @@ void* GetStackTop() { + + void* GetStackTop() { + return pthread_get_stackaddr_np(pthread_self()); ++} ++ ++#elif defined(OS_OPENBSD) ++ ++void* GetStackTop() { ++ stack_t ss; ++ if (pthread_stackseg_np(pthread_self(), &ss) != 0) ++ return nullptr; ++ return reinterpret_cast(ss.ss_sp); ++} ++ ++#elif defined(OS_FREEBSD) ++ ++void* GetStackTop() { ++ pthread_attr_t attr; ++ int error = pthread_attr_init(&attr); ++ if (error) { ++ return nullptr; ++ } ++ error = pthread_attr_get_np(pthread_self(), &attr); ++ if (!error) { ++ void* base; ++ size_t size; ++ error = pthread_attr_getstack(&attr, &base, &size); ++ PA_CHECK(!error); ++ pthread_attr_destroy(&attr); ++ return reinterpret_cast(base) + size; ++ } ++ pthread_attr_destroy(&attr); ++ return nullptr; + } + + #elif BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_atomicops.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_atomicops.h new file mode 100644 index 000000000000..21ef50be14b4 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_atomicops.h @@ -0,0 +1,14 @@ +--- src/3rdparty/chromium/base/atomicops.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/atomicops.h +@@ -56,7 +56,11 @@ typedef intptr_t Atomic64; + + // Use AtomicWord for a machine-sized pointer. It will use the Atomic32 or + // Atomic64 routines below, depending on your architecture. ++#if !defined(OS_OPENBSD) && defined(__i386__) ++typedef Atomic32 AtomicWord; ++#else + typedef intptr_t AtomicWord; ++#endif + + // Atomically execute: + // result = *ptr; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_base__paths__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_base__paths__posix.cc new file mode 100644 index 000000000000..ad985e66d7cb --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_base__paths__posix.cc @@ -0,0 +1,98 @@ +--- src/3rdparty/chromium/base/base_paths_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/base_paths_posix.cc +@@ -15,6 +15,7 @@ + #include + #include + ++#include "base/command_line.h" + #include "base/environment.h" + #include "base/files/file_path.h" + #include "base/files/file_util.h" +@@ -25,9 +26,13 @@ + #include "base/process/process_metrics.h" + #include "build/build_config.h" + +-#if BUILDFLAG(IS_FREEBSD) ++#if BUILDFLAG(IS_BSD) + #include + #include ++#if BUILDFLAG(IS_OPENBSD) ++#include ++#define MAXTOKENS 2 ++#endif + #elif BUILDFLAG(IS_SOLARIS) || BUILDFLAG(IS_AIX) + #include + #endif +@@ -68,13 +73,65 @@ bool PathProviderPosix(int key, FilePath* result) { + *result = FilePath(bin_dir); + return true; + #elif BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_AIX) +- // There is currently no way to get the executable path on OpenBSD +- char* cpath; +- if ((cpath = getenv("CHROME_EXE_PATH")) != NULL) +- *result = FilePath(cpath); +- else +- *result = FilePath("/usr/local/chrome/chrome"); +- return true; ++ char *cpath; ++#if !BUILDFLAG(IS_AIX) ++ struct kinfo_file *files; ++ kvm_t *kd = NULL; ++ char errbuf[_POSIX2_LINE_MAX]; ++ static char retval[PATH_MAX]; ++ int cnt; ++ struct stat sb; ++ pid_t cpid = getpid(); ++ bool ret = false; ++ ++ const base::CommandLine* command_line = ++ base::CommandLine::ForCurrentProcess(); ++ ++ VLOG(1) << "PathProviderPosix argv: " << command_line->argv()[0]; ++ ++ if (realpath(command_line->argv()[0].c_str(), retval) == NULL) ++ goto out; ++ ++ if (stat(command_line->argv()[0].c_str(), &sb) < 0) ++ goto out; ++ ++ if (!command_line->HasSwitch("no-sandbox")) { ++ ret = true; ++ *result = FilePath(retval); ++ VLOG(1) << "PathProviderPosix (sandbox) result: " << retval; ++ goto out; ++ } ++ ++ if ((kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, errbuf)) == NULL) ++ goto out; ++ ++ if ((files = kvm_getfiles(kd, KERN_FILE_BYPID, cpid, ++ sizeof(struct kinfo_file), &cnt)) == NULL) ++ goto out; ++ ++ for (int i = 0; i < cnt; i++) { ++ if (files[i].fd_fd == KERN_FILE_TEXT && ++ files[i].va_fsid == static_cast(sb.st_dev) && ++ files[i].va_fileid == sb.st_ino) { ++ ret = true; ++ *result = FilePath(retval); ++ VLOG(1) << "PathProviderPosix result: " << retval; ++ } ++ } ++out: ++ if (kd) ++ kvm_close(kd); ++ if (!ret) { ++#endif ++ if ((cpath = getenv("CHROME_EXE_PATH")) != NULL) ++ *result = FilePath(cpath); ++ else ++ *result = FilePath("/usr/local/chrome/chrome"); ++ return true; ++#if !BUILDFLAG(IS_AIX) ++ } ++ return ret; ++#endif + #endif + } + case DIR_SRC_TEST_DATA_ROOT: { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_base__switches.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_base__switches.cc new file mode 100644 index 000000000000..e84dab8bab2c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_base__switches.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/base_switches.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/base_switches.cc +@@ -170,7 +170,7 @@ const char kForceFieldTrialParams[] = "force-fieldtria + + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Controls whether or not retired instruction counts are surfaced for threads + // in trace events on Linux. + // diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_base__switches.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_base__switches.h new file mode 100644 index 000000000000..88e25386511c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_base__switches.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/base_switches.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/base_switches.h +@@ -60,7 +60,7 @@ extern const char kForceFieldTrialParams[]; + extern const char kForceFieldTrialParams[]; + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + extern const char kEnableThreadInstructionCount[]; + + // TODO(crbug.com/1176772): Remove kEnableCrashpad and IsCrashpadEnabled() when diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_cpu.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_cpu.h new file mode 100644 index 000000000000..0e2c617ae593 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_cpu.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/cpu.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/cpu.h +@@ -108,7 +108,7 @@ class BASE_EXPORT CPU final { + const std::string& cpu_brand() const { return cpu_brand_; } + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + enum class CoreType { + kUnknown = 0, + kOther, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_debug_debugger__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_debug_debugger__posix.cc new file mode 100644 index 000000000000..24b9b70744a6 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_debug_debugger__posix.cc @@ -0,0 +1,68 @@ +--- src/3rdparty/chromium/base/debug/debugger_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/debug/debugger_posix.cc +@@ -35,6 +35,10 @@ + #include + #endif + ++#if BUILDFLAG(IS_OPENBSD) ++#include ++#endif ++ + #if BUILDFLAG(IS_FREEBSD) + #include + #endif +@@ -95,32 +99,51 @@ bool BeingDebugged() { + + // Caution: struct kinfo_proc is marked __APPLE_API_UNSTABLE. The source and + // binary interfaces may change. ++#if BUILDFLAG(IS_OPENBSD) ++ struct kinfo_proc *info; ++ size_t info_size; ++#else + struct kinfo_proc info; + size_t info_size = sizeof(info); ++#endif + + #if BUILDFLAG(IS_OPENBSD) + if (sysctl(mib, std::size(mib), NULL, &info_size, NULL, 0) < 0) + return -1; + + mib[5] = (info_size / sizeof(struct kinfo_proc)); ++ if ((info = reinterpret_cast(malloc(info_size))) == NULL) { ++ is_set = true; ++ being_debugged = false; ++ return being_debugged; ++ } ++ ++ int sysctl_result = sysctl(mib, std::size(mib), info, &info_size, NULL, 0); + #endif + ++#if !BUILDFLAG(IS_OPENBSD) + int sysctl_result = sysctl(mib, std::size(mib), &info, &info_size, NULL, 0); ++#endif + DCHECK_EQ(sysctl_result, 0); + if (sysctl_result != 0) { + is_set = true; + being_debugged = false; +- return being_debugged; ++ goto out; + } + + // This process is being debugged if the P_TRACED flag is set. + is_set = true; + #if BUILDFLAG(IS_FREEBSD) + being_debugged = (info.ki_flag & P_TRACED) != 0; +-#elif BUILDFLAG(IS_BSD) +- being_debugged = (info.p_flag & P_TRACED) != 0; ++#elif BUILDFLAG(IS_OPENBSD) ++ being_debugged = (info->p_psflags & PS_TRACED) != 0; + #else + being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0; ++#endif ++ ++out: ++#if BUILDFLAG(IS_OPENBSD) ++ free(info); + #endif + return being_debugged; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_debug_elf__reader.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_debug_elf__reader.cc new file mode 100644 index 000000000000..846019d17934 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_debug_elf__reader.cc @@ -0,0 +1,18 @@ +--- src/3rdparty/chromium/base/debug/elf_reader.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/debug/elf_reader.cc +@@ -76,6 +76,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base, + bool found = false; + while (current_section < section_end) { + current_note = reinterpret_cast(current_section); ++#if !defined(OS_BSD) + if (current_note->n_type == NT_GNU_BUILD_ID) { + StringPiece note_name(current_section + sizeof(Nhdr), + current_note->n_namesz); +@@ -85,6 +86,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base, + break; + } + } ++#endif + + size_t section_size = bits::AlignUp(current_note->n_namesz, 4) + + bits::AlignUp(current_note->n_descsz, 4) + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_debug_proc__maps__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_debug_proc__maps__linux.cc new file mode 100644 index 000000000000..3d569c38d512 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_debug_proc__maps__linux.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/debug/proc_maps_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/debug/proc_maps_linux.cc +@@ -13,7 +13,7 @@ + #include "base/strings/string_split.h" + #include "build/build_config.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + #include + #endif + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_debug_stack__trace__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_debug_stack__trace__posix.cc new file mode 100644 index 000000000000..58a3f6215c0c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_debug_stack__trace__posix.cc @@ -0,0 +1,38 @@ +--- src/3rdparty/chromium/base/debug/stack_trace_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/debug/stack_trace_posix.cc +@@ -38,7 +38,7 @@ + #include + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "base/debug/proc_maps_linux.h" + #endif + +@@ -695,6 +695,9 @@ class SandboxSymbolizeHelper { + // for the modules that are loaded in the current process. + // Returns true on success. + bool CacheMemoryRegions() { ++#if BUILDFLAG(IS_BSD) ++ return false; ++#else + // Reads /proc/self/maps. + std::string contents; + if (!ReadProcMaps(&contents)) { +@@ -712,6 +715,7 @@ class SandboxSymbolizeHelper { + + is_initialized_ = true; + return true; ++#endif + } + + // Opens all object files and caches their file descriptors. +@@ -868,7 +872,7 @@ size_t CollectStackTrace(void** trace, size_t count) { + // If we do not have unwind tables, then try tracing using frame pointers. + return base::debug::TraceStackFramePointers(const_cast(trace), + count, 0); +-#elif !defined(__UCLIBC__) && !defined(_AIX) ++#elif !defined(__UCLIBC__) && !defined(_AIX) && !BUILDFLAG(IS_BSD) + // Though the backtrace API man page does not list any possible negative + // return values, we take no chance. + return base::saturated_cast(backtrace(trace, count)); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__bsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__bsd.cc new file mode 100644 index 000000000000..9007b633ff6e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__bsd.cc @@ -0,0 +1,57 @@ +--- src/3rdparty/chromium/base/files/file_path_watcher_bsd.cc.orig 2022-11-06 10:18:39 UTC ++++ src/3rdparty/chromium/base/files/file_path_watcher_bsd.cc +@@ -0,0 +1,54 @@ ++// Copyright 2021 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include ++ ++#include "base/files/file_path_watcher.h" ++#include "base/files/file_path_watcher_kqueue.h" ++#include "base/memory/ptr_util.h" ++#include "build/build_config.h" ++ ++namespace base { ++ ++namespace { ++ ++class FilePathWatcherImpl : public FilePathWatcher::PlatformDelegate { ++ public: ++ FilePathWatcherImpl() = default; ++ FilePathWatcherImpl(const FilePathWatcherImpl&) = delete; ++ FilePathWatcherImpl& operator=(const FilePathWatcherImpl&) = delete; ++ ~FilePathWatcherImpl() override = default; ++ ++ bool Watch(const FilePath& path, ++ Type type, ++ const FilePathWatcher::Callback& callback) override { ++ DCHECK(!impl_.get()); ++ if (type == Type::kRecursive) { ++ if (!FilePathWatcher::RecursiveWatchAvailable()) ++ return false; ++ } else { ++ impl_ = std::make_unique(); ++ } ++ DCHECK(impl_.get()); ++ return impl_->Watch(path, type, callback); ++ } ++ ++ void Cancel() override { ++ if (impl_.get()) ++ impl_->Cancel(); ++ set_cancelled(); ++ } ++ ++ private: ++ std::unique_ptr impl_; ++}; ++ ++} // namespace ++ ++FilePathWatcher::FilePathWatcher() { ++ sequence_checker_.DetachFromSequence(); ++ impl_ = std::make_unique(); ++} ++ ++} // namespace base diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__freebsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__freebsd.cc new file mode 100644 index 000000000000..8939989c7f30 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__freebsd.cc @@ -0,0 +1,64 @@ +--- src/3rdparty/chromium/base/files/file_path_watcher_freebsd.cc.orig 2022-08-20 09:01:54 UTC ++++ src/3rdparty/chromium/base/files/file_path_watcher_freebsd.cc +@@ -0,0 +1,61 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file exists for Unix systems which don't have the inotify headers, and ++// thus cannot build file_watcher_inotify.cc ++ ++#include ++ ++#include "base/files/file_path_watcher.h" ++#include "base/files/file_path_watcher_kqueue.h" ++ ++#include "base/memory/ptr_util.h" ++#include "build/build_config.h" ++ ++namespace base { ++ ++namespace { ++ ++class FilePathWatcherImpl : public FilePathWatcher::PlatformDelegate { ++ public: ++ FilePathWatcherImpl() = default; ++ FilePathWatcherImpl(const FilePathWatcherImpl&) = delete; ++ FilePathWatcherImpl& operator=(const FilePathWatcherImpl&) = delete; ++ ~FilePathWatcherImpl() override = default; ++ ++ bool Watch(const FilePath& path, ++ Type type, ++ const FilePathWatcher::Callback& callback) override { ++ DCHECK(!impl_.get()); ++ ++ if (type == Type::kRecursive) { ++ return false; ++ } else { ++ impl_ = std::make_unique(); ++ } ++ ++ DCHECK(impl_.get()); ++ ++ return impl_->Watch(path, type, callback); ++ } ++ ++ void Cancel() override { ++ if (impl_.get()) ++ impl_->Cancel(); ++ ++ set_cancelled(); ++ } ++ ++ private: ++ std::unique_ptr impl_; ++}; ++ ++} // namespace ++ ++FilePathWatcher::FilePathWatcher() { ++ sequence_checker_.DetachFromSequence(); ++ impl_ = std::make_unique(); ++} ++ ++} // namespace base diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__kqueue.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__kqueue.h new file mode 100644 index 000000000000..fbf5cc1c59e7 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__kqueue.h @@ -0,0 +1,10 @@ +--- src/3rdparty/chromium/base/files/file_path_watcher_kqueue.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/files/file_path_watcher_kqueue.h +@@ -5,6 +5,7 @@ + #ifndef BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_ + #define BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_ + ++#include + #include + + #include diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_file__util__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_file__util__posix.cc new file mode 100644 index 000000000000..f764ad545eaf --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_file__util__posix.cc @@ -0,0 +1,52 @@ +--- src/3rdparty/chromium/base/files/file_util_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/files/file_util_posix.cc +@@ -697,32 +697,34 @@ bool CreateDirectoryAndGetError(const FilePath& full_p + File::Error* error) { + ScopedBlockingCall scoped_blocking_call( + FROM_HERE, BlockingType::MAY_BLOCK); // For call to mkdir(). ++ const FilePath kFileSystemRoot("/"); + std::vector subpaths; + + // Collect a list of all parent directories. + FilePath last_path = full_path; +- subpaths.push_back(full_path); ++ if (full_path != kFileSystemRoot) ++ subpaths.push_back(full_path); + for (FilePath path = full_path.DirName(); +- path.value() != last_path.value(); path = path.DirName()) { ++ (path.value() != last_path.value() && ++ (path != kFileSystemRoot)); path = path.DirName()) { + subpaths.push_back(path); + last_path = path; + } + + // Iterate through the parents and create the missing ones. + for (const FilePath& subpath : base::Reversed(subpaths)) { +- if (DirectoryExists(subpath)) +- continue; +- if (mkdir(subpath.value().c_str(), 0700) == 0) +- continue; +- // Mkdir failed, but it might have failed with EEXIST, or some other error +- // due to the directory appearing out of thin air. This can occur if +- // two processes are trying to create the same file system tree at the same +- // time. Check to see if it exists and make sure it is a directory. +- int saved_errno = errno; +- if (!DirectoryExists(subpath)) { +- if (error) +- *error = File::OSErrorToFileError(saved_errno); +- return false; ++ if (!PathExists(subpath)) { ++ if ((mkdir(subpath.value().c_str(), 0700) == -1) && ++ ((full_path != subpath) ? (errno != ENOENT) : (-1))) { ++ int saved_errno = errno; ++ if (error) ++ *error = File::OSErrorToFileError(saved_errno); ++ return false; ++ } ++ } else if (!DirectoryExists(subpath)) { ++ if (error) ++ *error = File::OSErrorToFileError(ENOTDIR); ++ return false; + } + } + return true; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_important__file__writer__cleaner.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_important__file__writer__cleaner.cc new file mode 100644 index 000000000000..063f8293078f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_important__file__writer__cleaner.cc @@ -0,0 +1,12 @@ +--- src/3rdparty/chromium/base/files/important_file_writer_cleaner.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/files/important_file_writer_cleaner.cc +@@ -25,7 +25,8 @@ base::Time GetUpperBoundTime() { + namespace { + + base::Time GetUpperBoundTime() { +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_FUCHSIA) ++// needed because of .CreationTime() pledge ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // If process creation time is not available then use instance creation + // time as the upper-bound for old files. Modification times may be + // rounded-down to coarse-grained increments, e.g. FAT has 2s granularity, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_scoped__file.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_scoped__file.cc new file mode 100644 index 000000000000..50056d5e8fe5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_files_scoped__file.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/files/scoped_file.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/files/scoped_file.cc +@@ -31,7 +31,7 @@ void ScopedFDCloseTraits::Free(int fd) { + int ret = IGNORE_EINTR(close(fd)); + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_APPLE) || \ +- BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_ANDROID) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + // NB: Some file descriptors can return errors from close() e.g. network + // filesystems such as NFS and Linux input devices. On Linux, macOS, and + // Fuchsia's POSIX layer, errors from close other than EBADF do not indicate diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_i18n_icu__util.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_i18n_icu__util.cc new file mode 100644 index 000000000000..f7f8264f0675 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_i18n_icu__util.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/base/i18n/icu_util.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/i18n/icu_util.cc +@@ -52,7 +52,7 @@ + #endif + + #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || \ +- ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \ ++ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && \ + !BUILDFLAG(IS_CHROMECAST)) + #include "third_party/icu/source/i18n/unicode/timezone.h" + #endif +@@ -328,7 +328,7 @@ void InitializeIcuTimeZone() { + FuchsiaIntlProfileWatcher::GetPrimaryTimeZoneIdForIcuInitialization(); + icu::TimeZone::adoptDefault( + icu::TimeZone::createTimeZone(icu::UnicodeString::fromUTF8(zone_id))); +-#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \ ++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && \ + !BUILDFLAG(IS_CHROMECAST) + // To respond to the time zone change properly, the default time zone + // cache in ICU has to be populated on starting up. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_linux__util.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_linux__util.cc new file mode 100644 index 000000000000..637d7079f110 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_linux__util.cc @@ -0,0 +1,28 @@ +--- src/3rdparty/chromium/base/linux_util.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/linux_util.cc +@@ -15,6 +15,7 @@ + + #include + #include ++#include + + #include "base/base_export.h" + #include "base/files/dir_reader_posix.h" +@@ -135,6 +136,9 @@ bool GetThreadsForProcess(pid_t pid, std::vector* tids) { ++#if defined(OS_BSD) ++ return false; ++#else + // 25 > strlen("/proc//task") + strlen(std::to_string(INT_MAX)) + 1 = 22 + char buf[25]; + strings::SafeSPrintf(buf, "/proc/%d/task", pid); +@@ -154,6 +158,7 @@ bool GetThreadsForProcess(pid_t pid, std::vector vec(allocated_pages_); + #else +@@ -314,6 +318,7 @@ bool MadvFreeDiscardableMemoryPosix::IsResident() cons + return false; + } + return true; ++#endif + } + + bool MadvFreeDiscardableMemoryPosix::IsDiscarded() const { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region.h new file mode 100644 index 000000000000..f6648ff714e6 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region.h @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/base/memory/platform_shared_memory_region.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/memory/platform_shared_memory_region.h +@@ -14,7 +14,7 @@ + + #include + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + namespace content { + class SandboxIPCHandler; + } +@@ -81,7 +81,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion { + kMaxValue = GET_SHMEM_TEMP_DIR_FAILURE + }; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Structure to limit access to executable region creation. + struct ExecutableRegion { + private: +@@ -211,7 +211,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion { + CheckPlatformHandlePermissionsCorrespondToMode); + static PlatformSharedMemoryRegion Create(Mode mode, + size_t size +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + , + bool executable = false + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region__posix.cc new file mode 100644 index 000000000000..325071a534b2 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region__posix.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/base/memory/platform_shared_memory_region_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/memory/platform_shared_memory_region_posix.cc +@@ -55,7 +55,7 @@ bool CheckFDAccessMode(int fd, int expected_mode) { + + } // namespace + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // static + ScopedFD PlatformSharedMemoryRegion::ExecutableRegion::CreateFD(size_t size) { + PlatformSharedMemoryRegion region = +@@ -171,7 +171,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion: + // static + PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode, + size_t size +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + , + bool executable + #endif +@@ -200,7 +200,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion: + // flag. + FilePath directory; + if (!GetShmemTempDir( +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + executable, + #else + false /* executable */, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_message__loop_message__pump__glib.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_message__loop_message__pump__glib.cc new file mode 100644 index 000000000000..68f8a936c01f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_message__loop_message__pump__glib.cc @@ -0,0 +1,28 @@ +--- src/3rdparty/chromium/base/message_loop/message_pump_glib.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/message_loop/message_pump_glib.cc +@@ -8,6 +8,11 @@ + #include + #include + ++#if BUILDFLAG(IS_BSD) ++#include ++#include ++#endif ++ + #include "base/logging.h" + #include "base/notreached.h" + #include "base/numerics/safe_conversions.h" +@@ -50,9 +55,13 @@ bool RunningOnMainThread() { + } + + bool RunningOnMainThread() { ++#if BUILDFLAG(IS_BSD) ++ return pthread_main_np(); ++#else + auto pid = getpid(); + auto tid = PlatformThread::CurrentId(); + return pid > 0 && tid > 0 && pid == tid; ++#endif + } + + // A brief refresher on GLib: diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_native__library__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_native__library__posix.cc new file mode 100644 index 000000000000..0acba5af54f8 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_native__library__posix.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/native_library_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/native_library_posix.cc +@@ -33,7 +33,7 @@ NativeLibrary LoadNativeLibraryWithOptions(const FileP + // http://crbug.com/17943, http://crbug.com/17557, http://crbug.com/36892, + // and http://crbug.com/40794. + int flags = RTLD_LAZY; +-#if BUILDFLAG(IS_ANDROID) || !defined(RTLD_DEEPBIND) ++#if BUILDFLAG(IS_ANDROID) || !defined(RTLD_DEEPBIND) || BUILDFLAG(IS_BSD) + // Certain platforms don't define RTLD_DEEPBIND. Android dlopen() requires + // further investigation, as it might vary across versions. Crash here to + // warn developers that they're trying to rely on uncertain behavior. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_posix_can__lower__nice__to.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_posix_can__lower__nice__to.cc new file mode 100644 index 000000000000..270777905182 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_posix_can__lower__nice__to.cc @@ -0,0 +1,16 @@ +--- src/3rdparty/chromium/base/posix/can_lower_nice_to.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/posix/can_lower_nice_to.cc +@@ -11,8 +11,12 @@ + + #include "build/build_config.h" + ++#if BUILDFLAG(IS_FREEBSD) ++#include ++#endif ++ + // Not defined on AIX by default. +-#if BUILDFLAG(IS_AIX) ++#if BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + #if defined(RLIMIT_NICE) + #error Assumption about OS_AIX is incorrect + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket.cc new file mode 100644 index 000000000000..4a312d8c3751 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket.cc @@ -0,0 +1,39 @@ +--- src/3rdparty/chromium/base/posix/unix_domain_socket.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/posix/unix_domain_socket.cc +@@ -50,7 +50,7 @@ bool UnixDomainSocket::EnableReceiveProcessId(int fd) + + // static + bool UnixDomainSocket::EnableReceiveProcessId(int fd) { +-#if !BUILDFLAG(IS_APPLE) ++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) + const int enable = 1; + return setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &enable, sizeof(enable)) == 0; + #else +@@ -140,7 +140,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd, + + const size_t kControlBufferSize = + CMSG_SPACE(sizeof(int) * kMaxFileDescriptors) +-#if !BUILDFLAG(IS_APPLE) ++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) + // macOS does not support ucred. + // macOS supports xucred, but this structure is insufficient. + + CMSG_SPACE(sizeof(struct ucred)) +@@ -168,7 +168,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd, + wire_fds = reinterpret_cast(CMSG_DATA(cmsg)); + wire_fds_len = payload_len / sizeof(int); + } +-#if !BUILDFLAG(IS_APPLE) ++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) + // macOS does not support SCM_CREDENTIALS. + if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_CREDENTIALS) { +@@ -202,6 +202,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd, + socklen_t pid_size = sizeof(pid); + if (getsockopt(fd, SOL_LOCAL, LOCAL_PEERPID, &pid, &pid_size) != 0) + pid = -1; ++#elif BUILDFLAG(IS_BSD) ++ NOTIMPLEMENTED(); ++ pid = -1; + #else + // |pid| will legitimately be -1 if we read EOF, so only DCHECK if we + // actually received a message. Unfortunately, Linux allows sending zero diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_kill.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_kill.h new file mode 100644 index 000000000000..015d759eefad --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_kill.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/process/kill.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/kill.h +@@ -113,7 +113,7 @@ BASE_EXPORT TerminationStatus GetKnownDeadTerminationS + BASE_EXPORT TerminationStatus GetKnownDeadTerminationStatus( + ProcessHandle handle, int* exit_code); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Spawns a thread to wait asynchronously for the child |process| to exit + // and then reaps it. + BASE_EXPORT void EnsureProcessGetsReaped(Process process); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_kill__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_kill__posix.cc new file mode 100644 index 000000000000..dc14a22cf5e5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_kill__posix.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/process/kill_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/kill_posix.cc +@@ -158,7 +158,7 @@ void EnsureProcessTerminated(Process process) { + 0, new BackgroundReaper(std::move(process), Seconds(2))); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + void EnsureProcessGetsReaped(Process process) { + DCHECK(!process.is_current()); + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_launch.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_launch.h new file mode 100644 index 000000000000..a0fbe9719cf7 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_launch.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/process/launch.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/launch.h +@@ -199,7 +199,7 @@ struct BASE_EXPORT LaunchOptions { + bool clear_environment = false; + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // If non-zero, start the process using clone(), using flags as provided. + // Unlike in clone, clone_flags may not contain a custom termination signal + // that is sent to the parent when the child dies. The termination signal will diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_launch__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_launch__posix.cc new file mode 100644 index 000000000000..9def56c95cf1 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_launch__posix.cc @@ -0,0 +1,12 @@ +--- src/3rdparty/chromium/base/process/launch_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/launch_posix.cc +@@ -64,6 +64,9 @@ + #error "macOS should use launch_mac.cc" + #endif + ++#if defined(OS_FREEBSD) ++#pragma weak environ ++#endif + extern char** environ; + + namespace base { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_memory.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_memory.cc new file mode 100644 index 000000000000..30b12c83c093 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_memory.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/base/process/memory.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/memory.cc +@@ -65,14 +65,16 @@ NOINLINE void OnNoMemoryInternal(size_t size) { + + } // namespace internal + ++#if !BUILDFLAG(IS_BSD) + void TerminateBecauseOutOfMemory(size_t size) { + internal::OnNoMemoryInternal(size); + } ++#endif + + // Defined in memory_mac.mm for macOS + use_allocator="none". In case of + // USE_PARTITION_ALLOC_AS_MALLOC, no need to route the call to the system + // default calloc of macOS. +-#if !BUILDFLAG(IS_APPLE) || BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) ++#if (!BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD)) || BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) + + bool UncheckedCalloc(size_t num_items, size_t size, void** result) { + const size_t alloc_size = num_items * size; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.cc new file mode 100644 index 000000000000..0f2a80612543 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/process/process_handle.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/process_handle.cc +@@ -30,7 +30,7 @@ UniqueProcId GetUniqueIdForProcess() { + : UniqueProcId(GetCurrentProcId()); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_AIX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + + void InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace) { + DCHECK(pid_outside_of_namespace != kNullProcessId); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.h new file mode 100644 index 000000000000..f5a6b19c4b4e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/process/process_handle.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/process_handle.h +@@ -106,7 +106,7 @@ BASE_EXPORT UniqueProcId GetUniqueIdForProcess(); + // processes may be reused. + BASE_EXPORT UniqueProcId GetUniqueIdForProcess(); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // When a process is started in a different PID namespace from the browser + // process, this function must be called with the process's PID in the browser's + // PID namespace in order to initialize its unique ID. Not thread safe. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle__freebsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle__freebsd.cc new file mode 100644 index 000000000000..e0455095d172 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle__freebsd.cc @@ -0,0 +1,25 @@ +--- src/3rdparty/chromium/base/process/process_handle_freebsd.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/process_handle_freebsd.cc +@@ -3,6 +3,7 @@ + // found in the LICENSE file. + + #include "base/process/process_handle.h" ++#include "base/files/file_util.h" + + #include + #include +@@ -15,10 +16,13 @@ ProcessId GetParentProcessId(ProcessHandle process) { + + ProcessId GetParentProcessId(ProcessHandle process) { + struct kinfo_proc info; +- size_t length; ++ size_t length = sizeof(struct kinfo_proc); + int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process }; + + if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0) ++ return -1; ++ ++ if (length < sizeof(struct kinfo_proc)) + return -1; + + return info.ki_ppid; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle__openbsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle__openbsd.cc new file mode 100644 index 000000000000..f971d0aefa77 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle__openbsd.cc @@ -0,0 +1,89 @@ +--- src/3rdparty/chromium/base/process/process_handle_openbsd.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/process_handle_openbsd.cc +@@ -3,8 +3,11 @@ + // found in the LICENSE file. + + #include "base/process/process_handle.h" ++#include "base/files/file_util.h" + + #include ++#include ++#include + #include + #include + #include +@@ -12,39 +15,59 @@ ProcessId GetParentProcessId(ProcessHandle process) { + namespace base { + + ProcessId GetParentProcessId(ProcessHandle process) { +- struct kinfo_proc info; ++ struct kinfo_proc *info; + size_t length; ++ pid_t ppid; + int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process, + sizeof(struct kinfo_proc), 0 }; + + if (sysctl(mib, std::size(mib), NULL, &length, NULL, 0) < 0) + return -1; + ++ info = (struct kinfo_proc *)malloc(length); ++ + mib[5] = (length / sizeof(struct kinfo_proc)); + +- if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0) +- return -1; ++ if (sysctl(mib, std::size(mib), info, &length, NULL, 0) < 0) { ++ ppid = -1; ++ goto out; ++ } + +- return info.p_ppid; ++ ppid = info->p_ppid; ++ ++out: ++ free(info); ++ return ppid; + } + + FilePath GetProcessExecutablePath(ProcessHandle process) { +- struct kinfo_proc kp; +- size_t len; ++ struct kinfo_proc *info; ++ size_t length; ++ char *path = NULL; + int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process, + sizeof(struct kinfo_proc), 0 }; + +- if (sysctl(mib, std::size(mib), NULL, &len, NULL, 0) == -1) ++ if (sysctl(mib, std::size(mib), NULL, &length, NULL, 0) == -1) + return FilePath(); +- mib[5] = (len / sizeof(struct kinfo_proc)); +- if (sysctl(mib, std::size(mib), &kp, &len, NULL, 0) < 0) +- return FilePath(); +- if ((kp.p_flag & P_SYSTEM) != 0) +- return FilePath(); +- if (strcmp(kp.p_comm, "chrome") == 0) +- return FilePath(kp.p_comm); + +- return FilePath(); ++ info = (struct kinfo_proc *)malloc(length); ++ ++ mib[5] = (length / sizeof(struct kinfo_proc)); ++ ++ if (sysctl(mib, std::size(mib), info, &length, NULL, 0) < 0) ++ goto out; ++ ++ if ((info->p_flag & P_SYSTEM) != 0) ++ goto out; ++ ++ if (strcmp(info->p_comm, "chrome") == 0) { ++ path = info->p_comm; ++ goto out; ++ } ++ ++out: ++ free(info); ++ return FilePath(path); + } + + } // namespace base diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__iterator__freebsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__iterator__freebsd.cc new file mode 100644 index 000000000000..6e8674f4c371 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__iterator__freebsd.cc @@ -0,0 +1,51 @@ +--- src/3rdparty/chromium/base/process/process_iterator_freebsd.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/process_iterator_freebsd.cc +@@ -20,7 +20,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + : index_of_kinfo_proc_(), + filter_(filter) { + +- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, getuid() }; ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, (int) getuid() }; + + bool done = false; + int try_num = 1; +@@ -39,7 +39,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + num_of_kinfo_proc += 16; + kinfo_procs_.resize(num_of_kinfo_proc); + len = num_of_kinfo_proc * sizeof(struct kinfo_proc); +- if (sysctl(mib, std::size(mib), &kinfo_procs_[0], &len, NULL, 0) < 0) { ++ if (sysctl(mib, std::size(mib), kinfo_procs_.data(), &len, NULL, 0) < 0) { + // If we get a mem error, it just means we need a bigger buffer, so + // loop around again. Anything else is a real error and give up. + if (errno != ENOMEM) { +@@ -49,7 +49,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + } + } else { + // Got the list, just make sure we're sized exactly right +- size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc); ++ num_of_kinfo_proc = len / sizeof(struct kinfo_proc); + kinfo_procs_.resize(num_of_kinfo_proc); + done = true; + } +@@ -71,18 +71,13 @@ bool ProcessIterator::CheckForNextProcess() { + for (; index_of_kinfo_proc_ < kinfo_procs_.size(); ++index_of_kinfo_proc_) { + size_t length; + struct kinfo_proc kinfo = kinfo_procs_[index_of_kinfo_proc_]; +- int mib[] = { CTL_KERN, KERN_PROC_ARGS, kinfo.ki_pid }; ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ARGS, kinfo.ki_pid }; + + if ((kinfo.ki_pid > 0) && (kinfo.ki_stat == SZOMB)) + continue; + +- length = 0; +- if (sysctl(mib, std::size(mib), NULL, &length, NULL, 0) < 0) { +- LOG(ERROR) << "failed to figure out the buffer size for a command line"; +- continue; +- } +- +- data.resize(length); ++ data.resize(ARG_MAX); ++ length = ARG_MAX; + + if (sysctl(mib, std::size(mib), &data[0], &length, NULL, 0) < 0) { + LOG(ERROR) << "failed to fetch a commandline"; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__iterator__openbsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__iterator__openbsd.cc new file mode 100644 index 000000000000..f2275b45715a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__iterator__openbsd.cc @@ -0,0 +1,45 @@ +--- src/3rdparty/chromium/base/process/process_iterator_openbsd.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/process_iterator_openbsd.cc +@@ -6,6 +6,9 @@ + + #include + #include ++#include ++#include ++#include + #include + + #include "base/logging.h" +@@ -18,12 +21,13 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + : index_of_kinfo_proc_(), + filter_(filter) { + +- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, getuid(), ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, static_cast(getuid()), + sizeof(struct kinfo_proc), 0 }; + + bool done = false; + int try_num = 1; + const int max_tries = 10; ++ size_t num_of_kinfo_proc; + + do { + size_t len = 0; +@@ -32,7 +36,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + kinfo_procs_.resize(0); + done = true; + } else { +- size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc); ++ num_of_kinfo_proc = len / sizeof(struct kinfo_proc); + // Leave some spare room for process table growth (more could show up + // between when we check and now) + num_of_kinfo_proc += 16; +@@ -48,7 +52,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + } + } else { + // Got the list, just make sure we're sized exactly right +- size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc); ++ num_of_kinfo_proc = len / sizeof(struct kinfo_proc); + kinfo_procs_.resize(num_of_kinfo_proc); + done = true; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.cc new file mode 100644 index 000000000000..a5132295f05a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.cc @@ -0,0 +1,47 @@ +--- src/3rdparty/chromium/base/process/process_metrics.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/process_metrics.cc +@@ -18,7 +18,7 @@ namespace { + namespace { + + #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + int CalculateEventsPerSecond(uint64_t event_count, + uint64_t* last_event_count, + base::TimeTicks* last_calculated) { +@@ -55,7 +55,7 @@ SystemMetrics SystemMetrics::Sample() { + SystemMetrics system_metrics; + + system_metrics.committed_memory_ = GetSystemCommitCharge(); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + GetSystemMemoryInfo(&system_metrics.memory_info_); + GetVmStatInfo(&system_metrics.vmstat_info_); + GetSystemDiskInfo(&system_metrics.disk_info_); +@@ -74,7 +74,7 @@ Value SystemMetrics::ToValue() const { + Value res(Value::Type::DICTIONARY); + + res.SetIntKey("committed_memory", static_cast(committed_memory_)); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + Value meminfo = memory_info_.ToValue(); + Value vmstat = vmstat_info_.ToValue(); + meminfo.MergeDictionary(&vmstat); +@@ -100,7 +100,7 @@ std::unique_ptr ProcessMetrics::Create + #endif // !BUILDFLAG(IS_MAC) + } + +-#if !BUILDFLAG(IS_FREEBSD) || !BUILDFLAG(IS_POSIX) ++#if !BUILDFLAG(IS_BSD) || !BUILDFLAG(IS_POSIX) + double ProcessMetrics::GetPlatformIndependentCPUUsage() { + TimeDelta cumulative_cpu = GetCumulativeCPUUsage(); + TimeTicks time = TimeTicks::Now(); +@@ -151,7 +151,7 @@ double ProcessMetrics::GetPreciseCPUUsage() { + #endif // BUILDFLAG(IS_WIN) + + #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + int ProcessMetrics::CalculateIdleWakeupsPerSecond( + uint64_t absolute_idle_wakeups) { + return CalculateEventsPerSecond(absolute_idle_wakeups, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.h new file mode 100644 index 000000000000..7886217cb2b3 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.h @@ -0,0 +1,119 @@ +--- src/3rdparty/chromium/base/process/process_metrics.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/process_metrics.h +@@ -36,7 +36,7 @@ + #endif + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + #include + #include + #include +@@ -52,7 +52,7 @@ struct IoCounters; + // Full declaration is in process_metrics_iocounters.h. + struct IoCounters; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + // Minor and major page fault counts since the process creation. + // Both counts are process-wide, and exclude child processes. + // +@@ -107,7 +107,7 @@ class BASE_EXPORT ProcessMetrics { + // convenience wrapper for CreateProcessMetrics(). + static std::unique_ptr CreateCurrentProcessMetrics(); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + // Resident Set Size is a Linux/Android specific memory concept. Do not + // attempt to extend this to other platforms. + BASE_EXPORT size_t GetResidentSetSize() const; +@@ -155,7 +155,7 @@ class BASE_EXPORT ProcessMetrics { + #endif // BUILDFLAG(IS_WIN) + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + // Emits the cumulative CPU usage for all currently active threads since they + // were started into the output parameter (replacing its current contents). + // Threads that have already terminated will not be reported. Thus, the sum of +@@ -238,7 +238,7 @@ class BASE_EXPORT ProcessMetrics { + int GetOpenFdSoftLimit() const; + #endif // BUILDFLAG(IS_POSIX) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + // Bytes of swap as reported by /proc/[pid]/status. + uint64_t GetVmSwapBytes() const; + +@@ -259,7 +259,7 @@ class BASE_EXPORT ProcessMetrics { + #endif // !BUILDFLAG(IS_MAC) + + #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups); + #endif + #if BUILDFLAG(IS_APPLE) +@@ -270,7 +270,7 @@ class BASE_EXPORT ProcessMetrics { + #endif + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + CPU::CoreType GetCoreType(int core_index); + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || + // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_AIX) +@@ -294,7 +294,7 @@ class BASE_EXPORT ProcessMetrics { + #endif + + #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + // Same thing for idle wakeups. + TimeTicks last_idle_wakeups_time_; + uint64_t last_absolute_idle_wakeups_; +@@ -337,7 +337,7 @@ BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_de + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \ + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_AIX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // Data about system-wide memory consumption. Values are in KB. Available on + // Windows, Mac, Linux, Android and Chrome OS. + // +@@ -372,7 +372,7 @@ struct BASE_EXPORT SystemMemoryInfoKB { + #endif + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + // This provides an estimate of available memory as described here: + // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773 + // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always +@@ -387,7 +387,7 @@ struct BASE_EXPORT SystemMemoryInfoKB { + #endif + + #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + int buffers = 0; + int cached = 0; + int active_anon = 0; +@@ -424,7 +424,7 @@ BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoK + // BUILDFLAG(IS_FUCHSIA) + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + // Parse the data found in /proc//stat and return the sum of the + // CPU-related ticks. Returns -1 on parse error. + // Exposed for testing. +@@ -611,7 +611,7 @@ class BASE_EXPORT SystemMetrics { + FRIEND_TEST_ALL_PREFIXES(SystemMetricsTest, SystemMetrics); + + size_t committed_memory_; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + SystemMemoryInfoKB memory_info_; + VmStatInfo vmstat_info_; + SystemDiskInfo disk_info_; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__freebsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__freebsd.cc new file mode 100644 index 000000000000..54a392857c78 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__freebsd.cc @@ -0,0 +1,290 @@ +--- src/3rdparty/chromium/base/process/process_metrics_freebsd.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/process_metrics_freebsd.cc +@@ -3,20 +3,39 @@ + // found in the LICENSE file. + + #include "base/process/process_metrics.h" ++#include "base/notreached.h" + + #include ++#include + #include + #include + #include + ++#include /* O_RDONLY */ ++#include ++#include ++ + #include "base/memory/ptr_util.h" + #include "base/process/process_metrics_iocounters.h" ++#include "base/values.h" + + namespace base { ++namespace { ++int GetPageShift() { ++ int pagesize = getpagesize(); ++ int pageshift = 0; + ++ while (pagesize > 1) { ++ pageshift++; ++ pagesize >>= 1; ++ } ++ ++ return pageshift; ++} ++} ++ + ProcessMetrics::ProcessMetrics(ProcessHandle process) +- : process_(process), +- last_cpu_(0) {} ++ : process_(process) {} + + // static + std::unique_ptr ProcessMetrics::CreateProcessMetrics( +@@ -26,17 +45,18 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage( + + double ProcessMetrics::GetPlatformIndependentCPUUsage() { + struct kinfo_proc info; +- int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, process_}; +- size_t length = sizeof(info); ++ size_t length = sizeof(struct kinfo_proc); + ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process_ }; ++ + if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0) +- return 0; ++ return 0.0; + +- return (info.ki_pctcpu / FSCALE) * 100.0; ++ return static_cast((info.ki_pctcpu * 100.0) / FSCALE); + } + + TimeDelta ProcessMetrics::GetCumulativeCPUUsage() { +- NOTREACHED(); ++ NOTIMPLEMENTED(); + return TimeDelta(); + } + +@@ -67,4 +87,221 @@ size_t GetSystemCommitCharge() { + return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize); + } + ++int GetNumberOfThreads(ProcessHandle process) { ++ // Taken from FreeBSD top (usr.bin/top/machine.c) ++ ++ kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open"); ++ if (kd == NULL) ++ return 0; ++ ++ struct kinfo_proc* pbase; ++ int nproc; ++ pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc); ++ if (pbase == NULL) ++ return 0; ++ ++ if (kvm_close(kd) == -1) ++ return 0; ++ ++ return nproc; ++} ++ ++bool GetSystemMemoryInfo(SystemMemoryInfoKB *meminfo) { ++ unsigned int mem_total, mem_free, swap_total, swap_used; ++ size_t length; ++ int pagesizeKB; ++ ++ pagesizeKB = getpagesize() / 1024; ++ ++ length = sizeof(mem_total); ++ if (sysctlbyname("vm.stats.vm.v_page_count", &mem_total, ++ &length, NULL, 0) != 0 || length != sizeof(mem_total)) ++ return false; ++ ++ length = sizeof(mem_free); ++ if (sysctlbyname("vm.stats.vm.v_free_count", &mem_free, &length, NULL, 0) ++ != 0 || length != sizeof(mem_free)) ++ return false; ++ ++ length = sizeof(swap_total); ++ if (sysctlbyname("vm.swap_size", &swap_total, &length, NULL, 0) ++ != 0 || length != sizeof(swap_total)) ++ return false; ++ ++ length = sizeof(swap_used); ++ if (sysctlbyname("vm.swap_anon_use", &swap_used, &length, NULL, 0) ++ != 0 || length != sizeof(swap_used)) ++ return false; ++ ++ meminfo->total = mem_total * pagesizeKB; ++ meminfo->free = mem_free * pagesizeKB; ++ meminfo->swap_total = swap_total * pagesizeKB; ++ meminfo->swap_free = (swap_total - swap_used) * pagesizeKB; ++ ++ return true; ++} ++ ++int ProcessMetrics::GetOpenFdCount() const { ++ struct kinfo_file * kif; ++ int cnt; ++ ++ if ((kif = kinfo_getfile(process_, &cnt)) == NULL) ++ return -1; ++ ++ free(kif); ++ ++ return cnt; ++} ++ ++int ProcessMetrics::GetOpenFdSoftLimit() const { ++ size_t length; ++ int total_count = 0; ++ int mib[] = { CTL_KERN, KERN_MAXFILESPERPROC }; ++ ++ length = sizeof(total_count); ++ ++ if (sysctl(mib, std::size(mib), &total_count, &length, NULL, 0) < 0) { ++ total_count = -1; ++ } ++ ++ return total_count; ++} ++ ++size_t ProcessMetrics::GetResidentSetSize() const { ++ kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open"); ++ ++ if (kd == nullptr) ++ return 0; ++ ++ struct kinfo_proc *pp; ++ int nproc; ++ ++ if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) { ++ kvm_close(kd); ++ return 0; ++ } ++ ++ size_t rss; ++ ++ if (nproc > 0) { ++ rss = pp->ki_rssize << GetPageShift(); ++ } else { ++ rss = 0; ++ } ++ ++ kvm_close(kd); ++ return rss; ++} ++ ++uint64_t ProcessMetrics::GetVmSwapBytes() const { ++ kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open"); ++ ++ if (kd == nullptr) ++ return 0; ++ ++ struct kinfo_proc *pp; ++ int nproc; ++ ++ if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) { ++ kvm_close(kd); ++ return 0; ++ } ++ ++ size_t swrss; ++ ++ if (nproc > 0) { ++ swrss = pp->ki_swrss > pp->ki_rssize ++ ? (pp->ki_swrss - pp->ki_rssize) << GetPageShift() ++ : 0; ++ } else { ++ swrss = 0; ++ } ++ ++ kvm_close(kd); ++ return swrss; ++} ++ ++int ProcessMetrics::GetIdleWakeupsPerSecond() { ++ NOTIMPLEMENTED(); ++ return 0; ++} ++ ++bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) { ++ NOTIMPLEMENTED(); ++ return false; ++} ++ ++bool GetVmStatInfo(VmStatInfo* vmstat) { ++ NOTIMPLEMENTED(); ++ return false; ++} ++ ++SystemDiskInfo::SystemDiskInfo() { ++ reads = 0; ++ reads_merged = 0; ++ sectors_read = 0; ++ read_time = 0; ++ writes = 0; ++ writes_merged = 0; ++ sectors_written = 0; ++ write_time = 0; ++ io = 0; ++ io_time = 0; ++ weighted_io_time = 0; ++} ++ ++SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo& other) = default; ++ ++SystemDiskInfo& SystemDiskInfo::operator=(const SystemDiskInfo&) = default; ++ ++Value SystemDiskInfo::ToValue() const { ++ Value res(Value::Type::DICTIONARY); ++ ++ // Write out uint64_t variables as doubles. ++ // Note: this may discard some precision, but for JS there's no other option. ++ res.SetDoubleKey("reads", static_cast(reads)); ++ res.SetDoubleKey("reads_merged", static_cast(reads_merged)); ++ res.SetDoubleKey("sectors_read", static_cast(sectors_read)); ++ res.SetDoubleKey("read_time", static_cast(read_time)); ++ res.SetDoubleKey("writes", static_cast(writes)); ++ res.SetDoubleKey("writes_merged", static_cast(writes_merged)); ++ res.SetDoubleKey("sectors_written", static_cast(sectors_written)); ++ res.SetDoubleKey("write_time", static_cast(write_time)); ++ res.SetDoubleKey("io", static_cast(io)); ++ res.SetDoubleKey("io_time", static_cast(io_time)); ++ res.SetDoubleKey("weighted_io_time", static_cast(weighted_io_time)); ++ ++ return res; ++} ++ ++Value SystemMemoryInfoKB::ToValue() const { ++ Value res(Value::Type::DICTIONARY); ++ ++ res.SetIntKey("total", total); ++ res.SetIntKey("free", free); ++ res.SetIntKey("available", available); ++ res.SetIntKey("buffers", buffers); ++ res.SetIntKey("cached", cached); ++ res.SetIntKey("active_anon", active_anon); ++ res.SetIntKey("inactive_anon", inactive_anon); ++ res.SetIntKey("active_file", active_file); ++ res.SetIntKey("inactive_file", inactive_file); ++ res.SetIntKey("swap_total", swap_total); ++ res.SetIntKey("swap_free", swap_free); ++ res.SetIntKey("swap_used", swap_total - swap_free); ++ res.SetIntKey("dirty", dirty); ++ res.SetIntKey("reclaimable", reclaimable); ++ ++ return res; ++} ++ ++Value VmStatInfo::ToValue() const { ++ Value res(Value::Type::DICTIONARY); ++ ++ res.SetIntKey("pswpin", pswpin); ++ res.SetIntKey("pswpout", pswpout); ++ res.SetIntKey("pgmajfault", pgmajfault); ++ ++ return res; ++} + } // namespace base diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__openbsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__openbsd.cc new file mode 100644 index 000000000000..69d740c1093c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__openbsd.cc @@ -0,0 +1,212 @@ +--- src/3rdparty/chromium/base/process/process_metrics_openbsd.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/process_metrics_openbsd.cc +@@ -6,14 +6,23 @@ + + #include + #include ++#include + #include + #include ++#include + ++#include ++ + #include "base/memory/ptr_util.h" + #include "base/process/process_metrics_iocounters.h" ++#include "base/values.h" ++#include "base/notreached.h" + + namespace base { + ++ProcessMetrics::ProcessMetrics(ProcessHandle process) ++ : process_(process) {} ++ + // static + std::unique_ptr ProcessMetrics::CreateProcessMetrics( + ProcessHandle process) { +@@ -24,49 +33,24 @@ bool ProcessMetrics::GetIOCounters(IoCounters* io_coun + return false; + } + +-static int GetProcessCPU(pid_t pid) { ++double ProcessMetrics::GetPlatformIndependentCPUUsage() { + struct kinfo_proc info; +- size_t length; +- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid, +- sizeof(struct kinfo_proc), 0 }; ++ size_t length = sizeof(struct kinfo_proc); + +- if (sysctl(mib, std::size(mib), NULL, &length, NULL, 0) < 0) +- return -1; ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process_, ++ sizeof(struct kinfo_proc), 1 }; + +- mib[5] = (length / sizeof(struct kinfo_proc)); +- + if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0) +- return 0; ++ return 0.0; + +- return info.p_pctcpu; ++ return static_cast((info.p_pctcpu * 100.0) / FSCALE); + } + +-double ProcessMetrics::GetPlatformIndependentCPUUsage() { +- TimeTicks time = TimeTicks::Now(); +- +- if (last_cpu_time_.is_zero()) { +- // First call, just set the last values. +- last_cpu_time_ = time; +- return 0; +- } +- +- int cpu = GetProcessCPU(process_); +- +- last_cpu_time_ = time; +- double percentage = static_cast((cpu * 100.0) / FSCALE); +- +- return percentage; +-} +- + TimeDelta ProcessMetrics::GetCumulativeCPUUsage() { + NOTREACHED(); + return TimeDelta(); + } + +-ProcessMetrics::ProcessMetrics(ProcessHandle process) +- : process_(process), +- last_cpu_(0) {} +- + size_t GetSystemCommitCharge() { + int mib[] = { CTL_VM, VM_METER }; + int pagesize; +@@ -84,6 +68,129 @@ size_t GetSystemCommitCharge() { + pagesize = getpagesize(); + + return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize); ++} ++ ++int ProcessMetrics::GetOpenFdCount() const { ++ struct kinfo_file *files; ++ kvm_t *kd = NULL; ++ int total_count = 0; ++ char errbuf[_POSIX2_LINE_MAX]; ++ ++ if ((kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, errbuf)) == NULL) ++ goto out; ++ ++ if ((files = kvm_getfiles(kd, KERN_FILE_BYPID, process_, ++ sizeof(struct kinfo_file), &total_count)) == NULL) { ++ total_count = 0; ++ goto out; ++ } ++ ++ kvm_close(kd); ++ ++out: ++ return total_count; ++} ++ ++int ProcessMetrics::GetOpenFdSoftLimit() const { ++ return GetMaxFds(); ++} ++ ++uint64_t ProcessMetrics::GetVmSwapBytes() const { ++ NOTIMPLEMENTED(); ++ return 0; ++} ++ ++bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo) { ++ NOTIMPLEMENTED_LOG_ONCE(); ++ return false; ++} ++ ++SystemDiskInfo::SystemDiskInfo() { ++ reads = 0; ++ reads_merged = 0; ++ sectors_read = 0; ++ read_time = 0; ++ writes = 0; ++ writes_merged = 0; ++ sectors_written = 0; ++ write_time = 0; ++ io = 0; ++ io_time = 0; ++ weighted_io_time = 0; ++} ++ ++SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo& other) = default; ++ ++bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) { ++ NOTIMPLEMENTED(); ++ return false; ++} ++ ++bool GetVmStatInfo(VmStatInfo* vmstat) { ++ NOTIMPLEMENTED(); ++ return false; ++} ++ ++int ProcessMetrics::GetIdleWakeupsPerSecond() { ++ NOTIMPLEMENTED(); ++ return 0; ++} ++ ++Value SystemMemoryInfoKB::ToValue() const { ++ Value res(Value::Type::DICTIONARY); ++ res.SetIntKey("total", total); ++ res.SetIntKey("free", free); ++ res.SetIntKey("available", available); ++ res.SetIntKey("buffers", buffers); ++ res.SetIntKey("cached", cached); ++ res.SetIntKey("active_anon", active_anon); ++ res.SetIntKey("inactive_anon", inactive_anon); ++ res.SetIntKey("active_file", active_file); ++ res.SetIntKey("inactive_file", inactive_file); ++ res.SetIntKey("swap_total", swap_total); ++ res.SetIntKey("swap_free", swap_free); ++ res.SetIntKey("swap_used", swap_total - swap_free); ++ res.SetIntKey("dirty", dirty); ++ res.SetIntKey("reclaimable", reclaimable); ++ ++ NOTIMPLEMENTED(); ++ ++ return res; ++} ++ ++Value VmStatInfo::ToValue() const { ++ Value res(Value::Type::DICTIONARY); ++ res.SetIntKey("pswpin", pswpin); ++ res.SetIntKey("pswpout", pswpout); ++ res.SetIntKey("pgmajfault", pgmajfault); ++ ++ NOTIMPLEMENTED(); ++ ++ return res; ++} ++ ++SystemDiskInfo& SystemDiskInfo::operator=(const SystemDiskInfo&) = default; ++ ++Value SystemDiskInfo::ToValue() const { ++ Value res(Value::Type::DICTIONARY); ++ ++ // Write out uint64_t variables as doubles. ++ // Note: this may discard some precision, but for JS there's no other option. ++ res.SetDoubleKey("reads", static_cast(reads)); ++ res.SetDoubleKey("reads_merged", static_cast(reads_merged)); ++ res.SetDoubleKey("sectors_read", static_cast(sectors_read)); ++ res.SetDoubleKey("read_time", static_cast(read_time)); ++ res.SetDoubleKey("writes", static_cast(writes)); ++ res.SetDoubleKey("writes_merged", static_cast(writes_merged)); ++ res.SetDoubleKey("sectors_written", static_cast(sectors_written)); ++ res.SetDoubleKey("write_time", static_cast(write_time)); ++ res.SetDoubleKey("io", static_cast(io)); ++ res.SetDoubleKey("io_time", static_cast(io_time)); ++ res.SetDoubleKey("weighted_io_time", static_cast(weighted_io_time)); ++ ++ NOTIMPLEMENTED(); ++ ++ return res; + } + + } // namespace base diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__posix.cc new file mode 100644 index 000000000000..90464adcc5b8 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__posix.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/base/process/process_metrics_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/process_metrics_posix.cc +@@ -20,6 +20,8 @@ + + #if BUILDFLAG(IS_APPLE) + #include ++#elif BUILDFLAG(IS_OPENBSD) ++#include + #else + #include + #endif +@@ -133,7 +135,7 @@ size_t ProcessMetrics::GetMallocUsage() { + return stats.size_in_use; + #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) + return GetMallocUsageMallinfo(); +-#elif BUILDFLAG(IS_FUCHSIA) ++#elif BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // TODO(fuchsia): Not currently exposed. https://crbug.com/735087. + return 0; + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__posix.cc new file mode 100644 index 000000000000..3b333a2497d5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_process_process__posix.cc @@ -0,0 +1,93 @@ +--- src/3rdparty/chromium/base/process/process_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/process/process_posix.cc +@@ -25,10 +25,15 @@ + #include "build/build_config.h" + #include "third_party/abseil-cpp/absl/types/optional.h" + +-#if BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + #include + #endif + ++#if defined(OS_BSD) ++#include ++#include ++#endif ++ + #if BUILDFLAG(CLANG_PROFILING) + #include "base/test/clang_profiling.h" + #endif +@@ -97,7 +102,7 @@ bool WaitpidWithTimeout(base::ProcessHandle handle, + return ret_pid > 0; + } + +-#if BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + // Using kqueue on Mac so that we can wait on non-child processes. + // We can't use kqueues on child processes because we need to reap + // our own children using wait. +@@ -202,7 +207,7 @@ bool WaitForExitWithTimeoutImpl(base::ProcessHandle ha + const bool exited = (parent_pid < 0); + + if (!exited && parent_pid != our_pid) { +-#if BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + // On Mac we can wait on non child processes. + return WaitForSingleNonChildProcess(handle, timeout); + #else +@@ -358,7 +363,55 @@ int Process::GetPriority() const { + + int Process::GetPriority() const { + DCHECK(IsValid()); ++// avoid pledge(2) violation ++#if defined(OS_BSD) ++ return 0; ++#else + return getpriority(PRIO_PROCESS, process_); ++#endif ++} ++ ++Time Process::CreationTime() const { ++// avoid ps pledge in the network process ++#if !defined(OS_BSD) ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), ++ sizeof(struct kinfo_proc), 0 }; ++ struct kinfo_proc *info = nullptr; ++ size_t info_size; ++#endif ++ Time ct = Time(); ++ ++#if !defined(OS_BSD) ++ if (sysctl(mib, std::size(mib), NULL, &info_size, NULL, 0) < 0) ++ goto out; ++ ++ mib[5] = (info_size / sizeof(struct kinfo_proc)); ++ if ((info = reinterpret_cast(malloc(info_size))) == NULL) ++ goto out; ++ ++ if (sysctl(mib, std::size(mib), info, &info_size, NULL, 0) < 0) ++ goto out; ++ ++ ct = Time::FromTimeT(info->p_ustart_sec); ++ ++out: ++ if (info) ++ free(info); ++#endif ++ return ct; ++} ++ ++bool Process::IsProcessBackgrounded() const { ++ return false; ++} ++ ++bool Process::SetProcessBackgrounded(bool value) { ++ return false; ++} ++ ++// static ++bool Process::CanBackgroundProcesses() { ++ return false; + } + + } // namespace base diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__sampling__profiler__test__util.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__sampling__profiler__test__util.cc new file mode 100644 index 000000000000..63c4f2a444fb --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__sampling__profiler__test__util.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/profiler/stack_sampling_profiler_test_util.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/profiler/stack_sampling_profiler_test_util.cc +@@ -39,7 +39,7 @@ + // Fortunately, it provides _alloca, which functions identically. + #include + #define alloca _alloca +-#else ++#elif !BUILDFLAG(IS_BSD) + #include + #endif + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_rand__util.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_rand__util.h new file mode 100644 index 000000000000..1dbb4e2b7249 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_rand__util.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/rand_util.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/rand_util.h +@@ -81,7 +81,7 @@ void RandomShuffle(Itr first, Itr last) { + std::shuffle(first, last, RandomBitGenerator()); + } + +-#if BUILDFLAG(IS_POSIX) ++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_OPENBSD) + BASE_EXPORT int GetUrandomFD(); + #endif + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_rand__util__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_rand__util__posix.cc new file mode 100644 index 000000000000..dd0e937699e7 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_rand__util__posix.cc @@ -0,0 +1,52 @@ +--- src/3rdparty/chromium/base/rand_util_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/rand_util_posix.cc +@@ -17,7 +17,7 @@ + #include "base/posix/eintr_wrapper.h" + #include "build/build_config.h" + +-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_NACL) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + #include "third_party/lss/linux_syscall_support.h" + #elif BUILDFLAG(IS_MAC) + // TODO(crbug.com/995996): Waiting for this header to appear in the iOS SDK. +@@ -34,6 +34,7 @@ static constexpr int kOpenFlags = O_RDONLY | O_CLOEXEC + static constexpr int kOpenFlags = O_RDONLY | O_CLOEXEC; + #endif + ++#if !BUILDFLAG(IS_OPENBSD) + // We keep the file descriptor for /dev/urandom around so we don't need to + // reopen it (which is expensive), and since we may not even be able to reopen + // it if we are later put in a sandbox. This class wraps the file descriptor so +@@ -51,6 +52,7 @@ class URandomFd { + private: + const int fd_; + }; ++#endif + + } // namespace + +@@ -62,6 +64,7 @@ void RandBytes(void* output, size_t output_length) { + // (https://chromium-review.googlesource.com/c/chromium/src/+/1545096) and land + // it or some form of it. + void RandBytes(void* output, size_t output_length) { ++#if !BUILDFLAG(IS_OPENBSD) + #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_NACL) + // We have to call `getrandom` via Linux Syscall Support, rather than through + // the libc wrapper, because we might not have an up-to-date libc (e.g. on +@@ -93,11 +96,16 @@ void RandBytes(void* output, size_t output_length) { + const bool success = + ReadFromFD(urandom_fd, static_cast(output), output_length); + CHECK(success); ++#else ++ arc4random_buf(static_cast(output), output_length); ++#endif + } + ++#if !BUILDFLAG(IS_OPENBSD) + int GetUrandomFD() { + static NoDestructor urandom_fd; + return urandom_fd->fd(); + } ++#endif + + } // namespace base diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_synchronization_lock__impl.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_synchronization_lock__impl.h new file mode 100644 index 000000000000..a673f132730a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_synchronization_lock__impl.h @@ -0,0 +1,23 @@ +--- src/3rdparty/chromium/base/synchronization/lock_impl.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/synchronization/lock_impl.h +@@ -106,6 +106,10 @@ void LockImpl::Unlock() { + } + + #elif BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_FREEBSD) ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wthread-safety-analysis" ++#endif + + #if DCHECK_IS_ON() + BASE_EXPORT void dcheck_trylock_result(int rv); +@@ -126,6 +130,9 @@ void LockImpl::Unlock() { + dcheck_unlock_result(rv); + #endif + } ++#if BUILDFLAG(IS_FREEBSD) ++#pragma GCC diagnostic pop ++#endif + #endif + + // This is an implementation used for AutoLock templated on the lock type. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_syslog__logging.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_syslog__logging.cc new file mode 100644 index 000000000000..f6f23ed3d628 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_syslog__logging.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/base/syslog_logging.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/syslog_logging.cc +@@ -15,7 +15,7 @@ + #include "base/strings/string_util.h" + #include "base/win/scoped_handle.h" + #include "base/win/win_util.h" +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // defines LOG_INFO, LOG_WARNING macros that could conflict with + // base::LOG_INFO, base::LOG_WARNING. + #include +@@ -147,7 +147,7 @@ EventLogMessage::~EventLogMessage() { + + if (user_sid != nullptr) + ::LocalFree(user_sid); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + const char kEventSource[] = "chrome"; + openlog(kEventSource, LOG_NOWAIT | LOG_PID, LOG_USER); + // We can't use the defined names for the logging severity from syslog.h diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info.cc new file mode 100644 index 000000000000..4ec78d9ee144 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/system/sys_info.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/system/sys_info.cc +@@ -104,7 +104,7 @@ void SysInfo::GetHardwareInfo(base::OnceCallback + + #include "base/notreached.h" ++#include "base/process/process_metrics.h" ++#include "base/strings/string_util.h" + + namespace base { + ++int SysInfo::NumberOfProcessors() { ++ int mib[] = {CTL_HW, HW_NCPU}; ++ int ncpu; ++ size_t size = sizeof(ncpu); ++ if (sysctl(mib, std::size(mib), &ncpu, &size, NULL, 0) < 0) { ++ NOTREACHED(); ++ return 1; ++ } ++ return ncpu; ++} ++ + int64_t SysInfo::AmountOfPhysicalMemoryImpl() { +- int pages, page_size; ++ int pages, page_size, r = 0; + size_t size = sizeof(pages); +- sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0); +- sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); +- if (pages == -1 || page_size == -1) { ++ ++ if (r == 0) ++ r = sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0); ++ if (r == 0) ++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); ++ ++ if (r == -1) { + NOTREACHED(); + return 0; + } ++ + return static_cast(pages) * page_size; + } + ++int64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() { ++ int page_size, r = 0; ++ unsigned int pgfree, pginact, pgcache; ++ size_t size = sizeof(page_size); ++ size_t szpg = sizeof(pgfree); ++ ++ if (r == 0) ++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); ++ if (r == 0) ++ r = sysctlbyname("vm.stats.vm.v_free_count", &pgfree, &szpg, NULL, 0); ++ if (r == 0) ++ r = sysctlbyname("vm.stats.vm.v_inactive_count", &pginact, &szpg, NULL, 0); ++ if (r == 0) ++ r = sysctlbyname("vm.stats.vm.v_cache_count", &pgcache, &szpg, NULL, 0); ++ ++ if (r == -1) { ++ NOTREACHED(); ++ return 0; ++ } ++ ++ return static_cast((pgfree + pginact + pgcache) * page_size); ++} ++ + // static ++int64_t SysInfo::AmountOfAvailablePhysicalMemory(const SystemMemoryInfoKB& info) { ++ int64_t res_kb = info.available != 0 ++ ? info.available - info.active_file ++ : info.free + info.reclaimable + info.inactive_file; ++ return res_kb * 1024; ++} ++ ++// static ++std::string SysInfo::CPUModelName() { ++ int mib[] = { CTL_HW, HW_MODEL }; ++ char name[256]; ++ size_t size = std::size(name); ++ ++ if (sysctl(mib, std::size(mib), &name, &size, NULL, 0) == 0) { ++ return name; ++ } ++ ++ return std::string(); ++} ++ ++// static + uint64_t SysInfo::MaxSharedMemorySize() { + size_t limit; + size_t size = sizeof(limit); ++ + if (sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0) < 0) { + NOTREACHED(); + return 0; + } ++ + return static_cast(limit); ++} ++ ++SysInfo::HardwareInfo SysInfo::GetHardwareInfoSync() { ++ HardwareInfo info; ++ ++ info.manufacturer = "FreeBSD"; ++ info.model = HardwareModelName(); ++ ++ DCHECK(IsStringUTF8(info.manufacturer)); ++ DCHECK(IsStringUTF8(info.model)); ++ ++ return info; + } + + } // namespace base diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__openbsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__openbsd.cc new file mode 100644 index 000000000000..57bba575c3fa --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__openbsd.cc @@ -0,0 +1,94 @@ +--- src/3rdparty/chromium/base/system/sys_info_openbsd.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/system/sys_info_openbsd.cc +@@ -11,6 +11,7 @@ + #include + + #include "base/notreached.h" ++#include "base/strings/string_util.h" + + namespace { + +@@ -28,9 +29,15 @@ namespace base { + + namespace base { + ++// pledge(2) ++int64_t aofpmem = 0; ++int64_t aofapmem = 0; ++int64_t shmmax = 0; ++char cpumodel[256]; ++ + // static + int SysInfo::NumberOfProcessors() { +- int mib[] = {CTL_HW, HW_NCPU}; ++ int mib[] = {CTL_HW, HW_NCPUONLINE}; + int ncpu; + size_t size = sizeof(ncpu); + if (sysctl(mib, std::size(mib), &ncpu, &size, NULL, 0) < 0) { +@@ -42,10 +49,26 @@ int64_t SysInfo::AmountOfPhysicalMemoryImpl() { + + // static + int64_t SysInfo::AmountOfPhysicalMemoryImpl() { +- return AmountOfMemory(_SC_PHYS_PAGES); ++ // pledge(2) ++ if (!aofpmem) ++ aofpmem = AmountOfMemory(_SC_PHYS_PAGES); ++ return aofpmem; + } + + // static ++std::string SysInfo::CPUModelName() { ++ int mib[] = {CTL_HW, HW_MODEL}; ++ size_t len = std::size(cpumodel); ++ ++ if (cpumodel[0] == '\0') { ++ if (sysctl(mib, std::size(mib), cpumodel, &len, NULL, 0) < 0) ++ return std::string(); ++ } ++ ++ return std::string(cpumodel, len - 1); ++} ++ ++// static + int64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() { + // We should add inactive file-backed memory also but there is no such + // information from OpenBSD unfortunately. +@@ -57,23 +80,28 @@ uint64_t SysInfo::MaxSharedMemorySize() { + int mib[] = {CTL_KERN, KERN_SHMINFO, KERN_SHMINFO_SHMMAX}; + size_t limit; + size_t size = sizeof(limit); ++ // pledge(2) ++ if (shmmax) ++ goto out; + if (sysctl(mib, std::size(mib), &limit, &size, NULL, 0) < 0) { + NOTREACHED(); + return 0; + } +- return static_cast(limit); ++ shmmax = static_cast(limit); ++out: ++ return shmmax; + } + + // static +-std::string SysInfo::CPUModelName() { +- int mib[] = {CTL_HW, HW_MODEL}; +- char name[256]; +- size_t len = std::size(name); +- if (sysctl(mib, std::size(mib), name, &len, NULL, 0) < 0) { +- NOTREACHED(); +- return std::string(); +- } +- return name; ++SysInfo::HardwareInfo SysInfo::GetHardwareInfoSync() { ++ HardwareInfo info; ++ // Set the manufacturer to "OpenBSD" and the model to ++ // an empty string. ++ info.manufacturer = "OpenBSD"; ++ info.model = HardwareModelName(); ++ DCHECK(IsStringUTF8(info.manufacturer)); ++ DCHECK(IsStringUTF8(info.model)); ++ return info; + } + + } // namespace base diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__posix.cc new file mode 100644 index 000000000000..cfacfabfa35e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__posix.cc @@ -0,0 +1,43 @@ +--- src/3rdparty/chromium/base/system/sys_info_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/system/sys_info_posix.cc +@@ -37,7 +37,7 @@ namespace { + + namespace { + +-#if !BUILDFLAG(IS_OPENBSD) ++#if !BUILDFLAG(IS_BSD) + int NumberOfProcessors() { + // sysconf returns the number of "logical" (not "physical") processors on both + // Mac and Linux. So we get the number of max available "logical" processors. +@@ -77,7 +77,7 @@ base::LazyInstance>:: + Leaky g_lazy_number_of_processors = LAZY_INSTANCE_INITIALIZER; +-#endif // !BUILDFLAG(IS_OPENBSD) ++#endif // !BUILDFLAG(IS_BSD) + + int64_t AmountOfVirtualMemory() { + struct rlimit limit; +@@ -143,11 +143,11 @@ namespace base { + + namespace base { + +-#if !BUILDFLAG(IS_OPENBSD) ++#if !BUILDFLAG(IS_BSD) + int SysInfo::NumberOfProcessors() { + return g_lazy_number_of_processors.Get().value(); + } +-#endif // !BUILDFLAG(IS_OPENBSD) ++#endif // !BUILDFLAG(IS_BSD) + + // static + int64_t SysInfo::AmountOfVirtualMemory() { +@@ -239,6 +239,8 @@ std::string SysInfo::OperatingSystemArchitecture() { + arch = "x86"; + } else if (arch == "amd64") { + arch = "x86_64"; ++ } else if (arch == "arm64") { ++ arch = "aarch64"; + } else if (std::string(info.sysname) == "AIX") { + arch = "ppc64"; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_test_test__file__util__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_test_test__file__util__linux.cc new file mode 100644 index 000000000000..e79b61285bf0 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_test_test__file__util__linux.cc @@ -0,0 +1,13 @@ +--- src/3rdparty/chromium/base/test/test_file_util_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/test/test_file_util_linux.cc +@@ -54,8 +54,10 @@ bool EvictFileFromSystemCache(const FilePath& file) { + return false; + if (fdatasync(fd.get()) != 0) + return false; ++#if !defined(OS_BSD) + if (posix_fadvise(fd.get(), 0, 0, POSIX_FADV_DONTNEED) != 0) + return false; ++#endif + return true; + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_test_test__file__util__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_test_test__file__util__posix.cc new file mode 100644 index 000000000000..13a0395396b3 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_test_test__file__util__posix.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/test/test_file_util_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/test/test_file_util_posix.cc +@@ -88,7 +88,7 @@ void SyncPageCacheToDisk() { + } + + #if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_APPLE) && \ +- !BUILDFLAG(IS_ANDROID) ++ !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_BSD) + bool EvictFileFromSystemCache(const FilePath& file) { + // There doesn't seem to be a POSIX way to cool the disk cache. + NOTIMPLEMENTED(); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_third__party_libevent_event.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_third__party_libevent_event.h new file mode 100644 index 000000000000..72ae1ebd39f9 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_third__party_libevent_event.h @@ -0,0 +1,14 @@ +--- src/3rdparty/chromium/base/third_party/libevent/event.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/third_party/libevent/event.h +@@ -1,3 +1,6 @@ ++#if defined(USE_SYSTEM_LIBEVENT) ++#include ++#else + /* + * Copyright (c) 2000-2007 Niels Provos + * All rights reserved. +@@ -1210,3 +1213,4 @@ int evtag_unmarshal_timeval(struct evbuffer *evbuf, ev + #endif + + #endif /* _EVENT_H_ */ ++#endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_third__party_symbolize_symbolize.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_third__party_symbolize_symbolize.cc new file mode 100644 index 000000000000..15f06fce2970 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_third__party_symbolize_symbolize.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/third_party/symbolize/symbolize.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/third_party/symbolize/symbolize.cc +@@ -114,7 +114,7 @@ _END_GOOGLE_NAMESPACE_ + #if defined(HAVE_DLFCN_H) + #include + #endif +-#if BUILDFLAG(IS_OPENBSD) ++#if defined(__OpenBSD__) + #include + #else + #include diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread.h new file mode 100644 index 000000000000..2b778b07c19a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/threading/platform_thread.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/threading/platform_thread.h +@@ -211,7 +211,7 @@ class BASE_EXPORT PlatformThread { + // Returns a realtime period provided by `delegate`. + static TimeDelta GetRealtimePeriod(Delegate* delegate); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Toggles a specific thread's priority at runtime. This can be used to + // change the priority of a thread in a different process and will fail + // if the calling process does not have proper permissions. The diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__linux.cc new file mode 100644 index 000000000000..99a5e12c9314 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__linux.cc @@ -0,0 +1,77 @@ +--- src/3rdparty/chromium/base/threading/platform_thread_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/threading/platform_thread_linux.cc +@@ -30,7 +30,9 @@ + + #if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX) + #include ++#if !BUILDFLAG(IS_BSD) + #include ++#endif + #include + #include + #include +@@ -133,7 +135,7 @@ int sched_setattr(pid_t pid, + #endif // !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX) + #endif // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) + +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + const FilePath::CharType kCgroupDirectory[] = + FILE_PATH_LITERAL("/sys/fs/cgroup"); + +@@ -287,7 +289,7 @@ namespace { + namespace internal { + + namespace { +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + const struct sched_param kRealTimePrio = {8}; + #endif + } // namespace +@@ -300,7 +302,7 @@ bool CanSetThreadPriorityToRealtimeAudio() { + }; + + bool CanSetThreadPriorityToRealtimeAudio() { +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + // A non-zero soft-limit on RLIMIT_RTPRIO is required to be allowed to invoke + // pthread_setschedparam in SetCurrentThreadPriorityForPlatform(). + struct rlimit rlim; +@@ -311,7 +313,7 @@ bool SetCurrentThreadPriorityForPlatform(ThreadPriorit + } + + bool SetCurrentThreadPriorityForPlatform(ThreadPriority priority) { +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + // For legacy schedtune interface + SetThreadCgroupsForThreadPriority(PlatformThread::CurrentId(), priority); + +@@ -329,7 +331,7 @@ absl::optional GetCurrentThreadPriorit + } + + absl::optional GetCurrentThreadPriorityForPlatform() { +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + int maybe_sched_rr = 0; + struct sched_param maybe_realtime_prio = {0}; + if (pthread_getschedparam(pthread_self(), &maybe_sched_rr, +@@ -348,7 +350,7 @@ void PlatformThread::SetName(const std::string& name) + void PlatformThread::SetName(const std::string& name) { + ThreadIdNameManager::GetInstance()->SetName(name); + +-#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX) && !BUILDFLAG(IS_BSD) + // On linux we can get the thread names to show up in the debugger by setting + // the process name for the LWP. We don't want to do this for the main + // thread because that would rename the process, causing tools like killall +@@ -378,8 +380,10 @@ void PlatformThread::SetThreadPriority(ProcessId proce + // priority. + CHECK_NE(thread_id, process_id); + ++#if !BUILDFLAG(IS_BSD) + // For legacy schedtune interface + SetThreadCgroupsForThreadPriority(thread_id, priority); ++#endif + + #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) + // For upstream uclamp interface. We try both legacy (schedtune, as done diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__posix.cc new file mode 100644 index 000000000000..46dc460a2826 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__posix.cc @@ -0,0 +1,21 @@ +--- src/3rdparty/chromium/base/threading/platform_thread_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/threading/platform_thread_posix.cc +@@ -76,7 +76,7 @@ void* ThreadFunc(void* params) { + if (!thread_params->joinable) + base::DisallowSingleton(); + +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) + internal::PCScan::NotifyThreadCreated(internal::GetStackPointer()); + #endif +@@ -365,6 +365,9 @@ void PlatformThread::SetCurrentThreadPriorityImpl(Thre + // static + void PlatformThread::SetCurrentThreadPriorityImpl(ThreadPriority priority) { + #if BUILDFLAG(IS_NACL) ++ NOTIMPLEMENTED(); ++// avoid pledge(2) violation ++#elif BUILDFLAG(IS_BSD) + NOTIMPLEMENTED(); + #else + if (internal::SetCurrentThreadPriorityForPlatform(priority)) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_threading_thread__task__runner__handle.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_threading_thread__task__runner__handle.cc new file mode 100644 index 000000000000..8ab2310d7a8b --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_threading_thread__task__runner__handle.cc @@ -0,0 +1,26 @@ +--- src/3rdparty/chromium/base/threading/thread_task_runner_handle.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/threading/thread_task_runner_handle.cc +@@ -8,6 +8,7 @@ + #include + + #include "base/bind.h" ++#include "base/callback_helpers.h" + #include "base/check_op.h" + #include "base/dcheck_is_on.h" + #include "base/lazy_instance.h" +@@ -40,6 +41,7 @@ const scoped_refptr& ThreadTas + return current->task_runner_; + } + ++#if defined(OS_BSD) + // static + bool ThreadTaskRunnerHandle::IsSet() { + return !!thread_task_runner_tls.Pointer()->Get(); +@@ -89,6 +91,7 @@ ThreadTaskRunnerHandleOverride::ThreadTaskRunnerHandle + std::make_unique(); + } + } ++#endif + + ThreadTaskRunnerHandleOverride::~ThreadTaskRunnerHandleOverride() { + if (task_runner_to_restore_) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_time_time.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_time_time.cc new file mode 100644 index 000000000000..0684ffe1d3b7 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_time_time.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/time/time.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/time/time.cc +@@ -6,7 +6,7 @@ + + #include "build/build_config.h" + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // time.h is a widely included header and its size impacts build time. + // Try not to raise this limit unless necessary. See + // https://chromium.googlesource.com/chromium/src/+/HEAD/docs/wmax_tokens.md diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_trace__event_malloc__dump__provider.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_trace__event_malloc__dump__provider.cc new file mode 100644 index 000000000000..9a8738881caa --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_trace__event_malloc__dump__provider.cc @@ -0,0 +1,31 @@ +--- src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc +@@ -23,6 +23,8 @@ + + #if BUILDFLAG(IS_APPLE) + #include ++#elif defined(OS_BSD) ++#include + #else + #include + #endif +@@ -174,7 +176,8 @@ void ReportAppleAllocStats(size_t* total_virtual_size, + + #if (BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && BUILDFLAG(IS_ANDROID)) || \ + (!BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && !BUILDFLAG(IS_WIN) && \ +- !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_FUCHSIA)) ++ !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_FUCHSIA) && \ ++ !BUILDFLAG(IS_BSD)) + void ReportMallinfoStats(ProcessMemoryDump* pmd, + size_t* total_virtual_size, + size_t* resident_size, +@@ -339,6 +342,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump + &allocated_objects_count); + #elif BUILDFLAG(IS_FUCHSIA) + // TODO(fuchsia): Port, see https://crbug.com/706592. ++#elif defined(OS_BSD) ++ total_virtual_size = 0; ++ allocated_objects_size = 0; + #else + ReportMallinfoStats(/*pmd=*/nullptr, &total_virtual_size, &resident_size, + &allocated_objects_size, &allocated_objects_count); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_trace__event_memory__dump__manager.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_trace__event_memory__dump__manager.cc new file mode 100644 index 000000000000..93166ce3be49 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_trace__event_memory__dump__manager.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/trace_event/memory_dump_manager.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/trace_event/memory_dump_manager.cc +@@ -82,7 +82,7 @@ const char* const MemoryDumpManager::kSystemAllocatorP + #if defined(MALLOC_MEMORY_TRACING_SUPPORTED) + MallocDumpProvider::kAllocatedObjects; + #else +- nullptr; ++ ""; + #endif + + // static diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_trace__event_process__memory__dump.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_trace__event_process__memory__dump.cc new file mode 100644 index 000000000000..48e7d1bed14f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_trace__event_process__memory__dump.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/base/trace_event/process_memory_dump.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/trace_event/process_memory_dump.cc +@@ -105,7 +105,7 @@ absl::optional ProcessMemoryDump::CountResiden + #if BUILDFLAG(IS_WIN) + std::unique_ptr vec( + new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]); +-#elif BUILDFLAG(IS_APPLE) ++#elif BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) + std::unique_ptr vec(new char[max_vec_size]); + #elif BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) + std::unique_ptr vec(new unsigned char[max_vec_size]); +@@ -130,7 +130,7 @@ absl::optional ProcessMemoryDump::CountResiden + + for (size_t i = 0; i < page_count; i++) + resident_page_count += vec[i].VirtualAttributes.Valid; +-#elif BUILDFLAG(IS_FUCHSIA) ++#elif BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // TODO(fuchsia): Port, see https://crbug.com/706592. + #elif BUILDFLAG(IS_APPLE) + // mincore in MAC does not fail with EAGAIN. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_tracing_trace__time.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_tracing_trace__time.cc new file mode 100644 index 000000000000..526d789c7248 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_tracing_trace__time.cc @@ -0,0 +1,28 @@ +--- src/3rdparty/chromium/base/tracing/trace_time.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/tracing/trace_time.cc +@@ -8,13 +8,17 @@ + #include "build/build_config.h" + #include "third_party/perfetto/include/perfetto/base/time.h" + ++#if BUILDFLAG(IS_FREEBSD) ++#define CLOCK_BOOTTIME CLOCK_UPTIME ++#endif ++ + namespace base { + namespace tracing { + + int64_t TraceBootTicksNow() { + // On Windows and Mac, TRACE_TIME_TICKS_NOW() behaves like boottime already. + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + struct timespec ts; + int res = clock_gettime(CLOCK_BOOTTIME, &ts); + if (res != -1) +@@ -24,4 +28,4 @@ int64_t TraceBootTicksNow() { + } + + } // namespace tracing +-} // namespace base +\ No newline at end of file ++} // namespace base diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_tracing_trace__time.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_tracing_trace__time.h new file mode 100644 index 000000000000..318465a602b4 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_tracing_trace__time.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/base/tracing/trace_time.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/base/tracing/trace_time.h +@@ -12,7 +12,7 @@ namespace tracing { + namespace tracing { + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // Linux, Android, and Fuchsia all use CLOCK_MONOTONIC. See crbug.com/166153 + // about efforts to unify base::TimeTicks across all platforms. + constexpr perfetto::protos::pbzero::BuiltinClock kTraceClockId = diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_BUILD.gn new file mode 100644 index 000000000000..40ca1061af84 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_BUILD.gn @@ -0,0 +1,22 @@ +--- src/3rdparty/chromium/build/config/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/config/BUILD.gn +@@ -222,13 +222,17 @@ config("default_libs") { + "CoreText.framework", + "Foundation.framework", + ] +- } else if (is_linux || is_chromeos) { ++ } else if ((is_linux && !is_bsd) || is_chromeos) { + libs = [ + "dl", + "pthread", + "rt", + ] +- } ++ } else if (is_bsd) { ++ libs = [ ++ "pthread", ++ ] ++ } + } + + group("common_deps") { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_BUILDCONFIG.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_BUILDCONFIG.gn new file mode 100644 index 000000000000..38eb6d996a28 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_BUILDCONFIG.gn @@ -0,0 +1,45 @@ +--- src/3rdparty/chromium/build/config/BUILDCONFIG.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/config/BUILDCONFIG.gn +@@ -136,7 +136,8 @@ declare_args() { + is_official_build = false + + # Set to true when compiling with the Clang compiler. +- is_clang = current_os != "linux" || ++ is_clang = current_os != "linux" || current_os == "openbsd" || ++ current_os == "freebsd" || + (current_cpu != "s390x" && current_cpu != "s390" && + current_cpu != "ppc64" && current_cpu != "ppc" && + current_cpu != "mips" && current_cpu != "mips64" && +@@ -225,6 +226,10 @@ if (host_toolchain == "") { + host_toolchain = "//build/toolchain/aix:$host_cpu" + } else if (host_os == "zos") { + host_toolchain = "//build/toolchain/zos:$host_cpu" ++ } else if (host_os == "openbsd") { ++ host_toolchain = "//build/toolchain/openbsd:clang_$host_cpu" ++ } else if (host_os == "freebsd") { ++ host_toolchain = "//build/toolchain/freebsd:clang_$host_cpu" + } else { + assert(false, "Unsupported host_os: $host_os") + } +@@ -269,6 +274,8 @@ if (target_os == "android") { + _default_toolchain = "//build/toolchain/aix:$target_cpu" + } else if (target_os == "zos") { + _default_toolchain = "//build/toolchain/zos:$target_cpu" ++} else if (target_os == "openbsd" || target_os == "freebsd") { ++ _default_toolchain = host_toolchain + } else { + assert(false, "Unsupported target_os: $target_os") + } +@@ -303,7 +310,11 @@ is_ios = current_os == "ios" + is_chromeos = current_os == "chromeos" + is_fuchsia = current_os == "fuchsia" + is_ios = current_os == "ios" +-is_linux = current_os == "linux" ++is_linux = current_os == "linux" || current_os == "openbsd" || ++ current_os == "freebsd" ++is_openbsd = current_os == "openbsd" ++is_freebsd = current_os == "freebsd" ++is_bsd = current_os == "openbsd" || current_os == "freebsd" + is_mac = current_os == "mac" + is_nacl = current_os == "nacl" + is_win = current_os == "win" || current_os == "winuwp" diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_BUILD.gn new file mode 100644 index 000000000000..f981c9b725cb --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_BUILD.gn @@ -0,0 +1,94 @@ +--- src/3rdparty/chromium/build/config/compiler/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/config/compiler/BUILD.gn +@@ -237,13 +237,16 @@ config("no_unresolved_symbols") { + # Compiler instrumentation can introduce dependencies in DSOs to symbols in + # the executable they are loaded into, so they are unresolved at link-time. + config("no_unresolved_symbols") { +- if (!using_sanitizer && ++ if (!using_sanitizer && !is_bsd && + (is_linux || is_chromeos || is_android || is_fuchsia)) { + ldflags = [ + "-Wl,-z,defs", + "-Wl,--as-needed", + ] + } ++ if (current_cpu == "x86" && is_openbsd) { ++ ldflags = [ "-Wl,-z,notext" ] ++ } + } + + # compiler --------------------------------------------------------------------- +@@ -487,6 +490,10 @@ config("compiler") { + } + } + ++ if (is_openbsd) { ++ ldflags += [ "-Wl,-z,wxneeded" ] ++ } ++ + # Linux-specific compiler flags setup. + # ------------------------------------ + if (use_gold) { +@@ -952,7 +959,7 @@ config("compiler_cpu_abi") { + ] + } + } else if (current_cpu == "arm") { +- if (is_clang && !is_android && !is_nacl) { ++ if (is_clang && !is_android && !is_nacl && !is_bsd) { + cflags += [ "--target=arm-linux-gnueabihf" ] + ldflags += [ "--target=arm-linux-gnueabihf" ] + } +@@ -969,7 +976,7 @@ config("compiler_cpu_abi") { + cflags += [ "-mtune=$arm_tune" ] + } + } else if (current_cpu == "arm64") { +- if (is_clang && !is_android && !is_nacl && !is_fuchsia) { ++ if (is_clang && !is_android && !is_nacl && !is_fuchsia && !is_bsd) { + cflags += [ "--target=aarch64-linux-gnu" ] + ldflags += [ "--target=aarch64-linux-gnu" ] + } +@@ -1290,7 +1297,7 @@ config("compiler_deterministic") { + # different build directory like "out/feature_a" and "out/feature_b" if + # we build same files with same compile flag. + # Other paths are already given in relative, no need to normalize them. +- if (is_nacl) { ++ if (is_nacl || is_bsd) { + # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here. + cflags += [ + "-Xclang", +@@ -1745,7 +1752,7 @@ config("default_warnings") { + "-Wno-ignored-pragma-optimize", + ] + +- if (!is_nacl) { ++ if (!is_nacl && !is_bsd) { + # TODO(https://crbug.com/1300731) Clean up and enable. + cflags += [ "-Wno-unqualified-std-cast-call" ] + +@@ -1929,7 +1936,7 @@ config("no_chromium_code") { + # third-party libraries. + "-Wno-c++11-narrowing", + ] +- if (!is_nacl) { ++ if (!is_nacl && !is_freebsd) { + cflags += [ + # Disabled for similar reasons as -Wunused-variable. + "-Wno-unused-but-set-variable", +@@ -2451,7 +2458,7 @@ config("afdo") { + # There are some targeted places that AFDO regresses, so we provide a separate + # config to allow AFDO to be disabled per-target. + config("afdo") { +- if (is_clang) { ++ if (is_clang && !is_bsd) { + cflags = [] + if (clang_emit_debug_info_for_profiling) { + # Add the following flags to generate debug info for profiling. +@@ -2467,7 +2474,7 @@ config("afdo") { + cflags += [ "-fprofile-sample-use=${rebased_clang_sample_profile}" ] + inputs = [ _clang_sample_profile ] + } +- } else if (auto_profile_path != "" && is_a_target_toolchain) { ++ } else if (auto_profile_path != "" && is_a_target_toolchain && !is_bsd) { + cflags = [ "-fauto-profile=${auto_profile_path}" ] + inputs = [ auto_profile_path ] + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_pgo_pgo.gni b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_pgo_pgo.gni new file mode 100644 index 000000000000..b7dd46c109b1 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_pgo_pgo.gni @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/build/config/compiler/pgo/pgo.gni.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/config/compiler/pgo/pgo.gni +@@ -16,7 +16,7 @@ declare_args() { + # TODO(crbug.com/1052397): Remove chromeos_is_browser_only once + # target_os switch for lacros-chrome is completed. + (is_win || is_mac || +- (is_linux && !chromeos_is_browser_only && !is_chromecast))) { ++ (is_linux && !chromeos_is_browser_only && !is_chromecast && !is_bsd))) { + chrome_pgo_phase = 2 + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_linux_pkg-config.py b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_linux_pkg-config.py new file mode 100644 index 000000000000..e3e4ef50330e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_linux_pkg-config.py @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/build/config/linux/pkg-config.py.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/config/linux/pkg-config.py +@@ -109,7 +109,7 @@ def main(): + # If this is run on non-Linux platforms, just return nothing and indicate + # success. This allows us to "kind of emulate" a Linux build from other + # platforms. +- if "linux" not in sys.platform: ++ if not sys.platform.startswith(tuple(['linux', 'openbsd', 'freebsd'])): + print("[[],[],[],[],[]]") + return 0 + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_ozone.gni b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_ozone.gni new file mode 100644 index 000000000000..d1ab07b39a42 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_ozone.gni @@ -0,0 +1,19 @@ +--- src/3rdparty/chromium/build/config/ozone.gni.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/config/ozone.gni +@@ -94,7 +94,15 @@ declare_args() { + } else if (is_chromeos_lacros) { + ozone_platform = "wayland" + ozone_platform_wayland = true +- } else if (is_linux) { ++ } else if (is_linux && !is_bsd) { ++ ozone_platform = "x11" ++ ozone_platform_wayland = true ++ ozone_platform_x11 = true ++ } else if (is_openbsd) { ++ ozone_platform = "x11" ++ ozone_platform_wayland = false ++ ozone_platform_x11 = true ++ } else if (is_freebsd) { + ozone_platform = "x11" + ozone_platform_wayland = true + ozone_platform_x11 = true diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_rust.gni b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_rust.gni new file mode 100644 index 000000000000..d614091daca2 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_rust.gni @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/build/config/rust.gni.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/config/rust.gni +@@ -116,7 +116,7 @@ if (enable_rust) { + rust_sysroot = "//third_party/rust-toolchain" + use_unverified_rust_toolchain = false + } else { +- if (host_os != "linux") { ++ if (host_os != "linux" && host_os != "openbsd" && host_os != "freebsd") { + assert(false, + "Attempt to use Android Rust toolchain on an unsupported platform") + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_v8__target__cpu.gni b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_v8__target__cpu.gni new file mode 100644 index 000000000000..e3643d74e9df --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_config_v8__target__cpu.gni @@ -0,0 +1,13 @@ +--- src/3rdparty/chromium/build/config/v8_target_cpu.gni.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/config/v8_target_cpu.gni +@@ -36,6 +36,10 @@ if (v8_target_cpu == "") { + if (v8_target_cpu == "") { + if (current_toolchain == "//build/toolchain/linux:clang_x64_v8_arm64") { + v8_target_cpu = "arm64" ++ } else if (current_toolchain == "//build/toolchain/openbsd:clang_arm64") { ++ v8_target_cpu = "arm64" ++ } else if (current_toolchain == "//build/toolchain/freebsd:clang_arm64") { ++ v8_target_cpu = "arm64" + } else if (current_toolchain == "//build/toolchain/linux:clang_x86_v8_arm") { + v8_target_cpu = "arm" + } else if (current_toolchain == diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_detect__host__arch.py b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_detect__host__arch.py new file mode 100644 index 000000000000..348493fc1237 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_detect__host__arch.py @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/build/detect_host_arch.py.orig 2022-06-08 06:40:31 UTC ++++ src/3rdparty/chromium/build/detect_host_arch.py +@@ -21,6 +21,8 @@ def HostArch(): + host_arch = 'ia32' + elif host_arch in ['x86_64', 'amd64']: + host_arch = 'x64' ++ elif host_arch.startswith('arm64'): ++ host_arch = 'arm64' + elif host_arch.startswith('arm'): + host_arch = 'arm' + elif host_arch.startswith('aarch64'): diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_gn__run__binary.py b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_gn__run__binary.py new file mode 100644 index 000000000000..12c9c8ac0b55 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_gn__run__binary.py @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/build/gn_run_binary.py.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/gn_run_binary.py +@@ -24,7 +24,7 @@ args = [path] + sys.argv[2:] + # The rest of the arguments are passed directly to the executable. + args = [path] + sys.argv[2:] + +-ret = subprocess.call(args) ++ret = subprocess.call(args, env={"CHROME_EXE_PATH":"${WRKSRC}/out/Release/chrome","LD_LIBRARY_PATH":"${WRKSRC}/out/Release"}) + if ret != 0: + if ret <= -100: + # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_chrome.map b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_chrome.map new file mode 100644 index 000000000000..f20740c0619c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_chrome.map @@ -0,0 +1,13 @@ +--- src/3rdparty/chromium/build/linux/chrome.map.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/linux/chrome.map +@@ -20,6 +20,10 @@ global: + # Program entry point. + _start; + ++ # FreeBSD specific variables. ++ __progname; ++ environ; ++ + # Memory allocation symbols. We want chrome and any libraries to + # share the same heap, so it is correct to export these symbols. + aligned_alloc; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_libpci_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_libpci_BUILD.gn new file mode 100644 index 000000000000..72a4e8eea81e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_libpci_BUILD.gn @@ -0,0 +1,53 @@ +--- src/3rdparty/chromium/build/linux/libpci/BUILD.gn.orig 2022-06-08 06:40:31 UTC ++++ src/3rdparty/chromium/build/linux/libpci/BUILD.gn +@@ -3,20 +3,36 @@ import("//tools/generate_library_loader/generate_libra + # found in the LICENSE file. + + import("//tools/generate_library_loader/generate_library_loader.gni") ++import("//build/config/linux/pkg_config.gni") + +-# This generates a target named "libpci". +-generate_library_loader("libpci") { +- name = "LibPciLoader" +- output_h = "libpci.h" +- output_cc = "libpci_loader.cc" +- header = "" ++declare_args() { ++ use_system_libpci = is_bsd ++} + +- functions = [ +- "pci_alloc", +- "pci_init", +- "pci_cleanup", +- "pci_scan_bus", +- "pci_fill_info", +- "pci_lookup_name", +- ] ++if (use_system_libpci) { ++ pkg_config("system_libpci") { ++ packages = [ "libpci" ] ++ } ++ ++ source_set("libpci") { ++ public_configs = [ ":system_libpci" ] ++ } ++ ++} else { ++ # This generates a target named "libpci". ++ generate_library_loader("libpci") { ++ name = "LibPciLoader" ++ output_h = "libpci.h" ++ output_cc = "libpci_loader.cc" ++ header = "" ++ ++ functions = [ ++ "pci_alloc", ++ "pci_init", ++ "pci_cleanup", ++ "pci_scan_bus", ++ "pci_fill_info", ++ "pci_lookup_name", ++ ] ++ } + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_strip__binary.gni b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_strip__binary.gni new file mode 100644 index 000000000000..af46c4349269 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_strip__binary.gni @@ -0,0 +1,15 @@ +--- src/3rdparty/chromium/build/linux/strip_binary.gni.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/linux/strip_binary.gni +@@ -20,7 +20,11 @@ template("strip_binary") { + "testonly", + ]) + action("${target_name}") { +- eu_strip_binary = "//buildtools/third_party/eu-strip/bin/eu-strip" ++ if (is_bsd) { ++ eu_strip_binary = "//buildtools/freebsd/strip" ++ } else { ++ eu_strip_binary = "//buildtools/third_party/eu-strip/bin/eu-strip" ++ } + script = "//build/linux/strip_binary.py" + + if (defined(invoker.stripped_binary_output)) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_strip__binary.py b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_strip__binary.py new file mode 100644 index 000000000000..cdb2ec675e75 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_strip__binary.py @@ -0,0 +1,10 @@ +--- src/3rdparty/chromium/build/linux/strip_binary.py.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/linux/strip_binary.py +@@ -10,6 +10,7 @@ def main(): + + + def main(): ++ return 0 + argparser = argparse.ArgumentParser(description='eu-strip binary.') + + argparser.add_argument('--eu-strip-binary-path', help='eu-strip path.') diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libevent.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libevent.gn new file mode 100644 index 000000000000..eee516c78456 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libevent.gn @@ -0,0 +1,15 @@ +--- src/3rdparty/chromium/build/linux/unbundle/libevent.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/linux/unbundle/libevent.gn +@@ -9,7 +9,12 @@ shim_headers("libevent_shim") { + headers = [ "event.h" ] + } + ++config("system_libevent") { ++ defines = [ "USE_SYSTEM_LIBEVENT=1" ] ++} ++ + source_set("libevent") { + deps = [ ":libevent_shim" ] + libs = [ "event" ] ++ public_configs = [ ":system_libevent" ] + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libusb.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libusb.gn new file mode 100644 index 000000000000..edd8eefd6aac --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libusb.gn @@ -0,0 +1,27 @@ +--- src/3rdparty/chromium/build/linux/unbundle/libusb.gn.orig 2022-11-06 11:50:49 UTC ++++ src/3rdparty/chromium/build/linux/unbundle/libusb.gn +@@ -0,0 +1,24 @@ ++# Copyright 2016 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/config/linux/pkg_config.gni") ++import("//build/shim_headers.gni") ++ ++pkg_config("system_libusb") { ++ packages = [ "libusb-1.0" ] ++} ++ ++shim_headers("libusb_shim") { ++ root_path = "src/libusb" ++ headers = [ ++ "libusb.h", ++ ] ++} ++ ++source_set("libusb") { ++ deps = [ ++ ":libusb_shim", ++ ] ++ public_configs = [ ":system_libusb" ] ++} diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libxml.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libxml.gn new file mode 100644 index 000000000000..db89d1303669 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libxml.gn @@ -0,0 +1,10 @@ +--- src/3rdparty/chromium/build/linux/unbundle/libxml.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/linux/unbundle/libxml.gn +@@ -19,6 +19,7 @@ static_library("libxml_utils") { + ":xml_reader", + ":xml_writer", + "//base/test:test_support", ++ "//services/data_decoder:lib", + "//services/data_decoder:xml_parser_fuzzer_deps", + ] + sources = [ diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_replace__gn__files.py b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_replace__gn__files.py new file mode 100644 index 000000000000..2bb34ce4835a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_replace__gn__files.py @@ -0,0 +1,10 @@ +--- src/3rdparty/chromium/build/linux/unbundle/replace_gn_files.py.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/linux/unbundle/replace_gn_files.py +@@ -25,6 +25,7 @@ REPLACEMENTS = { + 'libevent': 'base/third_party/libevent/BUILD.gn', + 'libjpeg': 'third_party/libjpeg.gni', + 'libpng': 'third_party/libpng/BUILD.gn', ++ 'libusb': 'third_party/libusb/BUILD.gn', + 'libvpx': 'third_party/libvpx/BUILD.gn', + 'libwebp': 'third_party/libwebp/BUILD.gn', + 'libxml': 'third_party/libxml/BUILD.gn', diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_toolchain_gcc__solink__wrapper.py b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_toolchain_gcc__solink__wrapper.py new file mode 100644 index 000000000000..5860530ca083 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_toolchain_gcc__solink__wrapper.py @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/build/toolchain/gcc_solink_wrapper.py.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/toolchain/gcc_solink_wrapper.py +@@ -39,7 +39,7 @@ def CollectDynSym(args): + """Replaces: nm --format=posix -g -D -p $sofile | cut -f1-2 -d' '""" + toc = '' + nm = subprocess.Popen(wrapper_utils.CommandToRun( +- [args.nm, '--format=posix', '-g', '-D', '-p', args.sofile]), ++ [args.nm, '-g', '-D', '-p', args.sofile]), + stdout=subprocess.PIPE, + bufsize=-1, + universal_newlines=True) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_toolchain_gcc__toolchain.gni b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_toolchain_gcc__toolchain.gni new file mode 100644 index 000000000000..0007b0b902b1 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_build_toolchain_gcc__toolchain.gni @@ -0,0 +1,35 @@ +--- src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni +@@ -53,6 +53,13 @@ if (enable_resource_allowlist_generation) { + "enable_resource_allowlist_generation=true does not work for target_os=$target_os") + } + ++declare_args() { ++ extra_cflags = "" ++ extra_cppflags = "" ++ extra_cxxflags = "" ++ extra_ldflags = "" ++} ++ + # This template defines a toolchain for something that works like gcc + # (including clang). + # +@@ -786,13 +793,12 @@ template("clang_toolchain") { + # use_gold too. + template("clang_toolchain") { + gcc_toolchain(target_name) { +- prefix = rebase_path("$clang_base_path/bin", root_build_dir) +- cc = "${prefix}/clang" +- cxx = "${prefix}/clang++" ++ cc = "cc" ++ cxx = "c++" + ld = cxx +- readelf = "${prefix}/llvm-readelf" +- ar = "${prefix}/llvm-ar" +- nm = "${prefix}/llvm-nm" ++ readelf = "readelf" ++ ar = "ar" ++ nm = "nm" + + forward_variables_from(invoker, + [ diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__event__log__uploader.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__event__log__uploader.cc new file mode 100644 index 000000000000..4b4a2f98acb5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__event__log__uploader.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_event_log_uploader.cc +@@ -42,7 +42,7 @@ const char kProduct[] = "Chrome_ChromeOS"; + const char kProduct[] = "Chrome_Mac"; + #elif BUILDFLAG(IS_CHROMEOS_ASH) + const char kProduct[] = "Chrome_ChromeOS"; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + const char kProduct[] = "Chrome_Linux"; + #elif BUILDFLAG(IS_ANDROID) + const char kProduct[] = "Chrome_Android"; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__log__uploader.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__log__uploader.cc new file mode 100644 index 000000000000..247e50dd00d3 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__log__uploader.cc @@ -0,0 +1,13 @@ +--- src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_log_uploader.cc +@@ -364,6 +364,10 @@ void WebRtcLogUploader::SetupMultipart( + const char product[] = "Chrome_ChromeOS"; + #elif BUILDFLAG(IS_FUCHSIA) + const char product[] = "Chrome_Fuchsia"; ++#elif defined(OS_OPENBSD) ++ const char product[] = "Chrome_OpenBSD"; ++#elif defined(OS_FREEBSD) ++ const char product[] = "Chrome_FreeBSD"; + #else + #error Platform not supported. + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__logging__controller.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__logging__controller.cc new file mode 100644 index 000000000000..6f3d583a13ee --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__logging__controller.cc @@ -0,0 +1,33 @@ +--- src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_logging_controller.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_logging_controller.cc +@@ -24,10 +24,10 @@ + #include "content/public/browser/browser_context.h" + #include "content/public/browser/render_process_host.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "content/public/browser/child_process_security_policy.h" + #include "storage/browser/file_system/isolated_context.h" +-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + using webrtc_event_logging::WebRtcEventLogManager; + +@@ -282,7 +282,7 @@ void WebRtcLoggingController::StartEventLogging( + web_app_id, callback); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + void WebRtcLoggingController::GetLogsDirectory( + LogsDirectoryCallback callback, + LogsDirectoryErrorCallback error_callback) { +@@ -328,7 +328,7 @@ void WebRtcLoggingController::GrantLogsDirectoryAccess + FROM_HERE, + base::BindOnce(std::move(callback), file_system.id(), registered_name)); + } +-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + void WebRtcLoggingController::OnRtpPacket( + std::unique_ptr packet_header, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__logging__controller.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__logging__controller.h new file mode 100644 index 000000000000..fd0a77569dcb --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__logging__controller.h @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_logging_controller.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_logging_controller.h +@@ -136,7 +136,7 @@ class WebRtcLoggingController + size_t web_app_id, + const StartEventLoggingCallback& callback); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Ensures that the WebRTC Logs directory exists and then grants render + // process access to the 'WebRTC Logs' directory, and invokes |callback| with + // the ids necessary to create a DirectoryEntry object. +@@ -195,7 +195,7 @@ class WebRtcLoggingController + bool success, + const std::string& error_message); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Grants the render process access to the 'WebRTC Logs' directory, and + // invokes |callback| with the ids necessary to create a DirectoryEntry + // object. If the |logs_path| couldn't be created or found, |error_callback| diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc new file mode 100644 index 000000000000..ac345f793822 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc @@ -0,0 +1,92 @@ +--- src/3rdparty/chromium/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +@@ -310,7 +310,7 @@ + #include "chrome/browser/ui/webui/app_launcher_page_ui.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "chrome/browser/ui/webui/webui_js_error/webui_js_error_ui.h" + #endif + +@@ -335,17 +335,17 @@ + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "chrome/browser/ui/webui/discards/discards_ui.h" + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_ANDROID) ++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + #include "chrome/browser/ui/webui/sandbox/sandbox_internals_ui.h" + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS_ASH) ++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + #include "chrome/browser/ui/webui/connectors_internals/connectors_internals_ui.h" + #endif + +@@ -701,7 +701,7 @@ bool IsAboutUI(const GURL& url) { + #if !BUILDFLAG(IS_ANDROID) + || url.host_piece() == chrome::kChromeUITermsHost + #endif +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + || url.host_piece() == chrome::kChromeUILinuxProxyConfigHost + #endif + #if BUILDFLAG(IS_CHROMEOS_ASH) +@@ -1131,7 +1131,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we + return &NewWebUI; + #endif // !defined(OFFICIAL_BUILD) + #endif // BUILDFLAG(IS_CHROMEOS_ASH) +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (url.host_piece() == chrome::kChromeUIWebUIJsErrorHost) + return &NewWebUI; + #endif +@@ -1189,7 +1189,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we + if (url.host_piece() == chrome::kChromeUINaClHost) + return &NewWebUI; + #endif +-#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \ ++#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && \ + defined(TOOLKIT_VIEWS)) || \ + defined(USE_AURA) + if (url.host_piece() == chrome::kChromeUITabModalConfirmDialogHost) +@@ -1247,27 +1247,27 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we + } + #endif + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_ANDROID) ++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + if (url.host_piece() == chrome::kChromeUISandboxHost) { + return &NewWebUI; + } + #endif + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS_ASH) ++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + if (url.host_piece() == chrome::kChromeUIConnectorsInternalsHost) + return &NewWebUI; + #endif + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (url.host_piece() == chrome::kChromeUIDiscardsHost) + return &NewWebUI; + #endif +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + if (url.host_piece() == chrome::kChromeUIBrowserSwitchHost) + return &NewWebUI; + #endif + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + if (base::FeatureList::IsEnabled(features::kDesktopPWAsWebAppSettingsPage) && + url.host_piece() == chrome::kChromeUIWebAppSettingsHost) { + return &NewWebUI; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.cc new file mode 100644 index 000000000000..fc76080783bb --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.cc @@ -0,0 +1,68 @@ +--- src/3rdparty/chromium/chrome/common/webui_url_constants.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/chrome/common/webui_url_constants.cc +@@ -455,18 +455,18 @@ const char kOsUIVersionURL[] = "os://version"; + const char kOsUIVersionURL[] = "os://version"; + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + const char kChromeUIWebUIJsErrorHost[] = "webuijserror"; + const char kChromeUIWebUIJsErrorURL[] = "chrome://webuijserror/"; + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS_ASH) ++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + const char kChromeUIConnectorsInternalsHost[] = "connectors-internals"; + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + const char kChromeUIDiscardsHost[] = "discards"; + const char kChromeUIDiscardsURL[] = "chrome://discards/"; + #endif +@@ -481,14 +481,14 @@ const char kChromeUILinuxProxyConfigHost[] = "linux-pr + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_ANDROID) ++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + const char kChromeUISandboxHost[] = "sandbox"; + #endif + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || \ +- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) ++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || BUILDFLAG(IS_BSD) + const char kChromeUIBrowserSwitchHost[] = "browser-switch"; + const char kChromeUIBrowserSwitchURL[] = "chrome://browser-switch/"; + const char kChromeUIEnterpriseProfileWelcomeHost[] = +@@ -503,7 +503,7 @@ const char kChromeUIProfilePickerStartupQuery[] = "sta + const char kChromeUIProfilePickerStartupQuery[] = "startup"; + #endif + +-#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \ ++#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && \ + defined(TOOLKIT_VIEWS)) || \ + defined(USE_AURA) + const char kChromeUITabModalConfirmDialogHost[] = "tab-modal-confirm-dialog"; +@@ -578,7 +578,7 @@ const char kPrivacySandboxSubPagePath[] = "/privacySan + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + const char kChromeUIWebAppSettingsURL[] = "chrome://app-settings/"; + const char kChromeUIWebAppSettingsHost[] = "app-settings"; + #endif +@@ -796,7 +796,7 @@ const char* const kChromeDebugURLs[] = { + blink::kChromeUIGpuJavaCrashURL, + kChromeUIJavaCrashURL, + #endif +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + kChromeUIWebUIJsErrorURL, + #endif + kChromeUIQuitURL, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.h new file mode 100644 index 000000000000..9c89875359fe --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.h @@ -0,0 +1,57 @@ +--- src/3rdparty/chromium/chrome/common/webui_url_constants.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/chrome/common/webui_url_constants.h +@@ -382,24 +382,24 @@ extern const char kOsUIVersionURL[]; + extern const char kOsUIVersionURL[]; + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + extern const char kChromeUIWebUIJsErrorHost[]; + extern const char kChromeUIWebUIJsErrorURL[]; + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS_ASH) ++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + extern const char kChromeUIConnectorsInternalsHost[]; + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + extern const char kChromeUIDiscardsHost[]; + extern const char kChromeUIDiscardsURL[]; + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + extern const char kChromeUIWebAppSettingsURL[]; + extern const char kChromeUIWebAppSettingsHost[]; + #endif +@@ -414,14 +414,14 @@ extern const char kChromeUILinuxProxyConfigHost[]; + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_ANDROID) ++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + extern const char kChromeUISandboxHost[]; + #endif + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || \ +- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) ++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)) + extern const char kChromeUIBrowserSwitchHost[]; + extern const char kChromeUIBrowserSwitchURL[]; + extern const char kChromeUIEnterpriseProfileWelcomeHost[]; +@@ -433,7 +433,7 @@ extern const char kChromeUIProfilePickerStartupQuery[] + extern const char kChromeUIProfilePickerStartupQuery[]; + #endif + +-#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \ ++#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && \ + defined(TOOLKIT_VIEWS)) || \ + defined(USE_AURA) + extern const char kChromeUITabModalConfirmDialogHost[]; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_content_browser_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_content_browser_BUILD.gn new file mode 100644 index 000000000000..a556b9181da5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_content_browser_BUILD.gn @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/components/crash/content/browser/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/components/crash/content/browser/BUILD.gn +@@ -21,7 +21,7 @@ source_set("browser") { + "//content/public/common", + ] + +- if (is_linux || is_chromeos || is_android) { ++ if ((is_linux && !is_bsd) || is_chromeos || is_android) { + # Want this file on both Linux and Android. + sources += [ + "crash_handler_host_linux.cc", +@@ -37,7 +37,7 @@ source_set("browser") { + + # This is not in the GYP build but this target includes breakpad client + # headers, so add the dependency here. +- if ((is_posix && !is_ios) || is_fuchsia) { ++ if ((is_posix && !is_ios && !is_bsd) || is_fuchsia) { + configs += [ "//third_party/breakpad:client_config" ] + public_configs = [ "//third_party/breakpad:client_config" ] + } +@@ -59,7 +59,7 @@ source_set("browser") { + "//components/crash/android:jni_headers", + "//mojo/public/cpp/bindings", + ] +- } else { ++ } else if (!is_bsd) { + deps += [ "//third_party/breakpad:client" ] + } + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_core_app_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_core_app_BUILD.gn new file mode 100644 index 000000000000..ee9be5a1b0a4 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_core_app_BUILD.gn @@ -0,0 +1,52 @@ +--- src/3rdparty/chromium/components/crash/core/app/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/components/crash/core/app/BUILD.gn +@@ -52,7 +52,7 @@ static_library("app") { + "crashpad.h", + ] + +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + sources += [ + "breakpad_linux.cc", + "breakpad_linux.h", +@@ -61,6 +61,10 @@ static_library("app") { + ] + } + ++ if (is_bsd) { ++ sources -= [ "crashpad.cc" ] ++ } ++ + defines = [ "CRASH_IMPLEMENTATION" ] + + public_deps = [ ":lib" ] +@@ -88,7 +92,7 @@ static_library("app") { + libs = [ "log" ] + } + +- if (is_android || is_linux || is_chromeos) { ++ if ((is_android || is_linux || is_chromeos) && !is_bsd) { + deps += [ + "//base:base_static", + "//components/crash/core/common", +@@ -96,7 +100,7 @@ static_library("app") { + ] + } + +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + deps += [ "//third_party/breakpad:client" ] + } + +@@ -216,11 +220,6 @@ if (is_mac || is_android || is_linux || is_chromeos) { + # define custom UserStreamDataSources. + executable("chrome_crashpad_handler") { + sources = [ "chrome_crashpad_handler.cc" ] +- +- deps = [ +- ":crashpad_handler_main", +- "//third_party/crashpad/crashpad/handler", +- ] + + if (is_mac && (is_component_build || is_asan)) { + ldflags = [ diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_core_app_chrome__crashpad__handler.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_core_app_chrome__crashpad__handler.cc new file mode 100644 index 000000000000..bbf84d24aff1 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_core_app_chrome__crashpad__handler.cc @@ -0,0 +1,12 @@ +--- src/3rdparty/chromium/components/crash/core/app/chrome_crashpad_handler.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/components/crash/core/app/chrome_crashpad_handler.cc +@@ -6,5 +6,9 @@ int main(int argc, char* argv[]) { + extern "C" int CrashpadHandlerMain(int argc, char* argv[]); + + int main(int argc, char* argv[]) { ++#if defined(__OpenBSD__) || defined(__FreeBSD__) ++ return -1; ++#else + return CrashpadHandlerMain(argc, argv); ++#endif + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_core_browser_crash__upload__list__crashpad.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_core_browser_crash__upload__list__crashpad.cc new file mode 100644 index 000000000000..7ed0d65f6033 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_core_browser_crash__upload__list__crashpad.cc @@ -0,0 +1,16 @@ +--- src/3rdparty/chromium/components/crash/core/browser/crash_upload_list_crashpad.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/components/crash/core/browser/crash_upload_list_crashpad.cc +@@ -51,9 +51,13 @@ void CrashUploadListCrashpad::ClearUploadList(const ba + + void CrashUploadListCrashpad::ClearUploadList(const base::Time& begin, + const base::Time& end) { ++#if !defined(OS_BSD) + crash_reporter::ClearReportsBetween(begin, end); ++#endif + } + + void CrashUploadListCrashpad::RequestSingleUpload(const std::string& local_id) { ++#if !defined(OS_BSD) + crash_reporter::RequestSingleCrashUpload(local_id); ++#endif + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_core_common_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_core_common_BUILD.gn new file mode 100644 index 000000000000..5b401e0b3290 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_crash_core_common_BUILD.gn @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/components/crash/core/common/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/components/crash/core/common/BUILD.gn +@@ -8,7 +8,7 @@ declare_args() { + + declare_args() { + # If set to true, this will stub out and disable the entire crash key system. +- use_crash_key_stubs = is_fuchsia ++ use_crash_key_stubs = is_fuchsia || is_bsd + } + + group("common") { +@@ -190,7 +190,7 @@ source_set("unit_tests") { + sources += [ "crash_key_breakpad_ios_unittest.cc" ] + deps += [ "//third_party/breakpad:client" ] + include_dirs = [ "//third_party/breakpad/breakpad/src/" ] +- } else if (!is_mac && !is_win && !is_fuchsia && !is_android) { ++ } else if (!is_mac && !is_win && !is_fuchsia && !is_android && !is_bsd) { + include_dirs = [ "//third_party/breakpad/breakpad/src/" ] + sources += [ "crash_key_breakpad_unittest.cc" ] + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_metrics_drive__metrics__provider__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_metrics_drive__metrics__provider__linux.cc new file mode 100644 index 000000000000..4990280afce5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_metrics_drive__metrics__provider__linux.cc @@ -0,0 +1,16 @@ +--- src/3rdparty/chromium/components/metrics/drive_metrics_provider_linux.cc.orig 2022-06-08 06:40:31 UTC ++++ src/3rdparty/chromium/components/metrics/drive_metrics_provider_linux.cc +@@ -4,7 +4,13 @@ + + #include "components/metrics/drive_metrics_provider.h" + ++#if defined(OS_BSD) ++#include ++#define MAJOR(dev) major(dev) ++#define MINOR(dev) minor(dev) ++#else + #include // For MAJOR()/MINOR(). ++#endif + #include + #include + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_keyring__util__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_keyring__util__linux.cc new file mode 100644 index 000000000000..4a0bea7ab0fe --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_keyring__util__linux.cc @@ -0,0 +1,17 @@ +--- src/3rdparty/chromium/components/os_crypt/keyring_util_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/components/os_crypt/keyring_util_linux.cc +@@ -68,12 +68,12 @@ bool GnomeKeyringLoader::LoadGnomeKeyring() { + if (keyring_loaded) + return true; + +- void* handle = dlopen("libgnome-keyring.so.0", RTLD_NOW | RTLD_GLOBAL); ++ void* handle = dlopen("libgnome-keyring.so", RTLD_NOW | RTLD_GLOBAL); + if (!handle) { + // We wanted to use GNOME Keyring, but we couldn't load it. Warn, because + // either the user asked for this, or we autodetected it incorrectly. (Or + // the system has broken libraries, which is also good to warn about.) +- LOG(WARNING) << "Could not load libgnome-keyring.so.0: " << dlerror(); ++ LOG(WARNING) << "Could not load libgnome-keyring.so: " << dlerror(); + return false; + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_libsecret__util__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_libsecret__util__linux.cc new file mode 100644 index 000000000000..d05f72be5377 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_libsecret__util__linux.cc @@ -0,0 +1,18 @@ +--- src/3rdparty/chromium/components/os_crypt/libsecret_util_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/components/os_crypt/libsecret_util_linux.cc +@@ -101,13 +101,13 @@ bool LibsecretLoader::LoadLibsecret() { + if (libsecret_loaded_) + return true; + +- static void* handle = dlopen("libsecret-1.so.0", RTLD_NOW | RTLD_GLOBAL); ++ static void* handle = dlopen("libsecret-1.so", RTLD_NOW | RTLD_GLOBAL); + if (!handle) { + // We wanted to use libsecret, but we couldn't load it. Warn, because + // either the user asked for this, or we autodetected it incorrectly. (Or + // the system has broken libraries, which is also good to warn about.) + // TODO(crbug.com/607435): Channel this message to the user-facing log +- VLOG(1) << "Could not load libsecret-1.so.0: " << dlerror(); ++ VLOG(1) << "Could not load libsecret-1.so: " << dlerror(); + return false; + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_os__crypt.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_os__crypt.h new file mode 100644 index 000000000000..c4eccefe84f5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_os__crypt.h @@ -0,0 +1,47 @@ +--- src/3rdparty/chromium/components/os_crypt/os_crypt.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/components/os_crypt/os_crypt.h +@@ -14,7 +14,7 @@ + #include "build/build_config.h" + #include "build/chromecast_buildflags.h" + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + class KeyStorageLinux; + #endif // BUILDFLAG(IS_LINUX) + +@@ -30,7 +30,7 @@ namespace OSCrypt { + // Temporary interface due to OSCrypt refactor. See OSCryptImpl for descriptions + // of what each function does. + namespace OSCrypt { +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + COMPONENT_EXPORT(OS_CRYPT) + void SetConfig(std::unique_ptr config); + #endif // BUILDFLAG(IS_LINUX) +@@ -75,7 +75,7 @@ COMPONENT_EXPORT(OS_CRYPT) void ResetStateForTesting() + COMPONENT_EXPORT(OS_CRYPT) void SetLegacyEncryptionForTesting(bool legacy); + COMPONENT_EXPORT(OS_CRYPT) void ResetStateForTesting(); + #endif // BUILDFLAG(IS_WIN) +-#if (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMECAST)) ++#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CHROMECAST)) + COMPONENT_EXPORT(OS_CRYPT) + void UseMockKeyStorageForTesting( + std::unique_ptr (*get_key_storage_mock)()); +@@ -95,7 +95,7 @@ class OSCryptImpl { + OSCryptImpl(const OSCryptImpl&) = delete; + OSCryptImpl& operator=(const OSCryptImpl&) = delete; + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // Set the configuration of OSCryptImpl. + // This method, or SetRawEncryptionKey(), must be called before using + // EncryptString() and DecryptString(). +@@ -200,7 +200,7 @@ class OSCryptImpl { + static void ResetStateForTesting(); + #endif + +-#if (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMECAST)) ++#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CHROMECAST)) + // For unit testing purposes, inject methods to be used. + // |get_key_storage_mock| provides the desired |KeyStorage| implementation. + // If the provider returns |nullptr|, a hardcoded password will be used. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.cc new file mode 100644 index 000000000000..ad14ec155f6c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.cc @@ -0,0 +1,18 @@ +--- src/3rdparty/chromium/components/services/screen_ai/sandbox/screen_ai_sandbox_hook_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/components/services/screen_ai/sandbox/screen_ai_sandbox_hook_linux.cc +@@ -35,6 +35,7 @@ bool ScreenAIPreSandboxHook(sandbox::policy::SandboxLi + VLOG(2) << "Screen AI library loaded pre-sandboxing:" << library_path; + } + ++#if !BUILDFLAG(IS_BSD) + auto* instance = sandbox::policy::SandboxLinux::GetInstance(); + + std::vector permissions{ +@@ -46,6 +47,7 @@ bool ScreenAIPreSandboxHook(sandbox::policy::SandboxLi + sandbox::syscall_broker::COMMAND_OPEN}), + permissions, sandbox::policy::SandboxLinux::PreSandboxHook(), options); + instance->EngageNamespaceSandboxIfPossible(); ++#endif + + return true; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.h new file mode 100644 index 000000000000..21845961df92 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_components_services_screen__ai_sandbox_screen__ai__sandbox__hook__linux.h @@ -0,0 +1,16 @@ +--- src/3rdparty/chromium/components/services/screen_ai/sandbox/screen_ai_sandbox_hook_linux.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/components/services/screen_ai/sandbox/screen_ai_sandbox_hook_linux.h +@@ -5,7 +5,13 @@ + #ifndef COMPONENTS_SERVICES_SCREEN_AI_SANDBOX_SCREEN_AI_SANDBOX_HOOK_LINUX_H_ + #define COMPONENTS_SERVICES_SCREEN_AI_SANDBOX_SCREEN_AI_SANDBOX_HOOK_LINUX_H_ + ++#include "build/build_config.h" ++ ++#if BUILDFLAG(IS_BSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#else + #include "sandbox/policy/linux/sandbox_linux.h" ++#endif + + namespace screen_ai { + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_app_content__main.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_app_content__main.cc new file mode 100644 index 000000000000..e79b246274a8 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_app_content__main.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/app/content_main.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/app/content_main.cc +@@ -262,7 +262,7 @@ RunContentProcess(ContentMainParams params, + base::EnableTerminationOnOutOfMemory(); + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // The various desktop environments set this environment variable that + // allows the dbus client library to connect directly to the bus. When this + // variable is not set (test environments like xvfb-run), the dbus client diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_app_content__main__runner__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_app_content__main__runner__impl.cc new file mode 100644 index 000000000000..adb1ea00ea29 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_app_content__main__runner__impl.cc @@ -0,0 +1,123 @@ +--- src/3rdparty/chromium/content/app/content_main_runner_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/app/content_main_runner_impl.cc +@@ -129,13 +129,13 @@ + #include "base/posix/global_descriptors.h" + #include "content/public/common/content_descriptors.h" + +-#if !BUILDFLAG(IS_MAC) ++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD) + #include "content/public/common/zygote/zygote_fork_delegate_linux.h" + #endif + + #endif // BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "base/native_library.h" + #include "base/rand_util.h" + #include "content/public/common/zygote/sandbox_support_linux.h" +@@ -172,6 +172,13 @@ + #endif + #endif // BUILDFLAG(USE_ZYGOTE_HANDLE) + ++#if BUILDFLAG(IS_BSD) ++#include "base/system/sys_info.h" ++#if BUILDFLAG(ENABLE_WEBRTC) ++#include "third_party/webrtc_overrides/init_webrtc.h" // nogncheck ++#endif ++#endif ++ + #if BUILDFLAG(IS_ANDROID) + #include "base/system/sys_info.h" + #include "content/browser/android/battery_metrics.h" +@@ -344,7 +351,7 @@ void InitializeZygoteSandboxForBrowserProcess( + } + #endif // BUILDFLAG(USE_ZYGOTE_HANDLE) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + #if BUILDFLAG(ENABLE_PLUGINS) + // Loads the (native) libraries but does not initialize them (i.e., does not +@@ -380,7 +387,7 @@ void PreloadLibraryCdms() { + } + #endif // BUILDFLAG(ENABLE_LIBRARY_CDMS) + +-#if BUILDFLAG(USE_ZYGOTE_HANDLE) ++#if BUILDFLAG(USE_ZYGOTE_HANDLE) || BUILDFLAG(IS_BSD) + void PreSandboxInit() { + // Pre-acquire resources needed by BoringSSL. See + // https://boringssl.googlesource.com/boringssl/+/HEAD/SANDBOXING.md +@@ -398,6 +405,11 @@ void PreSandboxInit() { + InitializeWebRtcModule(); + #endif + ++#if BUILDFLAG(IS_BSD) ++ // "cache" the amount of physical memory before pledge(2) ++ base::SysInfo::AmountOfPhysicalMemoryMB(); ++#endif ++ + // Set the android SkFontMgr for blink. We need to ensure this is done + // before the sandbox is initialized to allow the font manager to access + // font configuration files on disk. +@@ -567,7 +579,7 @@ int NO_STACK_PROTECTOR RunZygote(ContentMainDelegate* + delegate->ZygoteStarting(&zygote_fork_delegates); + media::InitializeMediaLibrary(); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + PreSandboxInit(); + #endif + +@@ -753,11 +765,10 @@ int ContentMainRunnerImpl::Initialize(ContentMainParam + kFieldTrialDescriptor + base::GlobalDescriptors::kBaseDescriptor); + #endif // !BUILDFLAG(IS_ANDROID) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + g_fds->Set(kCrashDumpSignal, + kCrashDumpSignal + base::GlobalDescriptors::kBaseDescriptor); +-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || +- // BUILDFLAG(IS_OPENBSD) ++#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + + #endif // !BUILDFLAG(IS_WIN) + +@@ -936,6 +947,16 @@ int ContentMainRunnerImpl::Initialize(ContentMainParam + } + #endif + ++#if BUILDFLAG(IS_BSD) ++ if (process_type.empty()) { ++ sandbox::policy::SandboxLinux::Options sandbox_options; ++ sandbox::policy::SandboxLinux::GetInstance()->InitializeSandbox( ++ sandbox::policy::SandboxTypeFromCommandLine( ++ *base::CommandLine::ForCurrentProcess()), ++ sandbox::policy::SandboxLinux::PreSandboxHook(), sandbox_options); ++ } ++#endif ++ + delegate_->SandboxInitialized(process_type); + + #if BUILDFLAG(USE_ZYGOTE_HANDLE) +@@ -991,7 +1012,7 @@ int NO_STACK_PROTECTOR ContentMainRunnerImpl::Run() { + mojo::core::InitFeatures(); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // If dynamic Mojo Core is being used, ensure that it's loaded very early in + // the child/zygote process, before any sandbox is initialized. The library + // is not fully initialized with IPC support until a ChildProcess is later +@@ -1024,6 +1045,11 @@ int NO_STACK_PROTECTOR ContentMainRunnerImpl::Run() { + content_main_params_.reset(); + + RegisterMainThreadFactories(); ++ ++#if BUILDFLAG(IS_BSD) ++ if (!process_type.empty()) ++ PreSandboxInit(); ++#endif + + if (process_type.empty()) + return RunBrowser(std::move(main_params), start_minimal_browser); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_BUILD.gn new file mode 100644 index 000000000000..e2c19106a181 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_BUILD.gn @@ -0,0 +1,16 @@ +--- src/3rdparty/chromium/content/browser/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/BUILD.gn +@@ -2406,6 +2406,13 @@ jumbo_source_set("browser") { + } + } + ++ if (is_bsd) { ++ sources -= [ ++ "sandbox_ipc_linux.cc", ++ "sandbox_ipc_linux.h", ++ ] ++ } ++ + if (is_chromeos) { + deps += [ "//components/value_store:value_store" ] + sources += [ diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__child__process__host__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__child__process__host__impl.cc new file mode 100644 index 000000000000..def30c13d22c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__child__process__host__impl.cc @@ -0,0 +1,10 @@ +--- src/3rdparty/chromium/content/browser/browser_child_process_host_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/browser_child_process_host_impl.cc +@@ -292,6 +292,7 @@ void BrowserChildProcessHostImpl::LaunchWithoutExtraCo + switches::kDisableBestEffortTasks, + switches::kDisableLogging, + switches::kEnableLogging, ++ switches::kDisableUnveil, + switches::kIPCConnectionTimeout, + switches::kLogBestEffortTasks, + switches::kLogFile, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__main__loop.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__main__loop.cc new file mode 100644 index 000000000000..6510fc159366 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__main__loop.cc @@ -0,0 +1,46 @@ +--- src/3rdparty/chromium/content/browser/browser_main_loop.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/browser_main_loop.cc +@@ -247,6 +247,12 @@ + #include "mojo/public/cpp/bindings/lib/test_random_mojo_delays.h" + #endif + ++#if BUILDFLAG(IS_BSD) ++#include "content/browser/sandbox_host_linux.h" ++#include "content/public/common/zygote/sandbox_support_linux.h" ++#include "sandbox/policy/sandbox.h" ++#endif ++ + // One of the linux specific headers defines this as a macro. + #ifdef DestroyAll + #undef DestroyAll +@@ -554,6 +560,12 @@ int BrowserMainLoop::EarlyInitialization() { + // by now since a thread to start the ServiceManager has been created + // before the browser main loop starts. + DCHECK(SandboxHostLinux::GetInstance()->IsInitialized()); ++#elif BUILDFLAG(IS_BSD) ++ base::FileHandleMappingVector additional_remapped_fds; ++ base::LaunchOptions options; ++ SandboxHostLinux::GetInstance()->Init(); ++ const int sfd = SandboxHostLinux::GetInstance()->GetChildSocket(); ++ options.fds_to_remap.push_back(std::make_pair(sfd, GetSandboxFD())); + #endif + + // GLib's spawning of new processes is buggy, so it's important that at this +@@ -581,7 +593,7 @@ int BrowserMainLoop::EarlyInitialization() { + + // Up the priority of the UI thread unless it was already high (since Mac + // and recent versions of Android (O+) do this automatically). +-#if !BUILDFLAG(IS_MAC) ++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD) + if (base::FeatureList::IsEnabled( + features::kBrowserUseDisplayThreadPriority) && + base::PlatformThread::GetCurrentThreadPriority() < +@@ -592,7 +604,7 @@ int BrowserMainLoop::EarlyInitialization() { + #endif // !BUILDFLAG(IS_MAC) + + #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_ANDROID) ++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + // We use quite a few file descriptors for our IPC as well as disk the disk + // cache,and the default limit on the Mac is low (256), so bump it up. + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_child__process__launcher__helper__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_child__process__launcher__helper__linux.cc new file mode 100644 index 000000000000..9e70e6311243 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_child__process__launcher__helper__linux.cc @@ -0,0 +1,76 @@ +--- src/3rdparty/chromium/content/browser/child_process_launcher_helper_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/child_process_launcher_helper_linux.cc +@@ -19,7 +19,9 @@ + #include "content/public/common/result_codes.h" + #include "content/public/common/sandboxed_process_launcher_delegate.h" + #include "content/public/common/zygote/sandbox_support_linux.h" ++#if !BUILDFLAG(IS_BSD) + #include "content/public/common/zygote/zygote_handle.h" ++#endif + #include "sandbox/policy/linux/sandbox_linux.h" + + namespace content { +@@ -68,6 +70,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr + int* launch_result) { + *is_synchronous_launch = true; + ++#if !BUILDFLAG(IS_BSD) + ZygoteHandle zygote_handle = + base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kNoZygote) + ? nullptr +@@ -81,7 +84,6 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr + GetProcessType()); + *launch_result = LAUNCH_RESULT_SUCCESS; + +-#if !BUILDFLAG(IS_OPENBSD) + if (handle) { + // It could be a renderer process or an utility process. + int oom_score = content::kMiscOomScore; +@@ -90,13 +92,13 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr + oom_score = content::kLowestRendererOomScore; + ZygoteHostImpl::GetInstance()->AdjustRendererOOMScore(handle, oom_score); + } +-#endif + + Process process; + process.process = base::Process(handle); + process.zygote = zygote_handle; + return process; + } ++#endif + + Process process; + process.process = base::LaunchProcess(*command_line(), options); +@@ -114,10 +116,14 @@ ChildProcessTerminationInfo ChildProcessLauncherHelper + const ChildProcessLauncherHelper::Process& process, + bool known_dead) { + ChildProcessTerminationInfo info; ++#if !BUILDFLAG(IS_BSD) + if (process.zygote) { + info.status = process.zygote->GetTerminationStatus( + process.process.Handle(), known_dead, &info.exit_code); + } else if (known_dead) { ++#else ++ if (known_dead) { ++#endif + info.status = base::GetKnownDeadTerminationStatus(process.process.Handle(), + &info.exit_code); + } else { +@@ -141,13 +147,17 @@ void ChildProcessLauncherHelper::ForceNormalProcessTer + DCHECK(CurrentlyOnProcessLauncherTaskRunner()); + process.process.Terminate(RESULT_CODE_NORMAL_EXIT, false); + // On POSIX, we must additionally reap the child. ++#if !BUILDFLAG(IS_BSD) + if (process.zygote) { + // If the renderer was created via a zygote, we have to proxy the reaping + // through the zygote process. + process.zygote->EnsureProcessTerminated(process.process.Handle()); + } else { ++#endif + base::EnsureProcessTerminated(std::move(process.process)); ++#if !BUILDFLAG(IS_BSD) + } ++#endif + } + + void ChildProcessLauncherHelper::SetProcessPriorityOnLauncherThread( diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_compositor_viz__process__transport__factory.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_compositor_viz__process__transport__factory.cc new file mode 100644 index 000000000000..1dac85b61e2f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_compositor_viz__process__transport__factory.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/browser/compositor/viz_process_transport_factory.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/compositor/viz_process_transport_factory.cc +@@ -112,7 +112,7 @@ class HostDisplayClient : public viz::HostDisplayClien + // viz::HostDisplayClient: + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + void DidCompleteSwapWithNewSize(const gfx::Size& size) override { + compositor_->OnCompleteSwapWithNewSize(size); + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_compute__pressure_cpu__probe.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_compute__pressure_cpu__probe.cc new file mode 100644 index 000000000000..0fe20f478d0d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_compute__pressure_cpu__probe.cc @@ -0,0 +1,10 @@ +--- src/3rdparty/chromium/content/browser/compute_pressure/cpu_probe.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/compute_pressure/cpu_probe.cc +@@ -53,6 +53,7 @@ std::unique_ptr CpuProbe::Create() { + #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + return CpuProbeLinux::Create(); + #else ++ NOTIMPLEMENTED(); + return std::make_unique(); + #endif // BUILDFLAG(IS_ANDROID) + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_devtools_protocol_system__info__handler.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_devtools_protocol_system__info__handler.cc new file mode 100644 index 000000000000..cc465ce6628c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_devtools_protocol_system__info__handler.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/browser/devtools/protocol/system_info_handler.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/devtools/protocol/system_info_handler.cc +@@ -50,7 +50,7 @@ std::unique_ptr GfxSizeToSystemInfoS + // Windows builds need more time -- see Issue 873112 and 1004472. + // Mac builds need more time - see Issue angleproject:6182. + #if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !defined(NDEBUG)) || \ +- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || defined(USE_OZONE) ++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || defined(USE_OZONE) || BUILDFLAG(IS_BSD) + static constexpr int kGPUInfoWatchdogTimeoutMultiplierOS = 3; + #else + static constexpr int kGPUInfoWatchdogTimeoutMultiplierOS = 1; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_download_download__manager__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_download_download__manager__impl.cc new file mode 100644 index 000000000000..c0b99924a6c1 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_download_download__manager__impl.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/content/browser/download/download_manager_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/download/download_manager_impl.cc +@@ -90,7 +90,7 @@ + #include "third_party/blink/public/common/storage_key/storage_key.h" + #include "url/origin.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "base/nix/xdg_util.h" + #endif + +@@ -218,7 +218,7 @@ class DownloadItemFactoryImpl : public download::Downl + } + }; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + base::FilePath GetTemporaryDownloadDirectory() { + std::unique_ptr env(base::Environment::Create()); + return base::nix::GetXDGDirectory(env.get(), "XDG_DATA_HOME", ".local/share"); +@@ -654,7 +654,7 @@ base::FilePath DownloadManagerImpl::GetDefaultDownload + + base::FilePath DownloadManagerImpl::GetDefaultDownloadDirectory() { + base::FilePath default_download_directory; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // TODO(thomasanderson,crbug.com/784010): Remove this when all Linux + // distros with versions of GTK lower than 3.14.7 are no longer + // supported. This should happen when support for Ubuntu Trusty and diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_font__access_font__enumeration__data__source.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_font__access_font__enumeration__data__source.cc new file mode 100644 index 000000000000..b22c42788c11 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_font__access_font__enumeration__data__source.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/content/browser/font_access/font_enumeration_data_source.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/font_access/font_enumeration_data_source.cc +@@ -16,7 +16,7 @@ + #include "content/browser/font_access/font_enumeration_data_source_win.h" + #elif BUILDFLAG(IS_MAC) + #include "content/browser/font_access/font_enumeration_data_source_mac.h" +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "content/browser/font_access/font_enumeration_data_source_linux.h" + #endif // BUILDFLAG(IS_WIN) + +@@ -61,7 +61,7 @@ std::unique_ptr FontEnumera + return std::make_unique(); + #elif BUILDFLAG(IS_MAC) + return std::make_unique(); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + return std::make_unique(); + #else + return std::make_unique(); +@@ -76,7 +76,7 @@ bool FontEnumerationDataSource::IsOsSupported() { + return true; + #elif BUILDFLAG(IS_MAC) + return true; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + return true; + #else + return false; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_compositor__util.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_compositor__util.cc new file mode 100644 index 000000000000..502ae5228b67 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_compositor__util.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/content/browser/gpu/compositor_util.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/gpu/compositor_util.cc +@@ -148,7 +148,7 @@ const GpuFeatureData GetGpuFeatureData( + {"video_decode", + SafeGetFeatureStatus(gpu_feature_info, + gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE), +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + !base::FeatureList::IsEnabled(media::kVaapiVideoDecodeLinux), + #else + command_line.HasSwitch(switches::kDisableAcceleratedVideoDecode), +@@ -160,7 +160,7 @@ const GpuFeatureData GetGpuFeatureData( + {"video_encode", + SafeGetFeatureStatus(gpu_feature_info, + gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_ENCODE), +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + !base::FeatureList::IsEnabled(media::kVaapiVideoEncodeLinux), + #else + command_line.HasSwitch(switches::kDisableAcceleratedVideoEncode), diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_gpu__process__host.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_gpu__process__host.cc new file mode 100644 index 000000000000..ab6cd18a276b --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_gpu__process__host.cc @@ -0,0 +1,28 @@ +--- src/3rdparty/chromium/content/browser/gpu/gpu_process_host.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/gpu/gpu_process_host.cc +@@ -100,7 +100,7 @@ + #include "ui/ozone/public/ozone_switches.h" + #endif + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "ui/gfx/switches.h" + #endif + +@@ -254,6 +254,7 @@ static const char* const kSwitchNames[] = { + switches::kEnableBackgroundThreadPool, + switches::kEnableGpuRasterization, + switches::kEnableLogging, ++ switches::kDisableUnveil, + switches::kEnableDeJelly, + switches::kDeJellyScreenWidth, + switches::kDocumentTransitionSlowdownFactor, +@@ -291,7 +292,7 @@ static const char* const kSwitchNames[] = { + switches::kOzoneDumpFile, + switches::kDisableBufferBWCompression, + #endif +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + switches::kX11Display, + switches::kNoXshm, + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_media_frameless__media__interface__proxy.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_media_frameless__media__interface__proxy.cc new file mode 100644 index 000000000000..5ce1367e692e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_media_frameless__media__interface__proxy.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/content/browser/media/frameless_media_interface_proxy.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/media/frameless_media_interface_proxy.cc +@@ -15,7 +15,7 @@ + #include "media/mojo/mojom/renderer_extensions.mojom.h" + #include "media/mojo/mojom/stable/stable_video_decoder.mojom.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "content/public/browser/stable_video_decoder_factory.h" + #include "media/base/media_switches.h" + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) +@@ -64,7 +64,7 @@ void FramelessMediaInterfaceProxy::CreateVideoDecoder( + + mojo::PendingRemote + oop_video_decoder; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (base::FeatureList::IsEnabled(media::kUseOutOfProcessVideoDecoding)) { + // TODO(b/195769334): for now, we're using the same + // StableVideoDecoderFactory. However, we should be using a separate diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_media_media__interface__proxy.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_media_media__interface__proxy.cc new file mode 100644 index 000000000000..6f671f32b7e2 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_media_media__interface__proxy.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/content/browser/media/media_interface_proxy.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/media/media_interface_proxy.cc +@@ -73,7 +73,7 @@ + #include "media/mojo/services/mojo_renderer_service.h" // nogncheck + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "content/public/browser/stable_video_decoder_factory.h" + #include "media/base/media_switches.h" + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) +@@ -293,7 +293,7 @@ void MediaInterfaceProxy::CreateVideoDecoder( + + mojo::PendingRemote + oop_video_decoder; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (base::FeatureList::IsEnabled(media::kUseOutOfProcessVideoDecoding)) { + // TODO(b/195769334): for now, we're using the same + // StableVideoDecoderFactory. However, we should be using a separate diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_media_media__keys__listener__manager__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_media_media__keys__listener__manager__impl.cc new file mode 100644 index 000000000000..43b9c826924d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_media_media__keys__listener__manager__impl.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/browser/media/media_keys_listener_manager_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/media/media_keys_listener_manager_impl.cc +@@ -233,7 +233,7 @@ void MediaKeysListenerManagerImpl::StartListeningForMe + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. + #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \ +- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + system_media_controls_ = system_media_controls::SystemMediaControls::Create( + media::AudioManager::GetGlobalAppName()); + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_ppapi__plugin__process__host__receiver__bindings.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_ppapi__plugin__process__host__receiver__bindings.cc new file mode 100644 index 000000000000..41626e1343d9 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_ppapi__plugin__process__host__receiver__bindings.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/content/browser/ppapi_plugin_process_host_receiver_bindings.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/ppapi_plugin_process_host_receiver_bindings.cc +@@ -8,7 +8,7 @@ + + #include "build/build_config.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck + #include "content/browser/font_service.h" // nogncheck + #endif +@@ -17,7 +17,7 @@ void PpapiPluginProcessHost::BindHostReceiver( + + void PpapiPluginProcessHost::BindHostReceiver( + mojo::GenericPendingReceiver receiver) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (auto font_receiver = receiver.As()) + ConnectToFontService(std::move(font_receiver)); + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_delegated__frame__host.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_delegated__frame__host.cc new file mode 100644 index 000000000000..f44ad7adda96 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_delegated__frame__host.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/browser/renderer_host/delegated_frame_host.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/renderer_host/delegated_frame_host.cc +@@ -289,7 +289,7 @@ void DelegatedFrameHost::EmbedSurface( + + if (!primary_surface_id || + primary_surface_id->local_surface_id() != local_surface_id_) { +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + // On Windows and Linux, we would like to produce new content as soon as + // possible or the OS will create an additional black gutter. Until we can + // block resize on surface synchronization on these platforms, we will not diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_input_input__device__change__observer.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_input_input__device__change__observer.cc new file mode 100644 index 000000000000..e51fe54fa6f0 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_input_input__device__change__observer.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/content/browser/renderer_host/input/input_device_change_observer.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/renderer_host/input/input_device_change_observer.cc +@@ -9,7 +9,7 @@ + + #if BUILDFLAG(IS_WIN) + #include "ui/events/devices/input_device_observer_win.h" +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "ui/events/devices/device_data_manager.h" + #elif BUILDFLAG(IS_ANDROID) + #include "ui/events/devices/input_device_observer_android.h" +@@ -21,7 +21,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R + render_view_host_impl_ = rvhi; + #if BUILDFLAG(IS_WIN) + ui::InputDeviceObserverWin::GetInstance()->AddObserver(this); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + ui::DeviceDataManager::GetInstance()->AddObserver(this); + #elif BUILDFLAG(IS_ANDROID) + ui::InputDeviceObserverAndroid::GetInstance()->AddObserver(this); +@@ -31,7 +31,7 @@ InputDeviceChangeObserver::~InputDeviceChangeObserver( + InputDeviceChangeObserver::~InputDeviceChangeObserver() { + #if BUILDFLAG(IS_WIN) + ui::InputDeviceObserverWin::GetInstance()->RemoveObserver(this); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + ui::DeviceDataManager::GetInstance()->RemoveObserver(this); + #elif BUILDFLAG(IS_ANDROID) + ui::InputDeviceObserverAndroid::GetInstance()->RemoveObserver(this); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_pepper_pepper__file__io__host.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_pepper_pepper__file__io__host.cc new file mode 100644 index 000000000000..377137c8132c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_pepper_pepper__file__io__host.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/content/browser/renderer_host/pepper/pepper_file_io_host.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/renderer_host/pepper/pepper_file_io_host.cc +@@ -455,7 +455,7 @@ void PepperFileIOHost::OnLocalFileOpened( + ppapi::host::ReplyMessageContext reply_context, + const base::FilePath& path, + base::File::Error error_code) { +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Quarantining a file before its contents are available is only supported on + // Windows and Linux. + if (!FileOpenForWrite(open_flags_) || error_code != base::File::FILE_OK) { +@@ -489,7 +489,7 @@ void PepperFileIOHost::OnLocalFileOpened( + #endif + } + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + void PepperFileIOHost::OnLocalFileQuarantined( + ppapi::host::ReplyMessageContext reply_context, + const base::FilePath& path, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.cc new file mode 100644 index 000000000000..978457ea8cf3 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/content/browser/renderer_host/render_message_filter.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/renderer_host/render_message_filter.cc +@@ -66,7 +66,7 @@ + #if BUILDFLAG(IS_MAC) + #include "ui/accelerated_widget_mac/window_resize_helper_mac.h" + #endif +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "base/linux_util.h" + #include "base/threading/platform_thread.h" + #endif +@@ -128,7 +128,7 @@ void RenderMessageFilter::GenerateFrameRoutingID( + std::move(callback).Run(routing_id, frame_token, devtools_frame_token); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + void RenderMessageFilter::SetThreadPriorityOnFileThread( + base::PlatformThreadId ns_tid, + base::ThreadPriority priority) { +@@ -149,7 +149,7 @@ void RenderMessageFilter::SetThreadPriorityOnFileThrea + } + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + void RenderMessageFilter::SetThreadPriority(int32_t ns_tid, + base::ThreadPriority priority) { + constexpr base::TaskTraits kTraits = { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.h new file mode 100644 index 000000000000..47765494309b --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.h @@ -0,0 +1,19 @@ +--- src/3rdparty/chromium/content/browser/renderer_host/render_message_filter.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/renderer_host/render_message_filter.h +@@ -78,14 +78,14 @@ class RenderMessageFilter + void GenerateRoutingID(GenerateRoutingIDCallback routing_id) override; + void GenerateFrameRoutingID(GenerateFrameRoutingIDCallback callback) override; + void HasGpuProcess(HasGpuProcessCallback callback) override; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + void SetThreadPriority(int32_t ns_tid, + base::ThreadPriority priority) override; + #endif + + void OnResolveProxy(const GURL& url, IPC::Message* reply_msg); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + void SetThreadPriorityOnFileThread(base::PlatformThreadId ns_tid, + base::ThreadPriority priority); + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.cc new file mode 100644 index 000000000000..2b62f8bb38bf --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.cc @@ -0,0 +1,37 @@ +--- src/3rdparty/chromium/content/browser/renderer_host/render_process_host_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/renderer_host/render_process_host_impl.cc +@@ -208,7 +208,7 @@ + #include "third_party/blink/public/mojom/android_font_lookup/android_font_lookup.mojom.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include + + #include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck +@@ -1184,7 +1184,7 @@ size_t GetPlatformProcessLimit() { + // to indicate failure and std::numeric_limits::max() to indicate + // unlimited. + size_t GetPlatformProcessLimit() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + struct rlimit limit; + if (getrlimit(RLIMIT_NPROC, &limit) != 0) + return kUnknownPlatformProcessLimit; +@@ -1271,7 +1271,7 @@ class RenderProcessHostImpl::IOThreadHostImpl : public + return; + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (auto font_receiver = receiver.As()) { + ConnectToFontService(std::move(font_receiver)); + return; +@@ -3283,6 +3283,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLin + switches::kDisableSpeechAPI, + switches::kDisableThreadedCompositing, + switches::kDisableTouchDragDrop, ++ switches::kDisableUnveil, + switches::kDisableV8IdleTasks, + switches::kDisableVideoCaptureUseGpuMemoryBuffer, + switches::kDisableWebGLImageChromium, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.h new file mode 100644 index 000000000000..9556395fb557 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/browser/renderer_host/render_process_host_impl.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/renderer_host/render_process_host_impl.h +@@ -466,7 +466,7 @@ class CONTENT_EXPORT RenderProcessHostImpl + // Sets this RenderProcessHost to be guest only. For Testing only. + void SetForGuestsOnlyForTesting(); + +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD) + // Launch the zygote early in the browser startup. + static void EarlyZygoteLaunch(); + #endif // BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_MAC) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__view__host__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__view__host__impl.cc new file mode 100644 index 000000000000..e9d24acd38a2 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__view__host__impl.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/browser/renderer_host/render_view_host_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/renderer_host/render_view_host_impl.cc +@@ -259,7 +259,7 @@ void RenderViewHostImpl::GetPlatformSpecificPrefs( + display::win::ScreenWin::GetSystemMetricsInDIP(SM_CYVSCROLL); + prefs->arrow_bitmap_width_horizontal_scroll_bar_in_dips = + display::win::ScreenWin::GetSystemMetricsInDIP(SM_CXHSCROLL); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + prefs->system_font_family_name = gfx::Font().GetFontName(); + #elif BUILDFLAG(IS_FUCHSIA) + // Make Blink's "focus ring" invisible. The focus ring is a hairline border diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__aura.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__aura.cc new file mode 100644 index 000000000000..3603b1d059dd --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__aura.cc @@ -0,0 +1,47 @@ +--- src/3rdparty/chromium/content/browser/renderer_host/render_widget_host_view_aura.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/renderer_host/render_widget_host_view_aura.cc +@@ -114,7 +114,7 @@ + #include "ui/gfx/gdi_util.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + #include "content/browser/accessibility/browser_accessibility_auralinux.h" + #include "ui/base/ime/linux/text_edit_command_auralinux.h" + #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h" +@@ -439,7 +439,7 @@ gfx::NativeViewAccessible RenderWidgetHostViewAura::Ge + if (manager) + return ToBrowserAccessibilityWin(manager->GetRoot())->GetCOM(); + +-#elif BUILDFLAG(IS_LINUX) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + BrowserAccessibilityManager* manager = + host()->GetOrCreateRootBrowserAccessibilityManager(); + if (manager && manager->GetRoot()) +@@ -1596,7 +1596,7 @@ bool RenderWidgetHostViewAura::ShouldDoLearning() { + return GetTextInputManager() && GetTextInputManager()->should_do_learning(); + } + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + bool RenderWidgetHostViewAura::SetCompositionFromExistingText( + const gfx::Range& range, + const std::vector& ui_ime_text_spans) { +@@ -2408,7 +2408,7 @@ bool RenderWidgetHostViewAura::NeedsMouseCapture() { + } + + bool RenderWidgetHostViewAura::NeedsMouseCapture() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + return NeedsInputGrab(); + #else + return false; +@@ -2585,7 +2585,7 @@ void RenderWidgetHostViewAura::ForwardKeyboardEventWit + if (!target_host) + return; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + ui::TextEditKeyBindingsDelegateAuraLinux* keybinding_delegate = + ui::GetTextEditKeyBindingsDelegate(); + std::vector commands; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__aura.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__aura.h new file mode 100644 index 000000000000..4d8514dea5f2 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__aura.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/browser/renderer_host/render_widget_host_view_aura.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/renderer_host/render_widget_host_view_aura.h +@@ -244,7 +244,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAura + ukm::SourceId GetClientSourceForMetrics() const override; + bool ShouldDoLearning() override; + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + bool SetCompositionFromExistingText( + const gfx::Range& range, + const std::vector& ui_ime_text_spans) override; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__event__handler.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__event__handler.cc new file mode 100644 index 000000000000..be50278c4424 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__event__handler.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/renderer_host/render_widget_host_view_event_handler.cc +@@ -596,7 +596,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand + if (event->type() == ui::ET_MOUSE_EXITED) { + if (mouse_locked || selection_popup) + return false; +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Don't forward the mouse leave message which is received when the context + // menu is displayed by the page. This confuses the page and causes state + // changes. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_sandbox__host__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_sandbox__host__linux.cc new file mode 100644 index 000000000000..7fe25abf6c69 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_sandbox__host__linux.cc @@ -0,0 +1,18 @@ +--- src/3rdparty/chromium/content/browser/sandbox_host_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/sandbox_host_linux.cc +@@ -45,6 +45,7 @@ void SandboxHostLinux::Init() { + // Instead, it replies on a temporary socket provided by the caller. + PCHECK(0 == shutdown(browser_socket, SHUT_WR)) << "shutdown"; + ++#if !defined(OS_BSD) + int pipefds[2]; + CHECK(0 == pipe(pipefds)); + const int child_lifeline_fd = pipefds[0]; +@@ -55,6 +56,7 @@ void SandboxHostLinux::Init() { + ipc_thread_ = std::make_unique( + ipc_handler_.get(), "sandbox_ipc_thread"); + ipc_thread_->Start(); ++#endif + } + + } // namespace content diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_jank__monitor__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_jank__monitor__impl.cc new file mode 100644 index 000000000000..4e49b69fa2de --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_jank__monitor__impl.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/browser/scheduler/responsiveness/jank_monitor_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/scheduler/responsiveness/jank_monitor_impl.cc +@@ -334,7 +334,7 @@ void JankMonitorImpl::ThreadExecutionState::DidRunTask + // in context menus, among others). Simply ignore the mismatches for now. + // See https://crbug.com/929813 for the details of why the mismatch + // happens. +-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && defined(USE_OZONE) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)) && defined(USE_OZONE) + task_execution_metadata_.clear(); + #endif + return; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.cc new file mode 100644 index 000000000000..a437a0f47af8 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/content/browser/scheduler/responsiveness/native_event_observer.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/scheduler/responsiveness/native_event_observer.cc +@@ -15,7 +15,7 @@ + + #include "ui/events/platform/platform_event_source.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "ui/aura/env.h" + #include "ui/events/event.h" + #endif +@@ -39,7 +39,7 @@ NativeEventObserver::~NativeEventObserver() { + DeregisterObserver(); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + void NativeEventObserver::RegisterObserver() { + aura::Env::GetInstance()->AddWindowEventDispatcherObserver(this); + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.h new file mode 100644 index 000000000000..e085afa52d22 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.h @@ -0,0 +1,47 @@ +--- src/3rdparty/chromium/content/browser/scheduler/responsiveness/native_event_observer.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/scheduler/responsiveness/native_event_observer.h +@@ -15,7 +15,7 @@ + #include "content/public/browser/native_event_processor_observer_mac.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "ui/aura/window_event_dispatcher_observer.h" + #endif + +@@ -40,7 +40,7 @@ class CONTENT_EXPORT NativeEventObserver + class CONTENT_EXPORT NativeEventObserver + #if BUILDFLAG(IS_MAC) + : public NativeEventProcessorObserver +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + : public aura::WindowEventDispatcherObserver + #elif BUILDFLAG(IS_WIN) + : public base::MessagePumpForUI::Observer +@@ -57,7 +57,7 @@ class CONTENT_EXPORT NativeEventObserver + NativeEventObserver(WillRunEventCallback will_run_event_callback, + DidRunEventCallback did_run_event_callback); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + NativeEventObserver(const NativeEventObserver&) = delete; + NativeEventObserver& operator=(const NativeEventObserver&) = delete; +@@ -73,7 +73,7 @@ class CONTENT_EXPORT NativeEventObserver + // Exposed for tests. + void WillRunNativeEvent(const void* opaque_identifier) override; + void DidRunNativeEvent(const void* opaque_identifier) override; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // aura::WindowEventDispatcherObserver overrides: + void OnWindowEventDispatcherStartedProcessing( + aura::WindowEventDispatcher* dispatcher, +@@ -90,7 +90,7 @@ class CONTENT_EXPORT NativeEventObserver + void RegisterObserver(); + void DeregisterObserver(); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + struct EventInfo { + const void* unique_id; + }; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__process__host__receiver__bindings.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__process__host__receiver__bindings.cc new file mode 100644 index 000000000000..b8c92fe52466 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__process__host__receiver__bindings.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/content/browser/utility_process_host_receiver_bindings.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/utility_process_host_receiver_bindings.cc +@@ -10,7 +10,7 @@ + #include "content/public/browser/content_browser_client.h" + #include "content/public/common/content_client.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck + #include "content/browser/font_service.h" // nogncheck + #endif +@@ -19,7 +19,7 @@ void UtilityProcessHost::BindHostReceiver( + + void UtilityProcessHost::BindHostReceiver( + mojo::GenericPendingReceiver receiver) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (auto font_receiver = receiver.As()) { + ConnectToFontService(std::move(font_receiver)); + return; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__sandbox__delegate.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__sandbox__delegate.cc new file mode 100644 index 000000000000..4d1785cc3fd5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__sandbox__delegate.cc @@ -0,0 +1,42 @@ +--- src/3rdparty/chromium/content/browser/utility_sandbox_delegate.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/utility_sandbox_delegate.cc +@@ -62,10 +62,10 @@ UtilitySandboxedProcessLauncherDelegate:: + #if BUILDFLAG(ENABLE_PLUGINS) + sandbox_type_ == sandbox::mojom::Sandbox::kPpapi || + #endif +-#if BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + sandbox_type_ == sandbox::mojom::Sandbox::kVideoCapture || + #endif +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + sandbox_type_ == sandbox::mojom::Sandbox::kHardwareVideoDecoding || + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) + #if BUILDFLAG(IS_CHROMEOS_ASH) +@@ -75,7 +75,7 @@ UtilitySandboxedProcessLauncherDelegate:: + sandbox_type_ == sandbox::mojom::Sandbox::kLibassistant || + #endif // BUILDFLAG(ENABLE_CROS_LIBASSISTANT) + #endif // BUILDFLAG(IS_CHROMEOS_ASH) +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + sandbox_type_ == sandbox::mojom::Sandbox::kScreenAI || + #endif + sandbox_type_ == sandbox::mojom::Sandbox::kAudio || +@@ -108,7 +108,7 @@ ZygoteHandle UtilitySandboxedProcessLauncherDelegate:: + // unsandboxed zygote and then apply their actual sandboxes in the forked + // process upon startup. + if (sandbox_type_ == sandbox::mojom::Sandbox::kNetwork || +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + sandbox_type_ == sandbox::mojom::Sandbox::kHardwareVideoDecoding || + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) + #if BUILDFLAG(IS_CHROMEOS_ASH) +@@ -122,7 +122,7 @@ ZygoteHandle UtilitySandboxedProcessLauncherDelegate:: + #if BUILDFLAG(ENABLE_OOP_PRINTING) + sandbox_type_ == sandbox::mojom::Sandbox::kPrintBackend || + #endif +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + sandbox_type_ == sandbox::mojom::Sandbox::kScreenAI || + #endif + sandbox_type_ == sandbox::mojom::Sandbox::kSpeechRecognition) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_v8__snapshot__files.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_v8__snapshot__files.cc new file mode 100644 index 000000000000..ee98cbbf4550 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_v8__snapshot__files.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/browser/v8_snapshot_files.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/v8_snapshot_files.cc +@@ -10,7 +10,7 @@ std::map GetV8SnapshotFil + namespace content { + + std::map GetV8SnapshotFilesToPreload() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #if defined(USE_V8_CONTEXT_SNAPSHOT) + return {{kV8ContextSnapshotDataDescriptor, + base::FilePath(FILE_PATH_LITERAL(V8_CONTEXT_SNAPSHOT_FILENAME))}}; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_web__contents_web__contents__view__aura.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_web__contents_web__contents__view__aura.cc new file mode 100644 index 000000000000..7751ff34eb07 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_web__contents_web__contents__view__aura.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/content/browser/web_contents/web_contents_view_aura.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/web_contents/web_contents_view_aura.cc +@@ -159,7 +159,7 @@ class WebDragSourceAura : public content::WebContentsO + raw_ptr window_; + }; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + // Fill out the OSExchangeData with a file contents, synthesizing a name if + // necessary. + void PrepareDragForFileContents(const DropData& drop_data, +@@ -242,7 +242,7 @@ void PrepareDragData(const DropData& drop_data, + if (!drop_data.download_metadata.empty()) + PrepareDragForDownload(drop_data, provider, web_contents); + #endif +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + // We set the file contents before the URL because the URL also sets file + // contents (to a .URL shortcut). We want to prefer file content data over + // a shortcut so we add it first. +@@ -1333,7 +1333,7 @@ void WebContentsViewAura::OnMouseEvent(ui::MouseEvent* + // Linux window managers like to handle raise-on-click themselves. If we + // raise-on-click manually, this may override user settings that prevent + // focus-stealing. +-#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) ++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD) + // It is possible for the web-contents to be destroyed while it is being + // activated. Use a weak-ptr to track whether that happened or not. + // More in https://crbug.com/1040725 diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_webui_web__ui__main__frame__observer.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_webui_web__ui__main__frame__observer.cc new file mode 100644 index 000000000000..50c28dbd544e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_webui_web__ui__main__frame__observer.cc @@ -0,0 +1,38 @@ +--- src/3rdparty/chromium/content/browser/webui/web_ui_main_frame_observer.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/webui/web_ui_main_frame_observer.cc +@@ -13,7 +13,7 @@ + #include "content/public/browser/navigation_handle.h" + #include "content/public/browser/web_ui_controller.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "base/callback_helpers.h" + #include "base/feature_list.h" + #include "base/logging.h" +@@ -31,7 +31,7 @@ namespace { + + namespace { + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Remove the pieces of the URL we don't want to send back with the error + // reports. In particular, do not send query or fragments as those can have + // privacy-sensitive information in them. +@@ -67,7 +67,7 @@ void WebUIMainFrameObserver::DidFinishNavigation( + web_ui_->DisallowJavascriptOnAllHandlers(); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + void WebUIMainFrameObserver::OnDidAddMessageToConsole( + RenderFrameHost* source_frame, + blink::mojom::ConsoleMessageLevel log_level, +@@ -175,7 +175,7 @@ void WebUIMainFrameObserver::ReadyToCommitNavigation( + + // TODO(crbug.com/1129544) This is currently disabled due to Windows DLL + // thunking issues. Fix & re-enable. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + MaybeEnableWebUIJavaScriptErrorReporting(navigation_handle); + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_webui_web__ui__main__frame__observer.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_webui_web__ui__main__frame__observer.h new file mode 100644 index 000000000000..6a52a6aa4695 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_webui_web__ui__main__frame__observer.h @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/content/browser/webui/web_ui_main_frame_observer.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/webui/web_ui_main_frame_observer.h +@@ -45,7 +45,7 @@ class CONTENT_EXPORT WebUIMainFrameObserver : public W + + // TODO(crbug.com/1129544) This is currently disabled due to Windows DLL + // thunking issues. Fix & re-enable. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // On official Google builds, capture and report JavaScript error messages on + // WebUI surfaces back to Google. This allows us to fix JavaScript errors and + // exceptions. +@@ -61,7 +61,7 @@ class CONTENT_EXPORT WebUIMainFrameObserver : public W + void ReadyToCommitNavigation(NavigationHandle* navigation_handle) override; + + private: +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + void MaybeEnableWebUIJavaScriptErrorReporting( + NavigationHandle* navigation_handle); + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_zygote__host_zygote__host__impl__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_zygote__host_zygote__host__impl__linux.cc new file mode 100644 index 000000000000..ddcf9e7a1273 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_zygote__host_zygote__host__impl__linux.cc @@ -0,0 +1,70 @@ +--- src/3rdparty/chromium/content/browser/zygote_host/zygote_host_impl_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/browser/zygote_host/zygote_host_impl_linux.cc +@@ -28,6 +28,7 @@ namespace { + + namespace { + ++#if !BUILDFLAG(IS_BSD) + // Receive a fixed message on fd and return the sender's PID. + // Returns true if the message received matches the expected message. + bool ReceiveFixedMessage(int fd, +@@ -49,6 +50,7 @@ bool ReceiveFixedMessage(int fd, + return false; + return true; + } ++#endif + + } // namespace + +@@ -58,9 +60,13 @@ ZygoteHostImpl::ZygoteHostImpl() + } + + ZygoteHostImpl::ZygoteHostImpl() ++#if !BUILDFLAG(IS_BSD) + : use_namespace_sandbox_(false), + use_suid_sandbox_(false), + use_suid_sandbox_for_adj_oom_score_(false), ++#else ++ : ++#endif + sandbox_binary_(), + zygote_pids_lock_(), + zygote_pids_() {} +@@ -73,6 +79,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com + } + + void ZygoteHostImpl::Init(const base::CommandLine& command_line) { ++#if !BUILDFLAG(IS_BSD) + if (command_line.HasSwitch(sandbox::policy::switches::kNoSandbox)) { + return; + } +@@ -123,6 +130,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com + "you can try using --" + << sandbox::policy::switches::kNoSandbox << "."; + } ++#endif + } + + void ZygoteHostImpl::AddZygotePid(pid_t pid) { +@@ -147,6 +155,7 @@ pid_t ZygoteHostImpl::LaunchZygote( + base::CommandLine* cmd_line, + base::ScopedFD* control_fd, + base::FileHandleMappingVector additional_remapped_fds) { ++#if !BUILDFLAG(IS_BSD) + int fds[2]; + CHECK_EQ(0, socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds)); + CHECK(base::UnixDomainSocket::EnableReceiveProcessId(fds[0])); +@@ -214,9 +223,12 @@ pid_t ZygoteHostImpl::LaunchZygote( + + AddZygotePid(pid); + return pid; ++#else ++ return 0; ++#endif + } + +-#if !BUILDFLAG(IS_OPENBSD) ++#if !BUILDFLAG(IS_BSD) + void ZygoteHostImpl::AdjustRendererOOMScore(base::ProcessHandle pid, + int score) { + // 1) You can't change the oom_score_adj of a non-dumpable process diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_zygote__host_zygote__host__impl__linux.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_zygote__host_zygote__host__impl__linux.h new file mode 100644 index 000000000000..91cc8dee59e5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_browser_zygote__host_zygote__host__impl__linux.h @@ -0,0 +1,25 @@ +--- src/3rdparty/chromium/content/browser/zygote_host/zygote_host_impl_linux.h.orig 2022-06-08 06:40:31 UTC ++++ src/3rdparty/chromium/content/browser/zygote_host/zygote_host_impl_linux.h +@@ -42,8 +42,10 @@ class CONTENT_EXPORT ZygoteHostImpl : public ZygoteHos + base::ScopedFD* control_fd, + base::FileHandleMappingVector additional_remapped_fds); + ++#if !defined(OS_BSD) + void AdjustRendererOOMScore(base::ProcessHandle process_handle, + int score) override; ++#endif + bool HasZygote() { return !zygote_pids_.empty(); } + + private: +@@ -57,9 +59,11 @@ class CONTENT_EXPORT ZygoteHostImpl : public ZygoteHos + + int renderer_sandbox_status_; + ++#if !defined(OS_BSD) + bool use_namespace_sandbox_; + bool use_suid_sandbox_; + bool use_suid_sandbox_for_adj_oom_score_; ++#endif + std::string sandbox_binary_; + + // This lock protects the |zygote_pids_| set. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_child_child__process.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_child_child__process.cc new file mode 100644 index 000000000000..535d83ca20fa --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_child_child__process.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/child/child_process.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/child/child_process.cc +@@ -68,7 +68,7 @@ ChildProcess::ChildProcess(base::ThreadPriority io_thr + DCHECK(!g_lazy_child_process_tls.Pointer()->Get()); + g_lazy_child_process_tls.Pointer()->Set(this); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + const base::CommandLine& command_line = + *base::CommandLine::ForCurrentProcess(); + const bool is_embedded_in_browser_process = diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_common_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_common_BUILD.gn new file mode 100644 index 000000000000..fb884f15b550 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_common_BUILD.gn @@ -0,0 +1,12 @@ +--- src/3rdparty/chromium/content/common/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/common/BUILD.gn +@@ -420,6 +420,9 @@ if (is_linux || is_chromeos) { + public = [ "set_process_title_linux.h" ] + sources = [ "set_process_title_linux.cc" ] + deps = [ "//base" ] ++ if (is_bsd) { ++ sources -= [ "set_process_title_linux.cc" ] ++ } + } + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_common_mojo__core__library__support.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_common_mojo__core__library__support.cc new file mode 100644 index 000000000000..68d1801937dd --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_common_mojo__core__library__support.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/common/mojo_core_library_support.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/common/mojo_core_library_support.cc +@@ -15,7 +15,7 @@ absl::optional GetMojoCoreSharedLibrar + } + + absl::optional GetMojoCoreSharedLibraryPath() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + const base::CommandLine& command_line = + *base::CommandLine::ForCurrentProcess(); + if (!command_line.HasSwitch(switches::kMojoCoreLibraryPath)) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_common_user__agent.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_common_user__agent.cc new file mode 100644 index 000000000000..fa90509a1f94 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_common_user__agent.cc @@ -0,0 +1,28 @@ +--- src/3rdparty/chromium/content/common/user_agent.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/common/user_agent.cc +@@ -34,7 +34,7 @@ std::string GetUserAgentPlatform() { + return ""; + #elif BUILDFLAG(IS_MAC) + return "Macintosh; "; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + return "X11; "; // strange, but that's what Firefox uses + #elif BUILDFLAG(IS_ANDROID) + return "Linux; "; +@@ -260,6 +260,16 @@ std::string BuildOSCpuInfoFromOSVersionAndCpuType(cons + "Android %s", os_version.c_str() + #elif BUILDFLAG(IS_FUCHSIA) + "Fuchsia" ++#elif BUILDFLAG(IS_BSD) ++#if defined(__x86_64__) ++ "Linux x86_64; %s %s", ++#elif defined(__aarch64__) ++ "Linux aarch64; %s %s", ++#else ++ "Linux i686; %s %s", ++#endif ++ unixinfo.sysname, // e.g. Linux ++ cpu_type.c_str() // e.g. i686 + #elif BUILDFLAG(IS_POSIX) + "%s %s", + unixinfo.sysname, // e.g. Linux diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_common_zygote_sandbox__support__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_common_zygote_sandbox__support__linux.cc new file mode 100644 index 000000000000..df8236658d70 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_common_zygote_sandbox__support__linux.cc @@ -0,0 +1,14 @@ +--- src/3rdparty/chromium/content/common/zygote/sandbox_support_linux.cc.orig 2022-11-20 10:46:46 UTC ++++ src/3rdparty/chromium/content/common/zygote/sandbox_support_linux.cc +@@ -8,7 +8,11 @@ + #include "base/posix/global_descriptors.h" + #include "base/posix/unix_domain_socket.h" + #include "content/public/common/content_descriptors.h" ++#if defined(OS_BSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#else + #include "sandbox/policy/linux/sandbox_linux.h" ++#endif + + namespace content { + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__main.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__main.cc new file mode 100644 index 000000000000..ca6bee71d1fc --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__main.cc @@ -0,0 +1,47 @@ +--- src/3rdparty/chromium/content/gpu/gpu_main.cc.orig 2022-11-08 21:18:48 UTC ++++ src/3rdparty/chromium/content/gpu/gpu_main.cc +@@ -87,7 +87,7 @@ + #include "sandbox/win/src/sandbox.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "content/gpu/gpu_sandbox_hook_linux.h" + #include "sandbox/policy/linux/sandbox_linux.h" + #include "sandbox/policy/sandbox_type.h" +@@ -109,7 +109,7 @@ namespace { + + namespace { + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + bool StartSandboxLinux(gpu::GpuWatchdogThread*, + const gpu::GPUInfo*, + const gpu::GpuPreferences&); +@@ -171,7 +171,7 @@ class ContentSandboxHelper : public gpu::GpuSandboxHel + bool EnsureSandboxInitialized(gpu::GpuWatchdogThread* watchdog_thread, + const gpu::GPUInfo* gpu_info, + const gpu::GpuPreferences& gpu_prefs) override { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + return StartSandboxLinux(watchdog_thread, gpu_info, gpu_prefs); + #elif BUILDFLAG(IS_WIN) + return StartSandboxWindows(sandbox_info_); +@@ -267,7 +267,7 @@ int GpuMain(MainFunctionParams parameters) { + std::make_unique( + gpu_preferences.message_pump_type); + } +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #error "Unsupported Linux platform." + #elif BUILDFLAG(IS_MAC) + // Cross-process CoreAnimation requires a CFRunLoop to function at all, and +@@ -410,7 +410,7 @@ namespace { + + namespace { + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdog_thread, + const gpu::GPUInfo* gpu_info, + const gpu::GpuPreferences& gpu_prefs) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__sandbox__hook__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__sandbox__hook__linux.cc new file mode 100644 index 000000000000..e616a50fcd3c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__sandbox__hook__linux.cc @@ -0,0 +1,70 @@ +--- src/3rdparty/chromium/content/gpu/gpu_sandbox_hook_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/gpu/gpu_sandbox_hook_linux.cc +@@ -104,6 +104,7 @@ constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | R + + constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE; + ++#if !defined(OS_BSD) + void AddV4L2GpuPermissions( + std::vector* permissions, + const sandbox::policy::SandboxSeccompBPF::Options& options) { +@@ -420,8 +421,10 @@ std::vector FilePermissionsForGp + AddStandardGpuPermissions(&permissions); + return permissions; + } ++#endif + + void LoadArmGpuLibraries() { ++#if !defined(OS_BSD) + // Preload the Mali library. + if (UseChromecastSandboxAllowlist()) { + for (const char* path : kAllowedChromecastPaths) { +@@ -463,6 +466,7 @@ void LoadArmGpuLibraries() { + dlopen(driver_paths[i], dlopen_flag); + } + } ++#endif + } + + bool LoadAmdGpuLibraries() { +@@ -528,12 +532,14 @@ void LoadChromecastV4L2Libraries() { + } + + void LoadChromecastV4L2Libraries() { ++#if !defined(OS_BSD) + for (const char* path : kAllowedChromecastPaths) { + const std::string library_path(std::string(path) + + std::string("libvpcodec.so")); + if (dlopen(library_path.c_str(), dlopen_flag)) + break; + } ++#endif + } + + bool LoadLibrariesForGpu( +@@ -560,6 +566,7 @@ bool LoadLibrariesForGpu( + return true; + } + ++#if !defined(OS_BSD) + sandbox::syscall_broker::BrokerCommandSet CommandSetForGPU( + const sandbox::policy::SandboxLinux::Options& options) { + sandbox::syscall_broker::BrokerCommandSet command_set; +@@ -582,13 +589,17 @@ bool BrokerProcessPreSandboxHook( + SetProcessTitleFromCommandLine(nullptr); + return true; + } ++#endif + + } // namespace + + bool GpuProcessPreSandboxHook(sandbox::policy::SandboxLinux::Options options) { ++ NOTIMPLEMENTED(); ++#if !defined(OS_BSD) + sandbox::policy::SandboxLinux::GetInstance()->StartBrokerProcess( + CommandSetForGPU(options), FilePermissionsForGpu(options), + base::BindOnce(BrokerProcessPreSandboxHook), options); ++#endif + + if (!LoadLibrariesForGpu(options)) + return false; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.cc new file mode 100644 index 000000000000..68e9a2737b83 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/content/ppapi_plugin/ppapi_blink_platform_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/ppapi_plugin/ppapi_blink_platform_impl.cc +@@ -20,7 +20,7 @@ + + #if BUILDFLAG(IS_MAC) + #include "content/child/child_process_sandbox_support_impl_mac.h" +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "content/child/child_process_sandbox_support_impl_linux.h" + #include "mojo/public/cpp/bindings/pending_remote.h" + #endif +@@ -35,7 +35,7 @@ PpapiBlinkPlatformImpl::PpapiBlinkPlatformImpl() { + namespace content { + + PpapiBlinkPlatformImpl::PpapiBlinkPlatformImpl() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + mojo::PendingRemote font_service; + ChildThread::Get()->BindHostReceiver( + font_service.InitWithNewPipeAndPassReceiver()); +@@ -53,7 +53,7 @@ blink::WebSandboxSupport* PpapiBlinkPlatformImpl::GetS + void PpapiBlinkPlatformImpl::Shutdown() {} + + blink::WebSandboxSupport* PpapiBlinkPlatformImpl::GetSandboxSupport() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + return sandbox_support_.get(); + #else + return nullptr; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.h new file mode 100644 index 000000000000..8791dd503421 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.h @@ -0,0 +1,25 @@ +--- src/3rdparty/chromium/content/ppapi_plugin/ppapi_blink_platform_impl.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/ppapi_plugin/ppapi_blink_platform_impl.h +@@ -12,7 +12,7 @@ + #include "build/build_config.h" + #include "content/child/blink_platform_impl.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "components/services/font/public/cpp/font_loader.h" + #include "third_party/skia/include/core/SkRefCnt.h" + #endif +@@ -39,11 +39,11 @@ class PpapiBlinkPlatformImpl : public BlinkPlatformImp + blink::WebThemeEngine* ThemeEngine() override; + + private: +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + std::unique_ptr sandbox_support_; + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + sk_sp font_loader_; + #endif + }; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__plugin__main.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__plugin__main.cc new file mode 100644 index 000000000000..a7c0857e6d78 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__plugin__main.cc @@ -0,0 +1,23 @@ +--- src/3rdparty/chromium/content/ppapi_plugin/ppapi_plugin_main.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/ppapi_plugin/ppapi_plugin_main.cc +@@ -53,6 +53,11 @@ + #include "gin/v8_initializer.h" + #endif + ++#if BUILDFLAG(IS_OPENBSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#include "sandbox/policy/sandbox_type.h" ++#endif ++ + #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) + #include + #endif +@@ -136,7 +141,7 @@ int PpapiPluginMain(MainFunctionParams parameters) { + gin::V8Initializer::LoadV8Snapshot(); + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD) + sandbox::policy::SandboxLinux::GetInstance()->InitializeSandbox( + sandbox::policy::SandboxTypeFromCommandLine(command_line), + sandbox::policy::SandboxLinux::PreSandboxHook(), diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_browser_zygote__host_zygote__host__linux.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_browser_zygote__host_zygote__host__linux.h new file mode 100644 index 000000000000..e9e816703857 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_browser_zygote__host_zygote__host__linux.h @@ -0,0 +1,16 @@ +--- src/3rdparty/chromium/content/public/browser/zygote_host/zygote_host_linux.h.orig 2022-06-08 06:40:31 UTC ++++ src/3rdparty/chromium/content/public/browser/zygote_host/zygote_host_linux.h +@@ -30,11 +30,13 @@ class ZygoteHost { + // after the first render has been forked. + virtual int GetRendererSandboxStatus() = 0; + ++#if !defined(OS_BSD) + // Adjust the OOM score of the given renderer's PID. The allowed + // range for the score is [0, 1000], where higher values are more + // likely to be killed by the OOM killer. + virtual void AdjustRendererOOMScore(base::ProcessHandle process_handle, + int score) = 0; ++#endif + }; + + } // namespace content diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_common__param__traits__macros.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_common__param__traits__macros.h new file mode 100644 index 000000000000..17caafe266de --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_common__param__traits__macros.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/public/common/common_param_traits_macros.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/public/common/common_param_traits_macros.h +@@ -128,7 +128,7 @@ IPC_STRUCT_TRAITS_BEGIN(blink::RendererPreferences) + IPC_STRUCT_TRAITS_MEMBER(accept_languages) + IPC_STRUCT_TRAITS_MEMBER(plugin_fullscreen_allowed) + IPC_STRUCT_TRAITS_MEMBER(caret_browsing_enabled) +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + IPC_STRUCT_TRAITS_MEMBER(system_font_family_name) + #endif + #if BUILDFLAG(IS_WIN) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__features.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__features.cc new file mode 100644 index 000000000000..45cf50c9124f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__features.cc @@ -0,0 +1,50 @@ +--- src/3rdparty/chromium/content/public/common/content_features.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/public/common/content_features.cc +@@ -43,7 +43,7 @@ const base::Feature kAudioServiceOutOfProcess { + "AudioServiceOutOfProcess", + // TODO(crbug.com/1052397): Remove !IS_CHROMEOS_LACROS once lacros starts being + // built with OS_CHROMEOS instead of OS_LINUX. +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \ ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \ + (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)) + base::FEATURE_ENABLED_BY_DEFAULT + #else +@@ -55,7 +55,7 @@ const base::Feature kAudioServiceSandbox { + // kAudioServiceOutOfProcess feature is enabled. + const base::Feature kAudioServiceSandbox { + "AudioServiceSandbox", +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + base::FEATURE_ENABLED_BY_DEFAULT + #else + base::FEATURE_DISABLED_BY_DEFAULT +@@ -1055,7 +1055,7 @@ const base::Feature kWebAssemblyCodeProtection{ + const base::Feature kWebAssemblyCodeProtection{ + "WebAssemblyCodeProtection", base::FEATURE_ENABLED_BY_DEFAULT}; + +-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(ARCH_CPU_X86_64) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_X86_64) + // Use memory protection keys in userspace (PKU) (if available) to protect code + // JITed for WebAssembly. Fall back to traditional memory protection if + // WebAssemblyCodeProtection is also enabled. +@@ -1085,7 +1085,7 @@ const base::Feature kWebAssemblyTrapHandler { + const base::Feature kWebAssemblyTrapHandler { + "WebAssemblyTrapHandler", + #if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || \ +- BUILDFLAG(IS_MAC)) && \ ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)) && \ + defined(ARCH_CPU_X86_64)) || \ + (BUILDFLAG(IS_MAC) && defined(ARCH_CPU_ARM64)) + base::FEATURE_ENABLED_BY_DEFAULT +@@ -1166,7 +1166,11 @@ const base::Feature kWebUIReportOnlyTrustedTypes{ + + // Controls whether the WebUSB API is enabled: + // https://wicg.github.io/webusb ++#if BUILDFLAG(IS_BSD) ++const base::Feature kWebUsb{"WebUSB", base::FEATURE_DISABLED_BY_DEFAULT}; ++#else + const base::Feature kWebUsb{"WebUSB", base::FEATURE_ENABLED_BY_DEFAULT}; ++#endif + + // Controls whether the WebXR Device API is enabled. + const base::Feature kWebXr{"WebXR", base::FEATURE_ENABLED_BY_DEFAULT}; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__features.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__features.h new file mode 100644 index 000000000000..46dd3e342882 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__features.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/public/common/content_features.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/public/common/content_features.h +@@ -264,7 +264,7 @@ CONTENT_EXPORT extern const base::Feature kWebAssembly + CONTENT_EXPORT extern const base::Feature kWebAppWindowControlsOverlay; + CONTENT_EXPORT extern const base::Feature kWebAssemblyBaseline; + CONTENT_EXPORT extern const base::Feature kWebAssemblyCodeProtection; +-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(ARCH_CPU_X86_64) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_X86_64) + CONTENT_EXPORT extern const base::Feature kWebAssemblyCodeProtectionPku; + #endif // (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && + // defined(ARCH_CPU_X86_64) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.cc new file mode 100644 index 000000000000..4bc8645aa857 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/content/public/common/content_switches.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/public/common/content_switches.cc +@@ -370,6 +370,8 @@ const char kEnableLogging[] = "enable- + // builds. + const char kEnableLogging[] = "enable-logging"; + ++const char kDisableUnveil[] = "disable-unveil"; ++ + // Enables the type, downlinkMax attributes of the NetInfo API. Also, enables + // triggering of change attribute of the NetInfo API when there is a change in + // the connection type. +@@ -983,7 +985,7 @@ const char kEnableAutomation[] = "enable-automation"; + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + // Allows sending text-to-speech requests to speech-dispatcher, a common + // Linux speech service. Because it's buggy, the user must explicitly + // enable it so that visiting a random webpage can't cause instability. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.h new file mode 100644 index 000000000000..bf2c064e788c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.h @@ -0,0 +1,19 @@ +--- src/3rdparty/chromium/content/public/common/content_switches.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/public/common/content_switches.h +@@ -117,6 +117,7 @@ CONTENT_EXPORT extern const char kEnableLogging[]; + CONTENT_EXPORT extern const char kEnableGpuMemoryBufferVideoFrames[]; + CONTENT_EXPORT extern const char kEnableLCDText[]; + CONTENT_EXPORT extern const char kEnableLogging[]; ++CONTENT_EXPORT extern const char kDisableUnveil[]; + CONTENT_EXPORT extern const char kEnableNetworkInformationDownlinkMax[]; + CONTENT_EXPORT extern const char kEnableCanvas2DLayers[]; + CONTENT_EXPORT extern const char kEnablePluginPlaceholderTesting[]; +@@ -267,7 +268,7 @@ CONTENT_EXPORT extern const char kRendererWaitForJavaD + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + CONTENT_EXPORT extern const char kEnableSpeechDispatcher[]; + #endif + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_zygote_features.gni b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_zygote_features.gni new file mode 100644 index 000000000000..bdb2a743c0f0 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_public_common_zygote_features.gni @@ -0,0 +1,8 @@ +--- src/3rdparty/chromium/content/public/common/zygote/features.gni.orig 2022-06-08 06:40:31 UTC ++++ src/3rdparty/chromium/content/public/common/zygote/features.gni +@@ -2,4 +2,4 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. + +-use_zygote_handle = is_posix && !is_android && !is_mac ++use_zygote_handle = is_posix && !is_android && !is_mac && !is_bsd diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_media_render__media__client.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_media_render__media__client.cc new file mode 100644 index 000000000000..6b49c5b69b8c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_media_render__media__client.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/renderer/media/render_media_client.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/renderer/media/render_media_client.cc +@@ -21,7 +21,7 @@ namespace { + // it asynchronously ahead of time, but can fallback to a blocking call + // when it's needed synchronously. + #if BUILDFLAG(ENABLE_PLATFORM_HEVC) && \ +- (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)) ++ (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) + #define NEEDS_PROFILE_UPDATER 1 + #else + #define NEEDS_PROFILE_UPDATER 0 diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__process__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__process__impl.cc new file mode 100644 index 000000000000..dd024d7592e0 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__process__impl.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/content/renderer/render_process_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/renderer/render_process_impl.cc +@@ -47,7 +47,7 @@ + #if BUILDFLAG(IS_WIN) + #include "base/win/win_util.h" + #endif +-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(ARCH_CPU_X86_64) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_X86_64) + #include "v8/include/v8-wasm-trap-handler-posix.h" + #endif + +@@ -146,7 +146,7 @@ RenderProcessImpl::RenderProcessImpl() + SetV8FlagIfNotFeature(features::kWebAssemblyCodeProtection, + "--no-wasm-write-protect-code-memory"); + +-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(ARCH_CPU_X86_64) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_X86_64) + SetV8FlagIfFeature(features::kWebAssemblyCodeProtectionPku, + "--wasm-memory-protection-keys"); + SetV8FlagIfNotFeature(features::kWebAssemblyCodeProtectionPku, +@@ -229,7 +229,7 @@ RenderProcessImpl::RenderProcessImpl() + SetV8FlagIfNotFeature(features::kWebAssemblyDynamicTiering, + "--no-wasm-dynamic-tiering"); + +-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(ARCH_CPU_X86_64) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_X86_64) + if (base::FeatureList::IsEnabled(features::kWebAssemblyTrapHandler)) { + if (command_line->HasSwitch(switches::kEnableCrashpad) || + command_line->HasSwitch(switches::kEnableCrashReporter) || diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__thread__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__thread__impl.cc new file mode 100644 index 000000000000..3153e3ac4e75 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__thread__impl.cc @@ -0,0 +1,47 @@ +--- src/3rdparty/chromium/content/renderer/render_thread_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/renderer/render_thread_impl.cc +@@ -189,7 +189,7 @@ + + #if BUILDFLAG(IS_MAC) + #include +-#else ++#elif !BUILDFLAG(IS_OPENBSD) + #include + #endif + +@@ -716,7 +716,7 @@ void RenderThreadImpl::Init() { + DCHECK(parsed_num_raster_threads) << string_value; + DCHECK_GT(num_raster_threads, 0); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + categorized_worker_pool_->SetBackgroundingCallback( + main_thread_scheduler_->DefaultTaskRunner(), + base::BindOnce( +@@ -739,7 +739,7 @@ void RenderThreadImpl::Init() { + base::DiscardableMemoryAllocator::SetInstance( + discardable_memory_allocator_.get()); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (base::FeatureList::IsEnabled( + blink::features::kBlinkCompositorUseDisplayThreadPriority)) { + render_message_filter()->SetThreadPriority( +@@ -1098,7 +1098,7 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl: + + const bool enable_video_decode_accelerator = + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + base::FeatureList::IsEnabled(media::kVaapiVideoDecodeLinux) && + #else + !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode) && +@@ -1109,7 +1109,7 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl: + + const bool enable_video_encode_accelerator = + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + base::FeatureList::IsEnabled(media::kVaapiVideoEncodeLinux) && + #else + !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoEncode) && diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.cc new file mode 100644 index 000000000000..e4ea7ccc534b --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.cc @@ -0,0 +1,48 @@ +--- src/3rdparty/chromium/content/renderer/renderer_blink_platform_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/renderer/renderer_blink_platform_impl.cc +@@ -109,7 +109,7 @@ + + #if BUILDFLAG(IS_MAC) + #include "content/child/child_process_sandbox_support_impl_mac.h" +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "content/child/child_process_sandbox_support_impl_linux.h" + #endif + +@@ -178,7 +178,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( + main_thread_scheduler_(main_thread_scheduler) { + // RenderThread may not exist in some tests. + if (RenderThreadImpl::current()) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + mojo::PendingRemote font_service; + RenderThreadImpl::current()->BindHostReceiver( + font_service.InitWithNewPipeAndPassReceiver()); +@@ -188,7 +188,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( + #endif + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + if (sandboxEnabled()) { + #if BUILDFLAG(IS_MAC) + sandbox_support_ = std::make_unique(); +@@ -283,7 +283,8 @@ RendererBlinkPlatformImpl::WrapSharedURLLoaderFactory( + /*terminate_sync_load_event=*/nullptr); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++// pledge ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_BSD) + void RendererBlinkPlatformImpl::SetDisplayThreadPriority( + base::PlatformThreadId thread_id) { + if (RenderThreadImpl* render_thread = RenderThreadImpl::current()) { +@@ -298,7 +299,7 @@ blink::WebSandboxSupport* RendererBlinkPlatformImpl::G + } + + blink::WebSandboxSupport* RendererBlinkPlatformImpl::GetSandboxSupport() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + return sandbox_support_.get(); + #else + // These platforms do not require sandbox support. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.h new file mode 100644 index 000000000000..1795deb5753e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.h @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/content/renderer/renderer_blink_platform_impl.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/renderer/renderer_blink_platform_impl.h +@@ -31,7 +31,7 @@ + #include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom.h" + #include "third_party/blink/public/mojom/loader/code_cache.mojom.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "components/services/font/public/cpp/font_loader.h" // nogncheck + #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck + #endif +@@ -280,7 +280,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi + void Collect3DContextInformation(blink::Platform::GraphicsInfo* gl_info, + const gpu::GPUInfo& gpu_info) const; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + std::unique_ptr sandbox_support_; + #endif + +@@ -308,7 +308,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi + mutable base::WaitableEvent io_thread_id_ready_event_; + base::PlatformThreadId io_thread_id_ = base::kInvalidThreadId; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + sk_sp font_loader_; + #endif + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__main__platform__delegate__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__main__platform__delegate__linux.cc new file mode 100644 index 000000000000..e1a8fa66741c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__main__platform__delegate__linux.cc @@ -0,0 +1,18 @@ +--- src/3rdparty/chromium/content/renderer/renderer_main_platform_delegate_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/renderer/renderer_main_platform_delegate_linux.cc +@@ -44,6 +44,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() { + // any renderer has been started. + // Here, we test that the status of SeccompBpf in the renderer is consistent + // with what SandboxLinux::GetStatus() said we would do. ++#if !defined(OS_BSD) + auto* linux_sandbox = sandbox::policy::SandboxLinux::GetInstance(); + if (linux_sandbox->GetStatus() & sandbox::policy::SandboxLinux::kSeccompBPF) { + CHECK(linux_sandbox->seccomp_bpf_started()); +@@ -65,6 +66,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() { + CHECK_EQ(errno, EPERM); + } + #endif // __x86_64__ ++#endif + + return true; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_shell_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_shell_BUILD.gn new file mode 100644 index 000000000000..a6b8e5a8c701 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_shell_BUILD.gn @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/shell/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/shell/BUILD.gn +@@ -882,7 +882,7 @@ group("content_shell_crash_test") { + if (is_win) { + data_deps += [ "//build/win:copy_cdb_to_output" ] + } +- if (is_posix) { ++ if (is_posix && !is_bsd) { + data_deps += [ + "//third_party/breakpad:dump_syms", + "//third_party/breakpad:minidump_stackwalk", diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_shell_app_shell__main__delegate.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_shell_app_shell__main__delegate.cc new file mode 100644 index 000000000000..f51c3385beb3 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_shell_app_shell__main__delegate.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/shell/app/shell_main_delegate.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/shell/app/shell_main_delegate.cc +@@ -211,7 +211,7 @@ void ShellMainDelegate::PreSandboxStartup() { + // Reporting for sub-processes will be initialized in ZygoteForked. + if (process_type != switches::kZygoteProcess) { + crash_reporter::InitializeCrashpad(process_type.empty(), process_type); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + crash_reporter::SetFirstChanceExceptionHandler( + v8::TryHandleWebAssemblyTrapPosix); + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_shell_utility_shell__content__utility__client.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_shell_utility_shell__content__utility__client.cc new file mode 100644 index 000000000000..54591637bb1e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_shell_utility_shell__content__utility__client.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/content/shell/utility/shell_content_utility_client.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/shell/utility/shell_content_utility_client.cc +@@ -32,7 +32,7 @@ + #include "sandbox/policy/sandbox.h" + #include "services/test/echo/echo_service.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "content/test/sandbox_status_service.h" + #endif + +@@ -142,7 +142,7 @@ void ShellContentUtilityClient::ExposeInterfacesToBrow + binders->Add( + base::BindRepeating(&PowerMonitorTestImpl::MakeSelfOwnedReceiver), + base::ThreadTaskRunnerHandle::Get()); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (register_sandbox_status_helper_) { + binders->Add( + base::BindRepeating( diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_test_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_test_BUILD.gn new file mode 100644 index 000000000000..20c989ba6d3d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_test_BUILD.gn @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/content/test/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/test/BUILD.gn +@@ -1969,7 +1969,7 @@ static_library("run_all_unittests") { + ":test_support", + "//base/test:test_support", + ] +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + deps += [ "//content/common:set_process_title_linux" ] + } + } +@@ -3000,7 +3000,7 @@ test("content_unittests") { + deps += [ "//third_party/boringssl" ] + } + +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + sources += [ "../common/set_process_title_linux_unittest.cc" ] + deps += [ "//content/common:set_process_title_linux" ] + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_services.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_services.cc new file mode 100644 index 000000000000..4b3c159cdb70 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_services.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/content/utility/services.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/utility/services.cc +@@ -67,7 +67,7 @@ extern sandbox::TargetServices* g_utility_target_servi + extern sandbox::TargetServices* g_utility_target_services; + #endif // BUILDFLAG(IS_WIN) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "sandbox/linux/services/libc_interceptor.h" + #include "sandbox/policy/mojom/sandbox.mojom.h" + #include "sandbox/policy/sandbox_type.h" +@@ -205,7 +205,7 @@ auto RunAudio(mojo::PendingReceiver GetSodaFilePermissio + } + + } // namespace ++#endif + + bool SpeechRecognitionPreSandboxHook( + sandbox::policy::SandboxLinux::Options options) { ++#if !defined(OS_BSD) + #if BUILDFLAG(ENABLE_SODA) + base::FilePath test_binary_path = GetSodaTestBinaryPath(); + DVLOG(0) << "SODA test binary path: " << test_binary_path.value().c_str(); +@@ -77,6 +82,7 @@ bool SpeechRecognitionPreSandboxHook( + sandbox::policy::SandboxLinux::PreSandboxHook(), + options); + instance->EngageNamespaceSandboxIfPossible(); ++#endif + + return true; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_speech_speech__recognition__sandbox__hook__linux.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_speech_speech__recognition__sandbox__hook__linux.h new file mode 100644 index 000000000000..cb7221f9666a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_speech_speech__recognition__sandbox__hook__linux.h @@ -0,0 +1,14 @@ +--- src/3rdparty/chromium/content/utility/speech/speech_recognition_sandbox_hook_linux.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/utility/speech/speech_recognition_sandbox_hook_linux.h +@@ -5,7 +5,11 @@ + #ifndef CONTENT_UTILITY_SPEECH_SPEECH_RECOGNITION_SANDBOX_HOOK_LINUX_H_ + #define CONTENT_UTILITY_SPEECH_SPEECH_RECOGNITION_SANDBOX_HOOK_LINUX_H_ + ++#if defined(OS_BSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#else + #include "sandbox/policy/linux/sandbox_linux.h" ++#endif + + namespace speech { + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.cc new file mode 100644 index 000000000000..f0e68b225a11 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.cc +@@ -9,7 +9,7 @@ + + #if BUILDFLAG(IS_MAC) + #include "content/child/child_process_sandbox_support_impl_mac.h" +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "content/child/child_process_sandbox_support_impl_linux.h" + #endif + +@@ -17,7 +17,7 @@ UtilityBlinkPlatformWithSandboxSupportImpl:: + + UtilityBlinkPlatformWithSandboxSupportImpl:: + UtilityBlinkPlatformWithSandboxSupportImpl() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + mojo::PendingRemote font_service; + UtilityThread::Get()->BindHostReceiver( + font_service.InitWithNewPipeAndPassReceiver()); +@@ -34,7 +34,7 @@ UtilityBlinkPlatformWithSandboxSupportImpl::GetSandbox + + blink::WebSandboxSupport* + UtilityBlinkPlatformWithSandboxSupportImpl::GetSandboxSupport() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + return sandbox_support_.get(); + #else + return nullptr; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.h new file mode 100644 index 000000000000..0814f478ee4d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.h @@ -0,0 +1,24 @@ +--- src/3rdparty/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.h +@@ -10,7 +10,7 @@ + #include "build/build_config.h" + #include "third_party/blink/public/platform/platform.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "components/services/font/public/cpp/font_loader.h" // nogncheck + #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck + #endif +@@ -38,10 +38,10 @@ class UtilityBlinkPlatformWithSandboxSupportImpl : pub + blink::WebSandboxSupport* GetSandboxSupport() override; + + private: +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + std::unique_ptr sandbox_support_; + #endif +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + sk_sp font_loader_; + #endif + }; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__main.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__main.cc new file mode 100644 index 000000000000..e2d5df0b4819 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__main.cc @@ -0,0 +1,79 @@ +--- src/3rdparty/chromium/content/utility/utility_main.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/utility/utility_main.cc +@@ -32,18 +32,20 @@ + #include "third_party/icu/source/common/unicode/unistr.h" + #include "third_party/icu/source/i18n/unicode/timezone.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "components/services/screen_ai/sandbox/screen_ai_sandbox_hook_linux.h" + #include "content/utility/speech/speech_recognition_sandbox_hook_linux.h" + #if BUILDFLAG(ENABLE_PRINTING) + #include "printing/sandbox/print_backend_sandbox_hook_linux.h" + #endif ++#if !BUILDFLAG(IS_BSD) + #include "sandbox/policy/linux/sandbox_linux.h" ++#endif + #include "services/audio/audio_sandbox_hook_linux.h" + #include "services/network/network_sandbox_hook_linux.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + #include "gpu/config/gpu_info_collector.h" + #include "media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.h" + +@@ -52,6 +54,10 @@ + #include "third_party/angle/src/gpu_info_util/SystemInfo.h" // nogncheck + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) + ++#if BUILDFLAG(IS_BSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#endif ++ + #if BUILDFLAG(IS_CHROMEOS_ASH) + #include "ash/services/ime/ime_sandbox_hook.h" + #include "chromeos/assistant/buildflags.h" +@@ -139,7 +145,7 @@ int UtilityMain(MainFunctionParams parameters) { + } + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Initializes the sandbox before any threads are created. + // TODO(jorgelo): move this after GTK initialization when we enable a strict + // Seccomp-BPF policy. +@@ -169,7 +175,7 @@ int UtilityMain(MainFunctionParams parameters) { + pre_sandbox_hook = base::BindOnce(&screen_ai::ScreenAIPreSandboxHook); + #endif + break; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + case sandbox::mojom::Sandbox::kHardwareVideoDecoding: + pre_sandbox_hook = + base::BindOnce(&media::HardwareVideoDecodingPreSandboxHook); +@@ -192,10 +198,11 @@ int UtilityMain(MainFunctionParams parameters) { + default: + break; + } ++#if !BUILDFLAG(IS_BSD) + if (!sandbox::policy::IsUnsandboxedSandboxType(sandbox_type) && + (parameters.zygote_child || !pre_sandbox_hook.is_null())) { + sandbox::policy::SandboxLinux::Options sandbox_options; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + if (sandbox_type == sandbox::mojom::Sandbox::kHardwareVideoDecoding) { + // The kHardwareVideoDecoding sandbox needs to know the GPU type in order + // to select the right policy. +@@ -208,6 +215,11 @@ int UtilityMain(MainFunctionParams parameters) { + sandbox::policy::Sandbox::Initialize( + sandbox_type, std::move(pre_sandbox_hook), sandbox_options); + } ++#else ++ sandbox::policy::Sandbox::Initialize( ++ sandbox_type, std::move(pre_sandbox_hook), ++ sandbox::policy::SandboxLinux::Options()); ++#endif + #elif BUILDFLAG(IS_WIN) + g_utility_target_services = parameters.sandbox_info->target_services; + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_zygote_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_zygote_BUILD.gn new file mode 100644 index 000000000000..f9cb975a5b13 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_zygote_BUILD.gn @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/content/zygote/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/zygote/BUILD.gn +@@ -5,7 +5,7 @@ import("//content/public/common/zygote/features.gni") + import("//build/config/nacl/config.gni") + import("//content/public/common/zygote/features.gni") + +-if (is_linux || is_chromeos) { ++if ((is_linux || is_chromeos) && !is_bsd) { + source_set("zygote") { + sources = [ + "zygote_linux.cc", diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_zygote_zygote__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_zygote_zygote__linux.cc new file mode 100644 index 000000000000..6cd4191954c6 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_zygote_zygote__linux.cc @@ -0,0 +1,15 @@ +--- src/3rdparty/chromium/content/zygote/zygote_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/zygote/zygote_linux.cc +@@ -1,6 +1,7 @@ + // Copyright (c) 2012 The Chromium Authors. All rights reserved. + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. ++#if 0 + + #include "content/zygote/zygote_linux.h" + +@@ -654,3 +655,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick + } + + } // namespace content ++#endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_zygote_zygote__main__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_zygote_zygote__main__linux.cc new file mode 100644 index 000000000000..cc069e09bc24 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_content_zygote_zygote__main__linux.cc @@ -0,0 +1,64 @@ +--- src/3rdparty/chromium/content/zygote/zygote_main_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/content/zygote/zygote_main_linux.cc +@@ -11,7 +11,9 @@ + #include + #include + #include ++#if !defined(OS_BSD) + #include ++#endif + #include + #include + #include +@@ -40,7 +42,9 @@ + #include "sandbox/linux/services/thread_helpers.h" + #include "sandbox/linux/suid/client/setuid_sandbox_client.h" + #include "sandbox/policy/linux/sandbox_debug_handling_linux.h" ++#if !defined(OS_BSD) + #include "sandbox/policy/linux/sandbox_linux.h" ++#endif + #include "sandbox/policy/sandbox.h" + #include "sandbox/policy/switches.h" + #include "third_party/icu/source/i18n/unicode/timezone.h" +@@ -49,6 +53,7 @@ namespace { + + namespace { + ++#if !defined(OS_BSD) + void CloseFds(const std::vector& fds) { + for (const auto& it : fds) { + PCHECK(0 == IGNORE_EINTR(close(it))); +@@ -66,9 +71,11 @@ base::OnceClosure ClosureFromTwoClosures(base::OnceClo + }, + std::move(one), std::move(two)); + } ++#endif + + } // namespace + ++#if !defined(OS_BSD) + // This function triggers the static and lazy construction of objects that need + // to be created before imposing the sandbox. + static void ZygotePreSandboxInit() { +@@ -175,9 +182,11 @@ static void EnterLayerOneSandbox(sandbox::policy::Sand + CHECK(!using_layer1_sandbox); + } + } ++#endif + + bool ZygoteMain( + std::vector> fork_delegates) { ++#if !defined(OS_BSD) + sandbox::SetAmZygoteOrRenderer(true, GetSandboxFD()); + + auto* linux_sandbox = sandbox::policy::SandboxLinux::GetInstance(); +@@ -243,6 +252,9 @@ bool ZygoteMain( + + // This function call can return multiple times, once per fork(). + return zygote.ProcessRequests(); ++#else ++ return false; ++#endif + } + + } // namespace content diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_common_gpu__memory__buffer__support.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_common_gpu__memory__buffer__support.cc new file mode 100644 index 000000000000..07ef55870733 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_common_gpu__memory__buffer__support.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/gpu/command_buffer/common/gpu_memory_buffer_support.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/command_buffer/common/gpu_memory_buffer_support.cc +@@ -134,7 +134,7 @@ uint32_t GetPlatformSpecificTextureTarget() { + #if BUILDFLAG(IS_MAC) + return macos_specific_texture_target; + #elif BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + return GL_TEXTURE_EXTERNAL_OES; + #elif BUILDFLAG(IS_FUCHSIA) + return GL_TEXTURE_2D; +@@ -166,7 +166,7 @@ GPU_EXPORT bool NativeBufferNeedsPlatformSpecificTextu + gfx::BufferFormat format, + gfx::BufferPlane plane) { + #if defined(USE_OZONE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_WIN) ++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + // Always use GL_TEXTURE_2D as the target for RGB textures. + // https://crbug.com/916728 + if (format == gfx::BufferFormat::R_8 || format == gfx::BufferFormat::RG_88 || diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__backing.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__backing.cc new file mode 100644 index 000000000000..c6bfae8b0cbe --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__backing.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/gpu/command_buffer/service/external_vk_image_backing.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/command_buffer/service/external_vk_image_backing.cc +@@ -30,7 +30,7 @@ + #include "ui/gl/gl_version_info.h" + #include "ui/gl/scoped_binders.h" + +-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && BUILDFLAG(USE_DAWN) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && BUILDFLAG(USE_DAWN) + #include "gpu/command_buffer/service/external_vk_image_dawn_representation.h" + #endif + +@@ -570,7 +570,7 @@ ExternalVkImageBacking::ProduceDawn(SharedImageManager + MemoryTypeTracker* tracker, + WGPUDevice wgpuDevice, + WGPUBackendType backend_type) { +-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && BUILDFLAG(USE_DAWN) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && BUILDFLAG(USE_DAWN) + auto wgpu_format = viz::ToWGPUFormat(format()); + + if (wgpu_format == WGPUTextureFormat_Undefined) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_shared__image__backing__factory__angle__vulkan.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_shared__image__backing__factory__angle__vulkan.cc new file mode 100644 index 000000000000..e28a8677b571 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_shared__image__backing__factory__angle__vulkan.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc +@@ -577,7 +577,7 @@ bool SharedImageBackingFactoryAngleVulkan::CanUseAngle + // TODO(penghuang): verify the scanout is the right usage for video playback. + // crbug.com/1280798 + constexpr auto kSupportedUsages = +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + SHARED_IMAGE_USAGE_SCANOUT | + #endif + SHARED_IMAGE_USAGE_GLES2 | SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT | diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_shared__image__backing__factory__gl__texture.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_shared__image__backing__factory__gl__texture.cc new file mode 100644 index 000000000000..d7dcd43690fd --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_shared__image__backing__factory__gl__texture.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc +@@ -145,7 +145,7 @@ bool SharedImageBackingFactoryGLTexture::IsSupported( + // Linux and ChromeOS support WebGPU/Compat on GL. All other platforms + // do not support WebGPU on GL. + if (usage & SHARED_IMAGE_USAGE_WEBGPU) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE) || BUILDFLAG(IS_BSD) + if (use_webgpu_adapter_ != WebGPUAdapterName::kCompat) { + return false; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_shared__image__backing__gl__texture.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_shared__image__backing__gl__texture.cc new file mode 100644 index 000000000000..f0f0baf8fcae --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_shared__image__backing__gl__texture.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/gpu/command_buffer/service/shared_image_backing_gl_texture.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/command_buffer/service/shared_image_backing_gl_texture.cc +@@ -257,7 +257,7 @@ void SharedImageBackingGLTexture::CreateEGLImage() { + } + + void SharedImageBackingGLTexture::CreateEGLImage() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE) || BUILDFLAG(IS_BSD) + SharedContextState* shared_context_state = factory()->GetSharedContextState(); + ui::ScopedMakeCurrent smc(shared_context_state->context(), + shared_context_state->surface()); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_shared__image__factory.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_shared__image__factory.cc new file mode 100644 index 000000000000..65db6c5ad394 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_shared__image__factory.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/gpu/command_buffer/service/shared_image_factory.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/command_buffer/service/shared_image_factory.cc +@@ -46,7 +46,7 @@ + #include "ui/ozone/public/ozone_platform.h" + #endif + +-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_WIN)) && \ ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)) && \ + BUILDFLAG(ENABLE_VULKAN) + #include "gpu/command_buffer/service/external_vk_image_factory.h" + #elif BUILDFLAG(IS_ANDROID) && BUILDFLAG(ENABLE_VULKAN) +@@ -81,7 +81,7 @@ namespace gpu { + + namespace gpu { + +-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \ ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CHROMEOS_ASH) && \ + !BUILDFLAG(IS_CHROMEOS_LACROS) && !BUILDFLAG(IS_CHROMECAST) && \ + BUILDFLAG(ENABLE_VULKAN) + +@@ -325,7 +325,7 @@ SharedImageFactory::SharedImageFactory( + factories_.push_back(std::move(external_vk_image_factory)); + } + #elif defined(USE_OZONE) +-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \ ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && !BUILDFLAG(IS_CHROMEOS_ASH) && \ + !BUILDFLAG(IS_CHROMEOS_LACROS) && !BUILDFLAG(IS_CHROMECAST) + // Desktop Linux, not ChromeOS. + if (gr_context_type_ == GrContextType::kVulkan && diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_webgpu__decoder__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_webgpu__decoder__impl.cc new file mode 100644 index 000000000000..1d6e7c549946 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_webgpu__decoder__impl.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/gpu/command_buffer/service/webgpu_decoder_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/command_buffer/service/webgpu_decoder_impl.cc +@@ -1536,7 +1536,7 @@ error::Error WebGPUDecoderImpl::HandleRequestAdapter( + + if (gr_context_type_ != GrContextType::kVulkan && + use_webgpu_adapter_ != WebGPUAdapterName::kCompat) { +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + SendAdapterProperties(request_adapter_serial, -1, nullptr, + "WebGPU on Linux requires command-line flag " + "--enable-features=Vulkan,UseSkiaRenderer"); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__control__list.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__control__list.cc new file mode 100644 index 000000000000..51c1889b9e9e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__control__list.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/gpu/config/gpu_control_list.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/config/gpu_control_list.cc +@@ -261,7 +261,7 @@ GpuControlList::GLType GpuControlList::More::GetDefaul + GpuControlList::GLType GpuControlList::More::GetDefaultGLType() { + #if BUILDFLAG(IS_CHROMEOS) + return kGLTypeGL; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_OPENBSD) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + return kGLTypeGL; + #elif BUILDFLAG(IS_MAC) + return kGLTypeGL; +@@ -784,7 +784,7 @@ GpuControlList::OsType GpuControlList::GetOsType() { + return kOsAndroid; + #elif BUILDFLAG(IS_FUCHSIA) + return kOsFuchsia; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_OPENBSD) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + return kOsLinux; + #elif BUILDFLAG(IS_MAC) + return kOsMacosx; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__test__config.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__test__config.cc new file mode 100644 index 000000000000..2784395698cf --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__test__config.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/gpu/config/gpu_test_config.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/config/gpu_test_config.cc +@@ -29,7 +29,7 @@ GPUTestConfig::OS GetCurrentOS() { + #if BUILDFLAG(IS_CHROMEOS_ASH) + return GPUTestConfig::kOsChromeOS; + #elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \ +- BUILDFLAG(IS_OPENBSD) ++ BUILDFLAG(IS_BSD) + return GPUTestConfig::kOsLinux; + #elif BUILDFLAG(IS_WIN) + int32_t major_version = 0; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.cc new file mode 100644 index 000000000000..02b017cf373d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/gpu/ipc/common/gpu_memory_buffer_support.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/ipc/common/gpu_memory_buffer_support.cc +@@ -21,7 +21,7 @@ + #include "ui/ozone/public/ozone_platform.h" + #endif + +-#if defined(USE_OZONE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if defined(USE_OZONE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap.h" + #endif + +@@ -50,7 +50,7 @@ GpuMemoryBufferSupport::GetNativeGpuMemoryBufferType() + return gfx::IO_SURFACE_BUFFER; + #elif BUILDFLAG(IS_ANDROID) + return gfx::ANDROID_HARDWARE_BUFFER; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE) || BUILDFLAG(IS_BSD) + return gfx::NATIVE_PIXMAP; + #elif BUILDFLAG(IS_WIN) + return gfx::DXGI_SHARED_HANDLE; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.h new file mode 100644 index 000000000000..66f95a284544 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/gpu/ipc/common/gpu_memory_buffer_support.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/ipc/common/gpu_memory_buffer_support.h +@@ -18,7 +18,7 @@ + #include "ui/gfx/geometry/size.h" + #include "ui/gfx/gpu_memory_buffer.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || defined(USE_OZONE) || BUILDFLAG(IS_BSD) + namespace gfx { + class ClientNativePixmapFactory; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__init.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__init.cc new file mode 100644 index 000000000000..b67ea1e5de6c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__init.cc @@ -0,0 +1,65 @@ +--- src/3rdparty/chromium/gpu/ipc/service/gpu_init.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/ipc/service/gpu_init.cc +@@ -317,7 +317,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + enable_watchdog = false; + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + bool gpu_sandbox_start_early = gpu_preferences_.gpu_sandbox_start_early; + #else // !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) + // For some reasons MacOSX's VideoToolbox might crash when called after +@@ -367,7 +367,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + } + + bool attempted_startsandbox = false; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // On Chrome OS ARM Mali, GPU driver userspace creates threads when + // initializing a GL context, so start the sandbox early. + // TODO(zmo): Need to collect OS version before this. +@@ -416,7 +416,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + + if (gl_initialized && gl_use_swiftshader_ && + !gl::IsSoftwareGLImplementation(gl::GetGLImplementationParts())) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly " + << "on Linux"; + return false; +@@ -449,7 +449,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + } + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // The ContentSandboxHelper is currently the only one implementation of + // GpuSandboxHelper and it has no dependency. Except on Linux where + // VaapiWrapper checks the GL implementation to determine which display +@@ -508,7 +508,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + command_line, gpu_feature_info_, + gpu_preferences_.disable_software_rasterizer, false); + if (gl_use_swiftshader_) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly " + << "on Linux"; + return false; +@@ -631,7 +631,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL + + InitializePlatformOverlaySettings(&gpu_info_, gpu_feature_info_); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Driver may create a compatibility profile context when collect graphics + // information on Linux platform. Try to collect graphics information + // based on core profile context after disabling platform extensions. +@@ -861,7 +861,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c + + InitializePlatformOverlaySettings(&gpu_info_, gpu_feature_info_); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Driver may create a compatibility profile context when collect graphics + // information on Linux platform. Try to collect graphics information + // based on core profile context after disabling platform extensions. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__memory__buffer__factory.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__memory__buffer__factory.cc new file mode 100644 index 000000000000..c6c29b3f7e0d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__memory__buffer__factory.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/gpu/ipc/service/gpu_memory_buffer_factory.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/ipc/service/gpu_memory_buffer_factory.cc +@@ -12,7 +12,7 @@ + #include "gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + #include "gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap.h" + #endif + +@@ -34,7 +34,7 @@ GpuMemoryBufferFactory::CreateNativeType( + return std::make_unique(); + #elif BUILDFLAG(IS_ANDROID) + return std::make_unique(); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + return std::make_unique( + vulkan_context_provider); + #elif BUILDFLAG(IS_WIN) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_x__util.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_x__util.h new file mode 100644 index 000000000000..64d3eacaab40 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_x__util.h @@ -0,0 +1,16 @@ +--- src/3rdparty/chromium/gpu/ipc/service/x_util.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/ipc/service/x_util.h +@@ -11,11 +11,11 @@ + #include "build/build_config.h" + #include "gpu/ipc/service/gpu_config.h" + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "ui/ozone/buildflags.h" + #endif + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #if BUILDFLAG(OZONE_PLATFORM_X11) + + namespace gpu { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_generate__bindings.py b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_generate__bindings.py new file mode 100644 index 000000000000..df010b36be30 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_generate__bindings.py @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/gpu/vulkan/generate_bindings.py.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/vulkan/generate_bindings.py +@@ -259,7 +259,7 @@ VULKAN_DEVICE_FUNCTIONS = [ + ] + }, + { +- 'ifdef': 'BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)', ++ 'ifdef': 'BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)', + 'extension': 'VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME', + 'functions': [ + 'vkGetImageDrmFormatModifierPropertiesEXT', diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__device__queue.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__device__queue.cc new file mode 100644 index 000000000000..5133bbab9a2f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__device__queue.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/gpu/vulkan/vulkan_device_queue.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/vulkan/vulkan_device_queue.cc +@@ -85,7 +85,7 @@ bool VulkanDeviceQueue::Initialize( + + // In dual-CPU cases, we cannot detect the active GPU correctly on Linux, + // so don't select GPU device based on the |gpu_info|. +-#if !BUILDFLAG(IS_LINUX) ++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD) + // If gpu_info is provided, the device should match it. + if (gpu_info && (device_properties.vendorID != gpu_info->gpu.vendor_id || + device_properties.deviceID != gpu_info->gpu.device_id)) { +@@ -229,7 +229,7 @@ bool VulkanDeviceQueue::Initialize( + enabled_device_features_2_ = {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2}; + + // Android, Fuchsia, and Linux(VaapiVideoDecoder) need YCbCr sampler support. +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + if (!physical_device_info.feature_sampler_ycbcr_conversion) { + LOG(ERROR) << "samplerYcbcrConversion is not supported."; + return false; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__device__queue.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__device__queue.h new file mode 100644 index 000000000000..deff78d5f36d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__device__queue.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/gpu/vulkan/vulkan_device_queue.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/vulkan/vulkan_device_queue.h +@@ -155,7 +155,7 @@ class COMPONENT_EXPORT(VULKAN) VulkanDeviceQueue { + + bool allow_protected_memory_ = false; + +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + VkPhysicalDeviceSamplerYcbcrConversionFeatures + sampler_ycbcr_conversion_features_{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES}; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.cc new file mode 100644 index 000000000000..521031b045e3 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/gpu/vulkan/vulkan_function_pointers.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/vulkan/vulkan_function_pointers.cc +@@ -1151,7 +1151,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer + } + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (gfx::HasExtension(enabled_extensions, + VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME)) { + vkGetImageDrmFormatModifierPropertiesEXT = diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.h new file mode 100644 index 000000000000..5e41b33b77a5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.h @@ -0,0 +1,27 @@ +--- src/3rdparty/chromium/gpu/vulkan/vulkan_function_pointers.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/vulkan/vulkan_function_pointers.h +@@ -305,7 +305,7 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers + VulkanFunction vkGetSwapchainImagesKHR; + VulkanFunction vkQueuePresentKHR; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + VulkanFunction + vkGetImageDrmFormatModifierPropertiesEXT; + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) +@@ -1212,7 +1212,7 @@ ALWAYS_INLINE VkResult vkQueuePresentKHR(VkQueue queue + pPresentInfo); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + ALWAYS_INLINE VkResult vkGetImageDrmFormatModifierPropertiesEXT( + VkDevice device, + VkImage image, +@@ -1222,4 +1222,4 @@ ALWAYS_INLINE VkResult vkGetImageDrmFormatModifierProp + } + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + +-#endif // GPU_VULKAN_VULKAN_FUNCTION_POINTERS_H_ +\ No newline at end of file ++#endif // GPU_VULKAN_VULKAN_FUNCTION_POINTERS_H_ diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__image.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__image.cc new file mode 100644 index 000000000000..b460b8f7fc94 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__image.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/gpu/vulkan/vulkan_image.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/vulkan/vulkan_image.cc +@@ -324,7 +324,7 @@ bool VulkanImage::InitializeWithExternalMemory( + + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + VkPhysicalDeviceImageDrmFormatModifierInfoEXT modifier_info = { + .sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__image.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__image.h new file mode 100644 index 000000000000..a7778c678d2e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__image.h @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/gpu/vulkan/vulkan_image.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/gpu/vulkan/vulkan_image.h +@@ -86,7 +86,7 @@ class COMPONENT_EXPORT(VULKAN) VulkanImage { + VkImageUsageFlags usage, + VkImageCreateFlags flags); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + static std::unique_ptr CreateWithExternalMemoryAndModifiers( + VulkanDeviceQueue* device_queue, + const gfx::Size& size, +@@ -170,7 +170,7 @@ class COMPONENT_EXPORT(VULKAN) VulkanImage { + VkImageTiling image_tiling, + uint32_t queue_family_index); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + bool InitializeWithExternalMemoryAndModifiers(VulkanDeviceQueue* device_queue, + const gfx::Size& size, + VkFormat format, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel.h new file mode 100644 index 000000000000..54c91656266e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/ipc/ipc_channel.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/ipc/ipc_channel.h +@@ -235,7 +235,7 @@ class COMPONENT_EXPORT(IPC) Channel : public Sender { + static std::string GenerateUniqueRandomChannelID(); + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Sandboxed processes live in a PID namespace, so when sending the IPC hello + // message from client to server we need to send the PID from the global + // PID namespace. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__common.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__common.cc new file mode 100644 index 000000000000..8a46e4ccb31c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__common.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/ipc/ipc_channel_common.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/ipc/ipc_channel_common.cc +@@ -11,7 +11,7 @@ namespace IPC { + + namespace IPC { + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + namespace { + int g_global_pid = 0; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__mojo.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__mojo.cc new file mode 100644 index 000000000000..2a09401aff99 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__mojo.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/ipc/ipc_channel_mojo.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/ipc/ipc_channel_mojo.cc +@@ -112,7 +112,7 @@ base::ProcessId GetSelfPID() { + }; + + base::ProcessId GetSelfPID() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (int global_pid = Channel::GetGlobalPid()) + return global_pid; + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.cc new file mode 100644 index 000000000000..81f0473fe9ce --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/ipc/ipc_message_utils.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/ipc/ipc_message_utils.cc +@@ -359,7 +359,7 @@ void ParamTraits::Log(const param_type& + } + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_FUCHSIA) || \ ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) || \ + (BUILDFLAG(IS_ANDROID) && defined(ARCH_CPU_64_BITS)) + void ParamTraits::Log(const param_type& p, std::string* l) { + l->append(base::NumberToString(p)); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.h new file mode 100644 index 000000000000..e5727858b2e3 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/ipc/ipc_message_utils.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/ipc/ipc_message_utils.h +@@ -212,7 +212,7 @@ struct ParamTraits { + // Since we want to support Android 32<>64 bit IPC, as long as we don't have + // these traits for 32 bit ARM then that'll catch any errors. + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_FUCHSIA) || \ ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) || \ + (BUILDFLAG(IS_ANDROID) && defined(ARCH_CPU_64_BITS)) + template <> + struct ParamTraits { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_BUILD.gn new file mode 100644 index 000000000000..e7b8de6b4d1d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_BUILD.gn @@ -0,0 +1,12 @@ +--- src/3rdparty/chromium/media/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/BUILD.gn +@@ -78,6 +78,9 @@ config("media_config") { + defines += [ "DLOPEN_PULSEAUDIO" ] + } + } ++ if (use_sndio) { ++ defines += [ "USE_SNDIO" ] ++ } + if (use_cras) { + defines += [ "USE_CRAS" ] + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_BUILD.gn new file mode 100644 index 000000000000..5ab4cc096214 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_BUILD.gn @@ -0,0 +1,24 @@ +--- src/3rdparty/chromium/media/audio/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/audio/BUILD.gn +@@ -241,9 +241,20 @@ source_set("audio") { + ] + } + +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !use_sndio) { + sources += [ "linux/audio_manager_linux.cc" ] + } ++ ++ if (use_sndio) { ++ libs += [ "sndio" ] ++ sources += [ ++ "sndio/audio_manager_sndio.cc", ++ "sndio/sndio_input.cc", ++ "sndio/sndio_input.h", ++ "sndio/sndio_output.cc", ++ "sndio/sndio_output.h" ++ ] ++ } + + if (use_alsa) { + libs += [ "asound" ] diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_alsa_audio__manager__alsa.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_alsa_audio__manager__alsa.cc new file mode 100644 index 000000000000..54780872e1f1 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_alsa_audio__manager__alsa.cc @@ -0,0 +1,54 @@ +--- src/3rdparty/chromium/media/audio/alsa/audio_manager_alsa.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/audio/alsa/audio_manager_alsa.cc +@@ -88,7 +88,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType + int card = -1; + + // Loop through the sound cards to get ALSA device hints. ++#if !BUILDFLAG(IS_BSD) + while (!wrapper_->CardNext(&card) && card >= 0) { ++#endif + void** hints = NULL; + int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints); + if (!error) { +@@ -100,7 +102,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType + DLOG(WARNING) << "GetAlsaAudioDevices: unable to get device hints: " + << wrapper_->StrError(error); + } ++#if !BUILDFLAG(IS_BSD) + } ++#endif + } + + void AudioManagerAlsa::GetAlsaDevicesInfo(AudioManagerAlsa::StreamType type, +@@ -183,7 +187,11 @@ bool AudioManagerAlsa::IsAlsaDeviceAvailable( + // goes through software conversion if needed (e.g. incompatible + // sample rate). + // TODO(joi): Should we prefer "hw" instead? ++#if BUILDFLAG(IS_BSD) ++ static const char kDeviceTypeDesired[] = "plug"; ++#else + static const char kDeviceTypeDesired[] = "plughw"; ++#endif + return strncmp(kDeviceTypeDesired, device_name, + std::size(kDeviceTypeDesired) - 1) == 0; + } +@@ -205,7 +213,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice( + // Loop through the sound cards. + // Don't use snd_device_name_hint(-1,..) since there is an access violation + // inside this ALSA API with libasound.so.2.0.0. ++#if !BUILDFLAG(IS_BSD) + while (!wrapper_->CardNext(&card) && (card >= 0) && !has_device) { ++#endif + int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints); + if (!error) { + for (void** hint_iter = hints; *hint_iter != NULL; hint_iter++) { +@@ -229,7 +239,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice( + DLOG(WARNING) << "HasAnyAudioDevice: unable to get device hints: " + << wrapper_->StrError(error); + } ++#if !BUILDFLAG(IS_BSD) + } ++#endif + + return has_device; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__features.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__features.cc new file mode 100644 index 000000000000..438f0dad207e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__features.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/audio/audio_features.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/audio/audio_features.cc +@@ -19,7 +19,7 @@ const base::Feature kAudioServiceOutOfProcessKillAtHan + const base::Feature kAudioServiceOutOfProcessKillAtHang{ + "AudioServiceOutOfProcessKillAtHang", + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + base::FEATURE_ENABLED_BY_DEFAULT + #else + base::FEATURE_DISABLED_BY_DEFAULT diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__input__device.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__input__device.cc new file mode 100644 index 000000000000..a0ddc3373d0b --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__input__device.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/audio/audio_input_device.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/audio/audio_input_device.cc +@@ -260,7 +260,7 @@ void AudioInputDevice::OnStreamCreated( + // here. See comments in AliveChecker and PowerObserverHelper for details and + // todos. + if (detect_dead_stream_ == DeadStreamDetection::kEnabled) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + const bool stop_at_first_alive_notification = true; + const bool pause_check_during_suspend = false; + #else diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_audio__manager__sndio.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_audio__manager__sndio.cc new file mode 100644 index 000000000000..bfb7bc24b37d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_audio__manager__sndio.cc @@ -0,0 +1,184 @@ +--- src/3rdparty/chromium/media/audio/sndio/audio_manager_sndio.cc.orig 2022-11-14 07:13:48 UTC ++++ src/3rdparty/chromium/media/audio/sndio/audio_manager_sndio.cc +@@ -0,0 +1,181 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "base/command_line.h" ++#include "base/metrics/histogram_macros.h" ++#include "base/memory/ptr_util.h" ++ ++#include "media/audio/sndio/audio_manager_sndio.h" ++ ++#include "media/audio/audio_device_description.h" ++#include "media/audio/audio_output_dispatcher.h" ++#if defined(USE_SNDIO) ++#include "media/audio/sndio/sndio_input.h" ++#include "media/audio/sndio/sndio_output.h" ++#endif ++#include "media/audio/fake_audio_manager.h" ++#include "media/base/limits.h" ++#include "media/base/media_switches.h" ++ ++namespace media { ++ ++enum SndioAudioIO { ++ kPulse, ++ kSndio, ++ kAudioIOMax = kSndio ++}; ++ ++#if defined(USE_SNDIO) ++// Maximum number of output streams that can be open simultaneously. ++static const int kMaxOutputStreams = 50; ++ ++// Default sample rate for input and output streams. ++static const int kDefaultSampleRate = 48000; ++ ++void AddDefaultDevice(AudioDeviceNames* device_names) { ++ DCHECK(device_names->empty()); ++ device_names->push_front(AudioDeviceName::CreateDefault()); ++} ++ ++bool AudioManagerSndio::HasAudioOutputDevices() { ++ return true; ++} ++ ++bool AudioManagerSndio::HasAudioInputDevices() { ++ return true; ++} ++ ++void AudioManagerSndio::GetAudioInputDeviceNames( ++ AudioDeviceNames* device_names) { ++ DCHECK(device_names->empty()); ++ AddDefaultDevice(device_names); ++} ++ ++void AudioManagerSndio::GetAudioOutputDeviceNames( ++ AudioDeviceNames* device_names) { ++ AddDefaultDevice(device_names); ++} ++ ++#if defined(USE_SNDIO) ++const char* AudioManagerSndio::GetName() { ++ return "SNDIO"; ++} ++#endif ++ ++AudioParameters AudioManagerSndio::GetInputStreamParameters( ++ const std::string& device_id) { ++ static const int kDefaultInputBufferSize = 1024; ++ ++ int user_buffer_size = GetUserBufferSize(); ++ int buffer_size = user_buffer_size ? ++ user_buffer_size : kDefaultInputBufferSize; ++ ++ return AudioParameters( ++ AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, ++ kDefaultSampleRate, buffer_size); ++} ++ ++AudioManagerSndio::AudioManagerSndio(std::unique_ptr audio_thread, ++ AudioLogFactory* audio_log_factory) ++ : AudioManagerBase(std::move(audio_thread), ++ audio_log_factory) { ++ DLOG(WARNING) << "AudioManagerSndio"; ++ SetMaxOutputStreamsAllowed(kMaxOutputStreams); ++} ++ ++AudioManagerSndio::~AudioManagerSndio() = default; ++ ++AudioOutputStream* AudioManagerSndio::MakeLinearOutputStream( ++ const AudioParameters& params, ++ const LogCallback& log_callback) { ++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); ++ return MakeOutputStream(params); ++} ++ ++AudioOutputStream* AudioManagerSndio::MakeLowLatencyOutputStream( ++ const AudioParameters& params, ++ const std::string& device_id, ++ const LogCallback& log_callback) { ++ DLOG_IF(ERROR, !device_id.empty()) << "Not implemented!"; ++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); ++ return MakeOutputStream(params); ++} ++ ++AudioInputStream* AudioManagerSndio::MakeLinearInputStream( ++ const AudioParameters& params, ++ const std::string& device_id, ++ const LogCallback& log_callback) { ++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); ++ return MakeInputStream(params); ++} ++ ++AudioInputStream* AudioManagerSndio::MakeLowLatencyInputStream( ++ const AudioParameters& params, ++ const std::string& device_id, ++ const LogCallback& log_callback) { ++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); ++ return MakeInputStream(params); ++} ++ ++AudioParameters AudioManagerSndio::GetPreferredOutputStreamParameters( ++ const std::string& output_device_id, ++ const AudioParameters& input_params) { ++ // TODO(tommi): Support |output_device_id|. ++ DLOG_IF(ERROR, !output_device_id.empty()) << "Not implemented!"; ++ static const int kDefaultOutputBufferSize = 2048; ++ ++ ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; ++ int sample_rate = kDefaultSampleRate; ++ int buffer_size = kDefaultOutputBufferSize; ++ if (input_params.IsValid()) { ++ sample_rate = input_params.sample_rate(); ++ channel_layout = input_params.channel_layout(); ++ buffer_size = std::min(buffer_size, input_params.frames_per_buffer()); ++ } ++ ++ int user_buffer_size = GetUserBufferSize(); ++ if (user_buffer_size) ++ buffer_size = user_buffer_size; ++ ++ return AudioParameters( ++ AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, ++ sample_rate, buffer_size); ++} ++ ++AudioInputStream* AudioManagerSndio::MakeInputStream( ++ const AudioParameters& params) { ++ DLOG(WARNING) << "MakeInputStream"; ++ return new SndioAudioInputStream(this, ++ AudioDeviceDescription::kDefaultDeviceId, params); ++} ++ ++AudioOutputStream* AudioManagerSndio::MakeOutputStream( ++ const AudioParameters& params) { ++ DLOG(WARNING) << "MakeOutputStream"; ++ return new SndioAudioOutputStream(params, this); ++} ++#endif ++ ++std::unique_ptr CreateAudioManager( ++ std::unique_ptr audio_thread, ++ AudioLogFactory* audio_log_factory) { ++ DLOG(WARNING) << "CreateAudioManager"; ++ // For testing allow audio output to be disabled. ++ if (base::CommandLine::ForCurrentProcess()->HasSwitch( ++ switches::kDisableAudioOutput)) { ++ return std::make_unique(std::move(audio_thread), ++ audio_log_factory); ++ } ++#if defined(USE_SNDIO) ++ UMA_HISTOGRAM_ENUMERATION("Media.SndioAudioIO", kSndio, kAudioIOMax + 1); ++ return std::make_unique(std::move(audio_thread), ++ audio_log_factory); ++#else ++ return std::make_unique(std::move(audio_thread), ++ audio_log_factory); ++#endif ++ ++} ++ ++} // namespace media diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_audio__manager__sndio.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_audio__manager__sndio.h new file mode 100644 index 000000000000..922c7e716913 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_audio__manager__sndio.h @@ -0,0 +1,69 @@ +--- src/3rdparty/chromium/media/audio/sndio/audio_manager_sndio.h.orig 2022-11-14 07:13:51 UTC ++++ src/3rdparty/chromium/media/audio/sndio/audio_manager_sndio.h +@@ -0,0 +1,66 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_ ++#define MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_ ++ ++#include ++ ++#include "base/compiler_specific.h" ++#include "base/memory/ref_counted.h" ++#include "base/threading/thread.h" ++#include "media/audio/audio_manager_base.h" ++ ++namespace media { ++ ++class MEDIA_EXPORT AudioManagerSndio : public AudioManagerBase { ++ public: ++ AudioManagerSndio(std::unique_ptr audio_thread, ++ AudioLogFactory* audio_log_factory); ++ ++ AudioManagerSndio(const AudioManagerSndio&) = delete; ++ AudioManagerSndio& operator=(const AudioManagerSndio&) = delete; ++ ++ ~AudioManagerSndio() override; ++ ++ // Implementation of AudioManager. ++ bool HasAudioOutputDevices() override; ++ bool HasAudioInputDevices() override; ++ void GetAudioInputDeviceNames(AudioDeviceNames* device_names) override; ++ void GetAudioOutputDeviceNames(AudioDeviceNames* device_names) override; ++ AudioParameters GetInputStreamParameters( ++ const std::string& device_id) override; ++ const char* GetName() override; ++ ++ // Implementation of AudioManagerBase. ++ AudioOutputStream* MakeLinearOutputStream( ++ const AudioParameters& params, ++ const LogCallback& log_callback) override; ++ AudioOutputStream* MakeLowLatencyOutputStream( ++ const AudioParameters& params, ++ const std::string& device_id, ++ const LogCallback& log_callback) override; ++ AudioInputStream* MakeLinearInputStream( ++ const AudioParameters& params, ++ const std::string& device_id, ++ const LogCallback& log_callback) override; ++ AudioInputStream* MakeLowLatencyInputStream( ++ const AudioParameters& params, ++ const std::string& device_id, ++ const LogCallback& log_callback) override; ++ ++ protected: ++ AudioParameters GetPreferredOutputStreamParameters( ++ const std::string& output_device_id, ++ const AudioParameters& input_params) override; ++ ++ private: ++ // Called by MakeLinearOutputStream and MakeLowLatencyOutputStream. ++ AudioOutputStream* MakeOutputStream(const AudioParameters& params); ++ AudioInputStream* MakeInputStream(const AudioParameters& params); ++}; ++ ++} // namespace media ++ ++#endif // MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_ diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_sndio__input.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_sndio__input.cc new file mode 100644 index 000000000000..2d355fd5fb9b --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_sndio__input.cc @@ -0,0 +1,204 @@ +--- src/3rdparty/chromium/media/audio/sndio/sndio_input.cc.orig 2022-11-14 07:14:34 UTC ++++ src/3rdparty/chromium/media/audio/sndio/sndio_input.cc +@@ -0,0 +1,201 @@ ++// Copyright 2013 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "base/bind.h" ++#include "base/logging.h" ++#include "media/base/audio_timestamp_helper.h" ++#include "media/audio/sndio/audio_manager_sndio.h" ++#include "media/audio/audio_manager.h" ++#include "media/audio/sndio/sndio_input.h" ++ ++namespace media { ++ ++static const SampleFormat kSampleFormat = kSampleFormatS16; ++ ++void SndioAudioInputStream::OnMoveCallback(void *arg, int delta) ++{ ++ SndioAudioInputStream* self = static_cast(arg); ++ ++ self->hw_delay += delta; ++} ++ ++void *SndioAudioInputStream::ThreadEntry(void *arg) { ++ SndioAudioInputStream* self = static_cast(arg); ++ ++ self->ThreadLoop(); ++ return NULL; ++} ++ ++SndioAudioInputStream::SndioAudioInputStream(AudioManagerBase* manager, ++ const std::string& device_name, ++ const AudioParameters& params) ++ : manager(manager), ++ params(params), ++ audio_bus(AudioBus::Create(params)), ++ state(kClosed) { ++} ++ ++SndioAudioInputStream::~SndioAudioInputStream() { ++ if (state != kClosed) ++ Close(); ++} ++ ++AudioInputStream::OpenOutcome SndioAudioInputStream::Open() { ++ struct sio_par par; ++ int sig; ++ ++ if (state != kClosed) ++ return OpenOutcome::kFailed; ++ ++ if (params.format() != AudioParameters::AUDIO_PCM_LINEAR && ++ params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) { ++ LOG(WARNING) << "Unsupported audio format."; ++ return OpenOutcome::kFailed; ++ } ++ ++ sio_initpar(&par); ++ par.rate = params.sample_rate(); ++ par.rchan = params.channels(); ++ par.bits = SampleFormatToBitsPerChannel(kSampleFormat); ++ par.bps = par.bits / 8; ++ par.sig = sig = par.bits != 8 ? 1 : 0; ++ par.le = SIO_LE_NATIVE; ++ par.appbufsz = params.frames_per_buffer(); ++ ++ hdl = sio_open(SIO_DEVANY, SIO_REC, 0); ++ ++ if (hdl == NULL) { ++ LOG(ERROR) << "Couldn't open audio device."; ++ return OpenOutcome::kFailed; ++ } ++ ++ if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) { ++ LOG(ERROR) << "Couldn't set audio parameters."; ++ goto bad_close; ++ } ++ ++ if (par.rate != (unsigned int)params.sample_rate() || ++ par.rchan != (unsigned int)params.channels() || ++ par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) || ++ par.sig != (unsigned int)sig || ++ (par.bps > 1 && par.le != SIO_LE_NATIVE) || ++ (par.bits != par.bps * 8)) { ++ LOG(ERROR) << "Unsupported audio parameters."; ++ goto bad_close; ++ } ++ state = kStopped; ++ buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)]; ++ sio_onmove(hdl, &OnMoveCallback, this); ++ return OpenOutcome::kSuccess; ++bad_close: ++ sio_close(hdl); ++ return OpenOutcome::kFailed; ++} ++ ++void SndioAudioInputStream::Start(AudioInputCallback* cb) { ++ ++ StartAgc(); ++ ++ state = kRunning; ++ hw_delay = 0; ++ callback = cb; ++ sio_start(hdl); ++ if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) { ++ LOG(ERROR) << "Failed to create real-time thread for recording."; ++ sio_stop(hdl); ++ state = kStopped; ++ } ++} ++ ++void SndioAudioInputStream::Stop() { ++ ++ if (state == kStopped) ++ return; ++ ++ state = kStopWait; ++ pthread_join(thread, NULL); ++ sio_stop(hdl); ++ state = kStopped; ++ ++ StopAgc(); ++} ++ ++void SndioAudioInputStream::Close() { ++ ++ if (state == kClosed) ++ goto release; ++ ++ if (state == kRunning) ++ Stop(); ++ ++ state = kClosed; ++ delete [] buffer; ++ sio_close(hdl); ++ ++release: ++ manager->ReleaseInputStream(this); ++} ++ ++double SndioAudioInputStream::GetMaxVolume() { ++ // Not supported ++ return 0.0; ++} ++ ++void SndioAudioInputStream::SetVolume(double volume) { ++ // Not supported. Do nothing. ++} ++ ++double SndioAudioInputStream::GetVolume() { ++ // Not supported. ++ return 0.0; ++} ++ ++bool SndioAudioInputStream::IsMuted() { ++ // Not supported. ++ return false; ++} ++ ++void SndioAudioInputStream::SetOutputDeviceForAec( ++ const std::string& output_device_id) { ++ // Not supported. ++} ++ ++void SndioAudioInputStream::ThreadLoop(void) { ++ size_t todo, n; ++ char *data; ++ unsigned int nframes; ++ double normalized_volume = 0.0; ++ ++ nframes = audio_bus->frames(); ++ ++ while (state == kRunning && !sio_eof(hdl)) { ++ ++ GetAgcVolume(&normalized_volume); ++ ++ // read one block ++ todo = nframes * params.GetBytesPerFrame(kSampleFormat); ++ data = buffer; ++ while (todo > 0) { ++ n = sio_read(hdl, data, todo); ++ if (n == 0) ++ return; // unrecoverable I/O error ++ todo -= n; ++ data += n; ++ } ++ hw_delay -= nframes; ++ ++ // convert frames count to TimeDelta ++ const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay, ++ params.sample_rate()); ++ ++ // push into bus ++ audio_bus->FromInterleaved(reinterpret_cast(buffer), nframes); ++ ++ ++ // invoke callback ++ callback->OnData(audio_bus.get(), base::TimeTicks::Now() - delay, 1.); ++ } ++} ++ ++} // namespace media diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_sndio__input.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_sndio__input.h new file mode 100644 index 000000000000..c6ae0b72a95e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_sndio__input.h @@ -0,0 +1,94 @@ +--- src/3rdparty/chromium/media/audio/sndio/sndio_input.h.orig 2022-11-14 07:14:36 UTC ++++ src/3rdparty/chromium/media/audio/sndio/sndio_input.h +@@ -0,0 +1,91 @@ ++// Copyright 2013 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_ ++#define MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_ ++ ++#include ++#include ++#include ++ ++#include "base/compiler_specific.h" ++#include "base/memory/weak_ptr.h" ++#include "base/time/time.h" ++#include "media/audio/agc_audio_stream.h" ++#include "media/audio/audio_io.h" ++#include "media/audio/audio_device_description.h" ++#include "media/base/audio_parameters.h" ++ ++namespace media { ++ ++class AudioManagerBase; ++ ++// Implementation of AudioOutputStream using sndio(7) ++class SndioAudioInputStream : public AgcAudioStream { ++ public: ++ // Pass this to the constructor if you want to attempt auto-selection ++ // of the audio recording device. ++ static const char kAutoSelectDevice[]; ++ ++ // Create a PCM Output stream for the SNDIO device identified by ++ // |device_name|. If unsure of what to use for |device_name|, use ++ // |kAutoSelectDevice|. ++ SndioAudioInputStream(AudioManagerBase* audio_manager, ++ const std::string& device_name, ++ const AudioParameters& params); ++ ++ SndioAudioInputStream(const SndioAudioInputStream&) = delete; ++ SndioAudioInputStream& operator=(const SndioAudioInputStream&) = delete; ++ ++ ~SndioAudioInputStream() override; ++ ++ // Implementation of AudioInputStream. ++ OpenOutcome Open() override; ++ void Start(AudioInputCallback* callback) override; ++ void Stop() override; ++ void Close() override; ++ double GetMaxVolume() override; ++ void SetVolume(double volume) override; ++ double GetVolume() override; ++ bool IsMuted() override; ++ void SetOutputDeviceForAec(const std::string& output_device_id) override; ++ ++ private: ++ ++ enum StreamState { ++ kClosed, // Not opened yet ++ kStopped, // Device opened, but not started yet ++ kRunning, // Started, device playing ++ kStopWait // Stopping, waiting for the real-time thread to exit ++ }; ++ ++ // C-style call-backs ++ static void OnMoveCallback(void *arg, int delta); ++ static void* ThreadEntry(void *arg); ++ ++ // Continuously moves data from the device to the consumer ++ void ThreadLoop(); ++ // Our creator, the audio manager needs to be notified when we close. ++ AudioManagerBase* manager; ++ // Parameters of the source ++ AudioParameters params; ++ // We store data here for consumer ++ std::unique_ptr audio_bus; ++ // Call-back that consumes recorded data ++ AudioInputCallback* callback; // Valid during a recording session. ++ // Handle of the audio device ++ struct sio_hdl* hdl; ++ // Current state of the stream ++ enum StreamState state; ++ // High priority thread running ThreadLoop() ++ pthread_t thread; ++ // Number of frames buffered in the hardware ++ int hw_delay; ++ // Temporary buffer where data is stored sndio-compatible format ++ char* buffer; ++}; ++ ++} // namespace media ++ ++#endif // MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_ diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_sndio__output.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_sndio__output.cc new file mode 100644 index 000000000000..5db7f4b56604 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_sndio__output.cc @@ -0,0 +1,190 @@ +--- src/3rdparty/chromium/media/audio/sndio/sndio_output.cc.orig 2022-11-14 07:14:51 UTC ++++ src/3rdparty/chromium/media/audio/sndio/sndio_output.cc +@@ -0,0 +1,187 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "base/logging.h" ++#include "base/time/time.h" ++#include "base/time/default_tick_clock.h" ++#include "media/audio/audio_manager_base.h" ++#include "media/base/audio_timestamp_helper.h" ++#include "media/audio/sndio/sndio_output.h" ++ ++namespace media { ++ ++static const SampleFormat kSampleFormat = kSampleFormatS16; ++ ++void SndioAudioOutputStream::OnMoveCallback(void *arg, int delta) { ++ SndioAudioOutputStream* self = static_cast(arg); ++ ++ self->hw_delay -= delta; ++} ++ ++void SndioAudioOutputStream::OnVolCallback(void *arg, unsigned int vol) { ++ SndioAudioOutputStream* self = static_cast(arg); ++ ++ self->vol = vol; ++} ++ ++void *SndioAudioOutputStream::ThreadEntry(void *arg) { ++ SndioAudioOutputStream* self = static_cast(arg); ++ ++ self->ThreadLoop(); ++ return NULL; ++} ++ ++SndioAudioOutputStream::SndioAudioOutputStream(const AudioParameters& params, ++ AudioManagerBase* manager) ++ : manager(manager), ++ params(params), ++ audio_bus(AudioBus::Create(params)), ++ state(kClosed), ++ mutex(PTHREAD_MUTEX_INITIALIZER) { ++} ++ ++SndioAudioOutputStream::~SndioAudioOutputStream() { ++ if (state != kClosed) ++ Close(); ++} ++ ++bool SndioAudioOutputStream::Open() { ++ if (params.format() != AudioParameters::AUDIO_PCM_LINEAR && ++ params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) { ++ LOG(WARNING) << "Unsupported audio format."; ++ return false; ++ } ++ state = kStopped; ++ volpending = 0; ++ vol = SIO_MAXVOL; ++ buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)]; ++ return true; ++} ++ ++void SndioAudioOutputStream::Close() { ++ if (state == kClosed) ++ goto release; ++ if (state == kRunning) ++ Stop(); ++ state = kClosed; ++ delete [] buffer; ++release: ++ manager->ReleaseOutputStream(this); // Calls the destructor ++} ++ ++void SndioAudioOutputStream::Start(AudioSourceCallback* callback) { ++ struct sio_par par; ++ int sig; ++ ++ sio_initpar(&par); ++ par.rate = params.sample_rate(); ++ par.pchan = params.channels(); ++ par.bits = SampleFormatToBitsPerChannel(kSampleFormat); ++ par.bps = par.bits / 8; ++ par.sig = sig = par.bits != 8 ? 1 : 0; ++ par.le = SIO_LE_NATIVE; ++ par.appbufsz = params.frames_per_buffer(); ++ ++ hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0); ++ if (hdl == NULL) { ++ LOG(ERROR) << "Couldn't open audio device."; ++ return; ++ } ++ if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) { ++ LOG(ERROR) << "Couldn't set audio parameters."; ++ sio_close(hdl); ++ return; ++ } ++ if (par.rate != (unsigned int)params.sample_rate() || ++ par.pchan != (unsigned int)params.channels() || ++ par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) || ++ par.sig != (unsigned int)sig || ++ (par.bps > 1 && par.le != SIO_LE_NATIVE) || ++ (par.bits != par.bps * 8)) { ++ LOG(ERROR) << "Unsupported audio parameters."; ++ sio_close(hdl); ++ return; ++ } ++ ++ sio_onmove(hdl, &OnMoveCallback, this); ++ sio_onvol(hdl, &OnVolCallback, this); ++ ++ state = kRunning; ++ hw_delay = 0; ++ source = callback; ++ sio_start(hdl); ++ ++ if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) { ++ LOG(ERROR) << "Failed to create real-time thread."; ++ sio_stop(hdl); ++ sio_close(hdl); ++ state = kStopped; ++ } ++} ++ ++void SndioAudioOutputStream::Stop() { ++ if (state == kStopped) ++ return; ++ state = kStopWait; ++ pthread_join(thread, NULL); ++ sio_stop(hdl); ++ sio_close(hdl); ++ state = kStopped; ++} ++ ++void SndioAudioOutputStream::SetVolume(double v) { ++ pthread_mutex_lock(&mutex); ++ vol = v * SIO_MAXVOL; ++ volpending = 1; ++ pthread_mutex_unlock(&mutex); ++} ++ ++void SndioAudioOutputStream::GetVolume(double* v) { ++ pthread_mutex_lock(&mutex); ++ *v = vol * (1. / SIO_MAXVOL); ++ pthread_mutex_unlock(&mutex); ++} ++ ++// This stream is always used with sub second buffer sizes, where it's ++// sufficient to simply always flush upon Start(). ++void SndioAudioOutputStream::Flush() {} ++ ++void SndioAudioOutputStream::ThreadLoop(void) { ++ int avail, count, result; ++ ++ while (state == kRunning) { ++ // Update volume if needed ++ pthread_mutex_lock(&mutex); ++ if (volpending) { ++ volpending = 0; ++ sio_setvol(hdl, vol); ++ } ++ pthread_mutex_unlock(&mutex); ++ ++ // Get data to play ++ const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay, ++ params.sample_rate()); ++ count = source->OnMoreData(delay, base::TimeTicks::Now(), 0, audio_bus.get()); ++ audio_bus->ToInterleaved(count, reinterpret_cast(buffer)); ++ if (count == 0) { ++ // We have to submit something to the device ++ count = audio_bus->frames(); ++ memset(buffer, 0, count * params.GetBytesPerFrame(kSampleFormat)); ++ LOG(WARNING) << "No data to play, running empty cycle."; ++ } ++ ++ // Submit data to the device ++ avail = count * params.GetBytesPerFrame(kSampleFormat); ++ result = sio_write(hdl, buffer, avail); ++ if (result == 0) { ++ LOG(WARNING) << "Audio device disconnected."; ++ break; ++ } ++ ++ // Update hardware pointer ++ hw_delay += count; ++ } ++} ++ ++} // namespace media diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_sndio__output.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_sndio__output.h new file mode 100644 index 000000000000..954797964bba --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_audio_sndio_sndio__output.h @@ -0,0 +1,91 @@ +--- src/3rdparty/chromium/media/audio/sndio/sndio_output.h.orig 2022-11-14 07:14:53 UTC ++++ src/3rdparty/chromium/media/audio/sndio/sndio_output.h +@@ -0,0 +1,88 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_ ++#define MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_ ++ ++#include ++#include ++ ++#include "base/time/tick_clock.h" ++#include "base/time/time.h" ++#include "media/audio/audio_io.h" ++ ++namespace media { ++ ++class AudioManagerBase; ++ ++// Implementation of AudioOutputStream using sndio(7) ++class SndioAudioOutputStream : public AudioOutputStream { ++ public: ++ // The manager is creating this object ++ SndioAudioOutputStream(const AudioParameters& params, ++ AudioManagerBase* manager); ++ ++ SndioAudioOutputStream(const SndioAudioOutputStream&) = delete; ++ SndioAudioOutputStream& operator=(const SndioAudioOutputStream&) = delete; ++ ++ virtual ~SndioAudioOutputStream(); ++ ++ // Implementation of AudioOutputStream. ++ bool Open() override; ++ void Close() override; ++ void Start(AudioSourceCallback* callback) override; ++ void Stop() override; ++ void SetVolume(double volume) override; ++ void GetVolume(double* volume) override; ++ void Flush() override; ++ ++ friend void sndio_onmove(void *arg, int delta); ++ friend void sndio_onvol(void *arg, unsigned int vol); ++ friend void *sndio_threadstart(void *arg); ++ ++ private: ++ enum StreamState { ++ kClosed, // Not opened yet ++ kStopped, // Device opened, but not started yet ++ kRunning, // Started, device playing ++ kStopWait // Stopping, waiting for the real-time thread to exit ++ }; ++ ++ // C-style call-backs ++ static void OnMoveCallback(void *arg, int delta); ++ static void OnVolCallback(void *arg, unsigned int vol); ++ static void* ThreadEntry(void *arg); ++ ++ // Continuously moves data from the producer to the device ++ void ThreadLoop(void); ++ ++ // Our creator, the audio manager needs to be notified when we close. ++ AudioManagerBase* manager; ++ // Parameters of the source ++ AudioParameters params; ++ // Source stores data here ++ std::unique_ptr audio_bus; ++ // Call-back that produces data to play ++ AudioSourceCallback* source; ++ // Handle of the audio device ++ struct sio_hdl* hdl; ++ // Current state of the stream ++ enum StreamState state; ++ // High priority thread running ThreadLoop() ++ pthread_t thread; ++ // Protects vol, volpending and hw_delay ++ pthread_mutex_t mutex; ++ // Current volume in the 0..SIO_MAXVOL range ++ int vol; ++ // Set to 1 if volumes must be refreshed in the realtime thread ++ int volpending; ++ // Number of frames buffered in the hardware ++ int hw_delay; ++ // Temporary buffer where data is stored sndio-compatible format ++ char* buffer; ++}; ++ ++} // namespace media ++ ++#endif // MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_ diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_audio__latency.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_audio__latency.cc new file mode 100644 index 000000000000..9962ed8a3df7 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_audio__latency.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/base/audio_latency.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/base/audio_latency.cc +@@ -135,7 +135,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in + } + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // On Linux, MacOS and Fuchsia, the low level IO implementations on the + // browser side supports all buffer size the clients want. We use the native + // peer connection buffer size (10ms) to achieve best possible performance. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_media__switches.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_media__switches.cc new file mode 100644 index 000000000000..f845c3906848 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_media__switches.cc @@ -0,0 +1,47 @@ +--- src/3rdparty/chromium/media/base/media_switches.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/base/media_switches.cc +@@ -10,7 +10,7 @@ + #include "components/system_media_controls/linux/buildflags/buildflags.h" + #include "media/media_buildflags.h" + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "base/cpu.h" + #endif + +@@ -416,7 +416,7 @@ const base::Feature kGlobalMediaControls { + const base::Feature kGlobalMediaControls { + "GlobalMediaControls", + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS_LACROS) ++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + base::FEATURE_ENABLED_BY_DEFAULT + #else + base::FEATURE_DISABLED_BY_DEFAULT +@@ -448,7 +448,7 @@ const base::Feature kGlobalMediaControlsPictureInPictu + const base::Feature kGlobalMediaControlsPictureInPicture { + "GlobalMediaControlsPictureInPicture", + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_CHROMEOS_LACROS) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + base::FEATURE_ENABLED_BY_DEFAULT + #else + base::FEATURE_DISABLED_BY_DEFAULT +@@ -489,7 +489,7 @@ const base::Feature kUnifiedAutoplay{"UnifiedAutoplay" + const base::Feature kUnifiedAutoplay{"UnifiedAutoplay", + base::FEATURE_ENABLED_BY_DEFAULT}; + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // Enable vaapi video decoding on linux. This is already enabled by default on + // chromeos, but needs an experiment on linux. + const base::Feature kVaapiVideoDecodeLinux{"VaapiVideoDecoder", +@@ -863,7 +863,7 @@ const base::Feature MEDIA_EXPORT kDeprecateLowUsageCod + "DeprecateLowUsageCodecs", base::FEATURE_ENABLED_BY_DEFAULT}; + #endif // BUILDFLAG(IS_CHROMEOS) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Spawn utility processes to perform hardware decode acceleration instead of + // using the GPU process. + const base::Feature MEDIA_EXPORT kUseOutOfProcessVideoDecoding{ diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_media__switches.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_media__switches.h new file mode 100644 index 000000000000..40139bd29a3a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_media__switches.h @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/media/base/media_switches.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/base/media_switches.h +@@ -195,7 +195,7 @@ MEDIA_EXPORT extern const base::Feature kUseR16Texture + MEDIA_EXPORT extern const base::Feature kUseFakeDeviceForMediaStream; + MEDIA_EXPORT extern const base::Feature kUseMediaHistoryStore; + MEDIA_EXPORT extern const base::Feature kUseR16Texture; +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + MEDIA_EXPORT extern const base::Feature kVaapiVideoDecodeLinux; + MEDIA_EXPORT extern const base::Feature kVaapiVideoEncodeLinux; + #endif // BUILDFLAG(IS_LINUX) +@@ -278,7 +278,7 @@ MEDIA_EXPORT extern const base::Feature kDeprecateLowU + MEDIA_EXPORT extern const base::Feature kDeprecateLowUsageCodecs; + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + MEDIA_EXPORT extern const base::Feature kUseOutOfProcessVideoDecoding; + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_scopedfd__helper.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_scopedfd__helper.h new file mode 100644 index 000000000000..413962d7ee9d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_scopedfd__helper.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/base/scopedfd_helper.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/base/scopedfd_helper.h +@@ -15,7 +15,7 @@ namespace media { + // but since the only current user is V4L2 we are limiting the scope to OS_LINUX + // so the binary size does not inflate on non-using systems. Feel free to adapt + // this and BUILD.gn as our needs evolve. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + // Return a new vector containing duplicates of |fds|, or PCHECKs in case of an + // error. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_supported__types.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_supported__types.cc new file mode 100644 index 000000000000..248c3ee643de --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_supported__types.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/base/supported_types.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/base/supported_types.cc +@@ -205,7 +205,7 @@ bool IsHevcProfileSupported(const VideoType& type) { + return false; + + #if BUILDFLAG(ENABLE_PLATFORM_HEVC) +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + return GetSupplementalProfileCache()->IsProfileSupported(type.profile); + #else + return true; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_vector__math.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_vector__math.cc new file mode 100644 index 000000000000..b742496b605f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_vector__math.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/base/vector_math.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/base/vector_math.cc +@@ -18,7 +18,7 @@ + // better, which is anywhere clang is used. + // TODO(pcc): Linux currently uses ThinLTO which has broken auto-vectorization + // in clang, so use our intrinsic version for now. http://crbug.com/738085 +-#if !defined(__clang__) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if !defined(__clang__) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #define FMAC_FUNC FMAC_SSE + #define FMUL_FUNC FMUL_SSE + #else diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.cc new file mode 100644 index 000000000000..296d14ed0b9b --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.cc @@ -0,0 +1,74 @@ +--- src/3rdparty/chromium/media/base/video_frame.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/base/video_frame.cc +@@ -72,7 +72,7 @@ std::string VideoFrame::StorageTypeToString( + return "OWNED_MEMORY"; + case VideoFrame::STORAGE_SHMEM: + return "SHMEM"; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + case VideoFrame::STORAGE_DMABUFS: + return "DMABUFS"; + #endif +@@ -89,7 +89,7 @@ bool VideoFrame::IsStorageTypeMappable(VideoFrame::Sto + // static + bool VideoFrame::IsStorageTypeMappable(VideoFrame::StorageType storage_type) { + return +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // This is not strictly needed but makes explicit that, at VideoFrame + // level, DmaBufs are not mappable from userspace. + storage_type != VideoFrame::STORAGE_DMABUFS && +@@ -285,7 +285,7 @@ static absl::optional GetDefaultLayo + return VideoFrameLayout::CreateWithPlanes(format, coded_size, planes); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // This class allows us to embed a vector into a scoped_refptr, and + // thus to have several VideoFrames share the same set of DMABUF FDs. + class VideoFrame::DmabufHolder +@@ -624,7 +624,7 @@ scoped_refptr VideoFrame::WrapExternalGpuM + for (size_t i = 0; i < num_planes; ++i) + planes[i].stride = gpu_memory_buffer->stride(i); + uint64_t modifier = gfx::NativePixmapHandle::kNoModifier; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (gpu_memory_buffer->GetType() == gfx::NATIVE_PIXMAP) { + const auto gmb_handle = gpu_memory_buffer->CloneHandle(); + if (gmb_handle.is_null() || +@@ -670,7 +670,7 @@ scoped_refptr VideoFrame::WrapExternalGpuM + return frame; + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // static + scoped_refptr VideoFrame::WrapExternalDmabufs( + const VideoFrameLayout& layout, +@@ -894,7 +894,7 @@ scoped_refptr VideoFrame::WrapVideoFrame( + } + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + DCHECK(frame->dmabuf_fds_); + // If there are any |dmabuf_fds_| plugged in, we should refer them too. + wrapping_frame->dmabuf_fds_ = frame->dmabuf_fds_; +@@ -1265,7 +1265,7 @@ const gpu::MailboxHolder& VideoFrame::mailbox_holder( + : mailbox_holders_[texture_index]; + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + const std::vector& VideoFrame::DmabufFds() const { + DCHECK_EQ(storage_type_, STORAGE_DMABUFS); + +@@ -1377,7 +1377,7 @@ VideoFrame::VideoFrame(const VideoFrameLayout& layout, + storage_type_(storage_type), + visible_rect_(Intersection(visible_rect, gfx::Rect(layout.coded_size()))), + natural_size_(natural_size), +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + dmabuf_fds_(base::MakeRefCounted()), + #endif + timestamp_(timestamp), diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.h new file mode 100644 index 000000000000..47a80f518cad --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.h @@ -0,0 +1,47 @@ +--- src/3rdparty/chromium/media/base/video_frame.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/base/video_frame.h +@@ -41,7 +41,7 @@ + #include "base/mac/scoped_cftyperef.h" + #endif // BUILDFLAG(IS_MAC) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "base/files/scoped_file.h" + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + +@@ -83,7 +83,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte + STORAGE_UNOWNED_MEMORY = 2, // External, non owned data pointers. + STORAGE_OWNED_MEMORY = 3, // VideoFrame has allocated its own data buffer. + STORAGE_SHMEM = 4, // Backed by unsafe (writable) shared memory. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // TODO(mcasas): Consider turning this type into STORAGE_NATIVE + // based on the idea of using this same enum value for both DMA + // buffers on Linux and CVPixelBuffers on Mac (which currently use +@@ -281,7 +281,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte + ReleaseMailboxAndGpuMemoryBufferCB mailbox_holder_and_gmb_release_cb, + base::TimeDelta timestamp); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Wraps provided dmabufs + // (https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html) with a + // VideoFrame. The frame will take ownership of |dmabuf_fds|, and will +@@ -540,7 +540,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte + // mailbox, the caller must wait for the included sync point. + const gpu::MailboxHolder& mailbox_holder(size_t texture_index) const; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Returns a vector containing the backing DmaBufs for this frame. The number + // of returned DmaBufs will be equal or less than the number of planes of + // the frame. If there are less, this means that the last FD contains the +@@ -744,7 +744,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte + // GPU memory buffer, if this frame is STORAGE_GPU_MEMORY_BUFFER. + std::unique_ptr gpu_memory_buffer_; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + class DmabufHolder; + + // Dmabufs for the frame, used when storage is STORAGE_DMABUFS. Size is either diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_create__video__capture__device__factory.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_create__video__capture__device__factory.cc new file mode 100644 index 000000000000..fad263702994 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_create__video__capture__device__factory.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/media/capture/video/create_video_capture_device_factory.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/create_video_capture_device_factory.cc +@@ -12,7 +12,7 @@ + #include "media/capture/video/fake_video_capture_device_factory.h" + #include "media/capture/video/file_video_capture_device_factory.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + #include "media/capture/video/linux/video_capture_device_factory_linux.h" + #elif BUILDFLAG(IS_CHROMEOS_ASH) + #include "media/capture/video/chromeos/public/cros_features.h" +@@ -55,7 +55,7 @@ CreatePlatformSpecificVideoCaptureDeviceFactory( + std::unique_ptr + CreatePlatformSpecificVideoCaptureDeviceFactory( + scoped_refptr ui_task_runner) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + return std::make_unique(ui_task_runner); + #elif BUILDFLAG(IS_CHROMEOS_ASH) + if (base::SysInfo::IsRunningOnChromeOS()) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_fake__video__capture__device__factory.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_fake__video__capture__device__factory.cc new file mode 100644 index 000000000000..e4e295de890a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_fake__video__capture__device__factory.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/capture/video/fake_video_capture_device_factory.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/fake_video_capture_device_factory.cc +@@ -213,7 +213,7 @@ void FakeVideoCaptureDeviceFactory::GetDevicesInfo( + int entry_index = 0; + for (const auto& entry : devices_config_) { + VideoCaptureApi api = +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE; + #elif BUILDFLAG(IS_MAC) + VideoCaptureApi::MACOSX_AVFOUNDATION; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_file__video__capture__device__factory.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_file__video__capture__device__factory.cc new file mode 100644 index 000000000000..695b1ff97c2c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_file__video__capture__device__factory.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/capture/video/file_video_capture_device_factory.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/file_video_capture_device_factory.cc +@@ -52,7 +52,7 @@ void FileVideoCaptureDeviceFactory::GetDevicesInfo( + VideoCaptureApi::WIN_DIRECT_SHOW; + #elif BUILDFLAG(IS_MAC) + VideoCaptureApi::MACOSX_AVFOUNDATION; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE; + #else + VideoCaptureApi::UNKNOWN; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_fake__v4l2__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_fake__v4l2__impl.cc new file mode 100644 index 000000000000..308bf7e62656 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_fake__v4l2__impl.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/capture/video/linux/fake_v4l2_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/linux/fake_v4l2_impl.cc +@@ -425,7 +425,7 @@ int FakeV4L2Impl::close(int fd) { + return kSuccessReturnValue; + } + +-int FakeV4L2Impl::ioctl(int fd, int request, void* argp) { ++int FakeV4L2Impl::ioctl(int fd, unsigned long request, void* argp) { + base::AutoLock lock(lock_); + auto device_iter = opened_devices_.find(fd); + if (device_iter == opened_devices_.end()) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_fake__v4l2__impl.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_fake__v4l2__impl.h new file mode 100644 index 000000000000..2fd224fc6e83 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_fake__v4l2__impl.h @@ -0,0 +1,25 @@ +--- src/3rdparty/chromium/media/capture/video/linux/fake_v4l2_impl.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/linux/fake_v4l2_impl.h +@@ -8,7 +8,13 @@ + #include + #include + ++#include "build/build_config.h" ++#if BUILDFLAG(IS_OPENBSD) ++#include ++typedef __uint32_t __u32; ++#else + #include ++#endif + + #include "base/synchronization/lock.h" + #include "media/capture/capture_export.h" +@@ -36,7 +42,7 @@ class CAPTURE_EXPORT FakeV4L2Impl : public V4L2Capture + // Implementation of V4L2CaptureDevice interface: + int open(const char* device_name, int flags) override; + int close(int fd) override; +- int ioctl(int fd, int request, void* argp) override; ++ int ioctl(int fd, unsigned long request, void* argp) override; + void* mmap(void* start, + size_t length, + int prot, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.cc new file mode 100644 index 000000000000..e902f61ccb70 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.cc @@ -0,0 +1,44 @@ +--- src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_delegate.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_delegate.cc +@@ -4,8 +4,10 @@ + + #include "media/capture/video/linux/v4l2_capture_delegate.h" + ++#if !defined(OS_BSD) + #include + #include ++#endif + #include + #include + #include +@@ -25,10 +27,10 @@ using media::mojom::MeteringMode; + + using media::mojom::MeteringMode; + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) ++// #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) + // 16 bit depth, Realsense F200. + #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') +-#endif ++// #endif + + // TODO(aleksandar.stojiljkovic): Wrap this with kernel version check once the + // format is introduced to kernel. +@@ -660,7 +662,7 @@ V4L2CaptureDelegate::~V4L2CaptureDelegate() = default; + + V4L2CaptureDelegate::~V4L2CaptureDelegate() = default; + +-bool V4L2CaptureDelegate::RunIoctl(int request, void* argp) { ++bool V4L2CaptureDelegate::RunIoctl(unsigned int request, void* argp) { + int num_retries = 0; + for (; DoIoctl(request, argp) < 0 && num_retries < kMaxIOCtrlRetries; + ++num_retries) { +@@ -670,7 +672,7 @@ bool V4L2CaptureDelegate::RunIoctl(int request, void* + return num_retries != kMaxIOCtrlRetries; + } + +-int V4L2CaptureDelegate::DoIoctl(int request, void* argp) { ++int V4L2CaptureDelegate::DoIoctl(unsigned int request, void* argp) { + return HANDLE_EINTR(v4l2_->ioctl(device_fd_.get(), request, argp)); + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.h new file mode 100644 index 000000000000..e90c66a4ae99 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.h @@ -0,0 +1,15 @@ +--- src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_delegate.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_delegate.h +@@ -85,10 +85,10 @@ class CAPTURE_EXPORT V4L2CaptureDelegate final { + // device file descriptor or (re)starting streaming, can fail but works after + // retrying (https://crbug.com/670262). Returns false if the |request| ioctl + // fails too many times. +- bool RunIoctl(int request, void* argp); ++ bool RunIoctl(unsigned int request, void* argp); + + // Simple wrapper to do HANDLE_EINTR(v4l2_->ioctl(device_fd_.get(), ...)). +- int DoIoctl(int request, void* argp); ++ int DoIoctl(unsigned int request, void* argp); + + // Creates a mojom::RangePtr with the (min, max, current, step) values of the + // control associated with |control_id|. Returns an empty Range otherwise. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__device.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__device.h new file mode 100644 index 000000000000..9ca4e9c6585a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__device.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_device.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_device.h +@@ -21,7 +21,7 @@ class CAPTURE_EXPORT V4L2CaptureDevice + public: + virtual int open(const char* device_name, int flags) = 0; + virtual int close(int fd) = 0; +- virtual int ioctl(int fd, int request, void* argp) = 0; ++ virtual int ioctl(int fd, unsigned long request, void* argp) = 0; + virtual void* mmap(void* start, + size_t length, + int prot, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__device__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__device__impl.cc new file mode 100644 index 000000000000..2e05b3a29138 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__device__impl.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_device_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_device_impl.cc +@@ -22,7 +22,7 @@ int V4L2CaptureDeviceImpl::close(int fd) { + return ::close(fd); + } + +-int V4L2CaptureDeviceImpl::ioctl(int fd, int request, void* argp) { ++int V4L2CaptureDeviceImpl::ioctl(int fd, unsigned long request, void* argp) { + return ::ioctl(fd, request, argp); + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__device__impl.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__device__impl.h new file mode 100644 index 000000000000..b0f92d5748e2 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__device__impl.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_device_impl.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_device_impl.h +@@ -19,7 +19,7 @@ class CAPTURE_EXPORT V4L2CaptureDeviceImpl : public V4 + public: + int open(const char* device_name, int flags) override; + int close(int fd) override; +- int ioctl(int fd, int request, void* argp) override; ++ int ioctl(int fd, unsigned long request, void* argp) override; + void* mmap(void* start, + size_t length, + int prot, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_video__capture__device__factory__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_video__capture__device__factory__linux.cc new file mode 100644 index 000000000000..dd0ef56ee5a7 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_video__capture__device__factory__linux.cc @@ -0,0 +1,45 @@ +--- src/3rdparty/chromium/media/capture/video/linux/video_capture_device_factory_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/linux/video_capture_device_factory_linux.cc +@@ -72,6 +72,9 @@ class DevVideoFilePathsDeviceProvider + : public VideoCaptureDeviceFactoryLinux::DeviceProvider { + public: + void GetDeviceIds(std::vector* target_container) override { ++#if defined(OS_OPENBSD) ++ target_container->emplace_back("/dev/video"); ++#else + const base::FilePath path("/dev/"); + base::FileEnumerator enumerator(path, false, base::FileEnumerator::FILES, + "video*"); +@@ -79,9 +82,13 @@ class DevVideoFilePathsDeviceProvider + const base::FileEnumerator::FileInfo info = enumerator.GetInfo(); + target_container->emplace_back(path.value() + info.GetName().value()); + } ++#endif + } + + std::string GetDeviceModelId(const std::string& device_id) override { ++#if defined(OS_OPENBSD) ++ return std::string(); ++#endif + const std::string file_name = ExtractFileNameFromDeviceId(device_id); + std::string usb_id; + const std::string vid_path = +@@ -99,6 +106,9 @@ class DevVideoFilePathsDeviceProvider + } + + std::string GetDeviceDisplayName(const std::string& device_id) override { ++#if defined(OS_OPENBSD) ++ return std::string(); ++#endif + const std::string file_name = ExtractFileNameFromDeviceId(device_id); + const std::string interface_path = + base::StringPrintf(kInterfacePathTemplate, file_name.c_str()); +@@ -213,7 +223,7 @@ void VideoCaptureDeviceFactoryLinux::GetDevicesInfo( + std::move(callback).Run(std::move(devices_info)); + } + +-int VideoCaptureDeviceFactoryLinux::DoIoctl(int fd, int request, void* argp) { ++int VideoCaptureDeviceFactoryLinux::DoIoctl(int fd, unsigned int request, void* argp) { + return HANDLE_EINTR(v4l2_->ioctl(fd, request, argp)); + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_video__capture__device__factory__linux.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_video__capture__device__factory__linux.h new file mode 100644 index 000000000000..42de82677a8a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_video__capture__device__factory__linux.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/capture/video/linux/video_capture_device_factory_linux.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/linux/video_capture_device_factory_linux.h +@@ -52,7 +52,7 @@ class CAPTURE_EXPORT VideoCaptureDeviceFactoryLinux + + private: + // Simple wrapper to do HANDLE_EINTR(v4l2_->ioctl(fd, ...)). +- int DoIoctl(int fd, int request, void* argp); ++ int DoIoctl(int fd, unsigned int request, void* argp); + + VideoCaptureControlSupport GetControlSupport(int fd); + bool GetControlSupport(int fd, int control_id); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__buffer__pool__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__buffer__pool__impl.cc new file mode 100644 index 000000000000..452c10bc3b4b --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__buffer__pool__impl.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/capture/video/video_capture_buffer_pool_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/video_capture_buffer_pool_impl.cc +@@ -74,7 +74,7 @@ VideoCaptureBufferPoolImpl::CreateSharedMemoryViaRawFi + int buffer_id) { + // This requires platforms where base::SharedMemoryHandle is backed by a + // file descriptor. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + base::AutoLock lock(lock_); + + VideoCaptureBufferTracker* tracker = GetTracker(buffer_id); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device__client.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device__client.cc new file mode 100644 index 000000000000..c747b19e4001 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device__client.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/capture/video/video_capture_device_client.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/capture/video/video_capture_device_client.cc +@@ -320,7 +320,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData( + // see http://linuxtv.org/downloads/v4l-dvb-apis/packed-rgb.html. + // Windows RGB24 defines blue at lowest byte, + // see https://msdn.microsoft.com/en-us/library/windows/desktop/dd407253 +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + fourcc_format = libyuv::FOURCC_RAW; + #elif BUILDFLAG(IS_WIN) + fourcc_format = libyuv::FOURCC_24BG; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_buffer__validation.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_buffer__validation.cc new file mode 100644 index 000000000000..6dea92ca5027 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_buffer__validation.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/media/gpu/buffer_validation.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/gpu/buffer_validation.cc +@@ -15,7 +15,7 @@ + #include "ui/gfx/geometry/size.h" + #include "ui/gfx/gpu_memory_buffer.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include + #include + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) +@@ -23,7 +23,7 @@ bool GetFileSize(const int fd, size_t* size) { + namespace media { + + bool GetFileSize(const int fd, size_t* size) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (fd < 0) { + VLOG(1) << "Invalid file descriptor"; + return false; +@@ -73,7 +73,7 @@ bool VerifyGpuMemoryBufferHandle( + VLOG(1) << "Unsupported: " << pixel_format; + return false; + } +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + const size_t num_planes = media::VideoFrame::NumPlanes(pixel_format); + if (num_planes != gmb_handle.native_pixmap_handle.planes.size() || + num_planes == 0) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_chromeos_video__decoder__pipeline.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_chromeos_video__decoder__pipeline.cc new file mode 100644 index 000000000000..e288c77b0686 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_chromeos_video__decoder__pipeline.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/media/gpu/chromeos/video_decoder_pipeline.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/gpu/chromeos/video_decoder_pipeline.cc +@@ -647,7 +647,7 @@ VideoDecoderPipeline::PickDecoderOutputFormat( + } + } + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // Linux should always use a custom allocator (to allocate buffers using + // libva) and a PlatformVideoFramePool. + CHECK(allocator.has_value()); +@@ -669,7 +669,7 @@ VideoDecoderPipeline::PickDecoderOutputFormat( + #error "Unsupported platform" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + // viable_candidate should always be set unless using L1 protected content, + // which isn't an option on linux or lacros. + CHECK(viable_candidate); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_gpu__video__encode__accelerator__factory.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_gpu__video__encode__accelerator__factory.cc new file mode 100644 index 000000000000..a59574b145fc --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_gpu__video__encode__accelerator__factory.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/gpu/gpu_video_encode_accelerator_factory.cc +@@ -96,7 +96,7 @@ std::vector GetVEAFactoryFunctions + return vea_factory_functions; + + #if BUILDFLAG(USE_VAAPI) +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + if (base::FeatureList::IsEnabled(kVaapiVideoEncodeLinux)) + vea_factory_functions.push_back(base::BindRepeating(&CreateVaapiVEA)); + #else diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.cc new file mode 100644 index 000000000000..3b8c3033803a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.cc @@ -0,0 +1,26 @@ +--- src/3rdparty/chromium/media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.cc +@@ -14,12 +14,15 @@ + #include "media/gpu/vaapi/vaapi_wrapper.h" + #endif + ++#if !BUILDFLAG(IS_BSD) + using sandbox::syscall_broker::BrokerFilePermission; ++#endif + + namespace media { + + bool HardwareVideoDecodingPreSandboxHook( + sandbox::policy::SandboxLinux::Options options) { ++#if !BUILDFLAG(IS_BSD) + sandbox::syscall_broker::BrokerCommandSet command_set; + std::vector permissions; + +@@ -121,6 +124,7 @@ bool HardwareVideoDecodingPreSandboxHook( + dlopen("/usr/lib/libv4l2.so", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE); + #endif // defined(__aarch64__) + #endif // BUILDFLAG(USE_VAAPI) ++#endif + + return true; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.h new file mode 100644 index 000000000000..4dbe454d222e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_sandbox_hardware__video__decoding__sandbox__hook__linux.h @@ -0,0 +1,16 @@ +--- src/3rdparty/chromium/media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.h +@@ -5,7 +5,13 @@ + #ifndef MEDIA_GPU_SANDBOX_HARDWARE_VIDEO_DECODING_SANDBOX_HOOK_LINUX_H_ + #define MEDIA_GPU_SANDBOX_HARDWARE_VIDEO_DECODING_SANDBOX_HOOK_LINUX_H_ + ++#include "build/build_config.h" ++ ++#if BUILDFLAG(IS_BSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#else + #include "sandbox/policy/linux/sandbox_linux.h" ++#endif + + namespace media { + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_vaapi_vaapi__video__decoder.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_vaapi_vaapi__video__decoder.cc new file mode 100644 index 000000000000..1be04efbdcef --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_vaapi_vaapi__video__decoder.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/gpu/vaapi/vaapi_video_decoder.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/gpu/vaapi/vaapi_video_decoder.cc +@@ -772,7 +772,7 @@ void VaapiVideoDecoder::ApplyResolutionChangeWithScree + const gfx::Size decoder_natural_size = + aspect_ratio_.GetNaturalSize(decoder_visible_rect); + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + absl::optional allocator = + base::BindRepeating(&AllocateCustomFrameProxy, weak_this_); + std::vector candidates = { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_vaapi_vaapi__wrapper.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_vaapi_vaapi__wrapper.cc new file mode 100644 index 000000000000..62b5e7e118b3 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_gpu_vaapi_vaapi__wrapper.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/gpu/vaapi/vaapi_wrapper.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/gpu/vaapi/vaapi_wrapper.cc +@@ -582,7 +582,7 @@ bool VADisplayState::Initialize() { + bool VADisplayState::Initialize() { + base::AutoLock auto_lock(va_lock_); + +-#if defined(USE_OZONE) && BUILDFLAG(IS_LINUX) ++#if defined(USE_OZONE) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) + // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on + // Linux. See comment in OzonePlatform::PlatformProperties::supports_vaapi + // for more details. This will also require revisiting everything that's diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_media__options.gni b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_media__options.gni new file mode 100644 index 000000000000..6152ed4a6e5f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_media__options.gni @@ -0,0 +1,27 @@ +--- src/3rdparty/chromium/media/media_options.gni.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/media_options.gni +@@ -133,9 +133,12 @@ declare_args() { + # Enables runtime selection of ALSA library for audio. + use_alsa = false + ++ # Enable runtime selection of sndio(7) ++ use_sndio = false ++ + # Alsa should be used on non-Android, non-Mac POSIX systems. + # Alsa should be used on desktop Chromecast and audio-only Chromecast builds. +- if (is_posix && !is_android && !is_mac && ++ if (is_posix && !is_android && !is_mac && !is_bsd && + (!is_chromecast || is_cast_desktop_build || is_cast_audio_only)) { + use_alsa = true + +@@ -150,6 +153,10 @@ declare_args() { + if (!use_cras && !is_chromecast && !is_asan && !is_tsan) { + use_pulseaudio = true + } ++ } ++ if (is_openbsd) { ++ use_sndio = true ++ use_pulseaudio = false + } + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.cc new file mode 100644 index 000000000000..4180a9205e30 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/media/mojo/mojom/stable/stable_video_decoder_types_mojom_traits.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/mojo/mojom/stable/stable_video_decoder_types_mojom_traits.cc +@@ -42,7 +42,7 @@ media::stable::mojom::VideoFrameDataPtr MakeVideoFrame + gfx::GpuMemoryBufferHandle gpu_memory_buffer_handle = + input->GetGpuMemoryBuffer()->CloneHandle(); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + CHECK_EQ(gpu_memory_buffer_handle.type, gfx::NATIVE_PIXMAP); + CHECK(!gpu_memory_buffer_handle.native_pixmap_handle.planes.empty()); + #else +@@ -749,7 +749,7 @@ const gfx::GpuMemoryBufferId& StructTraits< + return input.id; + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // static + gfx::NativePixmapHandle StructTraits< + media::stable::mojom::NativeGpuMemoryBufferHandleDataView, +@@ -770,7 +770,7 @@ bool StructTraitstype = gfx::NATIVE_PIXMAP; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (!data.ReadPlatformHandle(&output->native_pixmap_handle)) + return false; + return true; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.h new file mode 100644 index 000000000000..31baa0aee9b8 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_mojo_mojom_stable_stable__video__decoder__types__mojom__traits.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/mojo/mojom/stable/stable_video_decoder_types_mojom_traits.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/mojo/mojom/stable/stable_video_decoder_types_mojom_traits.h +@@ -620,7 +620,7 @@ struct StructTraits + #include + #include +@@ -47,7 +47,7 @@ class FakeGpuMemoryBufferImpl : public gpu::GpuMemoryB + + } // namespace + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + base::ScopedFD GetDummyFD() { + base::ScopedFD fd(open("/dev/zero", O_RDWR)); + DCHECK(fd.is_valid()); +@@ -77,7 +77,7 @@ FakeGpuMemoryBuffer::FakeGpuMemoryBuffer(const gfx::Si + static base::AtomicSequenceNumber buffer_id_generator; + handle_.id = gfx::GpuMemoryBufferId(buffer_id_generator.GetNext()); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + for (size_t i = 0; i < VideoFrame::NumPlanes(video_pixel_format_); i++) { + const gfx::Size plane_size_in_bytes = + VideoFrame::PlaneSize(video_pixel_format_, i, size_); +@@ -134,7 +134,7 @@ gfx::GpuMemoryBufferHandle FakeGpuMemoryBuffer::CloneH + gfx::GpuMemoryBufferHandle handle; + handle.type = gfx::NATIVE_PIXMAP; + handle.id = handle_.id; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + handle.native_pixmap_handle = + gfx::CloneHandleForIPC(handle_.native_pixmap_handle); + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_video_gpu__memory__buffer__video__frame__pool.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_video_gpu__memory__buffer__video__frame__pool.cc new file mode 100644 index 000000000000..29699ad098ad --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_video_gpu__memory__buffer__video__frame__pool.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/video/gpu_memory_buffer_video_frame_pool.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/video/gpu_memory_buffer_video_frame_pool.cc +@@ -795,7 +795,7 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHa + } + + bool is_software_backed_video_frame = !video_frame->HasTextures(); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + is_software_backed_video_frame &= !video_frame->HasDmaBufs(); + #endif + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_video_video__encode__accelerator__adapter.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_video_video__encode__accelerator__adapter.cc new file mode 100644 index 000000000000..98b35e2767f6 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_video_video__encode__accelerator__adapter.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/media/video/video_encode_accelerator_adapter.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/video/video_encode_accelerator_adapter.cc +@@ -98,7 +98,7 @@ VideoEncodeAccelerator::Config SetUpVeaConfig( + if (is_rgb) + config.input_format = PIXEL_FORMAT_I420; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (storage_type == VideoFrame::STORAGE_DMABUFS || + storage_type == VideoFrame::STORAGE_GPU_MEMORY_BUFFER) { + if (is_rgb) +@@ -239,7 +239,7 @@ void VideoEncodeAcceleratorAdapter::InitializeInternal + auto vea_config = + SetUpVeaConfig(profile_, options_, format, first_frame->storage_type()); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Linux/ChromeOS require a special configuration to use dmabuf storage. + // We need to keep sending frames the same way the first frame was sent. + // Other platforms will happily mix GpuMemoryBuffer storage with regular diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_video_video__encode__accelerator__adapter__test.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_video_video__encode__accelerator__adapter__test.cc new file mode 100644 index 000000000000..3d400efd4352 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_video_video__encode__accelerator__adapter__test.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/video/video_encode_accelerator_adapter_test.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/video/video_encode_accelerator_adapter_test.cc +@@ -378,7 +378,7 @@ TEST_P(VideoEncodeAcceleratorAdapterTest, TwoFramesRes + + vea()->SetEncodingCallback(base::BindLambdaForTesting( + [&](BitstreamBuffer&, bool keyframe, scoped_refptr frame) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + EXPECT_EQ(frame->format(), + IsYuvPlanar(pixel_format) ? pixel_format : PIXEL_FORMAT_I420); + #else diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_webrtc_audio__processor.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_webrtc_audio__processor.cc new file mode 100644 index 000000000000..80efbf8917d2 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_webrtc_audio__processor.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/webrtc/audio_processor.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/webrtc/audio_processor.cc +@@ -466,7 +466,7 @@ absl::optional AudioProcessor::ProcessData( + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) + DCHECK_LE(volume, 1.0); + #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || \ +- BUILDFLAG(IS_OPENBSD) ++ BUILDFLAG(IS_BSD) + // We have a special situation on Linux where the microphone volume can be + // "higher than maximum". The input volume slider in the sound preference + // allows the user to set a scaling that is higher than 100%. It means that diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_webrtc_webrtc__features.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_webrtc_webrtc__features.cc new file mode 100644 index 000000000000..491b15df3672 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_media_webrtc_webrtc__features.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/media/webrtc/webrtc_features.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/media/webrtc/webrtc_features.cc +@@ -9,7 +9,7 @@ namespace { + + namespace features { + namespace { +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + constexpr base::FeatureState kWebRtcHybridAgcState = + base::FEATURE_ENABLED_BY_DEFAULT; + #else diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_core_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_core_BUILD.gn new file mode 100644 index 000000000000..4c77cfb7d4b8 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_core_BUILD.gn @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/mojo/core/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/mojo/core/BUILD.gn +@@ -128,7 +128,7 @@ template("core_impl_source_set") { + ] + } + +- if ((is_linux || is_chromeos || is_android) && !is_nacl) { ++ if ((is_linux || is_chromeos || is_android) && !is_nacl && !is_bsd) { + sources += [ + "channel_linux.cc", + "channel_linux.h", diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_core_channel.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_core_channel.cc new file mode 100644 index 000000000000..120f3cc4993b --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_core_channel.cc @@ -0,0 +1,14 @@ +--- src/3rdparty/chromium/mojo/core/channel.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/mojo/core/channel.cc +@@ -70,7 +70,11 @@ const size_t kMaxAttachedHandles = 64; + // Fuchsia: The zx_channel_write() API supports up to 64 handles. + const size_t kMaxAttachedHandles = 64; + ++#if defined(__i386__) && defined(OS_FREEBSD) ++const size_t kChannelMessageAlignment = 4; ++#else + static_assert(alignof(std::max_align_t) >= kChannelMessageAlignment, ""); ++#endif + Channel::AlignedBuffer MakeAlignedBuffer(size_t size) { + // Generic allocators (such as malloc) return a pointer that is suitably + // aligned for storing any type of object with a fundamental alignment diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_core_embedder_features.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_core_embedder_features.h new file mode 100644 index 000000000000..9b0e9f9a939d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_core_embedder_features.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/mojo/core/embedder/features.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/mojo/core/embedder/features.h +@@ -14,7 +14,7 @@ namespace core { + namespace core { + + #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_MAC) +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + COMPONENT_EXPORT(MOJO_CORE_EMBEDDER_FEATURES) + extern const base::Feature kMojoLinuxChannelSharedMem; + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_public_c_system_thunks.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_public_c_system_thunks.cc new file mode 100644 index 000000000000..62f3494ac17e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_public_c_system_thunks.cc @@ -0,0 +1,38 @@ +--- src/3rdparty/chromium/mojo/public/c/system/thunks.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/mojo/public/c/system/thunks.cc +@@ -24,7 +24,7 @@ + #include "mojo/public/c/system/message_pipe.h" + + #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + #include "base/environment.h" + #include "base/files/file_path.h" + #include "base/scoped_native_library.h" +@@ -73,7 +73,7 @@ class CoreLibraryInitializer { + + MojoResult LoadLibrary(base::FilePath library_path) { + #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + if (library_ && library_->is_valid()) + return MOJO_RESULT_OK; + +@@ -87,7 +87,7 @@ class CoreLibraryInitializer { + + if (library_path.empty()) { + // Default to looking for the library in the current working directory. +-#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + const base::FilePath::CharType kDefaultLibraryPathValue[] = + FILE_PATH_LITERAL("./libmojo_core.so"); + #elif BUILDFLAG(IS_FUCHSIA) +@@ -143,7 +143,7 @@ class CoreLibraryInitializer { + + private: + #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + absl::optional library_; + #endif + }; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_public_tools_bindings_mojom.gni b/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_public_tools_bindings_mojom.gni new file mode 100644 index 000000000000..60b7c21e9389 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_mojo_public_tools_bindings_mojom.gni @@ -0,0 +1,19 @@ +--- src/3rdparty/chromium/mojo/public/tools/bindings/mojom.gni.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/mojo/public/tools/bindings/mojom.gni +@@ -688,6 +688,16 @@ template("mojom") { + enabled_features += [ "is_win" ] + } + ++ if (is_openbsd) { ++ enabled_features += [ "is_openbsd" ] ++ enabled_features += [ "is_bsd" ] ++ } ++ ++ if (is_freebsd) { ++ enabled_features += [ "is_freebsd" ] ++ enabled_features += [ "is_bsd" ] ++ } ++ + action(parser_target_name) { + script = mojom_parser_script + inputs = mojom_parser_sources + [ build_metadata_filename ] diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_BUILD.gn new file mode 100644 index 000000000000..91b7b7f893cf --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_BUILD.gn @@ -0,0 +1,91 @@ +--- src/3rdparty/chromium/net/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/BUILD.gn +@@ -108,7 +108,7 @@ net_configs = [ + "//build/config/compiler:wexit_time_destructors", + ] + +-if (is_linux || is_chromeos) { ++if ((is_linux || is_chromeos) && !is_bsd) { + net_configs += [ "//build/config/linux:libresolv" ] + } + +@@ -1092,6 +1092,7 @@ component("net") { + "//net/dns:mdns_client", + "//net/dns/public", + "//net/third_party/quiche", ++ "//sandbox/policy", + ] + + allow_circular_includes_from = [ +@@ -1218,6 +1219,15 @@ component("net") { + ] + } + ++ if (is_bsd) { ++ sources -= [ ++ "base/address_tracker_linux.cc", ++ "base/address_tracker_linux.h", ++ "base/network_change_notifier_linux.cc", ++ "base/network_interfaces_linux.cc", ++ ] ++ } ++ + if (is_mac) { + sources += [ + "base/network_notification_thread_mac.cc", +@@ -1348,7 +1358,7 @@ component("net") { + } + } + +- if (is_android || is_chromeos_ash) { ++ if (is_android || is_chromeos_ash || is_bsd) { + sources += [ + "base/network_change_notifier_posix.cc", + "base/network_change_notifier_posix.h", +@@ -1381,7 +1391,7 @@ component("net") { + } + + # Use getifaddrs() on POSIX platforms, except Linux. +- if (is_posix && !is_linux && !is_chromeos) { ++ if ((is_posix && !is_linux && !is_chromeos) || is_bsd) { + sources += [ + "base/network_interfaces_getifaddrs.cc", + "base/network_interfaces_getifaddrs.h", +@@ -4369,7 +4379,7 @@ test("net_unittests") { + ] + } + +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + sources += [ + "base/address_tracker_linux_unittest.cc", + "base/network_interfaces_linux_unittest.cc", +@@ -4443,6 +4453,10 @@ test("net_unittests") { + "//url:buildflags", + ] + ++ if (is_bsd) { ++ deps += [ "//sandbox/policy" ] ++ } ++ + allow_circular_includes_from = [ "//net/third_party/quiche:quiche_tests" ] + + if (enable_websockets) { +@@ -4513,7 +4527,7 @@ test("net_unittests") { + ] + } + +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + sources += [ + "quic/platform/impl/quic_flags_test.cc", + "tools/quic/quic_http_proxy_backend_stream_test.cc", +@@ -4660,7 +4674,7 @@ test("net_unittests") { + } + + # Use getifaddrs() on POSIX platforms, except Linux. +- if (is_posix && !is_linux && !is_chromeos) { ++ if (is_posix && !is_linux && !is_chromeos && !is_bsd) { + sources += [ "base/network_interfaces_getifaddrs_unittest.cc" ] + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_base_network__change__notifier.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_base_network__change__notifier.cc new file mode 100644 index 000000000000..bd8ed9741162 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_base_network__change__notifier.cc @@ -0,0 +1,21 @@ +--- src/3rdparty/chromium/net/base/network_change_notifier.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/base/network_change_notifier.cc +@@ -39,7 +39,7 @@ + #include "net/base/network_change_notifier_linux.h" + #elif BUILDFLAG(IS_APPLE) + #include "net/base/network_change_notifier_mac.h" +-#elif BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_ANDROID) ++#elif BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + #include "net/base/network_change_notifier_posix.h" + #elif BUILDFLAG(IS_FUCHSIA) + #include "net/base/network_change_notifier_fuchsia.h" +@@ -331,6 +331,9 @@ std::unique_ptr NetworkChangeNo + #elif BUILDFLAG(IS_FUCHSIA) + return std::make_unique( + /*require_wlan=*/false); ++#elif BUILDFLAG(IS_BSD) ++ return std::make_unique( ++ /*dns_config_notifier*/nullptr); + #else + NOTIMPLEMENTED(); + return NULL; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_base_network__change__notifier__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_base_network__change__notifier__posix.cc new file mode 100644 index 000000000000..926794028d0d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_base_network__change__notifier__posix.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/base/network_change_notifier_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/base/network_change_notifier_posix.cc +@@ -92,7 +92,7 @@ NetworkChangeNotifierPosix::NetworkChangeCalculatorPar + NetworkChangeNotifier::NetworkChangeCalculatorParams + NetworkChangeNotifierPosix::NetworkChangeCalculatorParamsPosix() { + NetworkChangeCalculatorParams params; +-#if BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_BSD) + // Delay values arrived at by simple experimentation and adjusted so as to + // produce a single signal when switching between network connections. + params.ip_address_offline_delay_ = base::Milliseconds(4000); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_base_network__interfaces__posix.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_base_network__interfaces__posix.h new file mode 100644 index 000000000000..495a9f3f589e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_base_network__interfaces__posix.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/base/network_interfaces_posix.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/base/network_interfaces_posix.h +@@ -8,6 +8,8 @@ + // This file provides some basic functionality shared between + // network_interfaces_linux.cc and network_interfaces_getifaddrs.cc. + ++#include ++ + #include + + struct sockaddr; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verifier.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verifier.cc new file mode 100644 index 000000000000..dcf807fd7a4f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verifier.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/cert/cert_verifier.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/cert/cert_verifier.cc +@@ -78,7 +78,7 @@ std::unique_ptr CertVerifier::CreateDefa + std::unique_ptr CertVerifier::CreateDefaultWithoutCaching( + scoped_refptr cert_net_fetcher) { + scoped_refptr verify_proc; +-#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + verify_proc = + CertVerifyProc::CreateBuiltinVerifyProc(std::move(cert_net_fetcher)); + #elif BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verify__proc.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verify__proc.cc new file mode 100644 index 000000000000..b6bf9f2fd23e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verify__proc.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/cert/cert_verify_proc.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/cert/cert_verify_proc.cc +@@ -552,7 +552,7 @@ base::Value CertVerifyParams(X509Certificate* cert, + + } // namespace + +-#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) + // static + scoped_refptr CertVerifyProc::CreateSystemVerifyProc( + scoped_refptr cert_net_fetcher) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verify__proc.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verify__proc.h new file mode 100644 index 000000000000..c10d7b73b457 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verify__proc.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/cert/cert_verify_proc.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/cert/cert_verify_proc.h +@@ -79,7 +79,7 @@ class NET_EXPORT CertVerifyProc + kMaxValue = kOther + }; + +-#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) + // Creates and returns a CertVerifyProc that uses the system verifier. + // |cert_net_fetcher| may not be used, depending on the implementation. + static scoped_refptr CreateSystemVerifyProc( diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_disk__cache_blockfile_disk__format.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_disk__cache_blockfile_disk__format.h new file mode 100644 index 000000000000..37a419e90fab --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_disk__cache_blockfile_disk__format.h @@ -0,0 +1,12 @@ +--- src/3rdparty/chromium/net/disk_cache/blockfile/disk_format.h.orig 2022-06-08 06:40:31 UTC ++++ src/3rdparty/chromium/net/disk_cache/blockfile/disk_format.h +@@ -149,7 +149,9 @@ struct RankingsNode { + }; + #pragma pack(pop) + ++#if !defined(OS_BSD) + static_assert(sizeof(RankingsNode) == 36, "bad RankingsNode"); ++#endif + + } // namespace disk_cache + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_disk__cache_simple_simple__file__tracker.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_disk__cache_simple_simple__file__tracker.cc new file mode 100644 index 000000000000..acd7a2044b99 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_disk__cache_simple_simple__file__tracker.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/net/disk_cache/simple/simple_file_tracker.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/disk_cache/simple/simple_file_tracker.cc +@@ -28,7 +28,17 @@ SimpleFileTracker::SimpleFileTracker(int file_limit) + } // namespace + + SimpleFileTracker::SimpleFileTracker(int file_limit) ++#if defined(OS_OPENBSD) ++{ ++ // cap the file descriptor limit at 85% of the size of the ++ // file descriptor table and also substract the amount of ++ // currently used file descriptors as this should give us ++ // enough reserve to avoid hitting the limit ++ file_limit_ = (getdtablesize() * 0.85) - getdtablecount(); ++} ++#else + : file_limit_(file_limit) {} ++#endif + + SimpleFileTracker::~SimpleFileTracker() { + DCHECK(lru_.empty()); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_BUILD.gn new file mode 100644 index 000000000000..7a6f2ae74bd4 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_BUILD.gn @@ -0,0 +1,31 @@ +--- src/3rdparty/chromium/net/dns/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/dns/BUILD.gn +@@ -112,7 +112,7 @@ source_set("dns") { + "dns_config_service_android.cc", + "dns_config_service_android.h", + ] +- } else if (is_linux) { ++ } else if (is_linux && !is_bsd) { + sources += [ + "dns_config_service_linux.cc", + "dns_config_service_linux.h", +@@ -153,6 +153,7 @@ source_set("dns") { + ":host_resolver_manager", + ":mdns_client", + "//net:net_public_deps", ++ "//printing/buildflags", + ] + + allow_circular_includes_from = [ +@@ -413,9 +414,9 @@ source_set("tests") { + + if (is_android) { + sources += [ "dns_config_service_android_unittest.cc" ] +- } else if (is_linux) { ++ } else if (is_linux && !is_bsd) { + sources += [ "dns_config_service_linux_unittest.cc" ] +- } else if (is_posix) { ++ } else if (is_posix && !is_bsd) { + sources += [ "dns_config_service_posix_unittest.cc" ] + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_address__sorter__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_address__sorter__posix.cc new file mode 100644 index 000000000000..a2031e36154f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_address__sorter__posix.cc @@ -0,0 +1,10 @@ +--- src/3rdparty/chromium/net/dns/address_sorter_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/dns/address_sorter_posix.cc +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + #include + #include + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__config__service__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__config__service__posix.cc new file mode 100644 index 000000000000..a2d6b1fdd7fb --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__config__service__posix.cc @@ -0,0 +1,26 @@ +--- src/3rdparty/chromium/net/dns/dns_config_service_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/dns/dns_config_service_posix.cc +@@ -33,6 +33,11 @@ + #include "net/dns/dns_config_watcher_mac.h" + #endif + ++#if BUILDFLAG(IS_BSD) ++#include "base/command_line.h" ++#include "sandbox/policy/switches.h" ++#endif ++ + namespace net { + + namespace internal { +@@ -129,6 +134,11 @@ class DnsConfigServicePosix::Watcher : public DnsConfi + + bool Watch() override { + CheckOnCorrectSequence(); ++ ++// pledge + unveil ++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); ++ if (!command_line->HasSwitch(sandbox::policy::switches::kNoSandbox)) ++ return false; + + bool success = true; + if (!config_watcher_.Watch(base::BindRepeating(&Watcher::OnConfigChanged, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.cc new file mode 100644 index 000000000000..af07944515f3 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.cc @@ -0,0 +1,18 @@ +--- src/3rdparty/chromium/net/dns/dns_reloader.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/dns/dns_reloader.cc +@@ -6,7 +6,7 @@ + + #include "build/build_config.h" + +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) && \ ++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) && \ + !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA) + + #include +@@ -113,5 +113,5 @@ void DnsReloaderMaybeReload() { + + } // namespace net + +-#endif // BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) ++#endif // BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) && + // && !BUILDFLAG(IS_ANDROID) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.h new file mode 100644 index 000000000000..8ebc1433e9f8 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/dns/dns_reloader.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/dns/dns_reloader.h +@@ -7,7 +7,7 @@ + + #include "build/build_config.h" + +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) ++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) + namespace net { + + // Call on the network thread before calling DnsReloaderMaybeReload() anywhere. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__util.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__util.cc new file mode 100644 index 000000000000..2ac72d07510a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__util.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/dns/dns_util.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/dns/dns_util.cc +@@ -28,6 +28,8 @@ + #include "net/third_party/uri_template/uri_template.h" + #include "third_party/abseil-cpp/absl/types/optional.h" + ++#include ++ + #if BUILDFLAG(IS_POSIX) + #include + #include diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_host__resolver__manager.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_host__resolver__manager.cc new file mode 100644 index 000000000000..7b4b3e8345c8 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_host__resolver__manager.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/dns/host_resolver_manager.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/dns/host_resolver_manager.cc +@@ -3157,7 +3157,7 @@ HostResolverManager::HostResolverManager( + } + if (system_dns_config_notifier_) + system_dns_config_notifier_->AddObserver(this); +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) && \ ++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) && \ + !BUILDFLAG(IS_ANDROID) + EnsureDnsReloaderInit(); + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_host__resolver__proc.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_host__resolver__proc.cc new file mode 100644 index 000000000000..e5d710d9c5a6 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_host__resolver__proc.cc @@ -0,0 +1,22 @@ +--- src/3rdparty/chromium/net/dns/host_resolver_proc.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/dns/host_resolver_proc.cc +@@ -19,10 +19,6 @@ + #include "net/dns/dns_util.h" + #include "net/dns/host_resolver.h" + +-#if BUILDFLAG(IS_OPENBSD) +-#define AI_ADDRCONFIG 0 +-#endif +- + namespace net { + + HostResolverProc* HostResolverProc::default_proc_ = nullptr; +@@ -192,7 +188,7 @@ int SystemHostResolverCall(const std::string& host, + base::BlockingType::WILL_BLOCK); + + #if BUILDFLAG(IS_POSIX) && \ +- !(BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_ANDROID)) ++ !(BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) || BUILDFLAG(IS_ANDROID)) + DnsReloaderMaybeReload(); + #endif + auto [ai, err, os_error] = AddressInfo::Get(host, hints, nullptr, network); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_public_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_public_BUILD.gn new file mode 100644 index 000000000000..3627bd7d4282 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_public_BUILD.gn @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/dns/public/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/dns/public/BUILD.gn +@@ -74,7 +74,7 @@ source_set("tests") { + "doh_provider_entry_unittest.cc", + ] + +- if (is_posix && !is_android) { ++ if (is_posix && !is_android && !is_bsd) { + sources += [ "resolv_reader_unittest.cc" ] + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_public_resolv__reader.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_public_resolv__reader.h new file mode 100644 index 000000000000..32298bf5a4a0 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_public_resolv__reader.h @@ -0,0 +1,10 @@ +--- src/3rdparty/chromium/net/dns/public/resolv_reader.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/dns/public/resolv_reader.h +@@ -5,6 +5,7 @@ + #ifndef NET_DNS_PUBLIC_RESOLV_READER_H_ + #define NET_DNS_PUBLIC_RESOLV_READER_H_ + ++#include + #include + + #include diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_public_scoped__res__state.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_public_scoped__res__state.h new file mode 100644 index 000000000000..b76ca4b95a1e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_dns_public_scoped__res__state.h @@ -0,0 +1,10 @@ +--- src/3rdparty/chromium/net/dns/public/scoped_res_state.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/dns/public/scoped_res_state.h +@@ -5,6 +5,7 @@ + #ifndef NET_DNS_PUBLIC_SCOPED_RES_STATE_H_ + #define NET_DNS_PUBLIC_SCOPED_RES_STATE_H_ + ++#include + #include + + #include "build/build_config.h" diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_http_http__auth__gssapi__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_http_http__auth__gssapi__posix.cc new file mode 100644 index 000000000000..b32721624e6a --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_http_http__auth__gssapi__posix.cc @@ -0,0 +1,14 @@ +--- src/3rdparty/chromium/net/http/http_auth_gssapi_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/http/http_auth_gssapi_posix.cc +@@ -369,8 +369,9 @@ base::NativeLibrary GSSAPISharedLibrary::LoadSharedLib + static const char* const kDefaultLibraryNames[] = { + #if BUILDFLAG(IS_APPLE) + "/System/Library/Frameworks/GSS.framework/GSS" +-#elif BUILDFLAG(IS_OPENBSD) +- "libgssapi.so" // Heimdal - OpenBSD ++#elif BUILDFLAG(IS_BSD) ++ "libgssapi_krb5.so.2", // MIT Kerberos - FreeBSD ++ "libgssapi.so" // Heimdal - OpenBSD, FreeBSD + #else + "libgssapi_krb5.so.2", // MIT Kerberos - FC, Suse10, Debian + "libgssapi.so.4", // Heimdal - Suse10, MDK diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_http_http__auth__gssapi__posix.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_http_http__auth__gssapi__posix.h new file mode 100644 index 000000000000..4219250951e4 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_http_http__auth__gssapi__posix.h @@ -0,0 +1,12 @@ +--- src/3rdparty/chromium/net/http/http_auth_gssapi_posix.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/http/http_auth_gssapi_posix.h +@@ -20,6 +20,9 @@ + #if BUILDFLAG(IS_APPLE) + #include + #elif BUILDFLAG(IS_FREEBSD) ++#ifndef GSS_C_DELEG_POLICY_FLAG ++#define GSS_C_DELEG_POLICY_FLAG 32768 ++#endif + #include + #else + #include diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_http_http__network__session.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_http_http__network__session.cc new file mode 100644 index 000000000000..dba44f0be0d4 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_http_http__network__session.cc @@ -0,0 +1,12 @@ +--- src/3rdparty/chromium/net/http/http_network_session.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/http/http_network_session.cc +@@ -20,7 +20,9 @@ + #include "build/build_config.h" + #include "net/base/features.h" + #include "net/dns/host_resolver.h" ++#if defined(USE_KERBEROS) + #include "net/http/http_auth_handler_factory.h" ++#endif + #include "net/http/http_response_body_drainer.h" + #include "net/http/http_stream_factory.h" + #include "net/http/url_security_manager.h" diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_configured__proxy__resolution__service.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_configured__proxy__resolution__service.cc new file mode 100644 index 000000000000..cd44ddbddc4d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_configured__proxy__resolution__service.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/net/proxy_resolution/configured_proxy_resolution_service.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/proxy_resolution/configured_proxy_resolution_service.cc +@@ -53,7 +53,7 @@ + #elif BUILDFLAG(IS_MAC) + #include "net/proxy_resolution/proxy_config_service_mac.h" + #include "net/proxy_resolution/proxy_resolver_mac.h" +-#elif BUILDFLAG(IS_LINUX) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "net/proxy_resolution/proxy_config_service_linux.h" + #elif BUILDFLAG(IS_ANDROID) + #include "net/proxy_resolution/proxy_config_service_android.h" +@@ -65,7 +65,7 @@ namespace { + + namespace { + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + constexpr net::NetworkTrafficAnnotationTag kSystemProxyConfigTrafficAnnotation = + net::DefineNetworkTrafficAnnotation("proxy_config_system", R"( + semantics { +@@ -1423,7 +1423,7 @@ ConfiguredProxyResolutionService::CreateSystemProxyCon + << "profile_io_data.cc::CreateProxyConfigService and this should " + << "be used only for examples."; + return std::make_unique(); +-#elif BUILDFLAG(IS_LINUX) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + std::unique_ptr linux_config_service( + new ProxyConfigServiceLinux()); + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_proxy__config__service__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_proxy__config__service__linux.cc new file mode 100644 index 000000000000..0e2ed9b59011 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_proxy__config__service__linux.cc @@ -0,0 +1,40 @@ +--- src/3rdparty/chromium/net/proxy_resolution/proxy_config_service_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/proxy_resolution/proxy_config_service_linux.cc +@@ -6,7 +6,9 @@ + + #include + #include ++#if !defined(OS_BSD) + #include ++#endif + #include + + #include +@@ -506,6 +508,7 @@ bool SettingGetterImplGSettings::CheckVersion( + } + #endif // defined(USE_GIO) + ++#if !defined(OS_BSD) + // Converts |value| from a decimal string to an int. If there was a failure + // parsing, returns |default_value|. + int StringToIntOrDefault(base::StringPiece value, int default_value) { +@@ -1007,6 +1010,7 @@ class SettingGetterImplKDE : public ProxyConfigService + // events on. + scoped_refptr file_task_runner_; + }; ++#endif + + } // namespace + +@@ -1223,9 +1227,11 @@ ProxyConfigServiceLinux::Delegate::Delegate( + case base::nix::DESKTOP_ENVIRONMENT_KDE3: + case base::nix::DESKTOP_ENVIRONMENT_KDE4: + case base::nix::DESKTOP_ENVIRONMENT_KDE5: ++#if !defined(OS_BSD) + setting_getter_ = + std::make_unique(env_var_getter_.get()); + break; ++#endif + case base::nix::DESKTOP_ENVIRONMENT_XFCE: + case base::nix::DESKTOP_ENVIRONMENT_OTHER: + break; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_socket__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_socket__posix.cc new file mode 100644 index 000000000000..c9d478eb6825 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_socket__posix.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/socket/socket_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/socket/socket_posix.cc +@@ -519,7 +519,7 @@ int SocketPosix::DoWrite(IOBuffer* buf, int buf_len) { + } + + int SocketPosix::DoWrite(IOBuffer* buf, int buf_len) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + // Disable SIGPIPE for this write. Although Chromium globally disables + // SIGPIPE, the net stack may be used in other consumers which do not do + // this. MSG_NOSIGNAL is a Linux-only API. On OS X, this is a setsockopt on diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_socks5__client__socket.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_socks5__client__socket.cc new file mode 100644 index 000000000000..281300e86b21 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_socks5__client__socket.cc @@ -0,0 +1,12 @@ +--- src/3rdparty/chromium/net/socket/socks5_client_socket.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/socket/socks5_client_socket.cc +@@ -19,6 +19,9 @@ + #include "net/log/net_log_event_type.h" + #include "net/traffic_annotation/network_traffic_annotation.h" + ++#include ++#include ++ + namespace net { + + const unsigned int SOCKS5ClientSocket::kGreetReadHeaderSize = 2; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_tcp__socket__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_tcp__socket__posix.cc new file mode 100644 index 000000000000..4e4c20292589 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_tcp__socket__posix.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/net/socket/tcp_socket_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/socket/tcp_socket_posix.cc +@@ -97,6 +97,17 @@ bool SetTCPKeepAlive(int fd, bool enable, int delay) { + PLOG(ERROR) << "Failed to set TCP_KEEPALIVE on fd: " << fd; + return false; + } ++#elif BUILDFLAG(IS_FREEBSD) ++ // Set seconds until first TCP keep alive. ++ if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &delay, sizeof(delay))) { ++ PLOG(ERROR) << "Failed to set TCP_KEEPIDLE on fd: " << fd; ++ return false; ++ } ++ // Set seconds between TCP keep alives. ++ if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &delay, sizeof(delay))) { ++ PLOG(ERROR) << "Failed to set TCP_KEEPINTVL on fd: " << fd; ++ return false; ++ } + #endif + return true; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_udp__socket__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_udp__socket__posix.cc new file mode 100644 index 000000000000..33506490f28f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_udp__socket__posix.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/net/socket/udp_socket_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/socket/udp_socket_posix.cc +@@ -621,7 +621,7 @@ void UDPSocketPosix::SetMsgConfirm(bool confirm) { + } + + void UDPSocketPosix::SetMsgConfirm(bool confirm) { +-#if !BUILDFLAG(IS_APPLE) ++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) + if (confirm) { + sendto_flags_ |= MSG_CONFIRM; + } else { +@@ -642,7 +642,7 @@ int UDPSocketPosix::SetBroadcast(bool broadcast) { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + int value = broadcast ? 1 : 0; + int rv; +-#if BUILDFLAG(IS_APPLE) ++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) + // SO_REUSEPORT on OSX permits multiple processes to each receive + // UDP multicast or broadcast datagrams destined for the bound + // port. +@@ -955,7 +955,7 @@ int UDPSocketPosix::DoBind(const IPEndPoint& address) + #if BUILDFLAG(IS_CHROMEOS_ASH) + if (last_error == EINVAL) + return ERR_ADDRESS_IN_USE; +-#elif BUILDFLAG(IS_APPLE) ++#elif BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) + if (last_error == EADDRNOTAVAIL) + return ERR_ADDRESS_IN_USE; + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_unix__domain__client__socket__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_unix__domain__client__socket__posix.cc new file mode 100644 index 000000000000..854ea3c723a5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_socket_unix__domain__client__socket__posix.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/socket/unix_domain_client_socket_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/socket/unix_domain_client_socket_posix.cc +@@ -60,7 +60,7 @@ bool UnixDomainClientSocket::FillAddress(const std::st + return true; + } + +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Convert the path given into abstract socket name. It must start with + // the '\0' character, so we are adding it. |addr_len| must specify the + // length of the structure exactly, as potentially the socket name may diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_third__party_quiche_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_third__party_quiche_BUILD.gn new file mode 100644 index 000000000000..26fa095907d0 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_third__party_quiche_BUILD.gn @@ -0,0 +1,33 @@ +--- src/3rdparty/chromium/net/third_party/quiche/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/third_party/quiche/BUILD.gn +@@ -713,7 +713,7 @@ proto_library("net_quic_test_tools_proto") { + extra_configs = [ "//build/config/compiler:wexit_time_destructors" ] + } + +-if (is_linux || is_chromeos) { ++if ((is_linux || is_chromeos) && !is_bsd) { + source_set("epoll_server") { + sources = [ + "overrides/quiche_platform_impl/epoll_bug_impl.h", +@@ -1104,7 +1104,7 @@ source_set("quic_test_tools_core") { + "//third_party/quic_trace:quic_trace_proto", + ] + +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + sources += [ + "src/quiche/epoll_server/fake_simple_epoll_server.cc", + "src/quiche/epoll_server/fake_simple_epoll_server.h", +@@ -1564,10 +1564,10 @@ source_set("quiche_tests") { + ] + public_deps = [] + +- if (is_linux || is_chromeos_lacros) { ++ if ((is_linux || is_chromeos_lacros) && !is_bsd) { + public_deps += [ ":epoll_quic_tools" ] + } +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + sources += [ + "overrides/quiche_platform_impl/quiche_command_line_flags_test.cc", + "src/quiche/epoll_server/simple_epoll_server_test.cc", diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_tools_cert__verify__tool_cert__verify__comparision__tool.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_tools_cert__verify__tool_cert__verify__comparision__tool.cc new file mode 100644 index 000000000000..2f567ca00e34 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_tools_cert__verify__tool_cert__verify__comparision__tool.cc @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/net/tools/cert_verify_tool/cert_verify_comparision_tool.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/tools/cert_verify_tool/cert_verify_comparision_tool.cc +@@ -35,7 +35,7 @@ + #include "net/url_request/url_request_context_builder.h" + #include "net/url_request/url_request_context_getter.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "net/proxy_resolution/proxy_config.h" + #include "net/proxy_resolution/proxy_config_service_fixed.h" + #endif +@@ -51,7 +51,7 @@ void SetUpOnNetworkThread( + base::WaitableEvent* initialization_complete_event) { + net::URLRequestContextBuilder url_request_context_builder; + url_request_context_builder.set_user_agent(GetUserAgent()); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // On Linux, use a fixed ProxyConfigService, since the default one + // depends on glib. + // +@@ -123,7 +123,7 @@ std::unique_ptr CreateCertVerifyImplFr + std::unique_ptr CreateCertVerifyImplFromName( + base::StringPiece impl_name, + scoped_refptr cert_net_fetcher) { +-#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) + if (impl_name == "platform") { + return std::make_unique( + "CertVerifyProc (system)", net::CertVerifyProc::CreateSystemVerifyProc( diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_tools_cert__verify__tool_cert__verify__tool.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_tools_cert__verify__tool_cert__verify__tool.cc new file mode 100644 index 000000000000..8d521b51d33f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_tools_cert__verify__tool_cert__verify__tool.cc @@ -0,0 +1,38 @@ +--- src/3rdparty/chromium/net/tools/cert_verify_tool/cert_verify_tool.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/tools/cert_verify_tool/cert_verify_tool.cc +@@ -30,7 +30,7 @@ + #include "net/url_request/url_request_context_builder.h" + #include "net/url_request/url_request_context_getter.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "net/proxy_resolution/proxy_config.h" + #include "net/proxy_resolution/proxy_config_service_fixed.h" + #endif +@@ -56,7 +56,7 @@ void SetUpOnNetworkThread( + base::WaitableEvent* initialization_complete_event) { + net::URLRequestContextBuilder url_request_context_builder; + url_request_context_builder.set_user_agent(GetUserAgent()); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // On Linux, use a fixed ProxyConfigService, since the default one + // depends on glib. + // +@@ -206,7 +206,7 @@ std::unique_ptr CreateCertVerifyImplFr + base::StringPiece impl_name, + scoped_refptr cert_net_fetcher, + RootStoreType root_store_type) { +-#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) || BUILDFLAG(IS_BSD) + if (impl_name == "platform") { + if (root_store_type != RootStoreType::kSystem) { + std::cerr << "WARNING: platform verifier not supported with " +@@ -463,7 +463,7 @@ int main(int argc, char** argv) { + std::string impls_str = command_line.GetSwitchValueASCII("impls"); + if (impls_str.empty()) { + // Default value. +-#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++#if !(BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) || BUILDFLAG(IS_BSD) + impls_str = "platform,"; + #endif + impls_str += "builtin,pathbuilder"; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_tools_quic_quic__http__proxy__backend.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_tools_quic_quic__http__proxy__backend.cc new file mode 100644 index 000000000000..3e9c54b40f78 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_tools_quic_quic__http__proxy__backend.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/tools/quic/quic_http_proxy_backend.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/tools/quic/quic_http_proxy_backend.cc +@@ -161,7 +161,7 @@ void QuicHttpProxyBackend::InitializeURLRequestContext + // Enable HTTP2, but disable QUIC on the backend + context_builder.SetSpdyAndQuicEnabled(true /* http2 */, false /* quic */); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // On Linux, use a fixed ProxyConfigService, since the default one + // depends on glib. + context_builder.set_proxy_config_service( diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_traffic__annotation_network__traffic__annotation.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_traffic__annotation_network__traffic__annotation.h new file mode 100644 index 000000000000..d6759f64a79d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_traffic__annotation_network__traffic__annotation.h @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/net/traffic_annotation/network_traffic_annotation.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/traffic_annotation/network_traffic_annotation.h +@@ -371,7 +371,7 @@ struct MutablePartialNetworkTrafficAnnotationTag { + } // namespace net + + // Placeholder for unannotated usages. +-#if !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) ++#if !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD) + #define TRAFFIC_ANNOTATION_WITHOUT_PROTO(ANNOTATION_ID) \ + net::DefineNetworkTrafficAnnotation(ANNOTATION_ID, "No proto yet.") + #endif +@@ -385,7 +385,7 @@ struct MutablePartialNetworkTrafficAnnotationTag { + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. + #if !BUILDFLAG(IS_WIN) && \ +- !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) ++ !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)) + + #define NO_TRAFFIC_ANNOTATION_YET \ + net::DefineNetworkTrafficAnnotation("undefined", "Nothing here yet.") diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.cc new file mode 100644 index 000000000000..0ca86aecfb7d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/url_request/url_fetcher.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/url_request/url_fetcher.cc +@@ -26,7 +26,7 @@ void URLFetcher::SetIgnoreCertificateRequests(bool ign + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. + #if !BUILDFLAG(IS_WIN) && \ +- !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) ++ !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)) + // static + std::unique_ptr URLFetcher::Create( + const GURL& url, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.h new file mode 100644 index 000000000000..679bf4a26cd7 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/url_request/url_fetcher.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/url_request/url_fetcher.h +@@ -344,7 +344,7 @@ class NET_EXPORT URLFetcher { + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. + #if (!BUILDFLAG(IS_WIN) && \ +- !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))) || \ ++ !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD))) || \ + BUILDFLAG(IS_CHROMEOS) + // |url| is the URL to send the request to. It must be valid. + // |request_type| is the type of request to make. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.cc new file mode 100644 index 000000000000..63c2aecb4f83 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/url_request/url_request_context.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/url_request/url_request_context.cc +@@ -91,7 +91,7 @@ const HttpNetworkSessionContext* URLRequestContext::Ge + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. + #if !BUILDFLAG(IS_WIN) && \ +- !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) ++ !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)) + std::unique_ptr URLRequestContext::CreateRequest( + const GURL& url, + RequestPriority priority, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.h new file mode 100644 index 000000000000..aab24b57c0c5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/url_request/url_request_context.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/url_request/url_request_context.h +@@ -89,7 +89,7 @@ class NET_EXPORT URLRequestContext { + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. + #if !BUILDFLAG(IS_WIN) && \ +- !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) ++ !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)) + // This function should not be used in Chromium, please use the version with + // NetworkTrafficAnnotationTag in the future. + // diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context__builder.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context__builder.cc new file mode 100644 index 000000000000..689e1b6393d1 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context__builder.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/net/url_request/url_request_context_builder.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/net/url_request/url_request_context_builder.cc +@@ -498,7 +498,7 @@ std::unique_ptr URLRequestContextBu + } + + if (!proxy_resolution_service_) { +-#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) ++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_BSD) + // TODO(willchan): Switch to using this code when + // ConfiguredProxyResolutionService::CreateSystemProxyConfigService()'s + // signature doesn't suck. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_mojom_printing__context__mojom__traits.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_mojom_printing__context__mojom__traits.cc new file mode 100644 index 000000000000..621048d4934f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_mojom_printing__context__mojom__traits.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/printing/mojom/printing_context_mojom_traits.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/printing/mojom/printing_context_mojom_traits.cc +@@ -16,7 +16,7 @@ + #include "ui/gfx/geometry/mojom/geometry_mojom_traits.h" + #include "ui/gfx/geometry/size.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "mojo/public/mojom/base/values.mojom.h" + #endif + +@@ -162,7 +162,7 @@ bool StructTraits< + } + + out->set_pages_per_sheet(data.pages_per_sheet()); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + DCHECK(out->advanced_settings().empty()); + if (!data.ReadAdvancedSettings(&out->advanced_settings())) + return false; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_mojom_printing__context__mojom__traits.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_mojom_printing__context__mojom__traits.h new file mode 100644 index 000000000000..9b6d5eee5433 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_mojom_printing__context__mojom__traits.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/printing/mojom/printing_context_mojom_traits.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/printing/mojom/printing_context_mojom_traits.h +@@ -168,7 +168,7 @@ struct StructTraits + + #include "base/values.h" +@@ -66,7 +66,7 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings { + } + }; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + using AdvancedSettings = std::map; + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + +@@ -221,7 +221,7 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings { + pages_per_sheet_ = pages_per_sheet; + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + AdvancedSettings& advanced_settings() { return advanced_settings_; } + const AdvancedSettings& advanced_settings() const { + return advanced_settings_; +@@ -322,7 +322,7 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings { + // Number of pages per sheet. + int pages_per_sheet_; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Advanced settings. + AdvancedSettings advanced_settings_; + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_print__settings__conversion.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_print__settings__conversion.cc new file mode 100644 index 000000000000..3c6436546431 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_print__settings__conversion.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/printing/print_settings_conversion.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/printing/print_settings_conversion.cc +@@ -215,7 +215,7 @@ std::unique_ptr PrintSettingsFromJobSet + settings->set_is_modifiable(is_modifiable.value()); + } + +-#if BUILDFLAG(IS_CHROMEOS) || (BUILDFLAG(IS_LINUX) && defined(USE_CUPS)) ++#if BUILDFLAG(IS_CHROMEOS) || ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(USE_CUPS)) + const base::Value::Dict* advanced_settings = + job_settings.FindDict(kSettingAdvancedSettings); + if (advanced_settings) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_printing__features.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_printing__features.cc new file mode 100644 index 000000000000..ad6dc88d9202 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_printing__features.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/printing/printing_features.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/printing/printing_features.cc +@@ -8,7 +8,7 @@ + #include "printing/buildflags/buildflags.h" + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "base/metrics/field_trial_params.h" + #endif + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_sandbox_print__backend__sandbox__hook__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_sandbox_print__backend__sandbox__hook__linux.cc new file mode 100644 index 000000000000..06cc87cd50a3 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_sandbox_print__backend__sandbox__hook__linux.cc @@ -0,0 +1,51 @@ +--- src/3rdparty/chromium/printing/sandbox/print_backend_sandbox_hook_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/printing/sandbox/print_backend_sandbox_hook_linux.cc +@@ -9,21 +9,28 @@ + #include "base/files/file_util.h" + #include "base/path_service.h" + #include "build/build_config.h" ++#if !BUILDFLAG(IS_BSD) + #include "sandbox/linux/syscall_broker/broker_command.h" + #include "sandbox/linux/syscall_broker/broker_file_permission.h" + #include "sandbox/policy/export.h" + #include "sandbox/policy/linux/sandbox_linux.h" + #include "services/network/network_sandbox_hook_linux.h" ++#else ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#endif + + #if BUILDFLAG(IS_CHROMEOS) && defined(USE_CUPS) + #include "printing/backend/cups_connection_pool.h" + #endif + ++#if !BUILDFLAG(IS_BSD) + using sandbox::syscall_broker::BrokerFilePermission; + using sandbox::syscall_broker::MakeBrokerCommandSet; ++#endif + + namespace printing { + ++#if !BUILDFLAG(IS_BSD) + namespace { + + sandbox::syscall_broker::BrokerCommandSet GetPrintBackendBrokerCommandSet() { +@@ -84,9 +91,11 @@ std::vector GetPrintBackendFileP + } + + } // namespace ++#endif + + bool PrintBackendPreSandboxHook( + sandbox::policy::SandboxLinux::Options options) { ++#if !BUILDFLAG(IS_BSD) + #if BUILDFLAG(IS_CHROMEOS) && defined(USE_CUPS) + // Create the socket connections to the CUPS server before engaging the + // sandbox, since new connections cannot be made after that. +@@ -100,6 +109,7 @@ bool PrintBackendPreSandboxHook( + sandbox::policy::SandboxLinux::PreSandboxHook(), options); + + instance->EngageNamespaceSandboxIfPossible(); ++#endif + return true; + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_sandbox_print__backend__sandbox__hook__linux.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_sandbox_print__backend__sandbox__hook__linux.h new file mode 100644 index 000000000000..1d88162006bc --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_printing_sandbox_print__backend__sandbox__hook__linux.h @@ -0,0 +1,16 @@ +--- src/3rdparty/chromium/printing/sandbox/print_backend_sandbox_hook_linux.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/printing/sandbox/print_backend_sandbox_hook_linux.h +@@ -5,8 +5,13 @@ + #ifndef PRINTING_SANDBOX_PRINT_BACKEND_SANDBOX_HOOK_LINUX_H_ + #define PRINTING_SANDBOX_PRINT_BACKEND_SANDBOX_HOOK_LINUX_H_ + ++#include "build/build_config.h" + #include "base/component_export.h" ++#if defined(OS_BSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#else + #include "sandbox/policy/linux/sandbox_linux.h" ++#endif + + namespace printing { + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_BUILD.gn new file mode 100644 index 000000000000..e017bd43a166 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_BUILD.gn @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/sandbox/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/sandbox/BUILD.gn +@@ -36,7 +36,7 @@ group("sandbox") { + "//sandbox/mac:system_services", + "//sandbox/mac/mojom", + ] +- } else if (is_linux || is_chromeos || is_android) { ++ } else if ((is_linux && !is_bsd) || is_chromeos || is_android) { + public_deps = [ "//sandbox/linux:sandbox" ] + } + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_features.gni b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_features.gni new file mode 100644 index 000000000000..0162339bd470 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_features.gni @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/sandbox/features.gni.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/sandbox/features.gni +@@ -6,7 +6,7 @@ + # currently. + # Do not disable seccomp_bpf anywhere without talking to + # security@chromium.org! +-use_seccomp_bpf = (is_linux || is_chromeos || is_android) && ++use_seccomp_bpf = !is_bsd && (is_linux || is_chromeos || is_android) && + (current_cpu == "x86" || current_cpu == "x64" || + current_cpu == "arm" || current_cpu == "arm64" || + current_cpu == "mipsel" || current_cpu == "mips64el") diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_BUILD.gn new file mode 100644 index 000000000000..d3f6ea5fb390 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_BUILD.gn @@ -0,0 +1,58 @@ +--- src/3rdparty/chromium/sandbox/linux/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/sandbox/linux/BUILD.gn +@@ -12,12 +12,12 @@ declare_args() { + } + + declare_args() { +- compile_suid_client = is_linux || is_chromeos ++ compile_suid_client = (is_linux || is_chromeos) && !is_bsd + +- compile_credentials = is_linux || is_chromeos ++ compile_credentials = (is_linux || is_chromeos) && !is_bsd + + # On Android, use plain GTest. +- use_base_test_suite = is_linux || is_chromeos ++ use_base_test_suite = (is_linux || is_chromeos) && !is_bsd + } + + # We have two principal targets: sandbox and sandbox_linux_unittests +@@ -367,6 +367,39 @@ component("sandbox_services") { + sources += [ + "services/libc_interceptor.cc", + "services/libc_interceptor.h", ++ ] ++ } ++ ++ if (is_bsd) { ++ sources -= [ ++ "services/scoped_process.cc", ++ "services/scoped_process.h", ++ "services/syscall_wrappers.cc", ++ "services/syscall_wrappers.h", ++ "services/yama.cc", ++ "services/yama.h", ++ "syscall_broker/broker_channel.cc", ++ "syscall_broker/broker_channel.h", ++ "syscall_broker/broker_client.cc", ++ "syscall_broker/broker_client.h", ++ "syscall_broker/broker_command.cc", ++ "syscall_broker/broker_command.h", ++ "syscall_broker/broker_file_permission.cc", ++ "syscall_broker/broker_file_permission.h", ++ "syscall_broker/broker_host.cc", ++ "syscall_broker/broker_host.h", ++ "syscall_broker/broker_permission_list.cc", ++ "syscall_broker/broker_permission_list.h", ++ "syscall_broker/broker_process.cc", ++ "syscall_broker/broker_process.h", ++ "syscall_broker/broker_sandbox_config.cc", ++ "syscall_broker/broker_sandbox_config.h", ++ "syscall_broker/broker_simple_message.cc", ++ "syscall_broker/broker_simple_message.h", ++ "syscall_broker/remote_syscall_arg_handler.cc", ++ "syscall_broker/remote_syscall_arg_handler.h", ++ "syscall_broker/syscall_dispatcher.cc", ++ "syscall_broker/syscall_dispatcher.h", + ] + } + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_services_init__process__reaper.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_services_init__process__reaper.cc new file mode 100644 index 000000000000..3fd40e239853 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_services_init__process__reaper.cc @@ -0,0 +1,15 @@ +--- src/3rdparty/chromium/sandbox/linux/services/init_process_reaper.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/sandbox/linux/services/init_process_reaper.cc +@@ -2,6 +2,7 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + ++#if 0 + #include "sandbox/linux/services/init_process_reaper.h" + + #include +@@ -100,3 +101,4 @@ bool CreateInitProcessReaper(base::OnceClosure post_fo + } + + } // namespace sandbox. ++#endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_services_libc__interceptor.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_services_libc__interceptor.cc new file mode 100644 index 000000000000..576210991328 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_services_libc__interceptor.cc @@ -0,0 +1,21 @@ +--- src/3rdparty/chromium/sandbox/linux/services/libc_interceptor.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/sandbox/linux/services/libc_interceptor.cc +@@ -11,7 +11,9 @@ + #include + #include + #include ++#if !defined(OS_BSD) + #include ++#endif + #include + #include + #include +@@ -94,7 +96,7 @@ bool ReadTimeStruct(base::PickleIterator* iter, + } else { + base::AutoLock lock(g_timezones_lock.Get()); + auto ret_pair = g_timezones.Get().insert(timezone); +- output->tm_zone = ret_pair.first->c_str(); ++ output->tm_zone = (char *)ret_pair.first->c_str(); + } + + return true; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_BUILD.gn new file mode 100644 index 000000000000..da36531bca38 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_BUILD.gn @@ -0,0 +1,49 @@ +--- src/3rdparty/chromium/sandbox/policy/BUILD.gn.orig 2022-11-08 21:18:48 UTC ++++ src/3rdparty/chromium/sandbox/policy/BUILD.gn +@@ -5,6 +5,8 @@ import("//build/config/chromeos/ui_mode.gni") + import("//build/buildflag_header.gni") + import("//build/config/chromecast_build.gni") + import("//build/config/chromeos/ui_mode.gni") ++# Required for QtPDF to get a successful build ++import("//build/config/ozone.gni") + import("//build/config/sanitizers/sanitizers.gni") + import("//chromeos/assistant/assistant.gni") + import("//printing/buildflags/buildflags.gni") +@@ -34,7 +36,7 @@ component("policy") { + "//sandbox/policy/mojom", + ] + public_deps = [ "//sandbox:common" ] +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + sources += [ + "linux/bpf_audio_policy_linux.cc", + "linux/bpf_audio_policy_linux.h", +@@ -89,6 +91,28 @@ component("policy") { + "//sandbox/linux:sandbox_services", + "//sandbox/linux:seccomp_bpf", + "//sandbox/linux:suid_sandbox_client", ++ ] ++ } ++ if (is_openbsd) { ++ sources += [ ++ "openbsd/sandbox_openbsd.cc", ++ "openbsd/sandbox_openbsd.h", ++ ] ++ deps += [ ++ "//sandbox:sandbox_buildflags", ++ "//ui/gfx/x", ++ ] ++ libs = [ "util" ] ++ } ++ # Required to avoid assertion errors during build of QtPDF ++ if (is_freebsd && ozone_platform_x11) { ++ sources += [ ++ "freebsd/sandbox_freebsd.cc", ++ "freebsd/sandbox_freebsd.h", ++ ] ++ deps += [ ++ "//sandbox:sandbox_buildflags", ++ "//ui/gfx/x", + ] + } + if (is_chromeos_ash) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_features.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_features.cc new file mode 100644 index 000000000000..890af8ab2fd3 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_features.cc @@ -0,0 +1,14 @@ +--- src/3rdparty/chromium/sandbox/policy/features.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/sandbox/policy/features.cc +@@ -14,7 +14,11 @@ const base::Feature kNetworkServiceSandbox{"NetworkSer + // Enables network service sandbox. + // (Only causes an effect when feature kNetworkService is enabled.) + const base::Feature kNetworkServiceSandbox{"NetworkServiceSandbox", ++#if BUILDFLAG(IS_BSD) ++ base::FEATURE_ENABLED_BY_DEFAULT}; ++#else + base::FEATURE_DISABLED_BY_DEFAULT}; ++#endif + #endif // !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_FUCHSIA) + + #if BUILDFLAG(IS_WIN) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_freebsd_sandbox__freebsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_freebsd_sandbox__freebsd.cc new file mode 100644 index 000000000000..8202703f9950 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_freebsd_sandbox__freebsd.cc @@ -0,0 +1,256 @@ +--- src/3rdparty/chromium/sandbox/policy/freebsd/sandbox_freebsd.cc.orig 2022-11-17 06:20:46 UTC ++++ src/3rdparty/chromium/sandbox/policy/freebsd/sandbox_freebsd.cc +@@ -0,0 +1,253 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "base/bind.h" ++#include "base/callback_helpers.h" ++#include "base/command_line.h" ++#include "base/debug/stack_trace.h" ++#include "base/feature_list.h" ++#include "base/files/file_path.h" ++#include "base/files/file_util.h" ++#include "base/files/scoped_file.h" ++#include "base/logging.h" ++#include "base/memory/singleton.h" ++#include "base/path_service.h" ++#include "base/posix/eintr_wrapper.h" ++#include "base/strings/string_number_conversions.h" ++#include "base/system/sys_info.h" ++#include "base/threading/thread.h" ++#include "base/time/time.h" ++#include "build/build_config.h" ++#include "sandbox/constants.h" ++#include "sandbox/linux/services/credentials.h" ++#include "sandbox/linux/services/namespace_sandbox.h" ++#include "sandbox/linux/services/proc_util.h" ++#include "sandbox/linux/services/resource_limits.h" ++#include "sandbox/linux/services/thread_helpers.h" ++#include "sandbox/linux/syscall_broker/broker_command.h" ++#include "sandbox/linux/syscall_broker/broker_process.h" ++#include "sandbox/policy/sandbox.h" ++#include "sandbox/policy/sandbox_type.h" ++#include "sandbox/policy/mojom/sandbox.mojom.h" ++#include "sandbox/policy/switches.h" ++#include "sandbox/sandbox_buildflags.h" ++ ++#if BUILDFLAG(USING_SANITIZER) ++#include ++#endif ++ ++#if defined(USE_NSS_CERTS) ++#include "crypto/nss_util.h" ++#endif ++ ++#include "ui/gfx/x/connection.h" ++#include "ui/gfx/font_util.h" ++ ++#include ++ ++#define MAXTOKENS 3 ++ ++#define _UNVEIL_MAIN "/etc/chromium/unveil.main"; ++#define _UNVEIL_RENDERER "/etc/chromium/unveil.renderer"; ++#define _UNVEIL_GPU "/etc/chromium/unveil.gpu"; ++#define _UNVEIL_PLUGIN "/etc/chromium/unveil.plugin"; ++#define _UNVEIL_UTILITY "/etc/chromium/unveil.utility"; ++#define _UNVEIL_UTILITY_NETWORK "/etc/chromium/unveil.utility_network"; ++#define _UNVEIL_UTILITY_AUDIO "/etc/chromium/unveil.utility_audio"; ++#define _UNVEIL_UTILITY_VIDEO "/etc/chromium/unveil.utility_video"; ++ ++namespace sandbox { ++namespace policy { ++ ++SandboxLinux::SandboxLinux() ++ : sandbox_status_flags_(kInvalid), ++ pre_initialized_(false), ++ initialize_sandbox_ran_(false), ++ broker_process_(nullptr) { ++} ++ ++SandboxLinux::~SandboxLinux() { ++ if (pre_initialized_) { ++ CHECK(initialize_sandbox_ran_); ++ } ++} ++ ++SandboxLinux* SandboxLinux::GetInstance() { ++ SandboxLinux* instance = base::Singleton::get(); ++ CHECK(instance); ++ return instance; ++} ++ ++void SandboxLinux::StopThread(base::Thread* thread) { ++ DCHECK(thread); ++ thread->Stop(); ++} ++ ++void SandboxLinux::PreinitializeSandbox(sandbox::mojom::Sandbox sandbox_type) { ++ CHECK(!pre_initialized_); ++#if BUILDFLAG(USING_SANITIZER) ++ // Sanitizers need to open some resources before the sandbox is enabled. ++ // This should not fork, not launch threads, not open a directory. ++ __sanitizer_sandbox_on_notify(sanitizer_args()); ++ sanitizer_args_.reset(); ++#endif ++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); ++ const std::string process_type = ++ command_line->GetSwitchValueASCII(switches::kProcessType); ++ ++ base::SysInfo::AmountOfPhysicalMemory(); ++ base::SysInfo::NumberOfProcessors(); ++ ++#if defined(USE_NSS_CERTS) ++ // The main process has to initialize the ~/.pki dir which won't work ++ // after unveil(2). ++ if (process_type.empty()) ++ crypto::EnsureNSSInit(); ++#endif ++ ++ // cache the XErrorDB by forcing a read on it ++ { ++ auto* connection = x11::Connection::Get(); ++ auto* display = connection->GetXlibDisplay().display(); ++ ++ char buf[1]; ++ XGetErrorDatabaseText(display, "XProtoError", "0", "", buf, std::size(buf)); ++ } ++ ++ if (process_type.empty()) { ++ base::FilePath cache_directory, local_directory; ++ ++ base::PathService::Get(base::DIR_CACHE, &cache_directory); ++ base::PathService::Get(base::DIR_HOME, &local_directory); ++ ++ cache_directory = cache_directory.AppendASCII("chromium"); ++ local_directory = local_directory.AppendASCII(".local").AppendASCII("share").AppendASCII("applications"); ++ ++ if (!base::CreateDirectory(cache_directory)) { ++ LOG(ERROR) << "Failed to create " << cache_directory.value() << " directory."; ++ } ++ ++ if (!base::CreateDirectory(local_directory)) { ++ LOG(ERROR) << "Failed to create " << local_directory.value() << " directory."; ++ } ++ } ++ ++ if (process_type == switches::kRendererProcess) ++ gfx::InitializeFonts(); ++ ++ pre_initialized_ = true; ++} ++ ++bool SandboxLinux::InitializeSandbox(sandbox::mojom::Sandbox sandbox_type, ++ SandboxLinux::PreSandboxHook hook, ++ const Options& options) { ++ DCHECK(!initialize_sandbox_ran_); ++ initialize_sandbox_ran_ = true; ++ ++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); ++ const std::string process_type = ++ command_line->GetSwitchValueASCII(switches::kProcessType); ++ ++ if (command_line->HasSwitch(switches::kNoSandbox)) ++ return true; ++ ++ VLOG(1) << "SandboxLinux::InitializeSandbox: process_type=" ++ << process_type << " sandbox_type=" << GetSandboxTypeInEnglish(sandbox_type); ++ ++ // Only one thread is running, pre-initialize if not already done. ++ if (!pre_initialized_) ++ PreinitializeSandbox(sandbox_type); ++ ++ // Attempt to limit the future size of the address space of the process. ++ int error = 0; ++ const bool limited_as = LimitAddressSpace(&error); ++ if (error) { ++ // Restore errno. Internally to |LimitAddressSpace|, the errno due to ++ // setrlimit may be lost. ++ errno = error; ++ PCHECK(limited_as); ++ } ++ ++ return true; ++} ++ ++bool SandboxLinux::LimitAddressSpace(int* error) { ++#if !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) && \ ++ !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER) ++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); ++ if (SandboxTypeFromCommandLine(*command_line) == sandbox::mojom::Sandbox::kNoSandbox) { ++ return false; ++ } ++ ++ // Unfortunately, it does not appear possible to set RLIMIT_AS such that it ++ // will both (a) be high enough to support V8's and WebAssembly's address ++ // space requirements while also (b) being low enough to mitigate exploits ++ // using integer overflows that require large allocations, heap spray, or ++ // other memory-hungry attack modes. ++ ++ *error = sandbox::ResourceLimits::Lower( ++ RLIMIT_DATA, static_cast(sandbox::kDataSizeLimit)); ++ ++ // Cache the resource limit before turning on the sandbox. ++ base::SysInfo::AmountOfVirtualMemory(); ++ base::SysInfo::MaxSharedMemorySize(); ++ ++ return *error == 0; ++#else ++ base::SysInfo::AmountOfVirtualMemory(); ++ return false; ++#endif // !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) && ++ // !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER) ++} ++ ++// static ++std::string SandboxLinux::GetSandboxTypeInEnglish(sandbox::mojom::Sandbox sandbox_type) { ++ switch (sandbox_type) { ++ case sandbox::mojom::Sandbox::kNoSandbox: ++ return "Unsandboxed"; ++ case sandbox::mojom::Sandbox::kRenderer: ++ return "Renderer"; ++ case sandbox::mojom::Sandbox::kUtility: ++ return "Utility"; ++ case sandbox::mojom::Sandbox::kGpu: ++ return "GPU"; ++ case sandbox::mojom::Sandbox::kPpapi: ++ return "PPAPI"; ++ case sandbox::mojom::Sandbox::kNetwork: ++ return "Network"; ++ case sandbox::mojom::Sandbox::kCdm: ++ return "CDM"; ++ case sandbox::mojom::Sandbox::kPrintCompositor: ++ return "Print Compositor"; ++ case sandbox::mojom::Sandbox::kAudio: ++ return "Audio"; ++ case sandbox::mojom::Sandbox::kSpeechRecognition: ++ return "Speech Recognition"; ++ case sandbox::mojom::Sandbox::kService: ++ return "Service"; ++ case sandbox::mojom::Sandbox::kVideoCapture: ++ return "Video Capture"; ++ default: ++ return "Unknown"; ++ } ++} ++ ++} // namespace policy ++} // namespace sandbox diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_freebsd_sandbox__freebsd.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_freebsd_sandbox__freebsd.h new file mode 100644 index 000000000000..643c1b01998d --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_freebsd_sandbox__freebsd.h @@ -0,0 +1,281 @@ +--- src/3rdparty/chromium/sandbox/policy/freebsd/sandbox_freebsd.h.orig 2022-11-07 19:58:12 UTC ++++ src/3rdparty/chromium/sandbox/policy/freebsd/sandbox_freebsd.h +@@ -0,0 +1,278 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++#ifndef SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_ ++#define SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_ ++ ++#include ++#include ++#include ++ ++#include "base/logging.h" ++#include "base/posix/global_descriptors.h" ++#include "sandbox/policy/export.h" ++#include "sandbox/policy/linux/sandbox_seccomp_bpf_linux.h" ++#include "sandbox/policy/mojom/sandbox.mojom.h" ++#include "sandbox/policy/sanitizer_buildflags.h" ++ ++#if BUILDFLAG(USING_SANITIZER) ++#include ++#endif ++ ++namespace base { ++template ++struct DefaultSingletonTraits; ++class Thread; ++} // namespace base ++ ++namespace sandbox { ++namespace syscall_broker { ++class BrokerProcess; ++} // namespace syscall_broker ++} // namespace sandbox ++ ++namespace sandbox { ++namespace policy { ++ ++// A singleton class to represent and change our sandboxing state for the ++// three main Linux sandboxes. ++// The sandboxing model allows using two layers of sandboxing. The first layer ++// can be implemented either with unprivileged namespaces or with the setuid ++// sandbox. This class provides a way to engage the namespace sandbox, but does ++// not deal with the legacy setuid sandbox directly. ++// The second layer is mainly based on seccomp-bpf and is engaged with ++// InitializeSandbox(). InitializeSandbox() is also responsible for "sealing" ++// the first layer of sandboxing. That is, InitializeSandbox must always be ++// called to have any meaningful sandboxing at all. ++class SANDBOX_POLICY_EXPORT SandboxLinux { ++ public: ++ // This is a list of sandbox IPC methods which the renderer may send to the ++ // sandbox host. See ++ // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_sandbox_ipc.md ++ // This isn't the full list, values < 32 are reserved for methods called from ++ // Skia, and values < 64 are reserved for libc_interceptor.cc. ++ enum LinuxSandboxIPCMethods { ++ DEPRECATED_METHOD_GET_FALLBACK_FONT_FOR_CHAR = 64, ++ DEPRECATED_METHOD_GET_CHILD_WITH_INODE, ++ DEPRECATED_METHOD_GET_STYLE_FOR_STRIKE, ++ METHOD_MAKE_SHARED_MEMORY_SEGMENT, ++ DEPRECATED_METHOD_MATCH_WITH_FALLBACK, ++ }; ++ ++ // These form a bitmask which describes the conditions of the Linux sandbox. ++ // Note: this doesn't strictly give you the current status, it states ++ // what will be enabled when the relevant processes are initialized. ++ enum Status { ++ // SUID sandbox active. ++ kSUID = 1 << 0, ++ ++ // Sandbox is using a new PID namespace. ++ kPIDNS = 1 << 1, ++ ++ // Sandbox is using a new network namespace. ++ kNetNS = 1 << 2, ++ ++ // seccomp-bpf sandbox active. ++ kSeccompBPF = 1 << 3, ++ ++ // The Yama LSM module is present and enforcing. ++ kYama = 1 << 4, ++ ++ // seccomp-bpf sandbox is active and the kernel supports TSYNC. ++ kSeccompTSYNC = 1 << 5, ++ ++ // User namespace sandbox active. ++ kUserNS = 1 << 6, ++ ++ // A flag that denotes an invalid sandbox status. ++ kInvalid = 1 << 31, ++ }; ++ ++ // SandboxLinux Options are a superset of SandboxSecompBPF Options. ++ struct Options : public SandboxSeccompBPF::Options { ++ // When running with a zygote, the namespace sandbox will have already ++ // been engaged prior to initializing SandboxLinux itself, and need not ++ // be done so again. Set to true to indicate that there isn't a zygote ++ // for this process and the step is to be performed here explicitly. ++ bool engage_namespace_sandbox = false; ++ ++ // Allow starting the sandbox with multiple threads already running. This ++ // will enable TSYNC for seccomp-BPF, which syncs the seccomp-BPF policy ++ // across all running threads. ++ bool allow_threads_during_sandbox_init = false; ++ ++ // Enables the CHECK for open directories. The open directory check is only ++ // useful for the chroot jail (from the semantic layer of the sandbox), and ++ // can safely be disabled if we are only enabling the seccomp-BPF layer. ++ bool check_for_open_directories = true; ++ }; ++ ++ // Callers can provide this hook to run code right before the policy ++ // is passed to the BPF compiler and the sandbox is engaged. If ++ // pre_sandbox_hook() returns true, the sandbox will be engaged ++ // afterwards, otherwise the process is terminated. ++ using PreSandboxHook = base::OnceCallback; ++ ++ // Get our singleton instance. ++ static SandboxLinux* GetInstance(); ++ ++ SandboxLinux(const SandboxLinux&) = delete; ++ SandboxLinux& operator=(const SandboxLinux&) = delete; ++ ++ bool SetPledge(const char *pstring, const char *ppath); ++ bool SetUnveil(const std::string process_type, sandbox::mojom::Sandbox sandbox_type); ++ ++ // Do some initialization that can only be done before any of the sandboxes ++ // are enabled. If using the setuid sandbox, this should be called manually ++ // before the setuid sandbox is engaged. ++ // Security: When this runs, it is imperative that either InitializeSandbox() ++ // runs as well or that all file descriptors returned in ++ // GetFileDescriptorsToClose() get closed. ++ // Otherwise file descriptors that bypass the security of the setuid sandbox ++ // would be kept open. One must be particularly careful if a process performs ++ // a fork(). ++ void PreinitializeSandbox(sandbox::mojom::Sandbox sandbox_type); ++ ++ // Check that the current process is the init process of a new PID ++ // namespace and then proceed to drop access to the file system by using ++ // a new unprivileged namespace. This is a layer-1 sandbox. ++ // In order for this sandbox to be effective, it must be "sealed" by calling ++ // InitializeSandbox(). ++ void EngageNamespaceSandbox(bool from_zygote); ++ ++ // Return a list of file descriptors to close if PreinitializeSandbox() ran ++ // but InitializeSandbox() won't. Avoid using. ++ // TODO(jln): get rid of this hack. ++ std::vector GetFileDescriptorsToClose(); ++ ++ // Seal an eventual layer-1 sandbox and initialize the layer-2 sandbox with ++ // an adequate policy depending on the process type and command line ++ // arguments. ++ // Currently the layer-2 sandbox is composed of seccomp-bpf and address space ++ // limitations. ++ // This function should only be called without any thread running. ++ bool InitializeSandbox(sandbox::mojom::Sandbox sandbox_type, ++ PreSandboxHook hook, ++ const Options& options); ++ ++ // Stop |thread| in a way that can be trusted by the sandbox. ++ void StopThread(base::Thread* thread); ++ ++ // Returns the status of the renderer, worker and ppapi sandbox. Can only ++ // be queried after going through PreinitializeSandbox(). This is a bitmask ++ // and uses the constants defined in "enum Status" above. Since the ++ // status needs to be provided before the sandboxes are actually started, ++ // this returns what will actually happen once InitializeSandbox() ++ // is called from inside these processes. ++ int GetStatus(); ++ ++ static std::string GetSandboxTypeInEnglish(sandbox::mojom::Sandbox sandbox_type); ++ ++ // Returns true if the current process is single-threaded or if the number ++ // of threads cannot be determined. ++ bool IsSingleThreaded() const; ++ ++ // Returns true if we started Seccomp BPF. ++ bool seccomp_bpf_started() const; ++ ++ // Check the policy and eventually start the seccomp-bpf sandbox. This should ++ // never be called with threads started. If we detect that threads have ++ // started we will crash. ++ bool StartSeccompBPF(sandbox::mojom::Sandbox sandbox_type, ++ PreSandboxHook hook, ++ const Options& options); ++ ++ // Limit the address space of the current process (and its children) to make ++ // some vulnerabilities harder to exploit. Writes the errno due to setrlimit ++ // (including 0 if no error) into |error|. ++ bool LimitAddressSpace(int* error); ++ ++ // Returns a file descriptor to proc. The file descriptor is no longer valid ++ // after the sandbox has been sealed. ++ int proc_fd() const { ++ DCHECK_NE(-1, proc_fd_); ++ return proc_fd_; ++ } ++ ++#if BUILDFLAG(USING_SANITIZER) ++ __sanitizer_sandbox_arguments* sanitizer_args() const { ++ return sanitizer_args_.get(); ++ }; ++#endif ++ ++ // A BrokerProcess is a helper that is started before the sandbox is engaged, ++ // typically from a pre-sandbox hook, that will serve requests to access ++ // files over an IPC channel. The client of this runs from a SIGSYS handler ++ // triggered by the seccomp-bpf sandbox. ++ // |client_sandbox_policy| is the policy being run by the client, and is ++ // used to derive the equivalent broker-side policy. ++ // |broker_side_hook| is an alternate pre-sandbox hook to be run before the ++ // broker itself gets sandboxed, to which the broker side policy and ++ // |options| are passed. ++ // Crashes the process if the broker can not be started since continuation ++ // is impossible (and presumably unsafe). ++ // This should never be destroyed, as after the sandbox is started it is ++ // vital to the process. ++#if 0 ++ void StartBrokerProcess( ++ const sandbox::syscall_broker::BrokerCommandSet& allowed_command_set, ++ std::vector permissions, ++ PreSandboxHook broker_side_hook, ++ const Options& options); ++ ++ sandbox::syscall_broker::BrokerProcess* broker_process() const { ++ return broker_process_; ++ } ++#endif ++ ++ private: ++ friend struct base::DefaultSingletonTraits; ++ ++ SandboxLinux(); ++ ~SandboxLinux(); ++ ++ // We must have been pre_initialized_ before using these. ++ bool seccomp_bpf_supported() const; ++ bool seccomp_bpf_with_tsync_supported() const; ++ ++ // Returns true if it can be determined that the current process has open ++ // directories that are not managed by the SandboxLinux class. This would ++ // be a vulnerability as it would allow to bypass the setuid sandbox. ++ bool HasOpenDirectories() const; ++ ++ // The last part of the initialization is to make sure any temporary "hole" ++ // in the sandbox is closed. For now, this consists of closing proc_fd_. ++ void SealSandbox(); ++ ++ // GetStatus() makes promises as to how the sandbox will behave. This ++ // checks that no promises have been broken. ++ void CheckForBrokenPromises(sandbox::mojom::Sandbox sandbox_type); ++ ++ // Stop |thread| and make sure it does not appear in /proc/self/tasks/ ++ // anymore. ++ void StopThreadAndEnsureNotCounted(base::Thread* thread) const; ++ ++ // A file descriptor to /proc. It's dangerous to have it around as it could ++ // allow for sandbox bypasses. It needs to be closed before we consider ++ // ourselves sandboxed. ++ int proc_fd_; ++ ++ bool seccomp_bpf_started_; ++ // The value returned by GetStatus(). Gets computed once and then cached. ++ int sandbox_status_flags_; ++ // Did PreinitializeSandbox() run? ++ bool pre_initialized_; ++ bool seccomp_bpf_supported_; // Accurate if pre_initialized_. ++ bool seccomp_bpf_with_tsync_supported_; // Accurate if pre_initialized_. ++ bool yama_is_enforcing_; // Accurate if pre_initialized_. ++ bool initialize_sandbox_ran_; // InitializeSandbox() was called. ++#if BUILDFLAG(USING_SANITIZER) ++ std::unique_ptr<__sanitizer_sandbox_arguments> sanitizer_args_; ++#endif ++ sandbox::syscall_broker::BrokerProcess* broker_process_; // Leaked as global. ++}; ++ ++} // namespace policy ++} // namespace sandbox ++ ++#endif // SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_ diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_mojom_sandbox.mojom b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_mojom_sandbox.mojom new file mode 100644 index 000000000000..4bd54ffa0237 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_mojom_sandbox.mojom @@ -0,0 +1,15 @@ +--- src/3rdparty/chromium/sandbox/policy/mojom/sandbox.mojom.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/sandbox/policy/mojom/sandbox.mojom +@@ -72,6 +72,12 @@ enum Sandbox { + [EnableIf=is_fuchsia] + kVideoCapture, + ++ [EnableIf=is_openbsd] ++ kVideoCapture, ++ ++ [EnableIf=is_freebsd] ++ kVideoCapture, ++ + // Allows access to file contents and Windows APIs for parsing icons from PE + // files. + [EnableIf=is_win] diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_openbsd_sandbox__openbsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_openbsd_sandbox__openbsd.cc new file mode 100644 index 000000000000..04e1995a9981 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_openbsd_sandbox__openbsd.cc @@ -0,0 +1,416 @@ +--- src/3rdparty/chromium/sandbox/policy/openbsd/sandbox_openbsd.cc.orig 2022-11-17 06:21:59 UTC ++++ src/3rdparty/chromium/sandbox/policy/openbsd/sandbox_openbsd.cc +@@ -0,0 +1,413 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "base/bind.h" ++#include "base/callback_helpers.h" ++#include "base/command_line.h" ++#include "base/debug/stack_trace.h" ++#include "base/feature_list.h" ++#include "base/files/file_path.h" ++#include "base/files/file_util.h" ++#include "base/files/scoped_file.h" ++#include "base/logging.h" ++#include "base/memory/singleton.h" ++#include "base/path_service.h" ++#include "base/posix/eintr_wrapper.h" ++#include "base/strings/string_number_conversions.h" ++#include "base/system/sys_info.h" ++#include "base/threading/thread.h" ++#include "base/time/time.h" ++#include "build/build_config.h" ++#include "sandbox/constants.h" ++#include "sandbox/linux/services/credentials.h" ++#include "sandbox/linux/services/namespace_sandbox.h" ++#include "sandbox/linux/services/proc_util.h" ++#include "sandbox/linux/services/resource_limits.h" ++#include "sandbox/linux/services/thread_helpers.h" ++#include "sandbox/linux/syscall_broker/broker_command.h" ++#include "sandbox/linux/syscall_broker/broker_process.h" ++#include "sandbox/policy/sandbox.h" ++#include "sandbox/policy/sandbox_type.h" ++#include "sandbox/policy/mojom/sandbox.mojom.h" ++#include "sandbox/policy/switches.h" ++#include "sandbox/sandbox_buildflags.h" ++ ++#if BUILDFLAG(USING_SANITIZER) ++#include ++#endif ++ ++#if defined(USE_NSS_CERTS) ++#include "crypto/nss_util.h" ++#endif ++ ++#include "third_party/boringssl/src/include/openssl/crypto.h" ++ ++#include "ui/gfx/x/connection.h" ++#include "ui/gfx/font_util.h" ++ ++#include ++ ++#define MAXTOKENS 3 ++ ++#define _UNVEIL_MAIN "/etc/chromium/unveil.main"; ++#define _UNVEIL_RENDERER "/etc/chromium/unveil.renderer"; ++#define _UNVEIL_GPU "/etc/chromium/unveil.gpu"; ++#define _UNVEIL_PLUGIN "/etc/chromium/unveil.plugin"; ++#define _UNVEIL_UTILITY "/etc/chromium/unveil.utility"; ++#define _UNVEIL_UTILITY_NETWORK "/etc/chromium/unveil.utility_network"; ++#define _UNVEIL_UTILITY_AUDIO "/etc/chromium/unveil.utility_audio"; ++#define _UNVEIL_UTILITY_VIDEO "/etc/chromium/unveil.utility_video"; ++ ++namespace sandbox { ++namespace policy { ++ ++SandboxLinux::SandboxLinux() ++ : unveil_initialized_(false), ++ sandbox_status_flags_(kInvalid), ++ pre_initialized_(false), ++ initialize_sandbox_ran_(false), ++ broker_process_(nullptr) { ++} ++ ++SandboxLinux::~SandboxLinux() { ++ if (pre_initialized_) { ++ CHECK(initialize_sandbox_ran_); ++ } ++} ++ ++SandboxLinux* SandboxLinux::GetInstance() { ++ SandboxLinux* instance = base::Singleton::get(); ++ CHECK(instance); ++ return instance; ++} ++ ++void SandboxLinux::StopThread(base::Thread* thread) { ++ DCHECK(thread); ++ thread->Stop(); ++} ++ ++void SandboxLinux::PreinitializeSandbox(sandbox::mojom::Sandbox sandbox_type) { ++ CHECK(!pre_initialized_); ++#if BUILDFLAG(USING_SANITIZER) ++ // Sanitizers need to open some resources before the sandbox is enabled. ++ // This should not fork, not launch threads, not open a directory. ++ __sanitizer_sandbox_on_notify(sanitizer_args()); ++ sanitizer_args_.reset(); ++#endif ++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); ++ const std::string process_type = ++ command_line->GetSwitchValueASCII(switches::kProcessType); ++ ++ base::SysInfo::AmountOfPhysicalMemory(); ++ base::SysInfo::NumberOfProcessors(); ++ base::SysInfo::CPUModelName(); ++ ++#if defined(USE_NSS_CERTS) ++ // The main process has to initialize the ~/.pki dir which won't work ++ // after unveil(2). ++ if (process_type.empty()) ++ crypto::EnsureNSSInit(); ++#endif ++ ++ if (process_type.empty()) ++ CRYPTO_pre_sandbox_init(); ++ ++ // cache the XErrorDB by forcing a read on it ++ { ++ auto* connection = x11::Connection::Get(); ++ auto* display = connection->GetXlibDisplay().display(); ++ ++ char buf[1]; ++ XGetErrorDatabaseText(display, "XProtoError", "0", "", buf, std::size(buf)); ++ } ++ ++ if (process_type.empty()) { ++ base::FilePath cache_directory, local_directory; ++ ++ base::PathService::Get(base::DIR_CACHE, &cache_directory); ++ base::PathService::Get(base::DIR_HOME, &local_directory); ++ ++ cache_directory = cache_directory.AppendASCII("chromium"); ++ local_directory = local_directory.AppendASCII(".local").AppendASCII("share").AppendASCII("applications"); ++ ++ if (!base::CreateDirectory(cache_directory)) { ++ LOG(ERROR) << "Failed to create " << cache_directory.value() << " directory."; ++ } ++ ++ if (!base::CreateDirectory(local_directory)) { ++ LOG(ERROR) << "Failed to create " << local_directory.value() << " directory."; ++ } ++ } ++ ++ if (process_type == switches::kRendererProcess) ++ gfx::InitializeFonts(); ++ ++ if (!command_line->HasSwitch(switches::kDisableUnveil)) ++ SetUnveil(process_type, sandbox_type); ++ ++ pre_initialized_ = true; ++} ++ ++bool SandboxLinux::SetPledge(const char *pstring, const char *ppath) { ++ FILE *fp; ++ char *s = NULL; ++ size_t len = 0; ++ ssize_t read; ++ ++ if (pstring != NULL) { ++ if (pledge(pstring, NULL) == -1) ++ goto err; ++ } else if (ppath != NULL) { ++ fp = fopen(ppath, "r"); ++ if (fp != NULL) { ++ while ((read = getline(&s, &len, fp)) != -1 ) { ++ if (s[strlen(s)-1] == '\n') ++ s[strlen(s)-1] = '\0'; ++ if (pledge(s, NULL) == -1) ++ goto err; ++ } ++ fclose(fp); ++ } else { ++ LOG(ERROR) << "fopen() failed, errno: " << errno; ++ return false; ++ } ++ } ++ return true; ++err: ++ LOG(ERROR) << "pledge() failed, errno: " << errno; ++ return false; ++} ++ ++bool SandboxLinux::SetUnveil(const std::string process_type, sandbox::mojom::Sandbox sandbox_type) { ++ FILE *fp; ++ char *s = NULL, *cp = NULL, *home = NULL, **ap, *tokens[MAXTOKENS]; ++ char path[PATH_MAX]; ++ const char *ufile; ++ size_t len = 0, lineno = 0; ++ ++ if (process_type.empty()) { ++ ufile = _UNVEIL_MAIN; ++ } else if (process_type == switches::kRendererProcess) { ++ ufile = _UNVEIL_RENDERER; ++ } else if (process_type == switches::kGpuProcess) { ++ ufile = _UNVEIL_GPU; ++ } else if (process_type == switches::kPpapiPluginProcess) { ++ ufile = _UNVEIL_PLUGIN; ++ } else if (process_type == switches::kUtilityProcess) { ++ if (sandbox_type == sandbox::mojom::Sandbox::kNetwork) { ++ ufile = _UNVEIL_UTILITY_NETWORK; ++ } else if (sandbox_type == sandbox::mojom::Sandbox::kAudio) { ++ ufile = _UNVEIL_UTILITY_AUDIO; ++ } else if (sandbox_type == sandbox::mojom::Sandbox::kVideoCapture) { ++ ufile = _UNVEIL_UTILITY_VIDEO; ++ } else { ++ ufile = _UNVEIL_UTILITY; ++ } ++ } ++ ++ fp = fopen(ufile, "r"); ++ if (fp != NULL) { ++ while (!feof(fp)) { ++ if ((s = fparseln(fp, &len, &lineno, NULL, ++ FPARSELN_UNESCCOMM | FPARSELN_UNESCCONT)) == NULL) { ++ if (ferror(fp)) { ++ LOG(ERROR) << "ferror(), errno: " << errno; ++ _exit(1); ++ } else { ++ continue; ++ } ++ } ++ cp = s; ++ cp += strspn(cp, " \t\n"); /* eat whitespace */ ++ if (cp[0] == '\0') ++ continue; ++ ++ for (ap = tokens; ap < &tokens[MAXTOKENS - 1] && ++ (*ap = strsep(&cp, " \t")) != NULL;) { ++ if (**ap != '\0') ++ ap++; ++ } ++ *ap = NULL; ++ ++ if (tokens[1] == NULL) { ++ LOG(ERROR) << ufile << ": line " << lineno << ": must supply value to " << s; ++ _exit(1); ++ } ++ ++ if (tokens[0][0] == '~') { ++ if ((home = getenv("HOME")) == NULL || *home == '\0') { ++ LOG(ERROR) << "failed to get home"; ++ _exit(1); ++ } ++ memmove(tokens[0], tokens[0] + 1, strlen(tokens[0])); ++ strncpy(path, home, sizeof(path) - 1); ++ path[sizeof(path) - 1] = '\0'; ++ strncat(path, tokens[0], sizeof(path) - 1 - strlen(path)); ++ } else { ++ strncpy(path, tokens[0], sizeof(path) - 1); ++ path[sizeof(path) - 1] = '\0'; ++ } ++ ++ if (unveil(path, tokens[1]) == -1) { ++ LOG(ERROR) << "failed unveiling " << path << " with permissions " << tokens[1]; ++ _exit(1); ++ } else { ++ VLOG(1) << "unveiling " << path << " with permissions " << tokens[1]; ++ } ++ } ++ fclose(fp); ++ } else { ++ LOG(ERROR) << "failed to open " << ufile << " errno: " << errno; ++ _exit(1); ++ } ++ ++ unveil_initialized_ = true; ++ ++ return true; ++} ++ ++bool SandboxLinux::unveil_initialized() const { ++ return unveil_initialized_; ++} ++ ++bool SandboxLinux::InitializeSandbox(sandbox::mojom::Sandbox sandbox_type, ++ SandboxLinux::PreSandboxHook hook, ++ const Options& options) { ++ DCHECK(!initialize_sandbox_ran_); ++ initialize_sandbox_ran_ = true; ++ ++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); ++ const std::string process_type = ++ command_line->GetSwitchValueASCII(switches::kProcessType); ++ ++ if (command_line->HasSwitch(switches::kNoSandbox)) ++ return true; ++ ++ VLOG(1) << "SandboxLinux::InitializeSandbox: process_type=" ++ << process_type << " sandbox_type=" << GetSandboxTypeInEnglish(sandbox_type); ++ ++ // Only one thread is running, pre-initialize if not already done. ++ if (!pre_initialized_) ++ PreinitializeSandbox(sandbox_type); ++ ++ // Attempt to limit the future size of the address space of the process. ++ int error = 0; ++ const bool limited_as = LimitAddressSpace(&error); ++ if (error) { ++ // Restore errno. Internally to |LimitAddressSpace|, the errno due to ++ // setrlimit may be lost. ++ errno = error; ++ PCHECK(limited_as); ++ } ++ ++ if (process_type.empty()) { ++ // XXX use a file for listing pledges of the main process for now ++ // XXX not having the file is not a fatal error ++ SetPledge(NULL, "/etc/chromium/pledge.main"); ++ } else if (process_type == switches::kRendererProcess) { ++ // prot_exec needed by v8 ++ // flock needed by sqlite3 locking ++ SetPledge("stdio rpath flock prot_exec recvfd sendfd ps", NULL); ++ } else if (process_type == switches::kGpuProcess) { ++ SetPledge("stdio rpath cpath wpath getpw drm prot_exec recvfd sendfd tmppath", NULL); ++ } else if (process_type == switches::kPpapiPluginProcess) { ++ // prot_exec needed by v8 ++ SetPledge("stdio rpath prot_exec recvfd sendfd", NULL); ++ } else if (process_type == switches::kUtilityProcess) { ++ if (sandbox_type == sandbox::mojom::Sandbox::kAudio) ++ SetPledge(NULL, "/etc/chromium/pledge.utility_audio"); ++ else if (sandbox_type == sandbox::mojom::Sandbox::kNetwork) ++ SetPledge(NULL, "/etc/chromium/pledge.utility_network"); ++ else if (sandbox_type == sandbox::mojom::Sandbox::kVideoCapture) ++ SetPledge(NULL, "/etc/chromium/pledge.utility_video"); ++ else ++ SetPledge("stdio rpath cpath wpath fattr flock sendfd recvfd prot_exec", NULL); ++ } else { ++ LOG(ERROR) << "non-pledge()'d process: " << process_type; ++ return false; ++ } ++ ++ return true; ++} ++ ++bool SandboxLinux::LimitAddressSpace(int* error) { ++#if !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) && \ ++ !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER) ++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); ++ if (SandboxTypeFromCommandLine(*command_line) == sandbox::mojom::Sandbox::kNoSandbox) { ++ return false; ++ } ++ ++ // Unfortunately, it does not appear possible to set RLIMIT_AS such that it ++ // will both (a) be high enough to support V8's and WebAssembly's address ++ // space requirements while also (b) being low enough to mitigate exploits ++ // using integer overflows that require large allocations, heap spray, or ++ // other memory-hungry attack modes. ++ ++ *error = sandbox::ResourceLimits::Lower( ++ RLIMIT_DATA, static_cast(sandbox::kDataSizeLimit)); ++ ++ // Cache the resource limit before turning on the sandbox. ++ base::SysInfo::AmountOfVirtualMemory(); ++ base::SysInfo::MaxSharedMemorySize(); ++ ++ return *error == 0; ++#else ++ base::SysInfo::AmountOfVirtualMemory(); ++ return false; ++#endif // !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) && ++ // !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER) ++} ++ ++// static ++std::string SandboxLinux::GetSandboxTypeInEnglish(sandbox::mojom::Sandbox sandbox_type) { ++ switch (sandbox_type) { ++ case sandbox::mojom::Sandbox::kNoSandbox: ++ return "Unsandboxed"; ++ case sandbox::mojom::Sandbox::kRenderer: ++ return "Renderer"; ++ case sandbox::mojom::Sandbox::kUtility: ++ return "Utility"; ++ case sandbox::mojom::Sandbox::kGpu: ++ return "GPU"; ++ case sandbox::mojom::Sandbox::kPpapi: ++ return "PPAPI"; ++ case sandbox::mojom::Sandbox::kNetwork: ++ return "Network"; ++ case sandbox::mojom::Sandbox::kCdm: ++ return "CDM"; ++ case sandbox::mojom::Sandbox::kPrintCompositor: ++ return "Print Compositor"; ++ case sandbox::mojom::Sandbox::kAudio: ++ return "Audio"; ++ case sandbox::mojom::Sandbox::kSpeechRecognition: ++ return "Speech Recognition"; ++ case sandbox::mojom::Sandbox::kService: ++ return "Service"; ++ case sandbox::mojom::Sandbox::kVideoCapture: ++ return "Video Capture"; ++ default: ++ return "Unknown"; ++ } ++} ++ ++} // namespace policy ++} // namespace sandbox diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_openbsd_sandbox__openbsd.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_openbsd_sandbox__openbsd.h new file mode 100644 index 000000000000..69cd9b21dd2f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_openbsd_sandbox__openbsd.h @@ -0,0 +1,285 @@ +--- src/3rdparty/chromium/sandbox/policy/openbsd/sandbox_openbsd.h.orig 2022-11-07 19:53:29 UTC ++++ src/3rdparty/chromium/sandbox/policy/openbsd/sandbox_openbsd.h +@@ -0,0 +1,282 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++#ifndef SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_ ++#define SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_ ++ ++#include ++#include ++#include ++ ++#include "base/logging.h" ++#include "base/posix/global_descriptors.h" ++#include "sandbox/policy/export.h" ++#include "sandbox/policy/linux/sandbox_seccomp_bpf_linux.h" ++#include "sandbox/policy/mojom/sandbox.mojom.h" ++#include "sandbox/policy/sanitizer_buildflags.h" ++ ++#if BUILDFLAG(USING_SANITIZER) ++#include ++#endif ++ ++namespace base { ++template ++struct DefaultSingletonTraits; ++class Thread; ++} // namespace base ++ ++namespace sandbox { ++namespace syscall_broker { ++class BrokerProcess; ++} // namespace syscall_broker ++} // namespace sandbox ++ ++namespace sandbox { ++namespace policy { ++ ++// A singleton class to represent and change our sandboxing state for the ++// three main Linux sandboxes. ++// The sandboxing model allows using two layers of sandboxing. The first layer ++// can be implemented either with unprivileged namespaces or with the setuid ++// sandbox. This class provides a way to engage the namespace sandbox, but does ++// not deal with the legacy setuid sandbox directly. ++// The second layer is mainly based on seccomp-bpf and is engaged with ++// InitializeSandbox(). InitializeSandbox() is also responsible for "sealing" ++// the first layer of sandboxing. That is, InitializeSandbox must always be ++// called to have any meaningful sandboxing at all. ++class SANDBOX_POLICY_EXPORT SandboxLinux { ++ public: ++ // This is a list of sandbox IPC methods which the renderer may send to the ++ // sandbox host. See ++ // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_sandbox_ipc.md ++ // This isn't the full list, values < 32 are reserved for methods called from ++ // Skia, and values < 64 are reserved for libc_interceptor.cc. ++ enum LinuxSandboxIPCMethods { ++ DEPRECATED_METHOD_GET_FALLBACK_FONT_FOR_CHAR = 64, ++ DEPRECATED_METHOD_GET_CHILD_WITH_INODE, ++ DEPRECATED_METHOD_GET_STYLE_FOR_STRIKE, ++ METHOD_MAKE_SHARED_MEMORY_SEGMENT, ++ DEPRECATED_METHOD_MATCH_WITH_FALLBACK, ++ }; ++ ++ // These form a bitmask which describes the conditions of the Linux sandbox. ++ // Note: this doesn't strictly give you the current status, it states ++ // what will be enabled when the relevant processes are initialized. ++ enum Status { ++ // SUID sandbox active. ++ kSUID = 1 << 0, ++ ++ // Sandbox is using a new PID namespace. ++ kPIDNS = 1 << 1, ++ ++ // Sandbox is using a new network namespace. ++ kNetNS = 1 << 2, ++ ++ // seccomp-bpf sandbox active. ++ kSeccompBPF = 1 << 3, ++ ++ // The Yama LSM module is present and enforcing. ++ kYama = 1 << 4, ++ ++ // seccomp-bpf sandbox is active and the kernel supports TSYNC. ++ kSeccompTSYNC = 1 << 5, ++ ++ // User namespace sandbox active. ++ kUserNS = 1 << 6, ++ ++ // A flag that denotes an invalid sandbox status. ++ kInvalid = 1 << 31, ++ }; ++ ++ // SandboxLinux Options are a superset of SandboxSecompBPF Options. ++ struct Options : public SandboxSeccompBPF::Options { ++ // When running with a zygote, the namespace sandbox will have already ++ // been engaged prior to initializing SandboxLinux itself, and need not ++ // be done so again. Set to true to indicate that there isn't a zygote ++ // for this process and the step is to be performed here explicitly. ++ bool engage_namespace_sandbox = false; ++ ++ // Allow starting the sandbox with multiple threads already running. This ++ // will enable TSYNC for seccomp-BPF, which syncs the seccomp-BPF policy ++ // across all running threads. ++ bool allow_threads_during_sandbox_init = false; ++ ++ // Enables the CHECK for open directories. The open directory check is only ++ // useful for the chroot jail (from the semantic layer of the sandbox), and ++ // can safely be disabled if we are only enabling the seccomp-BPF layer. ++ bool check_for_open_directories = true; ++ }; ++ ++ // Callers can provide this hook to run code right before the policy ++ // is passed to the BPF compiler and the sandbox is engaged. If ++ // pre_sandbox_hook() returns true, the sandbox will be engaged ++ // afterwards, otherwise the process is terminated. ++ using PreSandboxHook = base::OnceCallback; ++ ++ // Get our singleton instance. ++ static SandboxLinux* GetInstance(); ++ ++ SandboxLinux(const SandboxLinux&) = delete; ++ SandboxLinux& operator=(const SandboxLinux&) = delete; ++ ++ bool SetPledge(const char *pstring, const char *ppath); ++ bool SetUnveil(const std::string process_type, sandbox::mojom::Sandbox sandbox_type); ++ ++ // Do some initialization that can only be done before any of the sandboxes ++ // are enabled. If using the setuid sandbox, this should be called manually ++ // before the setuid sandbox is engaged. ++ // Security: When this runs, it is imperative that either InitializeSandbox() ++ // runs as well or that all file descriptors returned in ++ // GetFileDescriptorsToClose() get closed. ++ // Otherwise file descriptors that bypass the security of the setuid sandbox ++ // would be kept open. One must be particularly careful if a process performs ++ // a fork(). ++ void PreinitializeSandbox(sandbox::mojom::Sandbox sandbox_type); ++ ++ // Check that the current process is the init process of a new PID ++ // namespace and then proceed to drop access to the file system by using ++ // a new unprivileged namespace. This is a layer-1 sandbox. ++ // In order for this sandbox to be effective, it must be "sealed" by calling ++ // InitializeSandbox(). ++ void EngageNamespaceSandbox(bool from_zygote); ++ ++ // Return a list of file descriptors to close if PreinitializeSandbox() ran ++ // but InitializeSandbox() won't. Avoid using. ++ // TODO(jln): get rid of this hack. ++ std::vector GetFileDescriptorsToClose(); ++ ++ // Seal an eventual layer-1 sandbox and initialize the layer-2 sandbox with ++ // an adequate policy depending on the process type and command line ++ // arguments. ++ // Currently the layer-2 sandbox is composed of seccomp-bpf and address space ++ // limitations. ++ // This function should only be called without any thread running. ++ bool InitializeSandbox(sandbox::mojom::Sandbox sandbox_type, ++ PreSandboxHook hook, ++ const Options& options); ++ ++ // Stop |thread| in a way that can be trusted by the sandbox. ++ void StopThread(base::Thread* thread); ++ ++ // Returns the status of the renderer, worker and ppapi sandbox. Can only ++ // be queried after going through PreinitializeSandbox(). This is a bitmask ++ // and uses the constants defined in "enum Status" above. Since the ++ // status needs to be provided before the sandboxes are actually started, ++ // this returns what will actually happen once InitializeSandbox() ++ // is called from inside these processes. ++ int GetStatus(); ++ ++ static std::string GetSandboxTypeInEnglish(sandbox::mojom::Sandbox sandbox_type); ++ ++ // Returns true if the current process is single-threaded or if the number ++ // of threads cannot be determined. ++ bool IsSingleThreaded() const; ++ ++ // Returns true if we started Seccomp BPF. ++ bool seccomp_bpf_started() const; ++ ++ // Returns true if unveil(2) is used. ++ bool unveil_initialized() const; ++ ++ // Check the policy and eventually start the seccomp-bpf sandbox. This should ++ // never be called with threads started. If we detect that threads have ++ // started we will crash. ++ bool StartSeccompBPF(sandbox::mojom::Sandbox sandbox_type, ++ PreSandboxHook hook, ++ const Options& options); ++ ++ // Limit the address space of the current process (and its children) to make ++ // some vulnerabilities harder to exploit. Writes the errno due to setrlimit ++ // (including 0 if no error) into |error|. ++ bool LimitAddressSpace(int* error); ++ ++ // Returns a file descriptor to proc. The file descriptor is no longer valid ++ // after the sandbox has been sealed. ++ int proc_fd() const { ++ DCHECK_NE(-1, proc_fd_); ++ return proc_fd_; ++ } ++ ++#if BUILDFLAG(USING_SANITIZER) ++ __sanitizer_sandbox_arguments* sanitizer_args() const { ++ return sanitizer_args_.get(); ++ }; ++#endif ++ ++ // A BrokerProcess is a helper that is started before the sandbox is engaged, ++ // typically from a pre-sandbox hook, that will serve requests to access ++ // files over an IPC channel. The client of this runs from a SIGSYS handler ++ // triggered by the seccomp-bpf sandbox. ++ // |client_sandbox_policy| is the policy being run by the client, and is ++ // used to derive the equivalent broker-side policy. ++ // |broker_side_hook| is an alternate pre-sandbox hook to be run before the ++ // broker itself gets sandboxed, to which the broker side policy and ++ // |options| are passed. ++ // Crashes the process if the broker can not be started since continuation ++ // is impossible (and presumably unsafe). ++ // This should never be destroyed, as after the sandbox is started it is ++ // vital to the process. ++#if 0 ++ void StartBrokerProcess( ++ const sandbox::syscall_broker::BrokerCommandSet& allowed_command_set, ++ std::vector permissions, ++ PreSandboxHook broker_side_hook, ++ const Options& options); ++ ++ sandbox::syscall_broker::BrokerProcess* broker_process() const { ++ return broker_process_; ++ } ++#endif ++ ++ private: ++ friend struct base::DefaultSingletonTraits; ++ ++ SandboxLinux(); ++ ~SandboxLinux(); ++ ++ // We must have been pre_initialized_ before using these. ++ bool seccomp_bpf_supported() const; ++ bool seccomp_bpf_with_tsync_supported() const; ++ ++ // Returns true if it can be determined that the current process has open ++ // directories that are not managed by the SandboxLinux class. This would ++ // be a vulnerability as it would allow to bypass the setuid sandbox. ++ bool HasOpenDirectories() const; ++ ++ // The last part of the initialization is to make sure any temporary "hole" ++ // in the sandbox is closed. For now, this consists of closing proc_fd_. ++ void SealSandbox(); ++ ++ // GetStatus() makes promises as to how the sandbox will behave. This ++ // checks that no promises have been broken. ++ void CheckForBrokenPromises(sandbox::mojom::Sandbox sandbox_type); ++ ++ // Stop |thread| and make sure it does not appear in /proc/self/tasks/ ++ // anymore. ++ void StopThreadAndEnsureNotCounted(base::Thread* thread) const; ++ ++ // A file descriptor to /proc. It's dangerous to have it around as it could ++ // allow for sandbox bypasses. It needs to be closed before we consider ++ // ourselves sandboxed. ++ int proc_fd_; ++ ++ bool seccomp_bpf_started_; ++ bool unveil_initialized_; ++ // The value returned by GetStatus(). Gets computed once and then cached. ++ int sandbox_status_flags_; ++ // Did PreinitializeSandbox() run? ++ bool pre_initialized_; ++ bool seccomp_bpf_supported_; // Accurate if pre_initialized_. ++ bool seccomp_bpf_with_tsync_supported_; // Accurate if pre_initialized_. ++ bool yama_is_enforcing_; // Accurate if pre_initialized_. ++ bool initialize_sandbox_ran_; // InitializeSandbox() was called. ++#if BUILDFLAG(USING_SANITIZER) ++ std::unique_ptr<__sanitizer_sandbox_arguments> sanitizer_args_; ++#endif ++ sandbox::syscall_broker::BrokerProcess* broker_process_; // Leaked as global. ++}; ++ ++} // namespace policy ++} // namespace sandbox ++ ++#endif // SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_ diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_sandbox.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_sandbox.cc new file mode 100644 index 000000000000..e285a9b7ef04 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_sandbox.cc @@ -0,0 +1,22 @@ +--- src/3rdparty/chromium/sandbox/policy/sandbox.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/sandbox/policy/sandbox.cc +@@ -17,6 +17,10 @@ + #include "sandbox/policy/linux/sandbox_linux.h" + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + ++#if BUILDFLAG(IS_BSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#endif // BUILDFLAG(IS_BSD) ++ + #if BUILDFLAG(IS_MAC) + #include "sandbox/mac/seatbelt.h" + #endif // BUILDFLAG(IS_MAC) +@@ -30,7 +34,7 @@ namespace policy { + namespace sandbox { + namespace policy { + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + bool Sandbox::Initialize(sandbox::mojom::Sandbox sandbox_type, + SandboxLinux::PreSandboxHook hook, + const SandboxLinux::Options& options) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_sandbox.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_sandbox.h new file mode 100644 index 000000000000..24c9df2ea9fb --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_sandbox.h @@ -0,0 +1,22 @@ +--- src/3rdparty/chromium/sandbox/policy/sandbox.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/sandbox/policy/sandbox.h +@@ -12,6 +12,10 @@ + #include "sandbox/policy/linux/sandbox_linux.h" + #endif + ++#if BUILDFLAG(IS_BSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#endif ++ + namespace sandbox { + namespace mojom { + enum class Sandbox; +@@ -32,7 +36,7 @@ class SANDBOX_POLICY_EXPORT Sandbox { + + class SANDBOX_POLICY_EXPORT Sandbox { + public: +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + static bool Initialize(sandbox::mojom::Sandbox sandbox_type, + SandboxLinux::PreSandboxHook hook, + const SandboxLinux::Options& options); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_sandbox__type.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_sandbox__type.cc new file mode 100644 index 000000000000..ca051cc58cba --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_sandbox__type.cc @@ -0,0 +1,105 @@ +--- src/3rdparty/chromium/sandbox/policy/sandbox_type.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/sandbox/policy/sandbox_type.cc +@@ -39,7 +39,7 @@ bool IsUnsandboxedSandboxType(Sandbox sandbox_type) { + #endif + case Sandbox::kAudio: + return false; +-#if BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + case Sandbox::kVideoCapture: + return false; + #endif +@@ -62,7 +62,7 @@ bool IsUnsandboxedSandboxType(Sandbox sandbox_type) { + case Sandbox::kMirroring: + case Sandbox::kNaClLoader: + #endif +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + case Sandbox::kHardwareVideoDecoding: + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) + #if BUILDFLAG(IS_CHROMEOS_ASH) +@@ -72,8 +72,10 @@ bool IsUnsandboxedSandboxType(Sandbox sandbox_type) { + case Sandbox::kLibassistant: + #endif // BUILDFLAG(ENABLE_CROS_LIBASSISTANT) + #endif // // BUILDFLAG(IS_CHROMEOS_ASH) +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) ++#if !BUILDFLAG(IS_BSD) + case Sandbox::kZygoteIntermediateSandbox: ++#endif + case Sandbox::kScreenAI: + #endif + case Sandbox::kSpeechRecognition: +@@ -125,7 +127,7 @@ void SetCommandLineFlagsForSandboxType(base::CommandLi + #endif + case Sandbox::kPrintCompositor: + case Sandbox::kAudio: +-#if BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + case Sandbox::kVideoCapture: + #endif + #if BUILDFLAG(IS_WIN) +@@ -136,7 +138,7 @@ void SetCommandLineFlagsForSandboxType(base::CommandLi + case Sandbox::kMediaFoundationCdm: + case Sandbox::kWindowsSystemProxyResolver: + #endif // BUILDFLAG(IS_WIN) +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + case Sandbox::kHardwareVideoDecoding: + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) + #if BUILDFLAG(IS_CHROMEOS_ASH) +@@ -149,7 +151,7 @@ void SetCommandLineFlagsForSandboxType(base::CommandLi + #if BUILDFLAG(IS_MAC) + case Sandbox::kMirroring: + #endif // BUILDFLAG(IS_MAC) +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + case Sandbox::kScreenAI: + #endif + case Sandbox::kSpeechRecognition: +@@ -255,7 +257,7 @@ std::string StringFromUtilitySandboxType(Sandbox sandb + return switches::kUtilitySandbox; + case Sandbox::kAudio: + return switches::kAudioSandbox; +-#if BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + case Sandbox::kVideoCapture: + return switches::kVideoCaptureSandbox; + #endif +@@ -265,7 +267,7 @@ std::string StringFromUtilitySandboxType(Sandbox sandb + return switches::kServiceSandboxWithJit; + case Sandbox::kSpeechRecognition: + return switches::kSpeechRecognitionSandbox; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + case Sandbox::kScreenAI: + return switches::kScreenAISandbox; + #endif +@@ -285,7 +287,7 @@ std::string StringFromUtilitySandboxType(Sandbox sandb + case Sandbox::kMirroring: + return switches::kMirroringSandbox; + #endif +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + case Sandbox::kHardwareVideoDecoding: + return switches::kHardwareVideoDecodingSandbox; + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) +@@ -369,15 +371,15 @@ sandbox::mojom::Sandbox UtilitySandboxTypeFromString( + return Sandbox::kAudio; + if (sandbox_string == switches::kSpeechRecognitionSandbox) + return Sandbox::kSpeechRecognition; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (sandbox_string == switches::kScreenAISandbox) + return Sandbox::kScreenAI; + #endif +-#if BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + if (sandbox_string == switches::kVideoCaptureSandbox) + return Sandbox::kVideoCapture; + #endif +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + if (sandbox_string == switches::kHardwareVideoDecodingSandbox) + return Sandbox::kHardwareVideoDecoding; + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_switches.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_switches.cc new file mode 100644 index 000000000000..fb9472e363fb --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_switches.cc @@ -0,0 +1,22 @@ +--- src/3rdparty/chromium/sandbox/policy/switches.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/sandbox/policy/switches.cc +@@ -52,7 +52,7 @@ const char kMirroringSandbox[] = "mirroring"; + const char kMirroringSandbox[] = "mirroring"; + #endif // BUILDFLAG(IS_MAC) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + const char kHardwareVideoDecodingSandbox[] = "hardware_video_decoding"; + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) + +@@ -99,7 +99,9 @@ const char kNoSandbox[] = "no-sandbox"; + // Meant to be used as a browser-level switch for testing purposes only. + const char kNoSandbox[] = "no-sandbox"; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++const char kDisableUnveil[] = "disable-unveil"; ++ ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Instructs the zygote to launch without a sandbox. Processes forked from this + // type of zygote will apply their own custom sandboxes later. + const char kNoZygoteSandbox[] = "no-zygote-sandbox"; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_switches.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_switches.h new file mode 100644 index 000000000000..90f0efac16cf --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_switches.h @@ -0,0 +1,21 @@ +--- src/3rdparty/chromium/sandbox/policy/switches.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/sandbox/policy/switches.h +@@ -53,7 +53,7 @@ SANDBOX_POLICY_EXPORT extern const char kMirroringSand + SANDBOX_POLICY_EXPORT extern const char kMirroringSandbox[]; + #endif // BUILDFLAG(IS_MAC) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + SANDBOX_POLICY_EXPORT extern const char kHardwareVideoDecodingSandbox[]; + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) + +@@ -75,7 +75,8 @@ SANDBOX_POLICY_EXPORT extern const char kNoSandbox[]; + SANDBOX_POLICY_EXPORT extern const char kGpuSandboxAllowSysVShm[]; + SANDBOX_POLICY_EXPORT extern const char kGpuSandboxFailuresFatal[]; + SANDBOX_POLICY_EXPORT extern const char kNoSandbox[]; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++SANDBOX_POLICY_EXPORT extern const char kDisableUnveil[]; ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + SANDBOX_POLICY_EXPORT extern const char kNoZygoteSandbox[]; + #endif + #if BUILDFLAG(IS_WIN) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_audio_audio__sandbox__hook__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_audio_audio__sandbox__hook__linux.cc new file mode 100644 index 000000000000..a5c7cd9f212f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_audio_audio__sandbox__hook__linux.cc @@ -0,0 +1,31 @@ +--- src/3rdparty/chromium/services/audio/audio_sandbox_hook_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/services/audio/audio_sandbox_hook_linux.cc +@@ -143,6 +143,7 @@ void AddPulseAudioFilePermissions( + } + #endif + ++#if !defined(OS_BSD) + std::vector GetAudioFilePermissions() { + std::vector permissions{ + BrokerFilePermission::ReadOnly("/dev/urandom"), +@@ -171,10 +172,12 @@ void LoadAudioLibraries() { + } + } + } ++#endif + + } // namespace + + bool AudioPreSandboxHook(sandbox::policy::SandboxLinux::Options options) { ++#if !defined(OS_BSD) + LoadAudioLibraries(); + auto* instance = sandbox::policy::SandboxLinux::GetInstance(); + instance->StartBrokerProcess(MakeBrokerCommandSet({ +@@ -194,6 +197,7 @@ bool AudioPreSandboxHook(sandbox::policy::SandboxLinux + // TODO(https://crbug.com/850878) enable namespace sandbox. Currently, if + // enabled, connect() on pulse native socket fails with ENOENT (called from + // pa_context_connect). ++#endif + + return true; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_audio_audio__sandbox__hook__linux.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_audio_audio__sandbox__hook__linux.h new file mode 100644 index 000000000000..683c1e6ebe39 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_audio_audio__sandbox__hook__linux.h @@ -0,0 +1,14 @@ +--- src/3rdparty/chromium/services/audio/audio_sandbox_hook_linux.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/services/audio/audio_sandbox_hook_linux.h +@@ -5,7 +5,11 @@ + #ifndef SERVICES_AUDIO_AUDIO_SANDBOX_HOOK_LINUX_H_ + #define SERVICES_AUDIO_AUDIO_SANDBOX_HOOK_LINUX_H_ + ++#if defined(OS_BSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#else + #include "sandbox/policy/linux/sandbox_linux.h" ++#endif + + namespace audio { + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_cert__verifier_cert__verifier__creation.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_cert__verifier_cert__verifier__creation.cc new file mode 100644 index 000000000000..ae88f9af8384 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_cert__verifier_cert__verifier__creation.cc @@ -0,0 +1,30 @@ +--- src/3rdparty/chromium/services/cert_verifier/cert_verifier_creation.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/services/cert_verifier/cert_verifier_creation.cc +@@ -86,7 +86,7 @@ scoped_refptr CreateOldDefaultWit + scoped_refptr CreateOldDefaultWithoutCaching( + scoped_refptr cert_net_fetcher) { + scoped_refptr verify_proc; +-#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + verify_proc = + net::CertVerifyProc::CreateBuiltinVerifyProc(std::move(cert_net_fetcher)); + #else +@@ -104,7 +104,7 @@ scoped_refptr CreateNewDefaultWit + scoped_refptr cert_net_fetcher) { + scoped_refptr verify_proc; + #if BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED) && \ +- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)) ++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)) + verify_proc = net::CreateCertVerifyProcBuiltin( + std::move(cert_net_fetcher), net::CreateSslSystemTrustStoreChromeRoot()); + #elif BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED) +@@ -122,7 +122,8 @@ bool IsUsingCertNetFetcher() { + #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || \ + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || \ + BUILDFLAG(TRIAL_COMPARISON_CERT_VERIFIER_SUPPORTED) || \ +- BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED) ++ BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED) || \ ++ BUILDFLAG(IS_BSD) + return true; + #else + return false; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_device_geolocation_location__arbitrator.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_device_geolocation_location__arbitrator.cc new file mode 100644 index 000000000000..a1030b49a303 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_device_geolocation_location__arbitrator.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/services/device/geolocation/location_arbitrator.cc.orig 2022-11-08 21:18:48 UTC ++++ src/3rdparty/chromium/services/device/geolocation/location_arbitrator.cc +@@ -164,7 +164,7 @@ LocationArbitrator::NewSystemLocationProvider() { + + std::unique_ptr + LocationArbitrator::NewSystemLocationProvider() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + return nullptr; + #else + return device::NewSystemLocationProvider(main_task_runner_, diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_device_usb_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_device_usb_BUILD.gn new file mode 100644 index 000000000000..2d2392386c38 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_device_usb_BUILD.gn @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/services/device/usb/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/services/device/usb/BUILD.gn +@@ -152,7 +152,7 @@ static_library("usb") { + deps += [ "//device/udev_linux" ] + } + +- if (is_android || is_chromeos || is_linux) { ++ if ((is_android || is_chromeos || is_linux) && !is_bsd) { + sources += [ + "usb_device_handle_usbfs.cc", + "usb_device_handle_usbfs.h", diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_network_network__sandbox__hook__linux.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_network_network__sandbox__hook__linux.cc new file mode 100644 index 000000000000..bf4e1a868e2c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_network_network__sandbox__hook__linux.cc @@ -0,0 +1,26 @@ +--- src/3rdparty/chromium/services/network/network_sandbox_hook_linux.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/services/network/network_sandbox_hook_linux.cc +@@ -26,12 +26,15 @@ sandbox::syscall_broker::BrokerCommandSet GetNetworkBr + }); + } + ++#if !defined(OS_BSD) + std::vector GetNetworkFilePermissions() { + // TODO(tsepez): remove universal permission under filesystem root. + return {BrokerFilePermission::ReadWriteCreateRecursive("/")}; + } ++#endif + + bool NetworkPreSandboxHook(sandbox::policy::SandboxLinux::Options options) { ++#if !defined(OS_BSD) + auto* instance = sandbox::policy::SandboxLinux::GetInstance(); + + instance->StartBrokerProcess( +@@ -39,6 +42,7 @@ bool NetworkPreSandboxHook(sandbox::policy::SandboxLin + sandbox::policy::SandboxLinux::PreSandboxHook(), options); + + instance->EngageNamespaceSandboxIfPossible(); ++#endif + return true; + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_network_network__sandbox__hook__linux.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_network_network__sandbox__hook__linux.h new file mode 100644 index 000000000000..8348e8d9a64c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_network_network__sandbox__hook__linux.h @@ -0,0 +1,14 @@ +--- src/3rdparty/chromium/services/network/network_sandbox_hook_linux.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/services/network/network_sandbox_hook_linux.h +@@ -10,7 +10,11 @@ + #include "base/component_export.h" + #include "sandbox/linux/syscall_broker/broker_command.h" + #include "sandbox/linux/syscall_broker/broker_file_permission.h" ++#if defined(OS_BSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#else + #include "sandbox/policy/linux/sandbox_linux.h" ++#endif + + namespace network { + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc new file mode 100644 index 000000000000..edc6b237d64c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc @@ -0,0 +1,65 @@ +--- src/3rdparty/chromium/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc +@@ -52,7 +52,7 @@ uint32_t CalculatePrivateFootprintKb(const mojom::RawO + uint32_t shared_resident_kb) { + DCHECK(os_dump.platform_private_footprint); + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + uint64_t rss_anon_bytes = os_dump.platform_private_footprint->rss_anon_bytes; + uint64_t vm_swap_bytes = os_dump.platform_private_footprint->vm_swap_bytes; + return (rss_anon_bytes + vm_swap_bytes) / 1024; +@@ -91,7 +91,7 @@ memory_instrumentation::mojom::OSMemDumpPtr CreatePubl + os_dump->is_peak_rss_resettable = internal_os_dump.is_peak_rss_resettable; + os_dump->private_footprint_kb = + CalculatePrivateFootprintKb(internal_os_dump, shared_resident_kb); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + os_dump->private_footprint_swap_kb = + internal_os_dump.platform_private_footprint->vm_swap_bytes / 1024; + #endif +@@ -270,7 +270,7 @@ void QueuedRequestDispatcher::SetUpAndDispatch( + + // On most platforms each process can dump data about their own process + // so ask each process to do so Linux is special see below. +-#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) ++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD) + request->pending_responses.insert({client_info.pid, ResponseType::kOSDump}); + client->RequestOSMemoryDump(request->memory_map_option(), + {base::kNullProcessId}, +@@ -285,7 +285,7 @@ void QueuedRequestDispatcher::SetUpAndDispatch( + + // In some cases, OS stats can only be dumped from a privileged process to + // get around to sandboxing/selinux restrictions (see crbug.com/461788). +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + std::vector pids; + mojom::ClientProcess* browser_client = nullptr; + base::ProcessId browser_client_pid = base::kNullProcessId; +@@ -331,7 +331,7 @@ void QueuedRequestDispatcher::SetUpAndDispatchVmRegion + const OsCallback& os_callback) { + // On Linux, OS stats can only be dumped from a privileged process to + // get around to sandboxing/selinux restrictions (see crbug.com/461788). +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + mojom::ClientProcess* browser_client = nullptr; + base::ProcessId browser_client_pid = 0; + for (const auto& client_info : clients) { +@@ -382,7 +382,7 @@ QueuedRequestDispatcher::FinalizeVmRegionRequest( + // each client process provides 1 OS dump, % the case where the client is + // disconnected mid dump. + OSMemDumpMap& extra_os_dumps = response.second.os_dumps; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + for (auto& kv : extra_os_dumps) { + auto pid = kv.first == base::kNullProcessId ? original_pid : kv.first; + DCHECK(results.find(pid) == results.end()); +@@ -444,7 +444,7 @@ void QueuedRequestDispatcher::Finalize(QueuedRequest* + // crash). In the latter case (OS_LINUX) we expect the full map to come + // from the browser process response. + OSMemDumpMap& extra_os_dumps = response.second.os_dumps; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + for (const auto& kv : extra_os_dumps) { + auto pid = kv.first == base::kNullProcessId ? original_pid : kv.first; + DCHECK_EQ(pid_to_os_dump[pid], nullptr); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_BUILD.gn new file mode 100644 index 000000000000..254d10fa563e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_BUILD.gn @@ -0,0 +1,16 @@ +--- src/3rdparty/chromium/services/resource_coordinator/public/cpp/memory_instrumentation/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/services/resource_coordinator/public/cpp/memory_instrumentation/BUILD.gn +@@ -29,8 +29,12 @@ component("memory_instrumentation") { + sources += [ "os_metrics_win.cc" ] + } + +- if (is_android || is_linux || is_chromeos) { ++ if ((is_android || is_linux || is_chromeos) && !is_bsd) { + sources += [ "os_metrics_linux.cc" ] ++ } ++ ++ if (is_bsd) { ++ sources += [ "os_metrics_bsd.cc" ] + } + + if (is_fuchsia) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h new file mode 100644 index 000000000000..035cd1b73bc6 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h +@@ -45,7 +45,7 @@ class COMPONENT_EXPORT( + mojom::RawOSMemDump*); + static std::vector GetProcessMemoryMaps(base::ProcessId); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + static void SetProcSmapsForTesting(FILE*); + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || + // BUILDFLAG(IS_ANDROID) +@@ -62,7 +62,7 @@ class COMPONENT_EXPORT( + static std::vector GetProcessModules(base::ProcessId); + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + // Provides information on the dump state of resident pages. These values are + // written to logs. New enum values can be added, but existing enums must + // never be renumbered or deleted and reused. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__bsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__bsd.cc new file mode 100644 index 000000000000..0fe3701e7ad4 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__bsd.cc @@ -0,0 +1,61 @@ +--- src/3rdparty/chromium/services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_bsd.cc.orig 2022-11-07 21:32:28 UTC ++++ src/3rdparty/chromium/services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_bsd.cc +@@ -0,0 +1,58 @@ ++// Copyright 2022 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h" ++ ++#include "base/memory/page_size.h" ++#include "base/process/process.h" ++#include "base/process/process_handle.h" ++ ++#include ++ ++#include ++ ++#if BUILDFLAG(IS_OPENBSD) ++#define vm_rssize info.p_vm_rssize ++#elif BUILDFLAG(IS_FREEBSD) ++#include ++#define vm_rssize info.ki_rssize ++#endif ++ ++namespace memory_instrumentation { ++ ++// static ++bool OSMetrics::FillOSMemoryDump(base::ProcessId pid, ++ mojom::RawOSMemDump* dump) { ++ base::Process process = pid == base::kNullProcessId ++ ? base::Process::Current() ++ : base::Process::Open(pid); ++ const size_t kPageSize = base::GetPageSize(); ++ struct kinfo_proc info; ++ size_t length = sizeof(struct kinfo_proc); ++#if BUILDFLAG(IS_OPENBSD) ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process.Handle(), ++ static_cast(length), 1 }; ++#elif BUILDFLAG(IS_FREEBSD) ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process.Handle() }; ++#endif ++ ++ if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0) ++ return false; ++ ++ dump->resident_set_kb = (vm_rssize * kPageSize) / 1024; ++ dump->platform_private_footprint->rss_anon_bytes = ++ vm_rssize * kPageSize; ++ dump->platform_private_footprint->vm_swap_bytes = 0; ++ ++ return true; ++} ++ ++// static ++std::vector OSMetrics::GetProcessMemoryMaps( ++ base::ProcessId) { ++ NOTIMPLEMENTED(); ++ return std::vector(); ++} ++ ++} // namespace memory_instrumentation diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_skia_ext_SkMemory__new__handler.cpp b/www/qt6-webengine/files/patch-src_3rdparty_chromium_skia_ext_SkMemory__new__handler.cpp new file mode 100644 index 000000000000..56dc4b437c54 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_skia_ext_SkMemory__new__handler.cpp @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/skia/ext/SkMemory_new_handler.cpp.orig 2022-11-06 21:41:22 UTC ++++ src/3rdparty/chromium/skia/ext/SkMemory_new_handler.cpp +@@ -79,7 +79,7 @@ static void* malloc_nothrow(size_t size) { + // TODO(b.kelemen): we should always use UncheckedMalloc but currently it + // doesn't work as intended everywhere. + void* result; +-#if BUILDFLAG(IS_IOS) ++#if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_BSD) + result = malloc(size); + #else + // It's the responsibility of the caller to check the return value. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_abseil-cpp_absl_base_config.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_abseil-cpp_absl_base_config.h new file mode 100644 index 000000000000..6c44edbe6cba --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_abseil-cpp_absl_base_config.h @@ -0,0 +1,21 @@ +--- src/3rdparty/chromium/third_party/abseil-cpp/absl/base/config.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/abseil-cpp/absl/base/config.h +@@ -448,7 +448,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != + // POSIX.1-2001. + #ifdef ABSL_HAVE_SCHED_YIELD + #error ABSL_HAVE_SCHED_YIELD cannot be directly set +-#elif defined(__linux__) || defined(__ros__) || defined(__native_client__) ++#elif defined(__linux__) || defined(__ros__) || defined(__native_client__) || \ ++ defined(__OpenBSD__) || defined(__FreeBSD__) + #define ABSL_HAVE_SCHED_YIELD 1 + #endif + +@@ -463,7 +464,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != + // platforms. + #ifdef ABSL_HAVE_SEMAPHORE_H + #error ABSL_HAVE_SEMAPHORE_H cannot be directly set +-#elif defined(__linux__) || defined(__ros__) ++#elif defined(__linux__) || defined(__ros__) || defined(__OpenBSD__) || defined(__FreeBSD__) + #define ABSL_HAVE_SEMAPHORE_H 1 + #endif + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_abseil-cpp_absl_base_internal_sysinfo.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_abseil-cpp_absl_base_internal_sysinfo.cc new file mode 100644 index 000000000000..2e39cae41890 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_abseil-cpp_absl_base_internal_sysinfo.cc @@ -0,0 +1,23 @@ +--- src/3rdparty/chromium/third_party/abseil-cpp/absl/base/internal/sysinfo.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +@@ -30,7 +30,7 @@ + #include + #endif + +-#if defined(__APPLE__) || defined(__FreeBSD__) ++#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) + #include + #endif + +@@ -308,9 +308,11 @@ static double GetNominalCPUFrequency() { + // a new mode (turbo mode). Essentially, those frequencies cannot + // always be relied upon. The same reasons apply to /proc/cpuinfo as + // well. ++#if !defined(__OpenBSD__) && !defined(__FreeBSD__) // pledge violation + if (ReadLongFromFile("/sys/devices/system/cpu/cpu0/tsc_freq_khz", &freq)) { + return freq * 1e3; // Value is kHz. + } ++#endif + + #if defined(ABSL_INTERNAL_UNSCALED_CYCLECLOCK_FREQUENCY_IS_CPU_FREQUENCY) + // On these platforms, the TSC frequency is the nominal CPU diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_abseil-cpp_absl_debugging_internal_elf__mem__image.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_abseil-cpp_absl_debugging_internal_elf__mem__image.h new file mode 100644 index 000000000000..0a49d4a13d26 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_abseil-cpp_absl_debugging_internal_elf__mem__image.h @@ -0,0 +1,12 @@ +--- src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +@@ -32,7 +32,8 @@ + #endif + + #if defined(__ELF__) && !defined(__OpenBSD__) && !defined(__QNX__) && \ +- !defined(__native_client__) && !defined(__asmjs__) && !defined(__wasm__) ++ !defined(__native_client__) && !defined(__asmjs__) && !defined(__wasm__) && \ ++ !defined(__FreeBSD__) + #define ABSL_HAVE_ELF_MEM_IMAGE 1 + #endif + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_abseil-cpp_absl_time_internal_cctz_src_time__zone__format.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_abseil-cpp_absl_time_internal_cctz_src_time__zone__format.cc new file mode 100644 index 000000000000..f7e6d6fc09fc --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_abseil-cpp_absl_time_internal_cctz_src_time__zone__format.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +@@ -19,7 +19,7 @@ + #endif + + #if defined(HAS_STRPTIME) && HAS_STRPTIME +-#if !defined(_XOPEN_SOURCE) ++#if !defined(_XOPEN_SOURCE) && !defined(__OpenBSD__) && !defined(__FreeBSD__) + #define _XOPEN_SOURCE // Definedness suffices for strptime. + #endif + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_BUILD.gn new file mode 100644 index 000000000000..ee728b89f622 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_BUILD.gn @@ -0,0 +1,29 @@ +--- src/3rdparty/chromium/third_party/angle/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/angle/BUILD.gn +@@ -213,7 +213,6 @@ config("extra_warnings") { + "-Wtautological-type-limit-compare", + "-Wundefined-reinterpret-cast", + "-Wunneeded-internal-declaration", +- "-Wunused-but-set-variable", + "-Wsuggest-destructor-override", + "-Wsuggest-override", + +@@ -391,7 +390,7 @@ angle_static_library("angle_common") { + all_dependent_configs = [ ":angle_disable_pool_alloc" ] + } + +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + libs = [ "dl" ] + } + +@@ -512,6 +511,9 @@ angle_static_library("angle_gpu_info_util") { + "Xi", + "Xext", + ] ++ if (is_bsd) { ++ libs += [ "GL" ] ++ } + } + } + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_common_platform.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_common_platform.h new file mode 100644 index 000000000000..dd70978715ad --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_common_platform.h @@ -0,0 +1,19 @@ +--- src/3rdparty/chromium/third_party/angle/src/common/platform.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/angle/src/common/platform.h +@@ -26,7 +26,15 @@ + #elif defined(__linux__) || defined(EMSCRIPTEN) + # define ANGLE_PLATFORM_LINUX 1 + # define ANGLE_PLATFORM_POSIX 1 +-#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || \ ++#elif defined(__OpenBSD__) ++# define ANGLE_PLATFORM_OPENBSD 1 ++# define ANGLE_PLATFORM_POSIX 1 ++# define ANGLE_PLATFORM_BSD 1 ++#elif defined(__FreeBSD__) ++# define ANGLE_PLATFORM_FREEBSD 1 ++# define ANGLE_PLATFORM_POSIX 1 ++# define ANGLE_PLATFORM_BSD 1 ++#elif defined(__NetBSD__) || \ + defined(__DragonFly__) || defined(__sun) || defined(__GLIBC__) || defined(__GNU__) || \ + defined(__QNX__) || defined(__Fuchsia__) || defined(__HAIKU__) + # define ANGLE_PLATFORM_POSIX 1 diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_common_system__utils__posix.cpp b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_common_system__utils__posix.cpp new file mode 100644 index 000000000000..8dd1d060107c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_common_system__utils__posix.cpp @@ -0,0 +1,12 @@ +--- src/3rdparty/chromium/third_party/angle/src/common/system_utils_posix.cpp.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/angle/src/common/system_utils_posix.cpp +@@ -201,7 +201,9 @@ void *OpenSystemLibraryWithExtensionAndGetError(const + int extraFlags = 0; + if (searchType == SearchType::AlreadyLoaded) + { ++#if !defined(__OpenBSD__) + extraFlags = RTLD_NOLOAD; ++#endif + } + + std::string fullPath = directory + libraryName; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__internal.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__internal.h new file mode 100644 index 000000000000..37a61ca7b1af --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__internal.h @@ -0,0 +1,16 @@ +--- src/3rdparty/chromium/third_party/angle/src/gpu_info_util/SystemInfo_internal.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/angle/src/gpu_info_util/SystemInfo_internal.h +@@ -14,6 +14,13 @@ namespace angle + namespace angle + { + ++#if defined(__OpenBSD__) || defined(__FreeBSD__) ++bool CollectMesaCardInfo(std::vector *devices); ++#if defined(__FreeBSD__) ++bool GetPCIDevicesFreeBSD(std::vector *devices); ++#endif ++#endif ++ + // Defined in SystemInfo_libpci when GPU_INFO_USE_LIBPCI is defined. + bool GetPCIDevicesWithLibPCI(std::vector *devices); + // Defined in SystemInfo_x11 when GPU_INFO_USE_X11 is defined. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp new file mode 100644 index 000000000000..eed12c6d7610 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp @@ -0,0 +1,90 @@ +--- src/3rdparty/chromium/third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp.orig 2022-06-08 06:40:31 UTC ++++ src/3rdparty/chromium/third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp +@@ -12,6 +12,11 @@ + #include + #include + ++#if defined(__FreeBSD__) ++#include ++#include ++#endif ++ + #include "common/angleutils.h" + #include "common/debug.h" + +@@ -85,6 +90,75 @@ struct LibPCI : private angle::NonCopyable + }; + + } // anonymous namespace ++ ++#if defined(__FreeBSD__) ++// Adds an entry per PCI GPU found and fills the device and vendor ID. ++bool GetPCIDevicesFreeBSD(std::vector *devices) ++{ ++ int fd; ++ struct pci_conf_io conf; ++ struct pci_conf *matches; ++ uint32_t offset = 0; ++ ++ fd = open("/dev/pci", O_RDONLY); ++ if (fd < 0) ++ return false; ++ ++ matches = new struct pci_conf[32]; ++ conf.generation = 0; ++ do { ++ conf.pat_buf_len = 0; ++ conf.num_patterns = 0; ++ conf.patterns = NULL; ++ conf.match_buf_len = 32 * sizeof(struct pci_conf); ++ conf.num_matches = 32; ++ conf.matches = matches; ++ conf.offset = offset; ++ conf.status = PCI_GETCONF_ERROR; ++ if (ioctl(fd, PCIOCGETCONF, &conf) < 0) { ++ if (errno == ENODEV) ++ break; ++ } ++ /* PCI_GETCONF_LIST_CHANGED would require us to start over. */ ++ if (conf.status == PCI_GETCONF_ERROR || conf.status == PCI_GETCONF_LIST_CHANGED) { ++ break; ++ } ++ ++ for (unsigned int i = 0; i < conf.num_matches; i++) { ++ uint16_t device_class = (matches[i].pc_class << 8) | matches[i].pc_subclass; ++ ++ // Skip non-GPU devices ++ switch (device_class) ++ { ++ case PCI_CLASS_DISPLAY_VGA: ++ case PCI_CLASS_DISPLAY_XGA: ++ case PCI_CLASS_DISPLAY_3D: ++ break; ++ default: ++ continue; ++ } ++ ++ // Skip unknown devices ++ if (matches[i].pc_vendor == 0 || matches[i].pc_device == 0) { ++ continue; ++ } ++ ++ GPUDeviceInfo info; ++ info.vendorId = matches[i].pc_vendor; ++ info.deviceId = matches[i].pc_device; ++ ++ devices->push_back(info); ++ } ++ offset += conf.num_matches; ++ } while (conf.status == PCI_GETCONF_MORE_DEVS); ++ ++ delete[] matches; ++ ++ close(fd); ++ ++ return true; ++} ++#endif + + // Adds an entry per PCI GPU found and fills the device and vendor ID. + bool GetPCIDevicesWithLibPCI(std::vector *devices) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp new file mode 100644 index 000000000000..7677d46dcdd5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp @@ -0,0 +1,35 @@ +--- src/3rdparty/chromium/third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp +@@ -71,6 +71,24 @@ bool GetSystemInfo(SystemInfo *info) + + bool GetSystemInfo(SystemInfo *info) + { ++#if defined(__OpenBSD__) || defined(__FreeBSD__) ++ if (!CollectMesaCardInfo(&(info->gpus))) ++ { ++#if defined(__FreeBSD__) ++ if (!GetPCIDevicesFreeBSD(&(info->gpus))) ++ { ++#endif ++#if defined(ANGLE_USE_VULKAN_SYSTEM_INFO) ++ // Try vulkan backend to get GPU info ++ return GetSystemInfoVulkan(info); ++#else ++ return false; ++#endif ++#if defined(__FreeBSD__) ++ } ++#endif ++ } ++#else + if (!GetPCIDevicesWithLibPCI(&(info->gpus))) + { + #if defined(ANGLE_USE_VULKAN_SYSTEM_INFO) +@@ -85,6 +103,7 @@ bool GetSystemInfo(SystemInfo *info) + { + return false; + } ++#endif + + GetDualGPUInfo(info); + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp new file mode 100644 index 000000000000..00299a64a0ff --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp @@ -0,0 +1,60 @@ +--- src/3rdparty/chromium/third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp +@@ -8,6 +8,10 @@ + + #include "gpu_info_util/SystemInfo_internal.h" + ++#if defined(__OpenBSD__) || defined(__FreeBSD__) ++#include ++#include ++#endif + #include + + #include "common/debug.h" +@@ -18,8 +22,46 @@ + # error SystemInfo_x11.cpp compiled without GPU_INFO_USE_X11 + #endif + ++#if defined(__OpenBSD__) || defined(__FreeBSD__) ++#define GLX_RENDERER_VENDOR_ID_MESA 0x8183 ++#define GLX_RENDERER_DEVICE_ID_MESA 0x8184 ++#endif ++ + namespace angle + { ++ ++#if defined(__OpenBSD__) || defined(__FreeBSD__) ++bool CollectMesaCardInfo(std::vector *devices) ++{ ++ unsigned int vid[3], did[3]; ++ ++ Display *display = XOpenDisplay(NULL); ++ if (!display) { ++ return false; ++ } ++ ++ PFNGLXQUERYRENDERERINTEGERMESAPROC queryInteger = ++ (PFNGLXQUERYRENDERERINTEGERMESAPROC) glXGetProcAddressARB((const GLubyte *) ++ "glXQueryRendererIntegerMESA"); ++ ++ if (!queryInteger) ++ return false; ++ ++ bool vendor_ret = ++ queryInteger(display, 0, 0, GLX_RENDERER_VENDOR_ID_MESA, vid); ++ bool device_ret = ++ queryInteger(display, 0, 0, GLX_RENDERER_DEVICE_ID_MESA, did); ++ ++ if (vendor_ret && device_ret) { ++ GPUDeviceInfo info; ++ info.vendorId = vid[0]; ++ info.deviceId = did[0]; ++ devices->push_back(info); ++ } ++ ++ return true; ++} ++#endif + + bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version) + { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_Display.cpp b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_Display.cpp new file mode 100644 index 000000000000..795a672c5df2 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_Display.cpp @@ -0,0 +1,47 @@ +--- src/3rdparty/chromium/third_party/angle/src/libANGLE/Display.cpp.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/angle/src/libANGLE/Display.cpp +@@ -55,7 +55,7 @@ + # include "libANGLE/renderer/gl/wgl/DisplayWGL.h" + # elif defined(ANGLE_PLATFORM_MACOS) || defined(ANGLE_PLATFORM_IOS) + # include "libANGLE/renderer/gl/apple/DisplayApple_api.h" +-# elif defined(ANGLE_PLATFORM_LINUX) ++# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD) + # include "libANGLE/renderer/gl/egl/DisplayEGL.h" + # if defined(ANGLE_USE_GBM) + # include "libANGLE/renderer/gl/egl/gbm/DisplayGbm.h" +@@ -328,7 +328,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di + impl = rx::CreateDisplayCGLOrEAGL(state); + break; + +-# elif defined(ANGLE_PLATFORM_LINUX) ++# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD) + # if defined(ANGLE_USE_GBM) + if (platformType == 0) + { +@@ -373,7 +373,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di + #if defined(ANGLE_ENABLE_OPENGL) + # if defined(ANGLE_PLATFORM_WINDOWS) + impl = new rx::DisplayWGL(state); +-# elif defined(ANGLE_PLATFORM_LINUX) ++# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD) + # if defined(ANGLE_USE_GBM) + if (platformType == 0 || + platformType == EGL_PLATFORM_VULKAN_DISPLAY_MODE_HEADLESS_ANGLE) +@@ -424,7 +424,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di + impl = rx::CreateVulkanWin32Display(state); + } + break; +-# elif defined(ANGLE_PLATFORM_LINUX) ++# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD) + # if defined(ANGLE_USE_X11) + if (platformType == EGL_PLATFORM_X11_EXT && rx::IsVulkanXcbDisplayAvailable()) + { +@@ -1932,7 +1932,7 @@ static ClientExtensions GenerateClientExtensions() + extensions.x11Visual = true; + #endif + +-#if defined(ANGLE_PLATFORM_LINUX) ++#if defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD) + extensions.platformANGLEDeviceTypeEGLANGLE = true; + #endif + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_formatutils.cpp b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_formatutils.cpp new file mode 100644 index 000000000000..1a13ed134a25 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_formatutils.cpp @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/angle/src/libANGLE/formatutils.cpp.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/angle/src/libANGLE/formatutils.cpp +@@ -1393,7 +1393,7 @@ static InternalFormatInfoMap BuildInternalFormatInfoMa + AddYUVFormat(&map, GL_G8_B8R8_2PLANE_420_UNORM_ANGLE, true, 8, 8, 8, 0, 0, GL_G8_B8R8_2PLANE_420_UNORM_ANGLE, GL_UNSIGNED_BYTE, GL_UNSIGNED_NORMALIZED, false, RequireExt<&Extensions::yuvInternalFormatANGLE>, RequireExt<&Extensions::yuvInternalFormatANGLE>, RequireExt<&Extensions::yuvInternalFormatANGLE>, NeverSupported, NeverSupported); + AddYUVFormat(&map, GL_G8_B8_R8_3PLANE_420_UNORM_ANGLE, true, 8, 8, 8, 0, 0, GL_G8_B8_R8_3PLANE_420_UNORM_ANGLE, GL_UNSIGNED_BYTE, GL_UNSIGNED_NORMALIZED, false, RequireExt<&Extensions::yuvInternalFormatANGLE>, RequireExt<&Extensions::yuvInternalFormatANGLE>, RequireExt<&Extensions::yuvInternalFormatANGLE>, NeverSupported, NeverSupported); + +-#if defined(ANGLE_PLATFORM_LINUX) ++#if defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD) + // From GL_OES_required_internalformat + // The |shared| bit shouldn't be 2. But given this hits assertion when bits + // are checked, it's fine to have this bit set as 2 as a workaround. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_driver__utils.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_driver__utils.h new file mode 100644 index 000000000000..1a055e7b9b83 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_driver__utils.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/driver_utils.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/driver_utils.h +@@ -179,7 +179,7 @@ inline bool IsLinux() + + inline bool IsLinux() + { +-#if defined(ANGLE_PLATFORM_LINUX) ++#if defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD) + return true; + #else + return false; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_gl_glx_FunctionsGLX.cpp b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_gl_glx_FunctionsGLX.cpp new file mode 100644 index 000000000000..45b74226747f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_gl_glx_FunctionsGLX.cpp @@ -0,0 +1,15 @@ +--- src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp +@@ -144,10 +144,10 @@ bool FunctionsGLX::initialize(Display *xDisplay, int s + // which a GLXWindow was ever created. + if (!sLibHandle) + { +- sLibHandle = dlopen("libGL.so.1", RTLD_NOW); ++ sLibHandle = dlopen("libGL.so", RTLD_NOW); + if (!sLibHandle) + { +- *errorString = std::string("Could not dlopen libGL.so.1: ") + dlerror(); ++ *errorString = std::string("Could not dlopen libGL.so: ") + dlerror(); + return false; + } + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h new file mode 100644 index 000000000000..4eba9fd1c93e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h +@@ -23,7 +23,7 @@ DisplayImpl *CreateVulkanWin32Display(const egl::Displ + DisplayImpl *CreateVulkanWin32Display(const egl::DisplayState &state); + #endif // defined(ANGLE_PLATFORM_WINDOWS) + +-#if defined(ANGLE_PLATFORM_LINUX) ++#if defined(ANGLE_PLATFORM_POSIX) + bool IsVulkanXcbDisplayAvailable(); + DisplayImpl *CreateVulkanXcbDisplay(const egl::DisplayState &state); + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_util_BUILD.gn b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_util_BUILD.gn new file mode 100644 index 000000000000..9bfff5b95763 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_angle_util_BUILD.gn @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/angle/util/BUILD.gn.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/angle/util/BUILD.gn +@@ -203,7 +203,7 @@ foreach(is_shared_library, + ] + libs = [] + +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + libs += [ + "rt", + "dl", diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc new file mode 100644 index 000000000000..4fad9004815b --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc +@@ -64,7 +64,7 @@ bool StructTraitsaccept_languages)) + return false; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (!data.ReadSystemFontFamilyName(&out->system_font_family_name)) + return false; + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_public_common_renderer__preferences_renderer__preferences.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_public_common_renderer__preferences_renderer__preferences.h new file mode 100644 index 000000000000..faa8a2d1cfa7 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_public_common_renderer__preferences_renderer__preferences.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/public/common/renderer_preferences/renderer_preferences.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/public/common/renderer_preferences/renderer_preferences.h +@@ -50,7 +50,7 @@ struct BLINK_COMMON_EXPORT RendererPreferences { + bool webrtc_allow_legacy_tls_protocols{false}; + UserAgentOverride user_agent_override; + std::string accept_languages; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + std::string system_font_family_name; + #endif + #if BUILDFLAG(IS_WIN) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h new file mode 100644 index 000000000000..fab07a753b55 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h +@@ -157,7 +157,7 @@ struct BLINK_COMMON_EXPORT + return data.accept_languages; + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + static const std::string& system_font_family_name( + const ::blink::RendererPreferences& data) { + return data.system_font_family_name; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_public_platform_web__vector.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_public_platform_web__vector.h new file mode 100644 index 000000000000..9b37cbc4fdb1 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_public_platform_web__vector.h @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/public/platform/web_vector.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/public/platform/web_vector.h +@@ -81,7 +81,7 @@ class WebVector { + // The vector can be populated using reserve() and emplace_back(). + WebVector() = default; + +-#if defined(ARCH_CPU_64_BITS) ++#if defined(ARCH_CPU_64_BITS) || defined(__OpenBSD__) + // Create a vector with |size| default-constructed elements. We define + // a constructor with size_t otherwise we'd have a duplicate define. + explicit WebVector(size_t size) : data_(size) {} diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py new file mode 100644 index 000000000000..fcc8bcb3596f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py +@@ -28,7 +28,7 @@ def init(root_src_dir, enable_style_format=True): + root_src_dir = os.path.abspath(root_src_dir) + + # Determine //buildtools// directory +- if sys.platform.startswith("linux"): ++ if sys.platform.startswith(("linux","openbsd","freebsd")): + platform = "linux64" + exe_suffix = "" + elif sys.platform.startswith("darwin"): diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_build_scripts_run__with__pythonpath.py b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_build_scripts_run__with__pythonpath.py new file mode 100644 index 000000000000..957c6c7cadad --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_build_scripts_run__with__pythonpath.py @@ -0,0 +1,10 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/run_with_pythonpath.py.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/run_with_pythonpath.py +@@ -22,6 +22,7 @@ def main(): + existing_pp = ( + os.pathsep + env['PYTHONPATH']) if 'PYTHONPATH' in env else '' + env['PYTHONPATH'] = os.pathsep.join(python_paths) + existing_pp ++ env['LD_LIBRARY_PATH'] = "${WRKSRC}/out/Release" + sys.exit(subprocess.call([sys.executable] + args, env=env)) + + diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_blink__initializer.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_blink__initializer.cc new file mode 100644 index 000000000000..3f0884353d26 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_blink__initializer.cc @@ -0,0 +1,35 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/controller/blink_initializer.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/controller/blink_initializer.cc +@@ -71,12 +71,12 @@ + #include "third_party/blink/renderer/controller/oom_intervention_impl.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "third_party/blink/renderer/controller/memory_usage_monitor_posix.h" + #endif + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + #include "third_party/blink/renderer/controller/highest_pmf_reporter.h" + #include "third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h" + #endif +@@ -156,7 +156,7 @@ void InitializeCommon(Platform* platform, mojo::Binder + #endif + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + // Initialize UserLevelMemoryPressureSignalGenerator so it starts monitoring. + if (UserLevelMemoryPressureSignalGenerator::Enabled()) + UserLevelMemoryPressureSignalGenerator::Instance(); +@@ -227,7 +227,7 @@ void BlinkInitializer::RegisterInterfaces(mojo::Binder + main_thread->GetTaskRunner()); + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + binders.Add(ConvertToBaseRepeatingCallback( + CrossThreadBindRepeating(&MemoryUsageMonitorPosix::Bind)), + main_thread->GetTaskRunner()); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.cc new file mode 100644 index 000000000000..8fe1f999c908 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.cc @@ -0,0 +1,21 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor_posix.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor_posix.cc +@@ -128,15 +128,17 @@ void MemoryUsageMonitorPosix::SetProcFiles(base::File + + void MemoryUsageMonitorPosix::SetProcFiles(base::File statm_file, + base::File status_file) { ++#if !BUILDFLAG(IS_BSD) + DCHECK(statm_file.IsValid()); + DCHECK(status_file.IsValid()); + DCHECK_EQ(-1, statm_fd_.get()); + DCHECK_EQ(-1, status_fd_.get()); + statm_fd_.reset(statm_file.TakePlatformFile()); + status_fd_.reset(status_file.TakePlatformFile()); ++#endif + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // static + void MemoryUsageMonitorPosix::Bind( + mojo::PendingReceiver receiver) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.h new file mode 100644 index 000000000000..4312f477857c --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.h @@ -0,0 +1,47 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor_posix.h.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor_posix.h +@@ -13,7 +13,7 @@ + #include "third_party/blink/renderer/controller/controller_export.h" + #include "third_party/blink/renderer/controller/memory_usage_monitor.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "third_party/blink/public/mojom/memory_usage_monitor_linux.mojom-blink.h" + #endif + +@@ -22,7 +22,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix + // MemoryUsageMonitor implementation for Android and Linux. + class CONTROLLER_EXPORT MemoryUsageMonitorPosix + : public MemoryUsageMonitor +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + , + public mojom::blink::MemoryUsageMonitorLinux + #endif +@@ -30,7 +30,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix + public: + MemoryUsageMonitorPosix() = default; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + static void Bind( + mojo::PendingReceiver receiver); + #endif +@@ -48,7 +48,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix + uint64_t* vm_size, + uint64_t* vm_hwm_size); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // mojom::MemoryUsageMonitorLinux implementations: + void SetProcFiles(base::File statm_file, base::File status_file) override; + #endif +@@ -66,7 +66,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix + base::ScopedFD statm_fd_; + base::ScopedFD status_fd_; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + mojo::Receiver receiver_{this}; + #endif + }; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_editing_editing__behavior.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_editing_editing__behavior.cc new file mode 100644 index 000000000000..64d7bd92619f --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_editing_editing__behavior.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/core/editing/editing_behavior.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/core/editing/editing_behavior.cc +@@ -280,7 +280,7 @@ bool EditingBehavior::ShouldInsertCharacter(const Keyb + // unexpected behaviour + if (ch < ' ') + return false; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // According to XKB map no keyboard combinations with ctrl key are mapped to + // printable characters, however we need the filter as the DomKey/text could + // contain printable characters. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_exported_web__view__impl.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_exported_web__view__impl.cc new file mode 100644 index 000000000000..cc722a5992a7 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_exported_web__view__impl.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_view_impl.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_view_impl.cc +@@ -405,7 +405,7 @@ SkFontHinting RendererPreferencesToSkiaHinting( + const blink::RendererPreferences& prefs) { + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + if (!prefs.should_antialias_text) { + // When anti-aliasing is off, GTK maps all non-zero hinting settings to + // 'Normal' hinting so we do the same. Otherwise, folks who have 'Slight' +@@ -3168,7 +3168,7 @@ void WebViewImpl::UpdateFontRenderingFromRendererPrefs + renderer_preferences_.use_subpixel_positioning); + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. +-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \ ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)) && \ + !BUILDFLAG(IS_ANDROID) + if (!renderer_preferences_.system_font_family_name.empty()) { + WebFontRenderStyle::SetSystemFontFamily(blink::WebString::FromUTF8( diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_frame_web__frame__test.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_frame_web__frame__test.cc new file mode 100644 index 000000000000..f9cd1f215aac --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_frame_web__frame__test.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/core/frame/web_frame_test.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/core/frame/web_frame_test.cc +@@ -6281,7 +6281,7 @@ TEST_F(WebFrameTest, DISABLED_PositionForPointTest) { + EXPECT_EQ(64, ComputeOffset(layout_object, 1000, 1000)); + } + +-#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) ++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD) + TEST_F(WebFrameTest, SelectRangeStaysHorizontallyAlignedWhenMoved) { + RegisterMockedHttpURLLoad("move_caret.html"); + +@@ -6660,7 +6660,7 @@ TEST_F(CompositedSelectionBoundsTest, SVGTextWithFragm + TEST_F(CompositedSelectionBoundsTest, SVGTextWithFragments) { + RunTest("composited_selection_bounds_svg_text_with_fragments.html"); + } +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #if !BUILDFLAG(IS_ANDROID) + TEST_F(CompositedSelectionBoundsTest, Input) { + web_view_helper_.GetWebView()->GetSettings()->SetDefaultFontSize(16); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc new file mode 100644 index 000000000000..6954accfcdb4 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc +@@ -45,7 +45,7 @@ constexpr base::TimeDelta kEncodeRowSlackBeforeDeadlin + + /* The value is based on user statistics on Nov 2017. */ + #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_WIN)) ++ BUILDFLAG(IS_WIN)) || BUILDFLAG(IS_BSD) + const double kIdleTaskStartTimeoutDelayMs = 1000.0; + #else + const double kIdleTaskStartTimeoutDelayMs = 4000.0; // For ChromeOS, Mobile diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_inspector_inspector__memory__agent.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_inspector_inspector__memory__agent.cc new file mode 100644 index 000000000000..c7b11b3e875e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_inspector_inspector__memory__agent.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_memory_agent.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_memory_agent.cc +@@ -186,7 +186,7 @@ Vector InspectorMemoryAgent::Symbolize( + + Vector InspectorMemoryAgent::Symbolize( + const WebVector& addresses) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // TODO(alph): Move symbolization to the client. + Vector addresses_to_symbolize; + for (size_t i = 0; i < addresses.size(); i++) { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_layout_layout__view.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_layout_layout__view.cc new file mode 100644 index 000000000000..29022e2e70ab --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_layout_layout__view.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/core/layout/layout_view.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/core/layout/layout_view.cc +@@ -65,7 +65,7 @@ + #include "ui/display/screen_info.h" + #include "ui/gfx/geometry/quad_f.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "third_party/blink/renderer/platform/fonts/font_cache.h" + #endif + +@@ -360,7 +360,7 @@ void LayoutView::UpdateLayout() { + DCHECK(!layout_state_); + LayoutState root_layout_state(*this); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // The font code in FontPlatformData does not have a direct connection to the + // document, the frame or anything from which we could retrieve the device + // scale factor. After using zoom for DSF, the GraphicsContext does only ever diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_paint_paint__layer.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_paint_paint__layer.cc new file mode 100644 index 000000000000..f52409381dd0 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_paint_paint__layer.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/core/paint/paint_layer.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/core/paint/paint_layer.cc +@@ -108,7 +108,7 @@ namespace { + + namespace { + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + struct SameSizeAsPaintLayer : GarbageCollected, DisplayItemClient { + // The bit fields may fit into the machine word of DisplayItemClient which + // has only 8-bit data. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc new file mode 100644 index 000000000000..0a23f1e97075 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc @@ -0,0 +1,20 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc +@@ -151,7 +151,7 @@ bool ScrollbarThemeAura::SupportsDragSnapBack() const + // is true for at least GTK and QT apps). + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + return false; + #else + return true; +@@ -326,7 +326,7 @@ bool ScrollbarThemeAura::ShouldCenterOnThumb(const Scr + const WebMouseEvent& event) { + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + if (event.button == WebPointerProperties::Button::kMiddle) + return true; + #endif diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_media_audio_audio__device__factory.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_media_audio_audio__device__factory.cc new file mode 100644 index 000000000000..9ebae390cd40 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_media_audio_audio__device__factory.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/modules/media/audio/audio_device_factory.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/modules/media/audio/audio_device_factory.cc +@@ -34,7 +34,7 @@ namespace { + namespace { + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS_LACROS) ++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + // Due to driver deadlock issues on Windows (http://crbug/422522) there is a + // chance device authorization response is never received from the browser side. + // In this case we will time out, to avoid renderer hang forever waiting for diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_media_audio_audio__renderer__mixer__manager__test.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_media_audio_audio__renderer__mixer__manager__test.cc new file mode 100644 index 000000000000..bcf5176682c5 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_media_audio_audio__renderer__mixer__manager__test.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager_test.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager_test.cc +@@ -678,7 +678,7 @@ TEST_F(AudioRendererMixerManagerTest, MixerParamsLaten + mixer->get_output_params_for_testing().sample_rate()); + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // Use 10 ms buffer (441 frames per buffer). + EXPECT_EQ(output_sample_rate / 100, + mixer->get_output_params_for_testing().frames_per_buffer()); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc new file mode 100644 index 000000000000..f39e35e78fa1 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc +@@ -288,7 +288,7 @@ TEST_F(MAYBE_WebRtcAudioRendererTest, DISABLED_VerifyS + SetupRenderer(kDefaultOutputDeviceId); + renderer_proxy_->Start(); + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + static const int kExpectedBufferSize = kHardwareSampleRate / 100; + #elif BUILDFLAG(IS_ANDROID) + static const int kExpectedBufferSize = 2 * kHardwareSampleRate / 100; diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc new file mode 100644 index 000000000000..8df21daa30e7 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc +@@ -379,7 +379,7 @@ class AudioWorkletThreadPriorityTest + + // TODO(crbug.com/1022888): The worklet thread priority is always NORMAL + // on OS_LINUX and OS_CHROMEOS regardless of the thread priority setting. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (expected_priority == base::ThreadPriority::REALTIME_AUDIO || + expected_priority == base::ThreadPriority::DISPLAY) { + EXPECT_EQ(actual_priority, base::ThreadPriority::NORMAL); diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_webgl_webgl__rendering__context__base.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_webgl_webgl__rendering__context__base.cc new file mode 100644 index 000000000000..5849e7bc0d5e --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_webgl_webgl__rendering__context__base.cc @@ -0,0 +1,11 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc.orig 2022-09-26 10:05:50 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc +@@ -6070,7 +6070,7 @@ void WebGLRenderingContextBase::TexImageHelperMediaVid + constexpr bool kAllowZeroCopyImages = true; + #endif + +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // TODO(crbug.com/1175907): Only TexImage2D seems to work with the GPU path on + // Android M -- appears to work fine on R, but to avoid regressions in