Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package xdpyinfo for openSUSE:Factory checked in at 2025-07-28 14:57:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xdpyinfo (Old) and /work/SRC/openSUSE:Factory/.xdpyinfo.new.13279 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xdpyinfo" Mon Jul 28 14:57:59 2025 rev:11 rq:1295943 version:1.4.0 Changes: -------- --- /work/SRC/openSUSE:Factory/xdpyinfo/xdpyinfo.changes 2023-04-29 17:27:51.418470925 +0200 +++ /work/SRC/openSUSE:Factory/.xdpyinfo.new.13279/xdpyinfo.changes 2025-07-28 14:58:01.805987277 +0200 @@ -1,0 +2,15 @@ +Sun Jul 27 08:53:14 UTC 2025 - Stefan Dirsch <sndir...@suse.com> + +- Update to version 1.4.0 + * gitlab CI: Update to latest CI templates & Debian stable release + * XFree86-DGA: -ext all shoudn't exit on XF86DGAClientNotLocal error + * Present: add -ext present that prints version & screen capabilities + * Present: add per-crtc capabilities to -ext output + * meson: Add option to build with meson + * Add -help option + * Accept --help & --version as aliases to -help & -version + * man page: fix warnings from `mandoc -T lint` + * Fix alignment of -help description in -help output +- switched to meson build + +------------------------------------------------------------------- Old: ---- xdpyinfo-1.3.4.tar.xz New: ---- xdpyinfo-1.4.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xdpyinfo.spec ++++++ --- /var/tmp/diff_new_pack.usfVNU/_old 2025-07-28 14:58:03.678064588 +0200 +++ /var/tmp/diff_new_pack.usfVNU/_new 2025-07-28 14:58:03.694065248 +0200 @@ -1,7 +1,7 @@ # # spec file for package xdpyinfo # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2025 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,13 +17,14 @@ Name: xdpyinfo -Version: 1.3.4 +Version: 1.4.0 Release: 0 Summary: Utility to display information about an X server License: MIT Group: System/X11/Utilities URL: http://xorg.freedesktop.org/ Source0: http://xorg.freedesktop.org/releases/individual/app/%{name}-%{version}.tar.xz +BuildRequires: meson BuildRequires: pkg-config BuildRequires: pkgconfig(dmx) BuildRequires: pkgconfig(x11) @@ -55,11 +56,11 @@ %setup -q %build -%configure -make %{?_smp_mflags} +%meson +%meson_build %install -%make_install +%meson_install %files %defattr(-,root,root) ++++++ xdpyinfo-1.3.4.tar.xz -> xdpyinfo-1.4.0.tar.xz ++++++ ++++ 10625 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xdpyinfo-1.3.4/ChangeLog new/xdpyinfo-1.4.0/ChangeLog --- old/xdpyinfo-1.3.4/ChangeLog 2023-04-28 02:11:39.000000000 +0200 +++ new/xdpyinfo-1.4.0/ChangeLog 2025-07-27 01:22:35.000000000 +0200 @@ -1,3 +1,103 @@ +commit 7fe49a22498b9438a15d5d9fdef55d5d832b1672 +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Sat Jul 26 16:19:13 2025 -0700 + + xdpyinfo 1.4.0 + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + +commit 1a18e2bed4a514483f2db8bd20a2a806913e1236 +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Sat Jul 26 16:17:08 2025 -0700 + + Fix alignment of -help description in -help output + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + +commit 032913e1f136d356bca485114674a7185786517c +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Tue May 20 17:28:33 2025 -0700 + + man page: fix warnings from `mandoc -T lint` + + mandoc: xdpyinfo.1:25:16: WARNING: cannot parse date, using it verbatim: TH xdpyinfo 1.3.4 + mandoc: xdpyinfo.1:35:2: WARNING: skipping paragraph macro: PP after SH + mandoc: xdpyinfo.1:60:2: WARNING: skipping paragraph macro: PP empty + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + Part-of: <https://gitlab.freedesktop.org/xorg/app/xdpyinfo/-/merge_requests/16> + +commit e7a8a6808d59c1421472130387397f9b284bb4fb +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Sun Mar 23 16:45:48 2025 -0700 + + Accept --help & --version as aliases to -help & -version + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + Part-of: <https://gitlab.freedesktop.org/xorg/app/xdpyinfo/-/merge_requests/15> + +commit 638506d9280ab6c1efebba81e8988cbe46e9d5d9 +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Sun Mar 23 16:36:30 2025 -0700 + + Add -help option + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + Part-of: <https://gitlab.freedesktop.org/xorg/app/xdpyinfo/-/merge_requests/15> + +commit eba6d3990d9b2de2a869d0c336ecb53f50d3460c +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Sat Mar 8 12:51:22 2025 -0800 + + meson: Add option to build with meson + + Also updates the gitlab CI config to test both build types + and compare the generated output/installed files. + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + Part-of: <https://gitlab.freedesktop.org/xorg/app/xdpyinfo/-/merge_requests/14> + +commit f579f7e654be0792294a299a32cc0d6f80d74e7e +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Sun Apr 21 14:36:31 2024 -0700 + + Present: add per-crtc capabilities to -ext output + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + Part-of: <https://gitlab.freedesktop.org/xorg/app/xdpyinfo/-/merge_requests/13> + +commit 998281c7a865da06d9c6fb832484a20d9f9e5e21 +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Sun Apr 21 14:17:08 2024 -0700 + + Present: add -ext present that prints version & screen capabilities + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + Part-of: <https://gitlab.freedesktop.org/xorg/app/xdpyinfo/-/merge_requests/13> + +commit 4755b7bacdb77cd0bb47e8be83372e4dfa135bfe +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Sun Apr 21 13:35:11 2024 -0700 + + XFree86-DGA: -ext all shoudn't exit on XF86DGAClientNotLocal error + + Allows xdpyinfo -ext all to run to completion on remote display, + instead of aborting partway through the extension list. + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + Part-of: <https://gitlab.freedesktop.org/xorg/app/xdpyinfo/-/merge_requests/13> + +commit d14333b852377f1e43ee2fe0fc737453e6dfccd9 +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Fri Oct 13 15:18:27 2023 -0700 + + gitlab CI: Update to latest CI templates & Debian stable release + + Current template fails to rebuild the CI container with the current + Debian stable release (a new release since the last update) + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + commit ea4083ccb2a5ce4252acabeb2eb7bf49f7be25e0 Author: Alan Coopersmith <alan.coopersm...@oracle.com> Date: Thu Apr 27 16:58:51 2023 -0700 @@ -1071,7 +1171,7 @@ build) commit d99fbcde4c892e8d84e02b40ed3f5862a731e9c2 -Author: Søren Sandmann Pedersen <sandm...@daimi.au.dk> +Author: Søren Sandmann Pedersen <sandm...@daimi.au.dk> Date: Wed Jul 6 19:56:47 2005 +0000 Add buildsystem for xdpyinfo @@ -1107,7 +1207,7 @@ libXaw. commit a667763d5b733f5ae2d8a3ca7e1e99d3deed2830 -Author: Kristian Høgsberg <k...@redhat.com> +Author: Kristian Høgsberg <k...@redhat.com> Date: Mon Aug 16 16:36:15 2004 +0000 As discussed and agreed on on the release-wranglers meeting of August 16, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xdpyinfo-1.3.4/Makefile.am new/xdpyinfo-1.4.0/Makefile.am --- old/xdpyinfo-1.3.4/Makefile.am 2023-04-28 02:11:23.000000000 +0200 +++ new/xdpyinfo-1.4.0/Makefile.am 2025-07-27 01:22:24.000000000 +0200 @@ -35,7 +35,8 @@ $(DPY_XCOMPOSITE_CFLAGS) \ $(DPY_XINERAMA_CFLAGS) \ $(DPY_DMX_CFLAGS) \ - $(DPY_XTST_CFLAGS) + $(DPY_XTST_CFLAGS) \ + $(DPY_XPRESENT_CFLAGS) xdpyinfo_LDADD = \ $(XDPYINFO_LIBS) \ @@ -49,7 +50,9 @@ $(DPY_XCOMPOSITE_LIBS) \ $(DPY_XINERAMA_LIBS) \ $(DPY_DMX_LIBS) \ - $(DPY_XTST_LIBS) + $(DPY_XTST_LIBS) \ + $(DPY_XPRESENT_LIBS) + xdpyinfo_SOURCES = \ xdpyinfo.c @@ -74,4 +77,4 @@ $(LINT) $(ALL_LINT_FLAGS) $(AM_CFLAGS) $(xdpyinfo_SOURCES) endif LINT -EXTRA_DIST = README.md +EXTRA_DIST = README.md meson.build meson.options diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xdpyinfo-1.3.4/compile new/xdpyinfo-1.4.0/compile --- old/xdpyinfo-1.3.4/compile 2023-04-28 02:11:27.000000000 +0200 +++ new/xdpyinfo-1.4.0/compile 2025-07-27 01:22:28.000000000 +0200 @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2018-03-07.03; # UTC +scriptversion=2025-06-18.21; # UTC -# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# Copyright (C) 1999-2025 Free Software Foundation, Inc. # Written by Tom Tromey <tro...@cygnus.com>. # # This program is free software; you can redistribute it and/or modify @@ -37,11 +37,11 @@ file_conv= -# func_file_conv build_file lazy +# func_file_conv build_file unneeded_conversions # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. +# type is listed in (the comma separated) UNNEEDED_CONVERSIONS, no +# conversion will take place. func_file_conv () { file=$1 @@ -51,9 +51,20 @@ # lazily determine how to convert abs files case `uname -s` in MINGW*) - file_conv=mingw + if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then + # MSYS2 environment. + file_conv=cygwin + else + # Original MinGW environment. + file_conv=mingw + fi ;; - CYGWIN* | MSYS*) + MSYS*) + # Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell. + file_conv=cygwin + ;; + CYGWIN*) + # Cygwin environment. file_conv=cygwin ;; *) @@ -63,12 +74,14 @@ fi case $file_conv/,$2, in *,$file_conv,*) + # This is the optimization mentioned above: + # If UNNEEDED_CONVERSIONS contains $file_conv, don't convert. ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/* | msys/*) - file=`cygpath -m "$file" || echo "$file"` + cygwin/*) + file=`cygpath -w "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` @@ -143,7 +156,7 @@ # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in - *.o | *.[oO][bB][jJ]) + *.o | *.lo | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift @@ -248,14 +261,17 @@ right script to run: please start by reading the file 'INSTALL'. Report bugs to <bug-autom...@gnu.org>. +GNU Automake home page: <https://www.gnu.org/software/automake/>. +General help using GNU software: <https://www.gnu.org/gethelp/>. EOF exit $? ;; -v | --v*) - echo "compile $scriptversion" + echo "compile (GNU Automake) $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + clang-cl | *[/\\]clang-cl | clang-cl.exe | *[/\\]clang-cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; @@ -340,9 +356,9 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xdpyinfo-1.3.4/config.h.in new/xdpyinfo-1.4.0/config.h.in --- old/xdpyinfo-1.3.4/config.h.in 2023-04-28 02:11:27.000000000 +0200 +++ new/xdpyinfo-1.4.0/config.h.in 2025-07-27 01:22:28.000000000 +0200 @@ -72,6 +72,9 @@ /* Define to 1 if you have the <X11/extensions/XKB.h> header file. */ #undef HAVE_X11_EXTENSIONS_XKB_H +/* Define to 1 if you have the <X11/extensions/Xpresent.h> header file. */ +#undef HAVE_X11_EXTENSIONS_XPRESENT_H + /* Define to 1 if you have the <X11/extensions/Xrender.h> header file. */ #undef HAVE_X11_EXTENSIONS_XRENDER_H @@ -114,7 +117,7 @@ /* Patch version of this package */ #undef PACKAGE_VERSION_PATCHLEVEL -/* Define to 1 if all of the C90 standard headers exist (not just the ones +/* Define to 1 if all of the C89 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xdpyinfo-1.3.4/configure.ac new/xdpyinfo-1.4.0/configure.ac --- old/xdpyinfo-1.3.4/configure.ac 2023-04-28 02:11:23.000000000 +0200 +++ new/xdpyinfo-1.4.0/configure.ac 2025-07-27 01:22:24.000000000 +0200 @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) -AC_INIT([xdpyinfo], [1.3.4], +AC_INIT([xdpyinfo], [1.4.0], [https://gitlab.freedesktop.org/xorg/app/xdpyinfo/-/issues], [xdpyinfo]) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_HEADERS([config.h]) @@ -138,6 +138,12 @@ AC_CHECK_HEADERS([X11/extensions/record.h],,,[#include <X11/Xlib.h>]) CPPFLAGS="$SAVE_CPPFLAGS"],[echo "not found"]) +PKG_CHECK_MODULES(DPY_XPRESENT, [xpresent xrandr >= 1.2], + [SAVE_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $DPY_XPRESENT_CFLAGS $DPY_X11_CFLAGS" + AC_CHECK_HEADERS([X11/extensions/Xpresent.h],,,[#include <X11/Xlib.h>]) + CPPFLAGS="$SAVE_CPPFLAGS"],[echo "not found"]) + dnl Allow checking code with lint, sparse, etc. XORG_WITH_LINT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xdpyinfo-1.3.4/man/xdpyinfo.man new/xdpyinfo-1.4.0/man/xdpyinfo.man --- old/xdpyinfo-1.3.4/man/xdpyinfo.man 2023-04-28 02:11:23.000000000 +0200 +++ new/xdpyinfo-1.4.0/man/xdpyinfo.man 2025-07-27 01:22:24.000000000 +0200 @@ -22,18 +22,17 @@ .\" other dealings in this Software without prior written authorization .\" from The Open Group. .\" -.TH XDPYINFO 1 __xorgversion__ +.TH XDPYINFO 1 2025-03-23 __xorgversion__ .SH NAME xdpyinfo \- display information utility for X .SH SYNOPSIS -.B "xdpyinfo" -[\-display \fIdisplayname\fP] -[\-queryExtensions] -[\-ext \fIextension-name\fP] -[-version] +.nf +\fBxdpyinfo\fR [\fB\-display\fR \fIdisplayname\fP] [\fB\-queryExtensions\fR] \ +[\fB\-ext\fR \fIextension-name\fP] + [\fB\-help\fR | \fB\-version\fR] +.fi .SH DESCRIPTION -.PP -.I Xdpyinfo +.B Xdpyinfo is a utility for displaying information about an X server. It is used to examine the capabilities of a server, the predefined values for various parameters used @@ -48,25 +47,27 @@ .PP Detailed information about a particular extension is displayed with the \fB\-ext\fP \fIextensionName\fP option. If \fIextensionName\fP is -\fBall\fP, information about all extensions supported by both \fIxdpyinfo\fP +\fBall\fP, information about all extensions supported by both \fBxdpyinfo\fP and the server is displayed. .PP -If \fB-version\fP is specified, xdpyinfo prints its version and exits, without -contacting the X server. -.SH ENVIRONMENT +If \fB\-help\fP is specified, \fBxdpyinfo\fP prints its usage message and exits, +without contacting the X server. .PP +If \fB\-version\fP is specified, \fBxdpyinfo\fP prints its version and exits, +without contacting the X server. +.SH ENVIRONMENT .TP 8 .B DISPLAY To get the default host, display number, and screen. .SH "SEE ALSO" -.IR X (__miscmansuffix__), -.IR xprop (__appmansuffix__), -.IR xrdb (__appmansuffix__), -.IR xwininfo (__appmansuffix__), -.IR xrandr (__appmansuffix__), -.IR xdriinfo (__appmansuffix__), -.IR xvinfo (__appmansuffix__), -.IR glxinfo (__appmansuffix__) +.BR X (__miscmansuffix__), +.BR xprop (__appmansuffix__), +.BR xrdb (__appmansuffix__), +.BR xwininfo (__appmansuffix__), +.BR xrandr (__appmansuffix__), +.BR xdriinfo (__appmansuffix__), +.BR xvinfo (__appmansuffix__), +.BR glxinfo (__appmansuffix__) .SH AUTHOR Jim Fulton, MIT X Consortium .br diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xdpyinfo-1.3.4/meson.build new/xdpyinfo-1.4.0/meson.build --- old/xdpyinfo-1.3.4/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/xdpyinfo-1.4.0/meson.build 2025-07-27 01:22:24.000000000 +0200 @@ -0,0 +1,169 @@ +# SPDX-License-Identifier: MIT +# +# Copyright (c) 2025, Oracle and/or its affiliates. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# + +project( + 'xdpyinfo', + 'c', + version: '1.4.0', + license: 'MIT-open-group', + license_files: 'COPYING', + meson_version: '>= 1.1.0', +) + +conf = configuration_data() +package_string = ' '.join(meson.project_name(), meson.project_version()) +conf.set_quoted('PACKAGE_STRING', package_string) + +cc = meson.get_compiler('c') + +# Replacement for XORG_DEFAULT_OPTIONS +if cc.has_argument('-fno-strict-aliasing') + add_project_arguments('-fno-strict-aliasing', language: 'c') +endif + +# Checks for pkg-config packages +## Required +dep_libxext = dependency('xext', required: true) +dep_libx11 = dependency('x11', required: true) +dep_libxtst = dependency('xtst', required: true) +dep_libx11_xcb = dependency('x11-xcb', required: true) +dep_libxcb = dependency('xcb', required: true) +dep_xproto = dependency('xproto', required: true, version: '>= 7.0.22') + +deps = [ + dep_libxext, dep_libxtst, dep_libx11_xcb, dep_libx11, dep_libxcb, + dep_xproto +] + +## Optional +dep_libxxf86vm = dependency('xxf86vm', required: false, disabler: true) +dep_libxi = dependency('xi', required: false, disabler: true) +dep_libxrender = dependency('xrender', required: false, disabler: true) +dep_libxcomposite = dependency('xcomposite', required: false, disabler: true) +dep_libxpresent = dependency('xpresent', required: false, disabler: true) +dep_libxrandr = dependency('xrandr', required: false, version: '>= 1.2', + disabler: true) + +if get_option('dga').allowed() + dep_libxxf86dga = dependency('xxf86dga', required: false, disabler: true) +else + dep_libxxf86dga = disabler() +endif +summary('dga', dep_libxxf86dga.found()) + +if get_option('dmx').allowed() + dep_libdmx = dependency('dmx', required: false, disabler: true) +else + dep_libdmx = disabler() +endif +summary('dmx', dep_libdmx.found()) + +if get_option('xf86misc').allowed() + dep_libxxf86misc = dependency('xxf86misc', required: false, disabler: true) +else + dep_libxxf86misc = disabler() +endif +summary('xf86misc', dep_libxxf86misc.found()) + +if get_option('xinerama').allowed() + dep_libxinerama = dependency('xinerama', required: false, disabler: true) +else + dep_libxinerama = disabler() +endif +summary('xinerama', dep_libxinerama.found()) + +optional_deps = [ + dep_libxxf86vm, dep_libxxf86dga, dep_libxxf86misc, dep_libxi, dep_libxrender, + dep_libxcomposite, dep_libxinerama, dep_libdmx, dep_libxpresent, dep_libxrandr +] + +foreach d: optional_deps + if d.found() + deps += d + endif +endforeach + +headers_to_check = { + 'X11/extensions/multibuf.h': [dep_libxext], + 'X11/extensions/XShm.h': [dep_libxext], + 'X11/extensions/XKB.h': [], # dep_libx11 already included below + 'X11/XKBlib.h': [], # dep_libx11 already included below + 'X11/extensions/xf86vmode.h': [dep_libxxf86vm], + 'X11/extensions/xf86vmstr.h': [dep_libxxf86vm], + 'X11/extensions/xf86vmproto.h': [dep_libxxf86vm], + 'X11/extensions/Xxf86dga.h': [dep_libxxf86dga], + 'X11/extensions/xf86dgaproto.h':[dep_libxxf86dga], + 'X11/extensions/xf86dga.h': [dep_libxxf86dga], + 'X11/extensions/xf86dgastr.h': [dep_libxxf86dga], + 'X11/extensions/xf86misc.h': [dep_libxxf86misc], + 'X11/extensions/xf86mscstr.h': [dep_libxxf86misc], + 'X11/extensions/XInput.h': [dep_libxi], + 'X11/extensions/Xrender.h': [dep_libxrender], + 'X11/extensions/Xcomposite.h': [dep_libxcomposite], + 'X11/extensions/Xinerama.h': [dep_libxinerama], + 'X11/extensions/dmxext.h': [dep_libdmx], + 'X11/extensions/record.h': [dep_libxtst], + 'X11/extensions/Xpresent.h': [dep_libxpresent, dep_libxrandr] +} + +foreach h: headers_to_check.keys() + conf.set( + 'HAVE_' + h.to_upper().underscorify(), + cc.check_header( + h, + dependencies: [headers_to_check[h], dep_libx11, dep_xproto], + prefix: ['#include <X11/Xlib.h>', '#include <X11/Xproto.h>'], + required: false + ) ? '1' : false + ) +endforeach + +config_h = configure_file(output: 'config.h', configuration: conf) +add_project_arguments('-DHAVE_CONFIG_H', language: ['c']) + +executable( + 'xdpyinfo', + [config_h, 'xdpyinfo.c'], + dependencies: deps, + install: true +) + +# Man page +prog_sed = find_program('sed') + +custom_target( + 'xdpyinfo.man', + input: 'man/xdpyinfo.man', + output: 'xdpyinfo.1', + command: [ + prog_sed, + '-e', 's/__xorgversion__/"@0@" "X Version 11"/'.format(package_string), + '-e', 's/__appmansuffix__/1/g', + '-e', 's/__miscmansuffix__/7/g', + '@INPUT@', + ], + capture: true, + install: true, + install_dir: get_option('mandir') / 'man1', +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xdpyinfo-1.3.4/meson.options new/xdpyinfo-1.4.0/meson.options --- old/xdpyinfo-1.3.4/meson.options 1970-01-01 01:00:00.000000000 +0100 +++ new/xdpyinfo-1.4.0/meson.options 2025-07-27 01:22:24.000000000 +0200 @@ -0,0 +1,27 @@ +option( + 'dga', + type: 'feature', + value : 'enabled', + description: 'Enable XFree86-DGA support (default is enabled)', +) + +option( + 'dmx', + type: 'feature', + value : 'disabled', + description: 'Enable DMX support (default is disabled)', +) + +option( + 'xf86misc', + type: 'feature', + value : 'disabled', + description: 'Enable XFree86-Misc support (default is disabled)', +) + +option( + 'xinerama', + type: 'feature', + value : 'enabled', + description: 'Enable Xinerama support (default is enabled)', +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xdpyinfo-1.3.4/missing new/xdpyinfo-1.4.0/missing --- old/xdpyinfo-1.3.4/missing 2023-04-28 02:11:27.000000000 +0200 +++ new/xdpyinfo-1.4.0/missing 2025-07-27 01:22:28.000000000 +0200 @@ -1,9 +1,11 @@ #! /bin/sh -# Common wrapper for a few potentially missing GNU programs. +# Common wrapper for a few potentially missing GNU and other programs. -scriptversion=2018-03-07.03; # UTC +scriptversion=2025-06-18.21; # UTC -# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# shellcheck disable=SC2006,SC2268 # we must support pre-POSIX shells + +# Copyright (C) 1996-2025 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <pin...@iro.umontreal.ca>, 1996. # This program is free software; you can redistribute it and/or modify @@ -54,18 +56,20 @@ -v, --version output version information and exit Supported PROGRAM values: - aclocal autoconf autoheader autom4te automake makeinfo - bison yacc flex lex help2man +aclocal autoconf autogen autoheader autom4te automake autoreconf +bison flex help2man lex makeinfo perl yacc Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. -Send bug reports to <bug-autom...@gnu.org>." +Report bugs to <bug-autom...@gnu.org>. +GNU Automake home page: <https://www.gnu.org/software/automake/>. +General help using GNU software: <https://www.gnu.org/gethelp/>." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" + echo "missing (GNU Automake) $scriptversion" exit $? ;; @@ -108,7 +112,7 @@ program_details () { case $1 in - aclocal|automake) + aclocal|automake|autoreconf) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" @@ -123,6 +127,9 @@ echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; + *) + : + ;; esac } @@ -137,48 +144,55 @@ printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + autoheader_deps="'acconfig.h'" + automake_deps="'Makefile.am'" + aclocal_deps="'acinclude.m4'" case $normalized_program in + aclocal*) + echo "You should only need it if you modified $aclocal_deps or" + echo "$configure_deps." + ;; autoconf*) - echo "You should only need it if you modified 'configure.ac'," - echo "or m4 files included by it." - program_details 'autoconf' + echo "You should only need it if you modified $configure_deps." + ;; + autogen*) + echo "You should only need it if you modified a '.def' or '.tpl' file." + echo "You may want to install the GNU AutoGen package:" + echo "<$gnu_software_URL/autogen/>" ;; autoheader*) - echo "You should only need it if you modified 'acconfig.h' or" + echo "You should only need it if you modified $autoheader_deps or" echo "$configure_deps." - program_details 'autoheader' ;; automake*) - echo "You should only need it if you modified 'Makefile.am' or" - echo "$configure_deps." - program_details 'automake' - ;; - aclocal*) - echo "You should only need it if you modified 'acinclude.m4' or" + echo "You should only need it if you modified $automake_deps or" echo "$configure_deps." - program_details 'aclocal' ;; - autom4te*) + autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." - program_details 'autom4te' + ;; + autoreconf*) + echo "You should only need it if you modified $aclocal_deps or" + echo "$automake_deps or $autoheader_deps or $automake_deps or" + echo "$configure_deps." ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; - lex*|flex*) - echo "You should only need it if you modified a '.l' file." - echo "You may want to install the Fast Lexical Analyzer package:" - echo "<$flex_URL>" - ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." @@ -189,6 +203,12 @@ echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; + perl*) + echo "You should only need it to run GNU Autoconf, GNU Automake, " + echo " assorted other tools, or if you modified a Perl source file." + echo "You may want to install the Perl 5 language interpreter:" + echo "<$perl_URL>" + ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" @@ -197,6 +217,7 @@ echo "case some other package contains this missing '$1' program." ;; esac + program_details "$normalized_program" } give_advice "$1" | sed -e '1s/^/WARNING: /' \ @@ -207,9 +228,9 @@ exit $st # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xdpyinfo-1.3.4/xdpyinfo.c new/xdpyinfo-1.4.0/xdpyinfo.c --- old/xdpyinfo-1.3.4/xdpyinfo.c 2023-04-28 02:11:23.000000000 +0200 +++ new/xdpyinfo-1.4.0/xdpyinfo.c 2025-07-27 01:22:24.000000000 +0200 @@ -76,6 +76,10 @@ # define DMX # endif +# if HAVE_X11_EXTENSIONS_XPRESENT_H +# define PRESENT +# endif + #endif #ifdef WIN32 @@ -137,6 +141,10 @@ #ifdef DMX #include <X11/extensions/dmxext.h> #endif +#ifdef PRESENT +#include <X11/extensions/Xpresent.h> +#include <X11/extensions/Xrandr.h> +#endif #include <X11/Xos.h> #include <stdio.h> #include <stdlib.h> @@ -144,14 +152,12 @@ static char *ProgramName; static Bool queryExtensions = False; -#if defined(XF86MISC) || defined(XFreeXDGA) +#if defined(XF86MISC) static int silent_errors(_X_UNUSED Display *dpy, _X_UNUSED XErrorEvent *ev) { return 0; } - -static int (*old_handler)(Display *, XErrorEvent *) = NULL; #endif static int print_event_mask(char *buf, int lastcol, int indent, long mask); @@ -708,10 +714,35 @@ #ifdef XFreeXDGA static int +catch_dga_errors(Display *dpy, XErrorEvent *event) +{ + char error_name[128]; + char request_name[128]; + char code[64]; + + XGetErrorText(dpy, event->error_code, error_name, sizeof(error_name)); + if (event->request_code < 128) { + snprintf(code, sizeof(code), "%d", event->request_code); + XGetErrorDatabaseText(dpy, "XRequest", code, "", + request_name, sizeof(request_name)); + } else { + snprintf(code, sizeof(code), "%s.%d", "XFree86-DGA", event->minor_code); + XGetErrorDatabaseText(dpy, "XRequest", code, "", + request_name, sizeof(request_name)); + } + + printf(" DGA: %s returned error: %s\n", request_name, error_name); + return 0; +} + +static int print_dga_info(Display *dpy, const char *extname) { unsigned int offset; int majorrev, minorrev, width, bank, ram, flags; + XErrorHandler old_handler; + + old_handler = XSetErrorHandler(catch_dga_errors); if (!XF86DGAQueryVersion(dpy, &majorrev, &minorrev)) return 0; @@ -724,8 +755,6 @@ return 1; } - old_handler = XSetErrorHandler(silent_errors); - if (!XF86DGAGetVideoLL(dpy, DefaultScreen(dpy), &offset, &width, &bank, &ram)) return 0; @@ -869,6 +898,7 @@ print_XF86Misc_info(Display *dpy, const char *extname) { int majorrev, minorrev; + XErrorHandler old_handler; if (!XF86MiscQueryVersion(dpy, &majorrev, &minorrev)) return 0; @@ -1326,6 +1356,118 @@ #endif /* DMX */ + +#ifdef PRESENT +static inline void print_present_capabilities(uint32_t capabilities) +{ + if (capabilities == PresentCapabilityNone) { + fputs("PresentCapabilityNone", stdout); + } + else { + int count = 0; + + if (capabilities & PresentCapabilityAsync) { + fputs("PresentCapabilityAsync", stdout); + count++; + capabilities &= ~PresentCapabilityAsync; + } + if (capabilities & PresentCapabilityFence) { + if (count) + fputs(" | ", stdout); + fputs("PresentCapabilityFence", stdout); + count++; + capabilities &= ~PresentCapabilityFence; + } + if (capabilities & PresentCapabilityUST) { + if (count) + fputs(" | ", stdout); + fputs("PresentCapabilityUST", stdout); + count++; + capabilities &= ~PresentCapabilityUST; + } +#ifdef PresentCapabilityAsyncMayTear /* added in xorgproto-2023.1 */ + if (capabilities & PresentCapabilityAsyncMayTear) { + if (count) + fputs(" | ", stdout); + fputs("PresentCapabilityAsyncMayTear", stdout); + count++; + capabilities &= ~PresentCapabilityAsyncMayTear; + } +#endif +#ifdef PresentCapabilitySyncobj /* added in xorgproto-2024.1 */ + if (capabilities & PresentCapabilitySyncobj) { + if (count) + fputs(" | ", stdout); + fputs("PresentCapabilitySyncobj", stdout); + count++; + capabilities &= ~PresentCapabilitySyncobj; + } +#endif + /* Are there any bits left we didn't recognize? */ + if (capabilities != 0) { + for (unsigned int b = 0; b < 32; b++) { + uint32_t m = 1U << b; + + if (capabilities & m) { + if (count) + fputs(" | ", stdout); + printf("PresentCapabilityUnknownBit%d", b); + capabilities &= ~m; + } + } + } + } +} + + +static int print_present_info(Display *dpy, const char *extname) +{ + int opcode, event_base, error_base; + int major_version, minor_version; + Bool query_crtcs = False; + + if (!XPresentQueryExtension(dpy, &opcode, &event_base, &error_base) + || !XPresentQueryVersion(dpy, &major_version, &minor_version)) + return 0; + print_standard_extension_info(dpy, extname, major_version, minor_version); + + if (XRRQueryExtension (dpy, &event_base, &error_base)) { + int rr_major, rr_minor; + + if (XRRQueryVersion (dpy, &rr_major, &rr_minor) && + (rr_major == 1) && (rr_minor >= 2)) { + query_crtcs = True; + } + } + + for (int i = 0; i < ScreenCount (dpy); i++) { + Window screen_root = RootWindow(dpy, i); + uint32_t capabilities = XPresentQueryCapabilities(dpy, screen_root); + + printf(" screen #%d capabilities: 0x%x (", i, capabilities); + print_present_capabilities(capabilities); + puts(")"); + + if (query_crtcs) { + XRRScreenResources *res = XRRGetScreenResources (dpy, screen_root); + + if (res != NULL) { + for (int c = 0; c < res->ncrtc; c++) { + capabilities = XPresentQueryCapabilities(dpy, res->crtcs[c]); + printf(" crtc 0x%lx capabilities: 0x%x (", + res->crtcs[c], capabilities); + print_present_capabilities(capabilities); + puts(")"); + } + XRRFreeScreenResources(res); + } + } + } + + return 1; +} +#endif /* XPRESENT */ + /* utilities to manage the list of recognized extensions */ @@ -1379,6 +1521,9 @@ #ifdef DMX {"DMX", print_dmx_info, False}, #endif +#ifdef PRESENT + {"Present", print_present_info, False}, +#endif /* add new extensions here */ }; @@ -1443,17 +1588,18 @@ } static void _X_NORETURN -usage(void) +usage(int exitstatus) { fprintf (stderr, "usage: %s [options]\n%s", ProgramName, "-display displayname\tserver to query\n" + "-help\t\t\tprint program usage and exit\n" "-version\t\tprint program version and exit\n" "-queryExtensions\tprint info returned by XQueryExtension\n" "-ext all\t\tprint detailed info for all supported extensions\n" "-ext extension-name\tprint detailed info for extension-name if one of:\n "); print_known_extensions(stderr); fprintf (stderr, "\n"); - exit (1); + exit (exitstatus); } int @@ -1472,7 +1618,7 @@ if (++i >= argc) { fprintf (stderr, "%s: -display requires an argument\n", ProgramName); - usage (); + usage (EXIT_FAILURE); } displayname = argv[i]; } else if (!strncmp("-queryExtensions", arg, len)) { @@ -1481,16 +1627,20 @@ if (++i >= argc) { fprintf (stderr, "%s: -ext requires an argument\n", ProgramName); - usage (); + usage (EXIT_FAILURE); } mark_extension_for_printing(argv[i]); - } else if (!strncmp("-version", arg, len)) { + } else if (!strncmp("-version", arg, len) || + !strncmp("--version", arg, len)) { printf("%s\n", PACKAGE_STRING); - exit (0); + exit (EXIT_SUCCESS); + } else if (!strncmp("-help", arg, len) || + !strncmp("--help", arg, len)) { + usage (EXIT_SUCCESS); } else { fprintf (stderr, "%s: unrecognized argument '%s'\n", ProgramName, arg); - usage (); + usage (EXIT_FAILURE); } } @@ -1498,7 +1648,7 @@ if (!dpy) { fprintf (stderr, "%s: unable to open display \"%s\".\n", ProgramName, XDisplayName (displayname)); - exit (1); + exit (EXIT_FAILURE); } print_display_info (dpy); @@ -1509,5 +1659,5 @@ print_marked_extensions(dpy); XCloseDisplay (dpy); - exit (0); + exit (EXIT_SUCCESS); }