On 2023/07/20 17:27, Rafael Sadowski wrote:
> Let's start with a quote from an old try:
> 
> "Our Xorg server doesn't run under the same uid as the client, the client
> needs to create the shared memory area with mode 0666.
> 
> We are doing the same in misc/screen-shm. Of course, the consequence
> here would be to do it for all Qt applications."
> 
> -- https://marc.info/?l=openbsd-ports&m=167110468109188&w=2
> 
> There was a veto from sthen@, which was perfectly okay and right.  For
> error analysis and to exclude that this function is not used, I need the
> shm mode from time to time. I would like to solve it with an environment
> variable (QT_OPENBSD_SHM_MODE).

>From that mail,

"What are the consequences of leaving this as-is? (i.e. what's broken
now that changing this would fix?)"


> Is that something we can live with?
> 
> Feedback, OK?
> 
> diff --git a/x11/qt5/qtbase/Makefile b/x11/qt5/qtbase/Makefile
> index 7a8676f3713..9fade59872e 100644
> --- a/x11/qt5/qtbase/Makefile
> +++ b/x11/qt5/qtbase/Makefile
> @@ -11,6 +11,7 @@ PKGNAME-mysql =             qt5-mysql-${VERSION}
>  PKGNAME-global =     qt5-global-${VERSION}
>  PKGNAME-psql =               qt5-postgresql-${VERSION}
>  PKGNAME-tds =                qt5-tds-${VERSION}
> +REVISION-main =      0
>  
>  PKG_ARCH-global =    *
>  PKG_ARCH-examples =  *
> diff --git 
> a/x11/qt5/qtbase/patches/patch-src_plugins_platforms_xcb_qxcbbackingstore_cpp 
> b/x11/qt5/qtbase/patches/patch-src_plugins_platforms_xcb_qxcbbackingstore_cpp
> new file mode 100644
> index 00000000000..ea72538e556
> --- /dev/null
> +++ 
> b/x11/qt5/qtbase/patches/patch-src_plugins_platforms_xcb_qxcbbackingstore_cpp
> @@ -0,0 +1,15 @@
> +The X serrver doesn't run under the same uid as the client, the client needs 
> to
> +create the shm mode 0666
> +Index: src/plugins/platforms/xcb/qxcbbackingstore.cpp
> +--- src/plugins/platforms/xcb/qxcbbackingstore.cpp.orig
> ++++ src/plugins/platforms/xcb/qxcbbackingstore.cpp
> +@@ -406,7 +406,8 @@ void QXcbBackingStoreImage::createShmSegment(size_t se
> + bool QXcbBackingStoreImage::createSystemVShmSegment(xcb_connection_t *c, 
> size_t segmentSize,
> +                                                     xcb_shm_segment_info_t 
> *shmInfo)
> + {
> +-    const int id = shmget(IPC_PRIVATE, segmentSize, IPC_CREAT | 0600);
> ++    const bool isOpenBsdShmMode = 
> !QString::fromLocal8Bit(qgetenv("QT_OPENBSD_SHM_MODE")).isEmpty();
> ++    const int id = shmget(IPC_PRIVATE, segmentSize, IPC_CREAT | 
> isOpenBsdShmMode ? 0666 : 0600);
> +     if (id == -1) {
> +         qCWarning(lcQpaXcb, "shmget() failed (%d: %s) for size %zu", errno, 
> strerror(errno), segmentSize);
> +         return false;

Reply via email to