Package: guix;
Reported by: Danny Milosavljevic <dannym <at> scratchpost.org>
Date: Thu, 31 Mar 2022 13:33:02 UTC
Severity: normal
To reply to this bug, email your comments to 54654 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-guix <at> gnu.org
:bug#54654
; Package guix
.
(Thu, 31 Mar 2022 13:33:02 GMT) Full text and rfc822 format available.Danny Milosavljevic <dannym <at> scratchpost.org>
:bug-guix <at> gnu.org
.
(Thu, 31 Mar 2022 13:33:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Danny Milosavljevic <dannym <at> scratchpost.org> To: <bug-guix <at> gnu.org> Subject: libx11 libxcursor handling - Problems with big cursors not working in Java and xterm Date: Thu, 31 Mar 2022 15:31:56 +0200
[Message part 1 (text/plain, inline)]
Hi, After I got HiDPI displays (3840 pixels x 2160 pixels) mostly working in Guix system, I am only left with one remaining problem: libx11's XCreateFontCursor tries to dynamically-load libxcursor with just the basename "libXcursor.so.1". Because libxcursor depends on libx11, it's not possible to just add libxcursor as a dependency TO libx11. The problematic location is: # libX11-1.7.3.1/src/CrGlCur.c #define LIBXCURSOR "libXcursor.so.1" static char libraryName[] = LIBXCURSOR; static XModuleType open_library (void) { [...] module = dlopen(library, RTLD_LAZY); [...] } #define GetFunc(type,name,ret) {\ [...] _XcursorModule = open_library (); #define CURSORFONT "cursor" /* standard cursor fonts */ It's getting to dlopen of "LibXcursor.so.1" via XCreateFontCursor, which calls XCreateGlyphCursor, which calls _XTryShapeCursor, which calls open_library. static Cursor _XTryShapeCursor (Display *dpy, Font source_font, Font mask_font, unsigned int source_char, unsigned int mask_char, XColor _Xconst *foreground, XColor _Xconst *background) { TryShapeCursorFunc func; GetFunc (TryShapeCursorFunc, "XcursorTryShapeCursor", func); <----- problem if (func) return (*func) (dpy, source_font, mask_font, source_char, mask_char, foreground, background); return None; } Cursor XCreateGlyphCursor( register Display *dpy, Font source_font, Font mask_font, unsigned int source_char, unsigned int mask_char, XColor _Xconst *foreground, XColor _Xconst *background) { Cursor cid; register xCreateGlyphCursorReq *req; #ifdef USE_DYNAMIC_XCURSOR cid = _XTryShapeCursor (dpy, source_font, mask_font, source_char, mask_char, foreground, background); if (cid) return cid; #endif LockDisplay(dpy); GetReq(CreateGlyphCursor, req); cid = req->cid = XAllocID(dpy); req->source = source_font; req->mask = mask_font; req->sourceChar = source_char; req->maskChar = mask_char; req->foreRed = foreground->red; req->foreGreen = foreground->green; req->foreBlue = foreground->blue; req->backRed = background->red; req->backGreen = background->green; req->backBlue = background->blue; UnlockDisplay(dpy); SyncHandle(); return (cid); } Cursor XCreateFontCursor( Display *dpy, unsigned int which) { /* * the cursor font contains the shape glyph followed by the mask * glyph; so character position 0 contains a shape, 1 the mask for 0, * 2 a shape, etc. <X11/cursorfont.h> contains hash define names * for all of these. */ if (dpy->cursor_font == None) { dpy->cursor_font = XLoadFont (dpy, CURSORFONT); if (dpy->cursor_font == None) return None; } return XCreateGlyphCursor (dpy, dpy->cursor_font, dpy->cursor_font, which, which + 1, &foreground, &background); } Cursor XCreateGlyphCursor( register Display *dpy, Font source_font, Font mask_font, unsigned int source_char, unsigned int mask_char, XColor _Xconst *foreground, XColor _Xconst *background) { Cursor cid; register xCreateGlyphCursorReq *req; #ifdef USE_DYNAMIC_XCURSOR cid = _XTryShapeCursor (dpy, source_font, mask_font, source_char, mask_char, foreground, background); if (cid) return cid; #endif LockDisplay(dpy); GetReq(CreateGlyphCursor, req); cid = req->cid = XAllocID(dpy); req->source = source_font; req->mask = mask_font; req->sourceChar = source_char; req->maskChar = mask_char; req->foreRed = foreground->red; req->foreGreen = foreground->green; req->foreBlue = foreground->blue; req->backRed = background->red; req->backGreen = background->green; req->backBlue = background->blue; UnlockDisplay(dpy); SyncHandle(); return (cid); } To test, to enable HiDPI: 1. Put big mouse cursors into .icons/default/cursors 2. Invoke: gsettings set org.gnome.desktop.interface cursor-size 64 3. Add to .xinitrc: xsetroot -cursor_name left_ptr # does it again 4. xrdb merge: Xft.dpi: 163 To test whether it's actually because of that (don't do it for too long): 1. Find the /gnu/store location for the libx11 used by openjdk. 2. cp -r /gnu/store/whatever-libx11* /tmp/foo 3. mount -o bind /tmp/foo /gnu/store/whatever-libx11 4. cp `guix build libxcursor`/lib/libXcursor.so* /tmp/foo/lib 5. Call your fancy Java program (for example IntelliJ IDEA) Not sure what the best way forward is. Possible alternative fixes: a. Patch openjdk and xterm (and who knows what) such that it also does the XcursorTryShapeCursor before it calls XCreateFontCursor. That's a lot of work. Note: There are no libxcursor or XLoadFont bindings in openjdk yet, and one is not supposed to access Display->cursor_font from outside. Note: xterm use libxcursor--but for something else. So it still doesn't work (because it doesn't call XcursorTryShapeCursor). b. Patch guix such that the libx11 package used by libxcursor is one without reference to libxcursor, but a new user-visible libx11 package actually would just link libxcursor in. Not sure whether that's such a good idea--it could increase the size of everything and have two libx11 libraries loaded in the same user process, no? c. Inline the build of libxcursor into the build of libx11. If we did that, we would add libxrender libxfixes to libx11's inputs. ! I think this would actually be nice, especially since libxcursor seems to rarely change anyway (last change was in 2015). But even then, libxcursor depends on libxrender and libxfixes, both of which depends on libx11. Non-solution steps (that's asking too much from the user--shared libraries are an implementation detail): 1. Add an environment variable XCURSOR_RUNPATH that the user has to set 2. Patch our libx11 package to read the environment variable in GetFunc instead of using the global variable. 3. Add search-path or something to libxcursor. I-don't-know-how-to-do-that-probably-bad-solution steps: 1. Add an environment variable XCURSOR_RUNPATH (see attachment) 2. Patch our libx11 package to read the environment variable in GetFunc instead of using the global variable. (add such a variable to search-path or something) 3. Patch our libxcursor package to set search-path 4. Patch our libx11 package to propagate ,(delay libxcursor) All of those have their pros and cons. Unfortunately, any fix causes a massive rebuild of guix, except "a". What to do? P.S. Same problem exists in nix.
[libx11-xcursor-use-env-var.patch (text/x-patch, attachment)]
[Message part 3 (application/pgp-signature, inline)]
bug-guix <at> gnu.org
:bug#54654
; Package guix
.
(Thu, 31 Mar 2022 17:34:02 GMT) Full text and rfc822 format available.Message #8 received at 54654 <at> debbugs.gnu.org (full text, mbox):
From: dannym <at> scratchpost.org To: 54654 <at> debbugs.gnu.org Cc: Danny Milosavljevic <dannym <at> scratchpost.org> Subject: [PATCH] gnu: openjdk15: Make big cursors work. Date: Thu, 31 Mar 2022 19:13:11 +0200
From: Danny Milosavljevic <dannym <at> scratchpost.org> * gnu/packages/patches/openjdk-15-xcursor-no-dynamic.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/java.scm (openjdk15)[source]: Add it. --- .../openjdk-15-xcursor-no-dynamic.patch | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 gnu/packages/patches/openjdk-15-xcursor-no-dynamic.patch diff --git a/gnu/packages/patches/openjdk-15-xcursor-no-dynamic.patch b/gnu/packages/patches/openjdk-15-xcursor-no-dynamic.patch new file mode 100644 index 0000000000..975730518b --- /dev/null +++ b/gnu/packages/patches/openjdk-15-xcursor-no-dynamic.patch @@ -0,0 +1,66 @@ +From: Danny Milosavljevic <dannym <at> scratchpost.org> +Date: Thu, 31 Mar 2022 17:02:00 +0200 +Subject: Make openjdk use libxcursor directly + +Fixes <https://issues.guix.gnu.org/54654>. + +This patch makes openjdk use libxcursor directly. +Without it, libx11 would try to dlopen("libXcursor.so.1") and fail. + +diff -ru orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk +--- orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk 2022-03-31 15:34:08.773419480 +0200 ++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk 2022-03-31 17:47:26.259535832 +0200 +@@ -217,7 +217,7 @@ + endif + endif + +- LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm ++ LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXcursor -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm + + ifeq ($(call isTargetOs, linux), true) + LIBAWT_XAWT_LIBS += -lpthread +diff -ru orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix +--- orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix 2022-03-31 15:34:10.553466316 +0200 ++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix 2022-03-31 17:47:08.027052750 +0200 +@@ -31,7 +31,7 @@ + + J_INC = $(TESTJAVA)/include + INCLUDES = -I$(J_INC) -I$(J_INC)/$(SYST) -I. +-LIBS = -L$(TESTJAVA)/lib -ljawt -lX11 ++LIBS = -L$(TESTJAVA)/lib -ljawt -lX11 -lXcursor + + all: $(CLASSES) libmylib.so + +diff -ru orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c +--- orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c 2022-03-31 15:34:11.917502206 +0200 ++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c 2022-03-31 17:07:25.664488391 +0200 +@@ -44,6 +44,7 @@ + #include <X11/XKBlib.h> + #include <X11/Xos.h> + #include <X11/Xutil.h> ++#include <X11/Xcursor/Xcursor.h> + + #if defined(AIX) + #undef X_HAVE_UTF8_STRING +@@ -972,10 +973,20 @@ + + } + ++static XColor _Xconst foreground = { 0, 0, 0, 0 }; /* black */ ++static XColor _Xconst background = { 0, 65535, 65535, 65535 }; /* white */ ++ + JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XCreateFontCursor + (JNIEnv *env, jclass clazz, jlong display, jint shape) { + AWT_CHECK_HAVE_LOCK_RETURN(0); +- return XCreateFontCursor((Display *) jlong_to_ptr(display), (int) shape); ++ Display * dpy = (Display *) jlong_to_ptr(display); ++ Font font = XLoadFont(dpy, "cursor"); /* note: leak */ ++ if (font == None) ++ return 0; ++ Cursor result = XcursorTryShapeCursor(dpy, font, font, (int) shape, (int) shape + 1, &foreground, &background); ++ if (!result) ++ result = XCreateFontCursor(dpy, (int) shape); ++ return result; + } + + /* -- 2.34.0
bug-guix <at> gnu.org
:bug#54654
; Package guix
.
(Thu, 31 Mar 2022 20:04:02 GMT) Full text and rfc822 format available.Message #11 received at 54654 <at> debbugs.gnu.org (full text, mbox):
From: dannym <at> scratchpost.org To: 54654 <at> debbugs.gnu.org Cc: Danny Milosavljevic <dannym <at> scratchpost.org> Subject: [PATCH v2] gnu: openjdk15: Make big cursors work. Date: Thu, 31 Mar 2022 22:03:23 +0200
From: Danny Milosavljevic <dannym <at> scratchpost.org> * gnu/packages/patches/openjdk-15-xcursor-no-dynamic.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/java.scm (openjdk15)[source]: Add it. --- gnu/local.mk | 1 + gnu/packages/java.scm | 7 +- .../openjdk-15-xcursor-no-dynamic.patch | 72 +++++++++++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/openjdk-15-xcursor-no-dynamic.patch diff --git a/gnu/local.mk b/gnu/local.mk index a704161abc..ac8992885e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1564,6 +1564,7 @@ dist_patch_DATA = \ %D%/packages/patches/opencascade-oce-glibc-2.26.patch \ %D%/packages/patches/openfoam-4.1-cleanup.patch \ %D%/packages/patches/openjdk-10-idlj-reproducibility.patch \ + %D%/packages/patches/openjdk-15-xcursor-no-dynamic.patch \ %D%/packages/patches/openmpi-mtl-priorities.patch \ %D%/packages/patches/openssh-hurd.patch \ %D%/packages/patches/openresolv-restartcmd-guix.patch \ diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index b27892841e..b0908cc15a 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -2185,7 +2185,12 @@ (define-public openjdk15 (file-name (git-file-name name version)) (sha256 (base32 - "168cr08nywp0q3vyj8njkhsmmnyd8rz9r58hk4xhzdzc6bdfkl1i")))) + "168cr08nywp0q3vyj8njkhsmmnyd8rz9r58hk4xhzdzc6bdfkl1i")) + (patches + (search-patches "openjdk-15-xcursor-no-dynamic.patch")))) + (inputs + (cons `("libxcursor" ,libxcursor) ; for our patch to work + (package-inputs openjdk14))) (native-inputs `(("autoconf" ,autoconf) ("openjdk14:jdk" ,openjdk14 "jdk") diff --git a/gnu/packages/patches/openjdk-15-xcursor-no-dynamic.patch b/gnu/packages/patches/openjdk-15-xcursor-no-dynamic.patch new file mode 100644 index 0000000000..9325dd3da6 --- /dev/null +++ b/gnu/packages/patches/openjdk-15-xcursor-no-dynamic.patch @@ -0,0 +1,72 @@ +From: Danny Milosavljevic <dannym <at> scratchpost.org> +Date: Thu, 31 Mar 2022 17:02:00 +0200 +Subject: Make openjdk use libxcursor directly + +Fixes <https://issues.guix.gnu.org/54654>. + +This patch makes openjdk use libxcursor directly. +Without it, libx11 would try to dlopen("libXcursor.so.1") and fail. + +diff -ru orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk +--- orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk 2022-03-31 15:34:08.773419480 +0200 ++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk 2022-03-31 21:36:27.854273411 +0200 +@@ -217,7 +217,7 @@ + endif + endif + +- LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm ++ LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXcursor -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm + + ifeq ($(call isTargetOs, linux), true) + LIBAWT_XAWT_LIBS += -lpthread +diff -ru orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c +--- orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c 2022-03-31 15:34:11.917502206 +0200 ++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c 2022-03-31 21:38:16.417253535 +0200 +@@ -40,10 +40,12 @@ + #include <X11/keysym.h> + #include <X11/Sunkeysym.h> + #include <X11/Xlib.h> ++#include <X11/Xlibint.h> + #include <X11/Xatom.h> + #include <X11/XKBlib.h> + #include <X11/Xos.h> + #include <X11/Xutil.h> ++#include <X11/Xcursor/Xcursor.h> + + #if defined(AIX) + #undef X_HAVE_UTF8_STRING +@@ -972,10 +974,21 @@ + + } + ++static XColor _Xconst foreground = { 0, 0, 0, 0 }; /* black */ ++static XColor _Xconst background = { 0, 65535, 65535, 65535 }; /* white */ ++ + JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XCreateFontCursor + (JNIEnv *env, jclass clazz, jlong display, jint shape) { + AWT_CHECK_HAVE_LOCK_RETURN(0); +- return XCreateFontCursor((Display *) jlong_to_ptr(display), (int) shape); ++ Display * dpy = (Display *) jlong_to_ptr(display); ++ if (dpy->cursor_font == None) { ++ dpy->cursor_font = XLoadFont(dpy, "cursor"); ++ if (dpy->cursor_font == None) return None; ++ } ++ Cursor result = XcursorTryShapeCursor(dpy, dpy->cursor_font, dpy->cursor_font, (int) shape, (int) shape + 1, &foreground, &background); ++ if (!result) ++ result = XCreateFontCursor(dpy, (int) shape); ++ return result; + } + + /* +diff -ru orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix +--- orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix 2022-03-31 15:34:10.553466316 +0200 ++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix 2022-03-31 21:36:27.854273411 +0200 +@@ -31,7 +31,7 @@ + + J_INC = $(TESTJAVA)/include + INCLUDES = -I$(J_INC) -I$(J_INC)/$(SYST) -I. +-LIBS = -L$(TESTJAVA)/lib -ljawt -lX11 ++LIBS = -L$(TESTJAVA)/lib -ljawt -lX11 -lXcursor + + all: $(CLASSES) libmylib.so + -- 2.34.0
bug-guix <at> gnu.org
:bug#54654
; Package guix
.
(Fri, 01 Apr 2022 06:17:01 GMT) Full text and rfc822 format available.Message #14 received at 54654 <at> debbugs.gnu.org (full text, mbox):
From: Liliana Marie Prikler <liliana.prikler <at> ist.tugraz.at> To: Danny Milosavljevic <dannym <at> scratchpost.org>, 54654 <at> debbugs.gnu.org Subject: Re: libx11 libxcursor handling - Problems with big cursors not working in Java and xterm Date: Fri, 01 Apr 2022 08:16:29 +0200
Am Donnerstag, dem 31.03.2022 um 15:31 +0200 schrieb Danny Milosavljevic: > [...] > Possible fixes: > > a. Patch openjdk and xterm (and who knows what) such that it also > does the > XcursorTryShapeCursor before it calls XCreateFontCursor. > That's a lot of work. > Note: There are no libxcursor or XLoadFont bindings in openjdk > yet, > and one is not supposed to access Display->cursor_font from > outside. > Note: xterm use libxcursor--but for something else. So it still > doesn't work (because it doesn't call XcursorTryShapeCursor). This solution works short-term and should probably be done in the meantime while... > b. Patch guix such that the libx11 package used by libxcursor is one > without > reference to libxcursor, but a new user-visible libx11 package > actually > would just link libxcursor in. Not sure whether that's such a good > idea--it could increase the size of everything and have two libx11 > libraries loaded in the same user process, no? this is the proper solution, which we would need to deploy on core- updates first due to the enormous amount of dependents. As for the two libx11s being loaded into the same user process, I think there ought to be a way of making that just one, which would be the big one containing all the right paths. I don't think libxcursor should reload libx11 if there's already a libx11 dynamically loaded. Cheers
bug-guix <at> gnu.org
:bug#54654
; Package guix
.
(Mon, 04 Apr 2022 10:15:01 GMT) Full text and rfc822 format available.Message #17 received at 54654 <at> debbugs.gnu.org (full text, mbox):
From: Danny Milosavljevic <dannym <at> scratchpost.org> To: 54654 <at> debbugs.gnu.org Subject: Re: bug#54654: libx11 libxcursor handling - Problems with big cursors not working in Java and xterm Date: Mon, 4 Apr 2022 12:14:30 +0200
[Message part 1 (text/plain, inline)]
For future reference: * See also bug# 54680 for a patch to xterm. * See also bug# 54701 for a patch to openjdk.
[Message part 2 (application/pgp-signature, inline)]
bug-guix <at> gnu.org
:bug#54654
; Package guix
.
(Thu, 07 Apr 2022 18:05:01 GMT) Full text and rfc822 format available.Message #20 received at 54654 <at> debbugs.gnu.org (full text, mbox):
From: Danny Milosavljevic <dannym <at> scratchpost.org> To: 54654 <at> debbugs.gnu.org Subject: Re: bug#54654: libx11 libxcursor handling - Problems with big cursors not working in Java and xterm Date: Thu, 7 Apr 2022 20:04:03 +0200
[Message part 1 (text/plain, inline)]
On Thu, 31 Mar 2022 15:31:56 +0200 Danny Milosavljevic <dannym <at> scratchpost.org> wrote: > Possible alternative fixes: d. Move the definitions of XCreateFontCursor and XCreatePixmapCursor to libxcursor (i.e. delete their definitions from libx11 and create them in libxcursor). Fix up now-failing packages such that they always add -lxcursor to their linker flags.
[Message part 2 (application/pgp-signature, inline)]
bug-guix <at> gnu.org
:bug#54654
; Package guix
.
(Thu, 07 Apr 2022 20:22:02 GMT) Full text and rfc822 format available.Message #23 received at 54654 <at> debbugs.gnu.org (full text, mbox):
From: Danny Milosavljevic <dannym <at> scratchpost.org> To: 54654 <at> debbugs.gnu.org Subject: Re: bug#54654: libx11 libxcursor handling - Problems with big cursors not working in Java and xterm Date: Thu, 7 Apr 2022 22:21:46 +0200
[Message part 1 (text/plain, inline)]
The following package sources are also affected (i.e. they definitely use XCreate.*Cursor, and have libx11 as direct input) on guix master (214 sources): allegro-4.4.3.1 allegro-5.0.11 allegro-5.2.7.0 Aseprite-v1.1.7-Source.zip awesome-4.3 blender-3.0.1 bochs-2.7 boinc-7.16.17-checkout bsnes-115-checkout bzflag-2.4.24 Cairo carla-2.4.1-checkout cgoban-1.9.14 chromium-98.0.4758.102 cl-sdl2-0.0.0-1.bb2aa2a-checkout clutter-1.26.2 cwm-6.7 directfb-1.7.7-checkout dmenu-5.1 dolphin-emu-5.0-13178.a34823d-checkout drawterm-20210628-1.c97fe46-checkout dwm-6.3 editres-1.0.7 edk2-20170116-1.13a50a6-checkout efl-1.26.2 emacs-27.2 emacs-next-28.0.50-0.2ea3466-checkout emacs-next-pgtk-28.0.50-1.ae18c8e-checkout EMBOSS-6.5.7 evilwm-1.3.1 exim-4.95 fbida-2.14 feh-3.8 ffmpeg-2.8.18 firefox-78.15.0 fltk-1.3.6 fluida-lv2-0.6-checkout fluxbox-1.3.7 fontforge-20190801 fontforge-20201107 fox-1.6.57 freeglut-2.8.1 freeglut-3.2.1 freerdp-2.2.0-checkout fvwm-2.6.9 ghostscript-9.54.0 gifsicle-1.93 gimp-2.10.30 glfw-3.3.4 glimpse-0.2.0-checkout gmic-3.0.0 gnuplot-5.4.2 godot-3.4.2-checkout GraphicsMagick-1.3.36 graphviz-2.38.0-1.f54ac2c-checkout graphviz-2.49.0 gr-framework-0.58.1-checkout gromacs-2020.2 gtk+-2.24.33 gtk+-3.24.30 gtk-4.4.1 guile-emacs-0.0.0-0.41120e0-checkout helm-0.9.0-checkout herbstluftwm-0.9.3 higan-110-checkout hwloc-1.11.12 hwloc-2.7.1 idesk-0.7.5 ImageMagick-6.9.12-4 imager irrlicht-1.8.4 java-openjfx-build-8.202-checkout jdk-0276cba45aac jdk-11.0.13-ga jdk-3cc80be736f2 jdk-6fa770f9f8ab jgmenu-4.4.0-checkout kitty-0.20.3-checkout kodi-18.8-checkout lesstif-0.95.2 libcaca-0.99.beta19 libreoffice-7.1.4.2 libresprite-1.0-checkout libXcursor-1.2.0 libXmu-1.1.3 libXt-1.2.1 looking-glass-client-B5-checkout lsp-plugins-1.1.26-checkout lukesmithxyz-st-0.8.4-checkout lush-2.0.1 lyx-2.3.6.1 mamba-2.1-checkout marco-1.24.1 mlterm-3.9.1 mono-4.4.1 mpich-3.3.2 MPlayer-1.4 mpv-0.34.1-checkout mupdf-1.19.0-source mutter-41.0 netpbm-10.78.3-checkout ngspice-36 nsxiv-27.1-checkout ntk-1.3.1000-checkout ois-1.5.1-checkout oneko-1.2.sakura.5 openbox-3.6.1 opencpn-5.6.0-checkout openjdk-13.0.7-checkout openjdk-14.0.2-checkout openjdk-15.0.3-checkout openjdk-16.0.1-checkout openjdk-17.0.1-checkout openscenegraph-3.6.5-checkout patchmatrix-0.16.0-checkout pcb-4.0.2 pcb-rnd-2.2.4 pcsxr-6484236cb0281e8040ff6c8078c87899a3407534-checkout petsc-3.16.1 plib-1.8.5 polyml-5.8.2-checkout povray-3.7.0.8-checkout psi-1.5 psi-plus-1.5.1484-checkout qemu-4.1.0 qemu-6.2.0 qtbase-everywhere-src-5.15.2 qtbase-everywhere-src-6.1.1 qtwebengine-everywhere-src-5.15.2 R-4.1.2 ratpoison-1.4.9 redkite-1.3.1-checkout retroarch-1.9.11-checkout ring-project rxvt-unicode-9.30 sawfish_1.12.0 scrot-1.7-checkout SDL-1.2.15 SDL2-2.0.14 SDL2_image-2.0.5 sent-1.tar.gz sfml-2.5.1-checkout sherlock.lv2-0.24.0 slim-1.3.6 slock-1.4 slop-7.6-checkout snd-20.9 Squeak-4.10.2.2614-src st-0.8.5 stalin-0.11-checkout stepmania-5.1.0-b2-checkout SuperTuxKart-1.3-src swi-prolog-8.3.20-checkout sxiv-26-checkout synergy-1.11.1-checkout tcltk2 texlive-20210325-source TeXmacs-2.1.1-src TiMidity++-2.15.0 Tk-804.036 tk8.6.11 tklib-0.6 transset-1.0.2 trayer-srg-1.1.8-checkout tvtime-1.0.11 twm-1.0.11 unclutter utox-0.18.1-checkout vim-8.2.4564-checkout virtualgl-2.6.2-checkout VTK-6.3.0 VTK-9.0.1 warsow-qfusion-2.5-1.c4de15d-checkout WindowMaker-0.95.9 wine-6.6 wine-7.0 winit-0.19.5 winit-0.20.0-alpha6 winit-0.24.0 wmctrl-1.07 wolf-shaper-0.1.8-checkout wolf-spectrum-1.0.0-checkout wxGTK-2.8.12 wxPython-src-3.0.2.0 wxWidgets-3.0.5.1 wxwidgets-3.1.5-checkout X11-1.10.2 xarcan-0.5.4-1.8e6ee02-checkout xboard-4.9.1 xdotool-3.20211022.1 xf86-video-intel-2.99.917-18.31486f4-checkout xfce4-taskmanager-1.4.2 xfe-1.44 xfig-3.2.8b Xfoil xfwm4-4.16.1 xkill-1.0.5 xlispstat-3.52.23-0.f1bea60-checkout xlockmore-5.68 xmag-1.0.6 Xonotic xorg-server-21.1.2 xournalpp-1.1.1-checkout xprop-1.2.5 xscreensaver-5.45 xsecurelock-1.7.0 xsetroot-1.1.2 xshogi-1.4.2 xsnow-3.4.2 xst-0.8.4.1-checkout xterm-370 xwd-1.0.8 xwininfo-1.1.5 zbar-0.23.90-checkout Of those, only the following use Xcursor.h already (who knows what they use it for--but at least it's there): allegro-4.4.3.1 allegro-5.0.11 allegro-5.2.7.0 Aseprite-v1.1.7-Source.zip carla-2.4.1-checkout chromium-98.0.4758.102 efl-1.26.2 fltk-1.3.6 (explicit -lXcursor) fontforge-20201107 fox-1.6.57 (explicit -lXcursor) freerdp fvwm-2.6.9 (explicit -lXcursor) gimp-2.10.30 glfw-3.3.4 glimpse-0.2.0 godot-3.4.2 gr-framework-0.58.1-checkout (only explicit -lXcursor, no .h) gtk+-2.24.33 gtk+-3.24.30 gtk-4.4.1 helm-0.9.0 irrlicht-1.8.4 (explicit -lXcursor) kitty-0.20.3 libresprite-1.0-checkout looking-glass-client-B5 marco-1.24.1 mutter-41.0 openbox-3.6.1 qtbase-everywhere-src-5.15.2 qtbase-everywhere-src-6.1.1 qtwebengine-everywhere-src-5.15.2 SDL2-2.0.14 (explicit -lXcursor) SuperTuxKart-1.3-src (bundled irrlicht) VTK-9.0.1 wine-6.6 (explicit -lXcursor) wine-7.0 (explicit -lXcursor) xf86-video-intel-2.99.917-18.31486f4-checkout xsetroot-1.1.2 Of the former, Cairo is the most worrying. Details attached.
[XCURSOR (application/octet-stream, attachment)]
[Message part 3 (application/pgp-signature, inline)]
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.