File xscreensaver.spec of Package xscreensaver
#
# spec file for package xscreensaver
#
# Copyright (c) 2023 SUSE LLC
# Copyright (c) 2024 Andreas Stieger <Andreas.Stieger@gmx.de>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: xscreensaver
Version: 6.09
Release: 0
Summary: A screen saver and locker for the X Window System
License: BSD-3-Clause AND GPL-2.0-or-later
Group: Amusements/Toys/Screensavers
URL: https://www.jwz.org/xscreensaver
Source: https://www.jwz.org/xscreensaver/%{name}-%{version}.tar.gz
Source1: xscreensaver.pamd
Source2: xscreensaver-data.list
Source3: xscreensaver-data-extra.list
#
Source4: xscreensaver-desktops-generate.sh
# Do not show some rpmlint warnings.
Source99: xscreensaver-rpmlintrc
#
Patch5: xscreensaver-background.patch
Patch20: xscreensaver-mansuffix.patch
Patch21: xscreensaver-default-screensaver.patch
Patch29: xscreensaver-ignore-no-pwent-password.patch
Patch32: xscreensaver-fireworkx-man.patch
# PATCH-FIX-OPENSUSE xscreensaver-webcollage-dictpath.patch seife+obs@b1-systems.com -- Add /var/lib/dict/words to search path for word dictionaries.
Patch42: xscreensaver-webcollage-dictpath.patch
# PATCH-FEATURE-OPENSUSE xscreensaver-disable-upgrade-nagging.patch boo#890595 gber@opensuse.org -- Disable nagging messages about upgrading to a newer version.
Patch43: xscreensaver-disable-upgrade-nagging-message.patch
# PATCH-FEATURE-OPENSUSE xscreensaver-bug-reports.patch bnc890595 sbrabec@suse.cz -- Ask reporters to upgrade before reporting bugs.
Patch45: xscreensaver-bug-reports.patch
# PATCH-FIX-OPENSUSE xscreensaver-unrecognized-opts.patch sbrabec@suse.com -- Ignore selected unbrecognized options generated by %%configure.
Patch46: xscreensaver-unrecognized-opts.patch
BuildRequires: automake
BuildRequires: bc
BuildRequires: gdmflexiserver
BuildRequires: gtkdoc
BuildRequires: intltool
BuildRequires: libgle-devel
BuildRequires: libjpeg-devel
BuildRequires: libxslt-tools
BuildRequires: pam-devel
BuildRequires: perl-XML-Parser
BuildRequires: pkgconfig
BuildRequires: update-desktop-files
#BuildRequires: pkgconfig(atk)
BuildRequires: pkgconfig(gdk-pixbuf-2.0)
#BuildRequires: pkgconfig(gdk-pixbuf-xlib-2.0)
#BuildRequires: pkgconfig(gdk-x11-2.0)
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(glu)
BuildRequires: pkgconfig(gmodule-2.0)
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(pango)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xft)
BuildRequires: pkgconfig(xi)
BuildRequires: pkgconfig(xinerama)
BuildRequires: pkgconfig(xmu)
BuildRequires: pkgconfig(xpm)
BuildRequires: pkgconfig(xrandr)
BuildRequires: pkgconfig(xt)
BuildRequires: pkgconfig(xxf86vm)
#
Requires: %{name}-data
Requires: /sbin/unix2_chkpwd
Requires: desktop-data
Recommends: %{name}-lang = %{version}
#
Suggests: %{name}-data-extra
#
Provides: xscreensaver-gnome = %{version}
Provides: xscrns = %{version}
Obsoletes: xscreensaver-gnome < %{version}
Obsoletes: xscrns < %{version}
%description
The xscreensaver program waits until the keyboard and mouse have
been idle for a period of time, and then runs a graphics demo
chosen at random. It turns off as soon as there is any mouse or
keyboard activity. It can also lock the screen immediately, after a
longer idle period, or on demand.
The xscreensaver package consists of two parts: the screensaver and
the "driver" or "daemon", which detects idleness and does locking,
and the many graphics demos that are launched by xscreensaver.
Any X program that can draw on the root window can be used with
xscreensaver, regardless of how that program is written, what
language it is written in, or what libraries it uses. The
xscreensaver daemon takes care of detecting when the user is idle,
locking, and checking passwords and all the other book-keeping. All
the other programs need to do is draw.
The benefit that xscreensaver has over the combination of the xlock
and xautolock programs is the ease with which new graphic hacks can
be installed. You do not need to recompile (or even re-run) the
xscreensaver program to add a new display mode, you just change a
config file.
%package data
Summary: Selection of screensavers from xscreensaver
Group: Amusements/Toys/Screensavers
Recommends: %{name}-lang = %{version}
%description data
The xscreensaver program waits until the keyboard and mouse have
been idle for a period of time, and then runs a graphics demo
chosen at random. It turns off as soon as there is any mouse or
keyboard activity. It can also lock the screen immediately, after a
longer idle period, or on demand.
This packages contains a selection of graphics demos.
%package data-extra
Summary: Selection of screensavers from xscreensaver
Group: Amusements/Toys/Screensavers
Recommends: %{name}-data
Recommends: %{name}-lang = %{version}
%description data-extra
The xscreensaver program waits until the keyboard and mouse have
been idle for a period of time, and then runs a graphics demo
chosen at random. It turns off as soon as there is any mouse or
keyboard activity. It can also lock the screen immediately, after a
longer idle period, or on demand.
This packages contains additional graphics demos.
%lang_package
%prep
%autosetup -p1
# KDE, GNOME and MATE have there own screensavers:
#echo 'NotShowIn=KDE;GNOME;MATE;' >> driver/screensaver-properties.desktop.in
cp -f %{SOURCE4} xscreensaver-desktops-generate
chmod a+x xscreensaver-desktops-generate
# /etc directories are hardcoded everywhere
# Move xscreensaver's PAM files.
%if 0%{?suse_version} > 1500
sed -i 's|/etc/pam.d|%{_pam_vendordir}|g' configure driver/passwd-pam.c xscreensaver.spec configure.ac driver/xscreensaver.man
sed -i 's|= /etc|= /usr/lib|g' driver/Makefile.in
%endif
%build
# Fix man pages header:
find hacks -name '*.man' -print0 | xargs -0 sed -ie 's/TH XScreenSaver 1/TH XScreenSaver 6/'
# Modify hack list to fit our needs:
sed -re '
s/^([[:space:]]*(rorschach|greynetic|noseguy|deco|moire|spiral|laser|sierpinski|flag|sphere|mountain|triangle|worm|xlyap|cynosure|bsod|t3d|wander"Wander|critical|phosphor|blaster|nerverot|"SpeedMine"|poluominoes|fluidballs|barcode|bubbles))/-\1/;
s/^-([[:space:]]*(juggle))/\1/;
s/^@GL_KLUDGE@([[:space:]]*GL:[[:space:]]*(sproingies|"Molecule \(lumpy\)"|circuit|atunnel|glmatrix|stairs|pulsar|starwars|"GLText|boxed|"GLForestFire"|sballs|cubenetic|queens|endgame))/-\1/;
s/^-([[:space:]]*GL:[[:space:]]*(fireflies))/\1/;
/.*vidwhacker -stdin -stdout/D;
' driver/XScreenSaver.ad.in > driver/XScreenSaver.ad.in.tmp && mv -f driver/XScreenSaver.ad.in.tmp driver/XScreenSaver.ad.in
intltoolize --copy --force
chmod +x install-sh
cp /usr/share/gettext/config.rpath .
autoreconf -fi
# Regarding options checking: %%configure includes --disable-dependency-tracking, which causes fatal error.
# Please try to comment out during the upgrade. You should see exactly this single error.
export enable_option_checking=no
sed -i "s|@install_sh@|../install-sh -c|" po/Makefile.in.in
#lie to configure so the default C standard is used
export ac_cv_gcc_accepts_std=no
# Disable direct PAM use and shadow (both needs suid).
bash -x %configure \
--with-configdir=%{_sysconfdir}/xscreensaver \
--with-app-defaults=%{_datadir}/X11/app-defaults \
--without-kerberos \
--with-gl \
--with-gle \
--with-pixbuf \
--with-jpeg \
--with-xshm-ext \
--with-xdbe-ext \
--with-pam \
--enable-pam-account \
--without-shadow \
--with-login-manager=%{_bindir}/gdmflexiserver \
--with-image-directory=%{_datadir}/wallpapers \
--enable-locking \
--with-login-manager
%make_build all
%install
rm -f hacks/config/vidwhacker.xml
mkdir -p %{buildroot}/tmp/bin/
# Another hack for pam
%if 0%{?suse_version} > 1500
mkdir -p %{buildroot}%{_pam_vendordir}
%endif
make install_prefix=%{buildroot} \
KDEDIR=/tmp \
DESTDIR=%{buildroot} \
datadir=%{_datadir} \
install
rm -r %{buildroot}/tmp/
#
# Remove obsolete SUID bit.
chmod 0755 %{buildroot}%{_bindir}/xscreensaver
#
# PAM config.
%if 0%{?suse_version} > 1500
mkdir -p %{buildroot}%{_pam_vendordir}
install -Dm 0644 %{SOURCE1} %{buildroot}%{_pam_vendordir}/xscreensaver
%else
install -Dm 0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/pam.d/xscreensaver
%endif
#
# Language files.
%find_lang %{name}
#
# Desktop files.
#%%suse_update_desktop_file -G "Screensaver properties" xscreensaver-properties DesktopSettings
#
# Generate .desktop files for mate-screensaver usage.
mkdir -p %{buildroot}%{_datadir}/applications/screensavers/
./xscreensaver-desktops-generate %{buildroot}%{_sysconfdir}/xscreensaver/ %{buildroot}%{_datadir}/applications/screensavers/
# Remove duplicate of a file from mate-screensaver.
rm -f %{buildroot}%{_datadir}/applications/screensavers/popsquares.desktop
#
# List files for screensavers in data and data-extra subpackages.
rm -f %{name}-data.lst %{name}-data-extra.lst
for hack in $(grep -v '#' %{SOURCE2}); do
[ -f %{buildroot}%{_mandir}/man6/$hack.6* ] && echo "%doc %{_mandir}/man6/$hack.6*" >> %{name}-data.lst
[ -f %{buildroot}%{_sysconfdir}/xscreensaver/$hack.xml ] && echo "%config %{_sysconfdir}/xscreensaver/$hack.xml" >> %{name}-data.lst
[ -f %{buildroot}%{_datadir}/applications/screensavers/$hack.desktop ] && echo "%{_datadir}/applications/screensavers/$hack.desktop" >> %{name}-data.lst
echo "%{_libexecdir}/xscreensaver/$hack" >> %{name}-data.lst
done
for hack in $(grep -v '#' %{SOURCE3}); do
[ -f %{buildroot}%{_mandir}/man6/$hack.6* ] && echo "%doc %{_mandir}/man6/$hack.6*" >> %{name}-data-extra.lst
[ -f %{buildroot}%{_sysconfdir}/xscreensaver/$hack.xml ] && echo "%config %{_sysconfdir}/xscreensaver/$hack.xml" >> %{name}-data-extra.lst
[ -f %{buildroot}%{_datadir}/applications/screensavers/$hack.desktop ] && echo "%{_datadir}/applications/screensavers/$hack.desktop" >> %{name}-data-extra.lst
echo "%{_libexecdir}/xscreensaver/$hack" >> %{name}-data-extra.lst
done
%if 0%{?suse_version} > 1500
%pre
# Prepare for migration to /usr/lib; save any old .rpmsave
for i in pam.d/xscreensaver ; do
test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i}.rpmsave.old ||:
done
%posttrans
# Migration to /usr/lib, restore just created .rpmsave
for i in pam.d/xscreensaver ; do
test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i} ||:
done
%endif
%files
%doc README
%{_bindir}/xscreensaver
%{_bindir}/xscreensaver-command
%{_bindir}/xscreensaver-demo
%{_bindir}/xscreensaver-settings
%{_datadir}/applications/xscreensaver.desktop
%{_datadir}/applications/xscreensaver-settings.desktop
%{_datadir}/fonts/xscreensaver
%{_datadir}/pixmaps/xscreensaver.png
%dir %{_datadir}/xscreensaver
#%%{_datadir}/xscreensaver/ui
%{_datadir}/xscreensaver/xscreensaver.service
%{_libexecdir}/xscreensaver/xscreensaver-auth
%{_libexecdir}/xscreensaver/xscreensaver-gfx
%{_libexecdir}/xscreensaver/xscreensaver-gl-visual
%{_libexecdir}/xscreensaver/xscreensaver-systemd
%dir %{_datadir}/X11/app-defaults
%{_datadir}/X11/app-defaults/XScreenSaver
%{_mandir}/man1/xscreensaver.*
%{_mandir}/man1/xscreensaver-command.*
%{_mandir}/man1/xscreensaver-demo.*
%{_mandir}/man1/xscreensaver-settings.*
%{_mandir}/man6/xscreensaver-auth.*
%{_mandir}/man6/xscreensaver-gfx.*
%{_mandir}/man6/xscreensaver-gl-visual.*
%{_mandir}/man6/xscreensaver-systemd.*
%if 0%{?suse_version} > 1500
%{_pam_vendordir}/xscreensaver
%else
%config %{_sysconfdir}/pam.d/xscreensaver
%endif
%dir %{_sysconfdir}/xscreensaver/
%config %{_sysconfdir}/xscreensaver/README
%files lang -f %{name}.lang
%files data -f %{name}-data.lst
%dir %{_libexecdir}/xscreensaver/
%dir %{_sysconfdir}/xscreensaver/
%dir %{_datadir}/applications/screensavers/
%files data-extra -f %{name}-data-extra.lst
%dir %{_libexecdir}/xscreensaver/
%{_libexecdir}/xscreensaver/xscreensaver-getimage
%{_libexecdir}/xscreensaver/xscreensaver-getimage-file
%{_libexecdir}/xscreensaver/xscreensaver-getimage-video
%{_libexecdir}/xscreensaver/xscreensaver-text
%{_libexecdir}/xscreensaver/mapscroller.pl
%dir %{_sysconfdir}/xscreensaver/
%dir %{_datadir}/applications/screensavers/
# Screensavers using those utilities are in this package.
%{_mandir}/man6/xscreensaver-getimage.*
%{_mandir}/man6/xscreensaver-getimage-file.*
%{_mandir}/man6/xscreensaver-getimage-video.*
%{_mandir}/man6/xscreensaver-text.*
%changelog