The package rpms/xscreensaver.git has added or updated architecture specific content in
its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/xscreensaver.git/commit/?id=01752....
Change:
-%ifarch aarch64
Thanks.
Full change:
============
commit 3cf014a3d33398098265ab94257002303ce75bc0
Author: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
Date: Fri Mar 4 12:01:48 2022 +0900
kill sanitizer
diff --git a/xscreensaver.spec b/xscreensaver.spec
index 74fe6be..97984b2 100644
--- a/xscreensaver.spec
+++ b/xscreensaver.spec
@@ -16,7 +16,7 @@
%global use_clang_as_cc 0
%global use_clang_analyze 0
%global use_cppcheck 0
-%global use_gcc_strict_sanitize 1
+%global use_gcc_strict_sanitize 0
%global use_gcc_trap_on_sanitize 0
%global use_gcc_analyzer 0
commit da542f6bba33f4a29be5bd965ab8ab5ab1936f33
Author: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
Date: Fri Mar 4 12:00:18 2022 +0900
Update to 6.03
All patches sent to the upstream was merged, yeah!
print_xinput_event: check if XIRawEvent.raw_values is available
diff --git a/.gitignore b/.gitignore
index 0257cd9..9b643d4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,38 +1 @@
-xscreensaver-5.11.tar.gz
-/xscreensaver-5.12.tar.gz
-/xscreensaver-5.13.tar.gz
-clog
-/xscreensaver-5.14.tar.gz
-/xscreensaver-5.15.tar.gz
-/xscreensaver-5.16.tar.gz
-/xscreensaver-5.17.tar.gz
-/xscreensaver-5.18.tar.gz
-/xscreensaver-5.19.tar.gz
-/xscreensaver-5.20.tar.gz
-/xscreensaver-5.21.tar.gz
-/xscreensaver-5.22.tar.gz
-/xscreensaver-5.23.tar.gz
-/xscreensaver-5.26.tar.gz
-/xscreensaver-5.27.tar.gz
-/xscreensaver-5.28.tar.gz
-/xscreensaver-5.29.tar.gz
-/xscreensaver-5.29-1008-rename-xscreensaver-demo.glade2-to-xscreensaver-demo.patch.gz
-/xscreensaver-5.30.tar.gz
-/xscreensaver-5.31.tar.gz
-/xscreensaver-5.32.tar.gz
-/xscreensaver-5.32.ja.po.gz
-/xscreensaver-5.33.tar.gz
-/xscreensaver-5.34.tar.gz
-/xscreensaver-5.35.tar.gz
-/xscreensaver-5.36.tar.gz
-/xscreensaver-5.37.tar.gz
-/xscreensaver-5.38.tar.gz
-/xscreensaver-5.39.tar.gz
-/xscreensaver-5.40.tar.gz
-/xscreensaver-5.42.tar.gz
-/xscreensaver-5.43.tar.gz
-/xscreensaver-5.44.tar.gz
-/xscreensaver-5.45.tar.gz
-/xscreensaver-6.00.tar.gz
-/xscreensaver-6.01.tar.gz
-/xscreensaver-6.02.tar.gz
+/xscreensaver-*.tar.gz
diff --git a/sources b/sources
index 6778cc7..be52350 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (xscreensaver-6.02.tar.gz) =
2291ec6ca2d2a24dae975f7f3a8e1733c06f289eb74955db5b3344c7ddcc1d72f82d380df984ef9199f2ed7ab8a7bc920da57d98f589ae5fd1cee082755ba1ff
+SHA512 (xscreensaver-6.03.tar.gz) =
4aa30824c972a73dc09aeba478cad074f273839a4c7641cddd292da38fc75db10a3f6243cbe8619c5e39cad54c27d33e1e271dfed167458faa7747fb0a090630
diff --git
a/xscreensaver-6.02-0001-xscreensaver_systemd_loop-avoid-use-after-free-on-fo.patch
b/xscreensaver-6.02-0001-xscreensaver_systemd_loop-avoid-use-after-free-on-fo.patch
deleted file mode 100644
index dc71a39..0000000
--- a/xscreensaver-6.02-0001-xscreensaver_systemd_loop-avoid-use-after-free-on-fo.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From dca574400d91653e0f33ecbb57fc397fa908cfe0 Mon Sep 17 00:00:00 2001
-From: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
-Date: Sun, 17 Oct 2021 14:19:02 +0900
-Subject: [PATCH] xscreensaver_systemd_loop: avoid use-after-free on for_each
- loop
-
-gcc11 -fsanitize=address detected the following use-after-free:
-
-=================================================================
-==2799663==ERROR: AddressSanitizer: heap-use-after-free on address 0x604000000470 at pc
0x000000409708 bp 0x7ffc881b4fe0 sp 0x7ffc881b4fd8
-READ of size 8 at 0x604000000470 thread T0
- #0 0x409707 in xscreensaver_systemd_loop ../../driver/xscreensaver-systemd.c:846
- #1 0x403628 (/usr/libexec/xscreensaver/xscreensaver-systemd+0x403628)
- #2 0x7f8aa2a4255f in __libc_start_call_main
../sysdeps/nptl/libc_start_call_main.h:58
- #3 0x7f8aa2a4260b in __libc_start_main_impl ../csu/libc-start.c:409
- #4 0x403a74 (/usr/libexec/xscreensaver/xscreensaver-systemd+0x403a74)
-
-0x604000000470 is located 32 bytes inside of 40-byte region
[0x604000000450,0x604000000478)
-freed by thread T0 here:
- #0 0x7f8aa3857667 in free (/lib64/libasan.so.6+0xae667)
- #1 0x408319 in xscreensaver_systemd_loop ../../driver/xscreensaver-systemd.c:860
-
-previously allocated by thread T0 here:
- #0 0x7f8aa385795f in __interceptor_malloc (/lib64/libasan.so.6+0xae95f)
- #1 0x405f99 in xscreensaver_method_inhibit ../../driver/xscreensaver-systemd.c:538
- #2 0x61800000407f (<unknown module>)
-
-SUMMARY: AddressSanitizer: heap-use-after-free ../../driver/xscreensaver-systemd.c:846 in
xscreensaver_systemd_loop
-
-In xscreensaver_systemd_loop(), in SLIST_FOREACH loop beginig at the line 846,
-"entry" is free()ed in the loop, but in the next loop, it tries to access
-this address in SLIST_FOREACH macro: `(var) = (var)->field.sle_next)`.
-
-Fortunately, SLIST_FOREACH_SAFE macro is provided to avoid this issue, so
-use this.
----
- driver/xscreensaver-systemd.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/driver/xscreensaver-systemd.c b/driver/xscreensaver-systemd.c
-index a3cebc5..80836ee 100644
---- a/driver/xscreensaver-systemd.c
-+++ b/driver/xscreensaver-systemd.c
-@@ -561,7 +561,7 @@ xscreensaver_method_uninhibit (sd_bus_message *m, void *arg,
- {
- struct handler_ctx *ctx = arg;
- uint32_t cookie;
-- struct inhibit_entry *entry;
-+ struct inhibit_entry *entry, *entry_next;
- int found = 0;
- const char *sender;
-
-@@ -574,7 +574,7 @@ xscreensaver_method_uninhibit (sd_bus_message *m, void *arg,
-
- sender = sd_bus_message_get_sender (m);
-
-- SLIST_FOREACH(entry, &inhibit_head, entries) {
-+ SLIST_FOREACH_SAFE(entry, &inhibit_head, entries, entry_next) {
- if (entry->cookie == cookie) {
- if (verbose_p)
- fprintf (stderr, "%s: uninhibited by \"%s\" (%s) with cookie
%08X\n",
-@@ -815,7 +815,7 @@ xscreensaver_systemd_loop (void)
- while (1) {
- struct pollfd fds[3];
- uint64_t poll_timeout_msec, system_timeout_usec, user_timeout_usec;
-- struct inhibit_entry *entry;
-+ struct inhibit_entry *entry, *entry_next;
-
- /* We MUST call sd_bus_process() on each bus at least once before calling
- sd_bus_get_events(), so just always start the event loop by processing
-@@ -843,7 +843,7 @@ xscreensaver_systemd_loop (void)
- That would have left us inhibited forever, even if the inhibiting
- program was re-launched, since the new instance won't have the
- same cookie. */
-- SLIST_FOREACH (entry, &inhibit_head, entries) {
-+ SLIST_FOREACH_SAFE (entry, &inhibit_head, entries, entry_next) {
- if (entry->peer &&
- !sd_bus_track_count_name (ctx->track, entry->peer)) {
- if (verbose_p)
---
-2.33.1
-
diff --git
a/xscreensaver-6.02-0002-get_egl_config-reset-loop-counter-with-prefersGLSL-o.patch
b/xscreensaver-6.02-0002-get_egl_config-reset-loop-counter-with-prefersGLSL-o.patch
deleted file mode 100644
index bce3f3f..0000000
--- a/xscreensaver-6.02-0002-get_egl_config-reset-loop-counter-with-prefersGLSL-o.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 821b20c2e6f64191525cef9dce715ac31a8e8652 Mon Sep 17 00:00:00 2001
-From: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
-Date: Mon, 1 Nov 2021 10:29:45 +0900
-Subject: [PATCH] get_egl_config: reset loop counter with prefersGLSL option
- each loop
-
-Some GL hacks (like sphereeversion) calls get_egl_config with option
-"prefersGLSL" on. With this mode, "iter" is set as 2, and
"pass" loop
-in get_egl_config runs twice.
-However, "i" is initialized only outside "pass" loop, so on the
second
-"pass" loop, "i" is already at the max value, and second
"pass" loop
-actually does nothing.
-
-As the consequence, if the driver cannot support EGL_OPENGL_ES3_BIT,
-get_egl_config() cannot find any config even if the driver support
-EGL_OPENGL_ES_BIT, then hacks abort().
-
-The fix for this is to re-initialize "i" value for each "pass" loop.
----
- utils/visual-gl.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/utils/visual-gl.c b/utils/visual-gl.c
-index cca4ecf..112e4c1 100644
---- a/utils/visual-gl.c
-+++ b/utils/visual-gl.c
-@@ -230,13 +230,13 @@ get_egl_config (Display *dpy, EGLDisplay *egl_display,
- };
- EGLint attrs[40];
- EGLint nconfig;
-- int i, j, k, iter, pass;
-+ int i, i_start, j, k, iter, pass;
- Bool glslp;
-
-- i = 0;
-+ i_start = 0;
- # ifdef SB
- if (! get_boolean_resource (dpy, "multiSample", "MultiSample"))
-- i = SB_COUNT; /* skip over the multibuffer entries in 'attrs' */
-+ i_start = SB_COUNT; /* skip over the multibuffer entries in 'attrs' */
- # endif /* SB */
-
- glslp = get_boolean_resource (dpy, "prefersGLSL", "PrefersGLSL");
-@@ -245,7 +245,7 @@ get_egl_config (Display *dpy, EGLDisplay *egl_display,
- *egl_config = 0;
- for (pass = 0; pass < iter; pass++)
- {
-- for (; i < countof(templates); i++)
-+ for (i = i_start ; i < countof(templates); i++)
- {
- for (j = 0, k = 0; templates[i][j] != EGL_NONE; j += 2)
- {
---
-2.33.1
-
diff --git
a/xscreensaver-6.02-0003-marbling-fix-signedness-for-x86_64-and-aarch64-on-ve.patch
b/xscreensaver-6.02-0003-marbling-fix-signedness-for-x86_64-and-aarch64-on-ve.patch
deleted file mode 100644
index cc09f1d..0000000
--- a/xscreensaver-6.02-0003-marbling-fix-signedness-for-x86_64-and-aarch64-on-ve.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-From d68bca70579d141b1457f84ce5e6d022a4e458b9 Mon Sep 17 00:00:00 2001
-From: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
-Date: Thu, 4 Nov 2021 22:38:26 +0900
-Subject: [PATCH] marbling: fix signedness for x86_64 and aarch64 on
- vectorization
-
----
- hacks/marbling.c | 57 ++++++++++++++++++++++++++++--------------------
- 1 file changed, 33 insertions(+), 24 deletions(-)
-
-diff --git a/hacks/marbling.c b/hacks/marbling.c
-index 0896aa5..bb00431 100644
---- a/hacks/marbling.c
-+++ b/hacks/marbling.c
-@@ -44,6 +44,13 @@
- #include "thread_util.h"
- #include "xshm.h"
-
-+#if defined __GNUC__ || defined __clang__ || \
-+ defined __STDC_VERSION__ && __STDC_VERSION__ > 199901L
-+# define INLINE inline
-+#else
-+# define INLINE
-+#endif
-+
- /* Use GCC/Clang's vector SIMD extensions, when possible.
-
https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html
- */
-@@ -59,17 +66,21 @@
- */
- # if defined __AVX2__
- # define VSIZE 16
--# define IMUL_HI __builtin_ia32_pmulhw256
--# define MUL_HI __builtin_ia32_pmulhuw256
-+# define IMUL_HI_OP __builtin_ia32_pmulhw256
-+# define MUL_HI_OP __builtin_ia32_pmulhuw256
- # elif defined __SSE2__
- # define VSIZE 8
--# define IMUL_HI __builtin_ia32_pmulhw128
--# define MUL_HI __builtin_ia32_pmulhuw128
-+# define IMUL_HI_OP __builtin_ia32_pmulhw128
-+# define MUL_HI_OP __builtin_ia32_pmulhuw128
- # endif
-
- # ifdef VSIZE
--typedef int16_t v_uhi __attribute__((vector_size(VSIZE * 2)));
-+typedef uint16_t v_uhi __attribute__((vector_size(VSIZE * 2)));
- typedef int16_t v_hi __attribute__((vector_size(VSIZE * 2)));
-+
-+static INLINE v_hi IMUL_HI(v_hi a, v_hi b) { return IMUL_HI_OP(a, b); }
-+static INLINE v_uhi MUL_HI(v_uhi a, v_uhi b) { return (v_uhi)MUL_HI_OP((v_hi)a,
(v_hi)b); }
-+
- # endif
- # endif
-
-@@ -114,13 +125,6 @@ typedef int16_t v_hi;
- # define VEC_INDEX(v, i) ((v)[i])
- #endif
-
--#if defined __GNUC__ || defined __clang__ || \
-- defined __STDC_VERSION__ && __STDC_VERSION__ > 199901L
--# define INLINE inline
--#else
--# define INLINE
--#endif
--
- struct state {
- Display *dpy;
- Window window;
-@@ -159,15 +163,16 @@ const unsigned lerp_loss = 2; /* Min: 2 */
- const unsigned noise_out_bits = noise_work_bits - 3 * lerp_loss + 1;
- const unsigned noise_in_bits = 8;
-
--static INLINE v_hi
-+static INLINE v_uhi
- broadcast (int16_t x)
- {
- #if VSIZE == 1
-- return x;
-+ v_hi r = x;
- #else
- v_hi r = {0};
-- return r + x;
-+ r = r + x;
- #endif
-+ return (v_uhi)r;
- }
-
- static INLINE v_uhi
-@@ -176,10 +181,13 @@ fade (v_uhi t)
- const uint16_t F = 256;
-
- #if __ARM_NEON
-- v_uhi t2 = (t * t) >> 1;
-- return
-- vqdmulhq_s16(t2, 10 * t - vqdmulhq_s16(t2, (uint16_t)(15 * F) - t * 6)) <<
-+ v_uhi ut2 = (t * t) >> 1;
-+ v_hi it2 = (v_hi)ut2;
-+ v_hi it = (v_hi)t;
-+ v_hi iret =
-+ vqdmulhq_s16(it2, 10 * it - vqdmulhq_s16(it2, (int16_t)(15 * F) - it * 6)) <<
- (noise_work_bits - noise_in_bits + 1);
-+ return (v_uhi)iret;
- #else
- v_uhi t2 = t * t;
- return
-@@ -239,7 +247,7 @@ noise (v_uhi x, v_uhi y, v_uhi z)
- {
- const v_uhi one = broadcast(1 << noise_work_bits);
- v_uhi X, Y, Z, A, B, AA, AB, BA, BB;
-- v_uhi u, v, w;
-+ v_hi u, v, w;
- v_hi c0, c1, c2, c3, c4, c5, c6, c7;
- X = x >> noise_in_bits; /* FIND UNIT CUBE THAT */
- Y = y >> noise_in_bits; /* CONTAINS POINT. */
-@@ -247,9 +255,9 @@ noise (v_uhi x, v_uhi y, v_uhi z)
- x &= (uint16_t)((1 << noise_in_bits) - 1); /* FIND RELATIVE X,Y,Z */
- y &= (uint16_t)((1 << noise_in_bits) - 1); /* OF POINT IN CUBE. */
- z &= (uint16_t)((1 << noise_in_bits) - 1);
-- u = fade(x); /* COMPUTE FADE CURVES */
-- v = fade(y); /* FOR EACH OF X,Y,Z. */
-- w = fade(z);
-+ u = (v_hi)fade(x); /* COMPUTE FADE CURVES */
-+ v = (v_hi)fade(y); /* FOR EACH OF X,Y,Z. */
-+ w = (v_hi)fade(z);
-
- A = noise_rand(X)+Y, AA = P(A)+Z, AB = P(A+1)+Z; /* HASH COORDINATES OF */
- B = P(X+1)+Y, BA = P(B)+Z, BB = P(B+1)+Z; /* THE 8 CUBE CORNERS, */
-@@ -265,7 +273,8 @@ noise (v_uhi x, v_uhi y, v_uhi z)
- c6 = grad(P(AB+1), x, y-one, z-one );
- c7 = grad(P(BB+1), x-one, y-one, z-one );
-
-- return SCALE(LERP(w, LERP(v, LERP(u, c0, c1), /* AND ADD BLENDED */
-+ return
-+ (v_uhi)SCALE(LERP(w, LERP(v, LERP(u, c0, c1), /* AND ADD BLENDED */
- LERP(u, c2, c3)), /* RESULTS FROM 8 */
- LERP(v, LERP(u, c4, c5), /* CORNERS OF CUBE */
- LERP(u, c6, c7))));
-@@ -292,7 +301,7 @@ fbm (v_uhi x, v_uhi y, v_uhi z)
- for (i = 0; i < octaves; i++)
- {
- #if __ARM_NEON
-- t += vqdmulhq_n_s16(noise (f*x, f*y, f*z), a);
-+ t += (v_uhi)vqdmulhq_n_s16((v_hi)noise (f*x, f*y, f*z), a);
- a = ((uint32_t)a * iG) >> 16;
- #else
- t += MUL_HI(noise (f*x, f*y, f*z), a);
---
-2.33.1
-
diff --git
a/xscreensaver-6.03-0001-print_xinput_event-check-if-XIRawEvent.raw_values-is.patch
b/xscreensaver-6.03-0001-print_xinput_event-check-if-XIRawEvent.raw_values-is.patch
new file mode 100644
index 0000000..e35c52f
--- /dev/null
+++ b/xscreensaver-6.03-0001-print_xinput_event-check-if-XIRawEvent.raw_values-is.patch
@@ -0,0 +1,84 @@
+From 9086681b0775ad92ce39df96d22ff5a3fe06c68f Mon Sep 17 00:00:00 2001
+From: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
+Date: Fri, 4 Mar 2022 11:24:49 +0900
+Subject: [PATCH] print_xinput_event: check if XIRawEvent.raw_values is
+ available
+
+gcc12 -sanitize=address shows that XIRawEvent.raw_values is not always
+available.
+XIRawEvent buffer is allocated on wireToRawEvent() in XExtInt.c in libXi.
+Follow wireToRawEvent() implementation to check is XIRawEvent.raw_values
+is available, using XIRawEvent.valuators.mask_len, valuators.mask and
+XIMaskIsSet.
+---
+ driver/xinput.c | 38 ++++++++++++++++++++++++++++++++------
+ 1 file changed, 32 insertions(+), 6 deletions(-)
+
+diff --git a/driver/xinput.c b/driver/xinput.c
+index 9402a4f..2ce2ce1 100644
+--- a/driver/xinput.c
++++ b/driver/xinput.c
+@@ -296,6 +296,30 @@ print_kbd_event (XEvent *xev, XComposeStatus *compose, Bool x11_p)
+ }
+ }
+
++/* see wireToRawEvent, count_bits in libXi and XIMaskIsSet in X11/extensions/XI2.h */
++static void
++print_xi_raw_event_raw_values (XIRawEvent *re)
++{
++ int mask_pos;
++ double *raw_values_pos = re->raw_values;
++ int first_time_p;
++
++ first_time_p = 1;
++
++ for (mask_pos = 0; mask_pos < re->valuators.mask_len * sizeof(char);
mask_pos++)
++ {
++ if (XIMaskIsSet(re->valuators.mask, mask_pos))
++ {
++ if (first_time_p)
++ {
++ first_time_p = 0;
++ fprintf(stderr, " %7.02f", *raw_values_pos++);
++ } else {
++ fprintf(stderr, ", %-7.02f", *raw_values_pos++);
++ }
++ }
++ }
++}
+
+ void
+ print_xinput_event (Display *dpy, XEvent *xev, const char *desc)
+@@ -371,11 +395,12 @@ print_xinput_event (Display *dpy, XEvent *xev, const char *desc)
+ XQueryPointer (dpy, DefaultRootWindow (dpy),
+ &root_ret, &child_ret, &root_x, &root_y,
+ &win_x, &win_y, &mask);
+- fprintf (stderr, "%s: XI _RawButton%s %4d, %-4d %7.02f, %-7.02f\n",
++ fprintf (stderr, "%s: XI _RawButton%s %4d, %-4d",
+ blurb(),
+ (re->evtype == XI_RawButtonPress ? "Press " :
"Release"),
+- root_x, root_y,
+- re->raw_values[0], re->raw_values[1]);
++ root_x, root_y);
++ print_xi_raw_event_raw_values(re);
++ fprintf(stderr, "\n");
+ }
+ break;
+
+@@ -390,9 +415,10 @@ print_xinput_event (Display *dpy, XEvent *xev, const char *desc)
+ &root_ret, &child_ret, &root_x, &root_y,
+ &win_x, &win_y, &mask);
+ fprintf (stderr,
+- "%s: XI_RawMotion %4d, %-4d %7.02f, %-7.02f%s\n",
+- blurb(), root_x, root_y, re->raw_values[0], re->raw_values[1],
+- (desc ? desc : ""));
++ "%s: XI_RawMotion %4d, %-4d ",
++ blurb(), root_x, root_y);
++ print_xi_raw_event_raw_values(re);
++ fprintf (stderr, "%s\n", (desc ? desc : ""));
+ }
+ break;
+
+--
+2.35.1
+
diff --git a/xscreensaver.spec b/xscreensaver.spec
index e640beb..74fe6be 100644
--- a/xscreensaver.spec
+++ b/xscreensaver.spec
@@ -1,6 +1,6 @@
%define name xscreensaver
-%define mainversion 6.02
+%define mainversion 6.03
#%%define beta_ver b2
%undefine beta_ver
@@ -11,12 +11,12 @@
%define split_getimage 1
%endif
-%define fedora_rel 4
+%define fedora_rel 1
%global use_clang_as_cc 0
%global use_clang_analyze 0
%global use_cppcheck 0
-%global use_gcc_strict_sanitize 0
+%global use_gcc_strict_sanitize 1
%global use_gcc_trap_on_sanitize 0
%global use_gcc_analyzer 0
@@ -66,7 +66,7 @@
Summary: X screen saver and locker
Name: %{name}
Version: %{mainversion}
-Release:
%{?beta_ver:0.}%{fedora_rel}%{?beta_ver:.%beta_ver}%{?dist}%{flagrel}%{?extrarel}.1
+Release:
%{?beta_ver:0.}%{fedora_rel}%{?beta_ver:.%beta_ver}%{?dist}%{flagrel}%{?extrarel}
Epoch: 1
License: MIT
URL:
http://www.jwz.org/xscreensaver/
@@ -94,12 +94,8 @@ Patch21: xscreensaver-5.35-webcollage-default-nonet.patch
# misc: kill gcc warn_unused_result warnings
Patch3607: xscreensaver-5.36-0007-misc-kill-gcc-warn_unused_result-warnings.patch
# Patch to be sent to the upstream
-# xscreensaver_systemd_loop: avoid use-after-free on for_each loop
-Patch5201:
xscreensaver-6.02-0001-xscreensaver_systemd_loop-avoid-use-after-free-on-fo.patch
-# get_egl_config: reset loop counter with prefersGLSL option each loop
-Patch5202:
xscreensaver-6.02-0002-get_egl_config-reset-loop-counter-with-prefersGLSL-o.patch
-# marbling: fix signedness for x86_64 and aarch64 on vectorization
-Patch5203:
xscreensaver-6.02-0003-marbling-fix-signedness-for-x86_64-and-aarch64-on-ve.patch
+# print_xinput_event: check if XIRawEvent.raw_values is available
+Patch5301:
xscreensaver-6.03-0001-print_xinput_event-check-if-XIRawEvent.raw_values-is.patch
# Fedora specific
# window_init: search parenthesis first for searching year
Patch10001:
xscreensaver-6.00-0001-screensaver_id-search-parenthesis-first-for-searchin.patch
@@ -361,6 +357,7 @@ config.guess
config.sub
aclocal.m4
config.h.in
+config.rpath
OSX
EOF
@@ -380,9 +377,7 @@ find . -name \*.c -exec chmod ugo-x {} \;
%__cat %PATCH21 | %__git am
#%%__cat %PATCH3607 | %__git am
-%__cat %PATCH5201 | %__git am
-%__cat %PATCH5202 | %__git am
-%__cat %PATCH5203 | %__git am
+%__cat %PATCH5301 | %__git am
%__cat %PATCH10001 | %__git am
%__cat %PATCH10003 | %__git am
%__cat %PATCH10005 | %__git am
@@ -539,6 +534,21 @@ sed -i.delay -e 's|60 \* 15|20|' driver/test-grab.c
sed -i 's|-Wunknown-warning-option|-Wfoo-bar-baz|' ax_pthread.m4
%__git commit -m "Really use unknowing warning option" -a
+# xscreensaver 6.03: manually fix po/Makefile.in.in
+# ca.po seems broken
+pushd po
+sed -i Makefile.in.in \
+ -e "\@^POFILES[ \t]*=@s@^.*(a)POTFILES\t=$(ls -1 *po | grep -v ca.po | while read f ;
do echo -n -e " $f" ; done)@" \
+ -e "\@^GMOFILES[ \t]*=@s@^.*(a)GMOTFILES\t=$(ls -1 *po | grep -v ca.po | while read f
; do echo -n -e " ${f%.po}.gmo" ; done)@" \
+ -e "\@^CATALOGS[ \t]*=@s@^.*(a)CATALOGS\t=$(ls -1 *po | grep -v ca.po | while read f
; do echo -n -e " ${f%.po}.gmo" ; done)@" \
+ -e "\@^CATOBJEXT[ \t]*=@s@^.*(a)CATOBJEXT\t= .gmo@" \
+ -e "\@^INSTOBJEXT[ \t]*=@s@^.*(a)INSTOBJEXT\t= .mo@" \
+ -e "\@^MKINSTALLDIRS[ \t]*=@s@^.*(a)MKINSTALLDIRS\t= install -d@" \
+ %{nil}
+popd
+%__git commit -m "Manually fix po files entry" -a
+
+touch config.rpath
aclocal
autoconf
autoheader
@@ -1124,6 +1134,11 @@ exit 0
%endif
%changelog
+* Fri Mar 4 2022 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1:6.03-1
+- Update to 6.03
+- All patches sent to the upstream was merged, yeah!
+- print_xinput_event: check if XIRawEvent.raw_values is available
+
* Sat Jan 22 2022 Fedora Release Engineering <releng(a)fedoraproject.org> -
1:6.02-4.1
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
commit aae2d1655be84b04c88c36805488d25f1f825bf4
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Sat Jan 22 05:31:24 2022 +0000
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/xscreensaver.spec b/xscreensaver.spec
index 4bb19fa..e640beb 100644
--- a/xscreensaver.spec
+++ b/xscreensaver.spec
@@ -66,7 +66,7 @@
Summary: X screen saver and locker
Name: %{name}
Version: %{mainversion}
-Release:
%{?beta_ver:0.}%{fedora_rel}%{?beta_ver:.%beta_ver}%{?dist}%{flagrel}%{?extrarel}
+Release:
%{?beta_ver:0.}%{fedora_rel}%{?beta_ver:.%beta_ver}%{?dist}%{flagrel}%{?extrarel}.1
Epoch: 1
License: MIT
URL:
http://www.jwz.org/xscreensaver/
@@ -1124,6 +1124,9 @@ exit 0
%endif
%changelog
+* Sat Jan 22 2022 Fedora Release Engineering <releng(a)fedoraproject.org> -
1:6.02-4.1
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
* Thu Nov 4 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1:6.02-4
- marbling: fix signedness for x86_64 and aarch64 on vectorization
- build marbling on aarch64 again
commit 0175259029736247e7c25508a81d7190c9df7cdf
Author: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
Date: Thu Nov 4 23:20:04 2021 +0900
marbling: fix signedness for x86_64 and aarch64 on vectorization
build marbling on aarch64 again
diff --git
a/xscreensaver-6.02-0003-marbling-fix-signedness-for-x86_64-and-aarch64-on-ve.patch
b/xscreensaver-6.02-0003-marbling-fix-signedness-for-x86_64-and-aarch64-on-ve.patch
new file mode 100644
index 0000000..cc09f1d
--- /dev/null
+++ b/xscreensaver-6.02-0003-marbling-fix-signedness-for-x86_64-and-aarch64-on-ve.patch
@@ -0,0 +1,150 @@
+From d68bca70579d141b1457f84ce5e6d022a4e458b9 Mon Sep 17 00:00:00 2001
+From: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
+Date: Thu, 4 Nov 2021 22:38:26 +0900
+Subject: [PATCH] marbling: fix signedness for x86_64 and aarch64 on
+ vectorization
+
+---
+ hacks/marbling.c | 57 ++++++++++++++++++++++++++++--------------------
+ 1 file changed, 33 insertions(+), 24 deletions(-)
+
+diff --git a/hacks/marbling.c b/hacks/marbling.c
+index 0896aa5..bb00431 100644
+--- a/hacks/marbling.c
++++ b/hacks/marbling.c
+@@ -44,6 +44,13 @@
+ #include "thread_util.h"
+ #include "xshm.h"
+
++#if defined __GNUC__ || defined __clang__ || \
++ defined __STDC_VERSION__ && __STDC_VERSION__ > 199901L
++# define INLINE inline
++#else
++# define INLINE
++#endif
++
+ /* Use GCC/Clang's vector SIMD extensions, when possible.
+
https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html
+ */
+@@ -59,17 +66,21 @@
+ */
+ # if defined __AVX2__
+ # define VSIZE 16
+-# define IMUL_HI __builtin_ia32_pmulhw256
+-# define MUL_HI __builtin_ia32_pmulhuw256
++# define IMUL_HI_OP __builtin_ia32_pmulhw256
++# define MUL_HI_OP __builtin_ia32_pmulhuw256
+ # elif defined __SSE2__
+ # define VSIZE 8
+-# define IMUL_HI __builtin_ia32_pmulhw128
+-# define MUL_HI __builtin_ia32_pmulhuw128
++# define IMUL_HI_OP __builtin_ia32_pmulhw128
++# define MUL_HI_OP __builtin_ia32_pmulhuw128
+ # endif
+
+ # ifdef VSIZE
+-typedef int16_t v_uhi __attribute__((vector_size(VSIZE * 2)));
++typedef uint16_t v_uhi __attribute__((vector_size(VSIZE * 2)));
+ typedef int16_t v_hi __attribute__((vector_size(VSIZE * 2)));
++
++static INLINE v_hi IMUL_HI(v_hi a, v_hi b) { return IMUL_HI_OP(a, b); }
++static INLINE v_uhi MUL_HI(v_uhi a, v_uhi b) { return (v_uhi)MUL_HI_OP((v_hi)a,
(v_hi)b); }
++
+ # endif
+ # endif
+
+@@ -114,13 +125,6 @@ typedef int16_t v_hi;
+ # define VEC_INDEX(v, i) ((v)[i])
+ #endif
+
+-#if defined __GNUC__ || defined __clang__ || \
+- defined __STDC_VERSION__ && __STDC_VERSION__ > 199901L
+-# define INLINE inline
+-#else
+-# define INLINE
+-#endif
+-
+ struct state {
+ Display *dpy;
+ Window window;
+@@ -159,15 +163,16 @@ const unsigned lerp_loss = 2; /* Min: 2 */
+ const unsigned noise_out_bits = noise_work_bits - 3 * lerp_loss + 1;
+ const unsigned noise_in_bits = 8;
+
+-static INLINE v_hi
++static INLINE v_uhi
+ broadcast (int16_t x)
+ {
+ #if VSIZE == 1
+- return x;
++ v_hi r = x;
+ #else
+ v_hi r = {0};
+- return r + x;
++ r = r + x;
+ #endif
++ return (v_uhi)r;
+ }
+
+ static INLINE v_uhi
+@@ -176,10 +181,13 @@ fade (v_uhi t)
+ const uint16_t F = 256;
+
+ #if __ARM_NEON
+- v_uhi t2 = (t * t) >> 1;
+- return
+- vqdmulhq_s16(t2, 10 * t - vqdmulhq_s16(t2, (uint16_t)(15 * F) - t * 6)) <<
++ v_uhi ut2 = (t * t) >> 1;
++ v_hi it2 = (v_hi)ut2;
++ v_hi it = (v_hi)t;
++ v_hi iret =
++ vqdmulhq_s16(it2, 10 * it - vqdmulhq_s16(it2, (int16_t)(15 * F) - it * 6)) <<
+ (noise_work_bits - noise_in_bits + 1);
++ return (v_uhi)iret;
+ #else
+ v_uhi t2 = t * t;
+ return
+@@ -239,7 +247,7 @@ noise (v_uhi x, v_uhi y, v_uhi z)
+ {
+ const v_uhi one = broadcast(1 << noise_work_bits);
+ v_uhi X, Y, Z, A, B, AA, AB, BA, BB;
+- v_uhi u, v, w;
++ v_hi u, v, w;
+ v_hi c0, c1, c2, c3, c4, c5, c6, c7;
+ X = x >> noise_in_bits; /* FIND UNIT CUBE THAT */
+ Y = y >> noise_in_bits; /* CONTAINS POINT. */
+@@ -247,9 +255,9 @@ noise (v_uhi x, v_uhi y, v_uhi z)
+ x &= (uint16_t)((1 << noise_in_bits) - 1); /* FIND RELATIVE X,Y,Z */
+ y &= (uint16_t)((1 << noise_in_bits) - 1); /* OF POINT IN CUBE. */
+ z &= (uint16_t)((1 << noise_in_bits) - 1);
+- u = fade(x); /* COMPUTE FADE CURVES */
+- v = fade(y); /* FOR EACH OF X,Y,Z. */
+- w = fade(z);
++ u = (v_hi)fade(x); /* COMPUTE FADE CURVES */
++ v = (v_hi)fade(y); /* FOR EACH OF X,Y,Z. */
++ w = (v_hi)fade(z);
+
+ A = noise_rand(X)+Y, AA = P(A)+Z, AB = P(A+1)+Z; /* HASH COORDINATES OF */
+ B = P(X+1)+Y, BA = P(B)+Z, BB = P(B+1)+Z; /* THE 8 CUBE CORNERS, */
+@@ -265,7 +273,8 @@ noise (v_uhi x, v_uhi y, v_uhi z)
+ c6 = grad(P(AB+1), x, y-one, z-one );
+ c7 = grad(P(BB+1), x-one, y-one, z-one );
+
+- return SCALE(LERP(w, LERP(v, LERP(u, c0, c1), /* AND ADD BLENDED */
++ return
++ (v_uhi)SCALE(LERP(w, LERP(v, LERP(u, c0, c1), /* AND ADD BLENDED */
+ LERP(u, c2, c3)), /* RESULTS FROM 8 */
+ LERP(v, LERP(u, c4, c5), /* CORNERS OF CUBE */
+ LERP(u, c6, c7))));
+@@ -292,7 +301,7 @@ fbm (v_uhi x, v_uhi y, v_uhi z)
+ for (i = 0; i < octaves; i++)
+ {
+ #if __ARM_NEON
+- t += vqdmulhq_n_s16(noise (f*x, f*y, f*z), a);
++ t += (v_uhi)vqdmulhq_n_s16((v_hi)noise (f*x, f*y, f*z), a);
+ a = ((uint32_t)a * iG) >> 16;
+ #else
+ t += MUL_HI(noise (f*x, f*y, f*z), a);
+--
+2.33.1
+
diff --git a/xscreensaver.spec b/xscreensaver.spec
index f8149c7..4bb19fa 100644
--- a/xscreensaver.spec
+++ b/xscreensaver.spec
@@ -11,7 +11,7 @@
%define split_getimage 1
%endif
-%define fedora_rel 3
+%define fedora_rel 4
%global use_clang_as_cc 0
%global use_clang_analyze 0
@@ -98,6 +98,8 @@ Patch3607:
xscreensaver-5.36-0007-misc-kill-gcc-warn_unused_result-warning
Patch5201:
xscreensaver-6.02-0001-xscreensaver_systemd_loop-avoid-use-after-free-on-fo.patch
# get_egl_config: reset loop counter with prefersGLSL option each loop
Patch5202:
xscreensaver-6.02-0002-get_egl_config-reset-loop-counter-with-prefersGLSL-o.patch
+# marbling: fix signedness for x86_64 and aarch64 on vectorization
+Patch5203:
xscreensaver-6.02-0003-marbling-fix-signedness-for-x86_64-and-aarch64-on-ve.patch
# Fedora specific
# window_init: search parenthesis first for searching year
Patch10001:
xscreensaver-6.00-0001-screensaver_id-search-parenthesis-first-for-searchin.patch
@@ -380,6 +382,7 @@ find . -name \*.c -exec chmod ugo-x {} \;
#%%__cat %PATCH3607 | %__git am
%__cat %PATCH5201 | %__git am
%__cat %PATCH5202 | %__git am
+%__cat %PATCH5203 | %__git am
%__cat %PATCH10001 | %__git am
%__cat %PATCH10003 | %__git am
%__cat %PATCH10005 | %__git am
@@ -536,14 +539,6 @@ sed -i.delay -e 's|60 \* 15|20|' driver/test-grab.c
sed -i 's|-Wunknown-warning-option|-Wfoo-bar-baz|' ax_pthread.m4
%__git commit -m "Really use unknowing warning option" -a
-# aarch64: don't build marbling for now, does not build
-%ifarch aarch64
-sed -i hacks/Makefile.in \
- -e 's@marbling binaryhorizon@binaryhorizon@'
-%__git commit -m "don't build marbling for now" -a
-%endif
-
-
aclocal
autoconf
autoheader
@@ -1129,6 +1124,10 @@ exit 0
%endif
%changelog
+* Thu Nov 4 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1:6.02-4
+- marbling: fix signedness for x86_64 and aarch64 on vectorization
+- build marbling on aarch64 again
+
* Mon Nov 1 2021 Mamoru TASAKA <mtasaka(a)fedoraproject.org> - 1:6.02-3
- get_egl_config: reset loop counter with prefersGLSL option each loop
(ref: bug 1983483)