commit:     16d668a7b49b68443e1b4e95a0b67905fed92d0e
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 20 10:45:17 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Dec 20 10:45:17 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=16d668a7

x11-wm/fvwm: further modern C fixes for configure

Signed-off-by: Sam James <sam <AT> gentoo.org>

 x11-wm/fvwm/files/fvwm-2.7.0-c99.patch |  99 +++++++++++++++++++
 x11-wm/fvwm/fvwm-2.7.0-r2.ebuild       | 171 +++++++++++++++++++++++++++++++++
 2 files changed, 270 insertions(+)

diff --git a/x11-wm/fvwm/files/fvwm-2.7.0-c99.patch 
b/x11-wm/fvwm/files/fvwm-2.7.0-c99.patch
new file mode 100644
index 000000000000..7bc137dc6cc2
--- /dev/null
+++ b/x11-wm/fvwm/files/fvwm-2.7.0-c99.patch
@@ -0,0 +1,99 @@
+https://github.com/fvwmorg/fvwm/pull/100
+
+From 0b4daddf6b88b696daf54714448b8d89a615abf2 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <[email protected]>
+Date: Thu, 24 Nov 2022 13:06:50 +0100
+Subject: [PATCH 1/3] configure: Do not require support for implicit ints
+
+Implicit ints  have not been part of C since 1999, and future
+compilers will disable support for them by default.  Fortunatenly,
+only one configure check needs adjusting.
+---
+ acinclude.m4 | 2 +-
+ configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index 8b74ff1e5..b66042f9f 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -30,7 +30,7 @@ if test "$ac_cv_func_select" = yes; then
+ #ifdef HAVE_SYS_SOCKET_H
+ #include <sys/socket.h>
+ #endif],
+-[extern select ($ac_cv_type_fd_set_size_t,
++[extern int select ($ac_cv_type_fd_set_size_t,
+  $ac_cv_type_fd_set *,        $ac_cv_type_fd_set *, $ac_cv_type_fd_set *,
+  $ac_type_timeval *);],
+ [ac_found=yes ; break 3],ac_found=no)
+diff --git a/configure.ac b/configure.ac
+index 97ab9e7a1..c9fcede6a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -220,7 +220,7 @@ AC_MINIX
+ 
+ # catch -Werror and similar options when running configure
+ AC_TRY_COMPILE([#include <stdio.h>],
+-[int i; static j; int *p; char *c;
++[int i; int *p; char *c;
+   switch (*p = p = *c) { case 0: printf("%Q", c, p); }
+   *c = &i; c = p;
+   while (1 || (unsigned int)3 >= 0 || ((int)-1) == ((unsigned int)1));
+
+From 6b9d100ae4e784821b5189474dc58e646417bcf6 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <[email protected]>
+Date: Thu, 24 Nov 2022 13:07:56 +0100
+Subject: [PATCH 2/3] acinclude.m4: Add missing <unistd.h> to
+ AM_SAFETY_CHECK_MKSTEMP
+
+Otherwise, the check fails on a compiler which does not support
+implicit function declarations (a language feature removed in 1999).
+---
+ acinclude.m4 | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index b66042f9f..4dee2abeb 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -1154,6 +1154,9 @@ AC_DEFUN([AM_SAFETY_CHECK_MKSTEMP],[
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#ifdef HAVE_UNISTD_H
++#include <unistd.h>
++#endif
+ int main(void)
+ {
+   char template[128];
+
+From 33537b8ae5a302e4016dc1c6cfe5577fb3fa36c9 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <[email protected]>
+Date: Tue, 19 Dec 2023 13:24:50 +0100
+Subject: [PATCH 3/3] configure: Further defang the -Werror check
+
+Incompatible pointer types are actually errors (in the sense
+that they are invalid C).  Compilers have merely tolerated them as
+warnings for backwards compatibility.  This is changing with Clang 16
+and GCC 14, so relax the check a little.
+---
+ configure.ac | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index c9fcede6a..2e9615b2b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -220,9 +220,8 @@ AC_MINIX
+ 
+ # catch -Werror and similar options when running configure
+ AC_TRY_COMPILE([#include <stdio.h>],
+-[int i; int *p; char *c;
+-  switch (*p = p = *c) { case 0: printf("%Q", c, p); }
+-  *c = &i; c = p;
++[int unused; int *p; char *c;
++  printf("%Q", c, p);
+   while (1 || (unsigned int)3 >= 0 || ((int)-1) == ((unsigned int)1));
+ ], , AC_MSG_ERROR("
+ configure is not able to compile programs with warnings.  Please
+

diff --git a/x11-wm/fvwm/fvwm-2.7.0-r2.ebuild b/x11-wm/fvwm/fvwm-2.7.0-r2.ebuild
new file mode 100644
index 000000000000..8f75a2f03ab7
--- /dev/null
+++ b/x11-wm/fvwm/fvwm-2.7.0-r2.ebuild
@@ -0,0 +1,171 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9..11} )
+inherit autotools flag-o-matic python-single-r1 desktop
+
+DESCRIPTION="An extremely powerful ICCCM-compliant multiple virtual desktop 
window manager"
+HOMEPAGE="https://www.fvwm.org/";
+SRC_URI="https://github.com/fvwmorg/fvwm/releases/download/${PV}/${P}.tar.gz";
+
+LICENSE="GPL-2+ FVWM"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="bidi debug doc netpbm nls perl png readline stroke svg tk truetype 
+vanilla xinerama lock"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+COMMON_DEPEND="
+       sys-libs/zlib
+       x11-libs/libICE
+       x11-libs/libSM
+       x11-libs/libX11
+       x11-libs/libXau
+       x11-libs/libxcb
+       x11-libs/libXcursor
+       x11-libs/libXdmcp
+       x11-libs/libXext
+       x11-libs/libXfixes
+       x11-libs/libXpm
+       x11-libs/libXrandr
+       x11-libs/libXrender
+       virtual/libiconv
+       $(python_gen_cond_dep '
+               dev-python/pyxdg[${PYTHON_USEDEP}]
+       ')
+       bidi? ( dev-libs/fribidi )
+       nls? ( virtual/libintl )
+       png? ( media-libs/libpng:0= )
+       readline? (
+               sys-libs/ncurses:0=
+               sys-libs/readline:0=
+       )
+       stroke? ( dev-libs/libstroke )
+       svg? ( gnome-base/librsvg )
+       truetype? (
+               media-libs/fontconfig
+               x11-libs/libXft
+       )
+       xinerama? ( x11-libs/libXinerama )
+"
+RDEPEND="${COMMON_DEPEND}
+       ${PYTHON_DEPS}
+       dev-lang/perl
+       sys-apps/debianutils
+       perl? ( tk? (
+                       dev-lang/tk
+                       dev-perl/Tk
+                       >=dev-perl/X11-Protocol-0.56
+               )
+       )
+       lock? ( x11-misc/xlockmore )
+       netpbm? ( media-libs/netpbm )
+"
+DEPEND="${COMMON_DEPEND}
+       x11-base/xorg-proto
+"
+BDEPEND="
+       dev-lang/perl
+       dev-libs/libxslt
+       virtual/pkgconfig
+"
+
+src_prepare() {
+       if ! use vanilla; then
+               # Enables fast translucent menus; patch from fvwm-user mailing 
list.
+               eapply -p0 "${FILESDIR}/${PN}-2.5.27-translucent-menus.diff"
+
+               # Allow more mouse buttons, bug #411811
+               eapply -p0 "${FILESDIR}/${PN}-2.6.5-mouse-buttons.patch"
+       fi
+
+       eapply -p0 "${FILESDIR}/${PN}-2.6.5-ar.patch" #474528
+
+       eapply "${FILESDIR}"/fvwm-2.7.0-c99.patch
+
+       default
+
+       eautoreconf
+}
+
+src_configure() {
+       local myeconfargs=(
+               --libexecdir="${EPREFIX}"/usr/$(get_libdir)
+               
--with-imagepath=/usr/include/X11/bitmaps:/usr/include/X11/pixmaps:/usr/share/icons/fvwm
+               --enable-iconv
+               --enable-package-subdirs
+               --enable-mandoc
+               --without-rplay-library
+               $(use_enable bidi)
+               $(use_enable debug debug-msgs)
+               $(use_enable debug command-log)
+               $(use_enable doc htmldoc)
+               $(use_enable nls)
+               $(use_enable perl perllib)
+               $(use_enable png)
+               $(use_with readline readline-library)
+               $(use_with stroke stroke-library)
+               $(use_enable svg rsvg)
+               $(use_enable truetype xft)
+               $(use_enable xinerama)
+       )
+
+       # Non-upstream email where bugs should be sent; used in fvwm-bug.
+       export FVWM_BUGADDR="[email protected]"
+
+       # Recommended by upstream, reference ????
+       append-flags -fno-strict-aliasing
+
+       # Signed chars are required.
+       use ppc && append-flags -fsigned-char
+
+       use readline && myeconfargs+=( --without-termcap-library )
+
+       export ac_cv_path_PYTHON="${PYTHON}"
+
+       econf "${myeconfargs[@]}"
+}
+
+src_install() {
+       default
+       make_session_desktop fvwm /usr/bin/fvwm
+
+       if ! use lock; then
+               find "${D}" -name '*fvwm-menu-xlock' -exec rm -f '{}' \; 
2>/dev/null
+       fi
+
+       if use perl; then
+               if ! use tk; then
+                       rm "${D}"/usr/share/fvwm/perllib/FVWM/Module/Tk.pm || 
die
+                       rm "${D}"/usr/share/fvwm/perllib/FVWM/Module/Toolkit.pm 
|| die
+                       find "${D}"/usr/share/fvwm/perllib -depth -type d -exec 
rmdir '{}' \; 2>/dev/null
+               fi
+       else
+               # Completely wipe it if ! use perl
+               rm -r "${D}"/usr/bin/fvwm-perllib 
"${D}"/usr/share/man/man1/fvwm-perllib.1
+       fi
+
+       # Utility for testing FVWM behaviour by creating a simple window with
+       # configurable hints.
+       if use debug; then
+               dobin "${S}"/tests/hints/hints_test
+               newdoc "${S}"/tests/hints/README README.hints
+       fi
+
+       exeinto /etc/X11/Sessions
+       newexe - ${PN} <<-EOF
+       #!/bin/sh
+       ${PN}
+       EOF
+
+       dodoc docs/{COMMANDS,DEVELOPERS.md}
+
+       # README file for translucent menus patch.
+       if ! use vanilla; then
+               dodoc "${FILESDIR}"/README.translucency
+               ewarn "You are using a patched build, so, please, don't"
+               ewarn "report bugs at the fvwm-workers list unless you are"
+               ewarn "also able to reproduce them with a vanilla build 
(USE=vanilla)."
+       fi
+}

Reply via email to