commit: e45f01c80cf9e0acf98ce3b4ae5a04bcf4c6f1f9 Author: Pascal Jäger <pascal.jaeger <AT> leimstift <DOT> de> AuthorDate: Wed Dec 13 21:29:17 2023 +0000 Commit: Pascal Jäger <pascal.jaeger <AT> leimstift <DOT> de> CommitDate: Wed Dec 13 21:38:23 2023 +0000 URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=e45f01c8
gui-apps/wscreensaver: new package, add 9999 Signed-off-by: Pascal Jäger <pascal.jaeger <AT> leimstift.de> ...ver-fix-implicit-function-decl-when-JWXYZ.patch | 19 ++++++ .../files/xscreensaver-5.31-pragma.patch | 11 ++++ .../wscreensaver/files/xscreensaver-5.45-gcc.patch | 16 +++++ .../files/xscreensaver-6.01-gentoo.patch | 47 ++++++++++++++ gui-apps/wscreensaver/metadata.xml | 22 +++++++ gui-apps/wscreensaver/wscreensaver-9999.ebuild | 74 ++++++++++++++++++++++ 6 files changed, 189 insertions(+) diff --git a/gui-apps/wscreensaver/files/wscreensaver-fix-implicit-function-decl-when-JWXYZ.patch b/gui-apps/wscreensaver/files/wscreensaver-fix-implicit-function-decl-when-JWXYZ.patch new file mode 100644 index 0000000000..5f39a29dc0 --- /dev/null +++ b/gui-apps/wscreensaver/files/wscreensaver-fix-implicit-function-decl-when-JWXYZ.patch @@ -0,0 +1,19 @@ +Clang 16 does not allow implicit function declarations by default. +When xscreensaver is compiled normally for X11, the function gettimeofday() +is included via the header file X11/Xos.h. +However, if X11 is not used and HAVE_JXYZ is used instead, we end up with a missing +declaration for that function. I think upstream forgot to include the file here, he +has done it for string.h though, which is a similar case. + +Pascal Jäger <pascal.jae...@leimstift.de> (2023-12-13) + +--- a/hacks/screenhackI.h ++++ b/hacks/screenhackI.h +@@ -71,6 +71,7 @@ + #ifdef HAVE_JWXYZ + # include "jwxyz.h" + # include <string.h> /* X11/Xos.h brings this in. */ ++# include <sys/time.h> + #else /* real X11 */ + # include <X11/Xlib.h> + # include <X11/Xutil.h> diff --git a/gui-apps/wscreensaver/files/xscreensaver-5.31-pragma.patch b/gui-apps/wscreensaver/files/xscreensaver-5.31-pragma.patch new file mode 100644 index 0000000000..97f4656344 --- /dev/null +++ b/gui-apps/wscreensaver/files/xscreensaver-5.31-pragma.patch @@ -0,0 +1,11 @@ +--- a/hacks/memscroller.c ++++ b/hacks/memscroller.c +@@ -307,7 +307,7 @@ + -- sbrk(2) man page on BSD systems, as of 1995 or so. + */ + #ifdef HAVE_SBRK +-# if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)) /* gcc >= 4.2 */ ++# if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) /* gcc >= 4.6 */ + /* Don't print "warning: 'sbrk' is deprecated". */ + # pragma GCC diagnostic ignored "-Wdeprecated-declarations" + # endif diff --git a/gui-apps/wscreensaver/files/xscreensaver-5.45-gcc.patch b/gui-apps/wscreensaver/files/xscreensaver-5.45-gcc.patch new file mode 100644 index 0000000000..b62fd1f309 --- /dev/null +++ b/gui-apps/wscreensaver/files/xscreensaver-5.45-gcc.patch @@ -0,0 +1,16 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -468,11 +468,11 @@ + + AC_DEFUN([AC_CHECK_GCC_ARG], + [if test -n "$GCC"; then +- AC_CACHE_CHECK([whether gcc accepts [$2]], ++ AC_CACHE_CHECK([whether [$CC] accepts [$2]], + ac_cv_gcc_accepts_[$1], + [rm -rf conftest.$ac_ext + touch conftest.$ac_ext +- if ( ( gcc -c [$2] conftest.$ac_ext -o/dev/null >/dev/null ) 2>&1 | \ ++ if ( ( $CC -c [$2] conftest.$ac_ext -o/dev/null >/dev/null ) 2>&1 | \ + grep unrecognized >/dev/null ); then + ac_cv_gcc_accepts_[$1]=no + else diff --git a/gui-apps/wscreensaver/files/xscreensaver-6.01-gentoo.patch b/gui-apps/wscreensaver/files/xscreensaver-6.01-gentoo.patch new file mode 100644 index 0000000000..41f8d7b7d0 --- /dev/null +++ b/gui-apps/wscreensaver/files/xscreensaver-6.01-gentoo.patch @@ -0,0 +1,47 @@ +--- a/driver/XScreenSaver.ad.in ++++ b/driver/XScreenSaver.ad.in +@@ -31,21 +31,21 @@ + *mode: random + *timeout: 0:10:00 + *cycle: 0:10:00 +-*lockTimeout: 0:00:00 ++*lockTimeout: 0:30:00 + *passwdTimeout: 0:00:30 +-*dpmsEnabled: False ++*dpmsEnabled: True + *dpmsQuickoffEnabled: False + *dpmsStandby: 2:00:00 + *dpmsSuspend: 2:00:00 + *dpmsOff: 4:00:00 +-*grabDesktopImages: True ++*grabDesktopImages: False + *grabVideoFrames: False + *chooseRandomImages: @DEFAULT_IMAGES_P@ + ! This can be a local directory name, or the URL of an RSS or Atom feed. + *imageDirectory: @DEFAULT_IMAGE_DIRECTORY@ + *nice: 10 + *memoryLimit: 0 +-*lock: False ++*lock: True + *verbose: False + *fade: True + *unfade: True +@@ -62,7 +62,7 @@ + *textLiteral: XScreenSaver + *textFile: @DEFAULT_TEXT_FILE@ + *textProgram: fortune +-*textURL: https://en.wikipedia.org/w/index.php?title=Special:NewPages&feed=rss ++*textURL: https://planet.gentoo.org/rss20.xml + + ! This is what the "Settings" button on the splash screen runs. + *demoCommand: xscreensaver-settings +@@ -103,7 +103,8 @@ + + + ! The strftime(3) format string for printing the time on the password dialog. +-*dateFormat: %I:%M %p, %a %b %e ++!*dateFormat: %I:%M %p, %a %b %e ++*dateFormat: %x %X + ! DD MMM: + ! *dateFormat: %I:%M %p, %e %b (%a) + ! 12 hour time only: diff --git a/gui-apps/wscreensaver/metadata.xml b/gui-apps/wscreensaver/metadata.xml new file mode 100644 index 0000000000..3644050140 --- /dev/null +++ b/gui-apps/wscreensaver/metadata.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>pascal.jae...@leimstift.de</email> + <name>Pascal Jaeger</name> + </maintainer> + <longdescription lang="en"> + Wscreensaver is an attempt to compile the screensaver collection + form Xscreensaver as animated backgrounds for Wayland. + wscreensaver is not a standalone program like xscreensaver. + Each indiviual screensaver is a standalane binary, that can be usid + in other programs such a <pkg>gui-apps/swaylock-plugin</pkg> or + standalone as an animated background. + </longdescription> + <upstream> + <remote-id type="sourcehut">~mstoeckl/wscreensaver</remote-id> + <maintainer status="active"> + <name>Manuel Stoeckl</name> + </maintainer> + </upstream> +</pkgmetadata> diff --git a/gui-apps/wscreensaver/wscreensaver-9999.ebuild b/gui-apps/wscreensaver/wscreensaver-9999.ebuild new file mode 100644 index 0000000000..b1631cd5df --- /dev/null +++ b/gui-apps/wscreensaver/wscreensaver-9999.ebuild @@ -0,0 +1,74 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic git-r3 meson + +DESCRIPTION="Xscreensaver screensavers ported to wayland" +HOMEPAGE="https://git.sr.ht/~mstoeckl/wscreensaver" + +EGIT_REPO_URI="https://git.sr.ht/~mstoeckl/${PN}" + +LICENSE="MIT" +SLOT="0" + +RDEPEND=" + dev-libs/glib:2 + dev-libs/wayland + media-libs/glu + media-libs/libglvnd + x11-libs/gdk-pixbuf:2 +" +DEPEND=" + ${RDEPEND} + media-libs/libpng +" +BDEPEND=" + dev-util/intltool + sys-devel/bc + sys-devel/gettext + virtual/pkgconfig + x11-base/xorg-proto +" + +PATCHES=( + "${FILESDIR}"/xscreensaver-5.31-pragma.patch + "${FILESDIR}"/xscreensaver-6.01-gentoo.patch + "${FILESDIR}"/xscreensaver-5.45-gcc.patch + "${FILESDIR}"/wscreensaver-fix-implicit-function-decl-when-JWXYZ.patch +) + +# see https://bugs.gentoo.org/898328 +QA_CONFIG_IMPL_DECL_SKIP=( getspnam_shadow ) + +src_configure() { + econf + cd wayland + local S="$S"/wayland + # Will write a patch later and send it to upstream. + # For now accept it. + append-cflags -Wno-error=incompatible-function-pointer-types + meson_src_configure +} + +src_compile() { + emake + local S="$S"/wayland + meson_src_compile +} + +src_install() { + local filename + local S="${WORKDIR}/wscreensaver-${PV}-build" + insinto /usr/lib64/misc/"${PN}" + for file in "${S}"/*; do + # exclude all files that have a contain a . e.g. have a file extension + # or contain the word meson- + filename=$(basename "${file}") + if [[ "${filename}" != *.* && "${filename}" != *meson-* ]]; then + doins "${file}" + fperms +x /usr/lib64/misc/"${PN}"/"${filename}" + fi + done +}