LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File xscreensaver.spec of Package xscreensaver (Project X11:Utilities)

#
# spec file for package xscreensaver
#
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# 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 http://bugs.opensuse.org/
#


Name:           xscreensaver
BuildRequires:  Mesa-devel
BuildRequires:  automake
BuildRequires:  bc
BuildRequires:  gdm
BuildRequires:  intltool
BuildRequires:  libglade2-devel
BuildRequires:  libgle-devel
BuildRequires:  libgnome-devel
BuildRequires:  libjpeg-devel
BuildRequires:  pam-devel
BuildRequires:  perl-XML-Parser
BuildRequires:  update-desktop-files
BuildRequires:  xorg-x11-devel
BuildRequires:  pkgconfig(glu)
Provides:       xscreensaver-gnome
Provides:       xscrns
Obsoletes:      xscreensaver-gnome
Obsoletes:      xscrns
Requires:       %{name}-data
Requires:       desktop-data
Requires:       pam-modules
Suggests:       %{name}-data-extra
Version:        5.20
Release:        0
Summary:        A screen saver and locker for the X Window System
License:        BSD-3-Clause and GPL-2.0+
Group:          Amusements/Toys/Screensavers
Url:            http://www.jwz.org/xscreensaver/
Source:         http://www.jwz.org/xscreensaver/%{name}-%{version}.tar.gz
Source1:        xscreensaver.pamd
Source2:        xscreensaver-data.list
Source3:        xscreensaver-data-extra.list
Patch5:         xscreensaver-background.patch
Patch20:        xscreensaver-mansuffix.patch
Patch21:        xscreensaver-default-screensaver.patch
Patch23:        xscreensaver-stars.patch
Patch24:        xscreensaver-slideshow-dri-detect.patch
Patch29:        xscreensaver-ignore-no-pwent-password.patch
Patch32:        xscreensaver-fireworkx-man.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%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

%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

%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.

%prep
%setup -q
%patch5
%patch20
%patch21 -p1
%patch23 -p1
# FIXME: Test, whether this patch is still needed:
%patch24
%patch29
%patch32
# KDE and GNOME have its own screensavers:
echo 'NotShowIn=KDE;GNOME;' >>driver/screensaver-properties.desktop.in

%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/;
    /.*[Ww]eb[Cc]ollage/D;
    /.*vidwhacker -stdin -stdout/D;
    ' driver/XScreenSaver.ad.in > driver/XScreenSaver.ad.in.tmp && mv driver/XScreenSaver.ad.in.tmp driver/XScreenSaver.ad.in
# we don't want webcollage:
sed -e '/webcollage/D' driver/xscreensaver.man > driver/xscreensaver.man.tmp && mv driver/xscreensaver.man.tmp driver/xscreensaver.man
sed -re '
    /^webcollage-helper.o:/D;
    /^webcollage-helper:/,+1D;
    s/webcollage(-helper.[co]|.man)//;
    s/webcollage//;
    s/@JPEG_EXES@//;
    /JPEG_EXES/D;
    ' hacks/Makefile.in	> hacks/Makefile.in.tmp && mv hacks/Makefile.in.tmp hacks/Makefile.in
intltoolize --copy --force
sed -i "s:@install_sh@:../install-sh -c:" po/Makefile.in.in
chmod +x install-sh
autoreconf -f -i
# Disable direct PAM use and shadow (both needs suid).
%configure\
	--with-hackdir=%{_libdir}/xscreensaver\
	--with-icondir=%{_datadir}/xscreensaver/pixmaps\
	--with-configdir=%{_sysconfdir}/xscreensaver\
	--without-kerberos\
	--with-passwd-helper=/sbin/unix2_chkpwd\
	--with-gl\
	--with-gle\
	--with-pixbuf\
	--with-xpm\
	--with-jpeg\
	--with-xshm-ext\
	--with-xdbe-ext\
	--without-pam\
	--without-shadow\
	--with-login-manager=%{_bindir}/gdmflexiserver\
	--with-image-directory=%{_datadir}/wallpapers\
	--enable-locking\
	--with-login-manager
make %{?jobs:-j%jobs} all

%install
rm hacks/config/{vidwhacker,webcollage}.xml
mkdir -p $RPM_BUILD_ROOT/tmp/bin
make install_prefix=$RPM_BUILD_ROOT \
     KDEDIR=/tmp \
     DESTDIR=$RPM_BUILD_ROOT \
     datadir=%{_datadir} \
     install
rm -r $RPM_BUILD_ROOT/tmp
#
# remove obsolete suid bit
chmod 755 $RPM_BUILD_ROOT%{_bindir}/xscreensaver
#
# pam config
install -d -m 755 $RPM_BUILD_ROOT/etc/pam.d
install -m 644 %{S:1} $RPM_BUILD_ROOT/etc/pam.d/xscreensaver
#
# language files
%find_lang %{name}
#
# desktop files
%suse_update_desktop_file -G "Screensaver properties" xscreensaver-properties DesktopSettings
#
# 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
        test -f %{buildroot}%{_mandir}/man6/$hack.6* && echo "%doc %{_mandir}/man6/$hack.6*" >> %{name}-data.lst
        test -f %{buildroot}%{_sysconfdir}/xscreensaver/$hack.xml && echo "%config %{_sysconfdir}/xscreensaver/$hack.xml" >> %{name}-data.lst
        echo "%{_libdir}/xscreensaver/$hack" >> %{name}-data.lst
done
for hack in `grep -v '#' %{SOURCE3}`; do
        test -f %{buildroot}%{_mandir}/man6/$hack.6* && echo "%doc %{_mandir}/man6/$hack.6*" >> %{name}-data-extra.lst
        test -f %{buildroot}%{_sysconfdir}/xscreensaver/$hack.xml && echo "%config %{_sysconfdir}/xscreensaver/$hack.xml" >> %{name}-data-extra.lst
        echo "%{_libdir}/xscreensaver/$hack" >> %{name}-data-extra.lst
done

%clean
rm -rf $RPM_BUILD_ROOT

%files -f %{name}.lang
%defattr(-,root,root)
%doc README
%{_bindir}/xscreensaver
%{_bindir}/xscreensaver-command
%{_bindir}/xscreensaver-demo
%{_bindir}/xscreensaver-gl-helper
%{_datadir}/applications/xscreensaver-properties.desktop
%{_datadir}/pixmaps/xscreensaver.xpm
%dir %{_datadir}/xscreensaver/
%{_datadir}/xscreensaver/glade/
%doc %{_mandir}/man1/xscreensaver.*
%doc %{_mandir}/man1/xscreensaver-command.*
%doc %{_mandir}/man1/xscreensaver-demo.*
%doc %{_mandir}/man6/xscreensaver-gl-helper.*
%dir %{_datadir}/X11/app-defaults
%{_datadir}/X11/app-defaults/XScreenSaver
%config %{_sysconfdir}/pam.d/xscreensaver
%dir %{_sysconfdir}/xscreensaver
%{_sysconfdir}/xscreensaver/README

%files data -f %{name}-data.lst
%defattr(-,root,root)
%dir %{_libdir}/xscreensaver
%dir %{_sysconfdir}/xscreensaver

%files data-extra -f %{name}-data-extra.lst
%defattr(-,root,root)
%dir %{_libdir}/xscreensaver
%dir %{_sysconfdir}/xscreensaver
# screensavers using those utilities are in this package
%{_bindir}/xscreensaver-getimage
%{_bindir}/xscreensaver-getimage-file
%{_bindir}/xscreensaver-getimage-video
%{_bindir}/xscreensaver-text
%doc %{_mandir}/man1/xscreensaver-getimage.*
%doc %{_mandir}/man1/xscreensaver-getimage-file.*
%doc %{_mandir}/man1/xscreensaver-getimage-video.*
%doc %{_mandir}/man1/xscreensaver-text.*

%changelog