X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=xscreensaver.spec;h=fd75dbe02199977a82aec41f5584694685644704;hb=585e1a6717d1dd9b90fbb53acaaae82106354d33;hp=c31c1ad1e8facb7aee359c170d79e141ebec3a4c;hpb=8e0f39b4a12b9a908af2b3b175ebe87c14b4a6ab;p=xscreensaver diff --git a/xscreensaver.spec b/xscreensaver.spec index c31c1ad1..fd75dbe0 100644 --- a/xscreensaver.spec +++ b/xscreensaver.spec @@ -1,62 +1,255 @@ -Name: xscreensaver -Summary: X screen saver and locker -Vendor: Jamie Zawinski -Version: 3.04 -Release: 1 -URL: http://www.jwz.org/xscreensaver/ -Source: xscreensaver-%{version}.tar.gz -Copyright: BSD -Group: X11/Utilities -Buildroot: /var/tmp/xscreensaver-root +%define name xscreensaver +%define version 3.32 +%define release 1 +%define serial 1 +%define x11_prefix /usr/X11R6 +%define gnome_prefix /usr +%define kde_prefix /usr + +%define gnome_datadir %{gnome_prefix}/share +%define gnome_ccdir %{gnome_datadir}/control-center/Desktop +%define gnome_paneldir %{gnome_datadir}/gnome/apps/Settings/Desktop +%define gnome_icondir %{gnome_datadir}/pixmaps + +# By default, builds the basic, non-GL package. +# To build both the basic and GL-add-on packages: +# rpm --define "USE_GL yes" ... +# or uncomment the following line. +# %define USE_GL yes + +Summary: X screen saver and locker +Name: %{name} +Version: %{version} +Release: %{release} +Serial: %{serial} +Group: Amusements/Graphics +Copyright: BSD +URL: http://www.jwz.org/xscreensaver +Vendor: Jamie Zawinski +Source: %{name}-%{version}.tar.gz +Buildroot: %{_tmppath}/%{name}-%{version}-root %description A modular screen saver and locker for the X Window System. Highly customizable: allows the use of any program that can draw on the root window as a display mode. -More than 80 display modes are included in this package. +More than 120 display modes are included in this package. +%{?USE_GL:See also the xscreensaver-gl package, which} +%{?USE_GL:includes optional OpenGL display modes.} + +%{?USE_GL:%package gl} +%{?USE_GL:Group: Amusements/Graphics} +%{?USE_GL:Requires: xscreensaver = %{version}} +%{?USE_GL:Summary: A set of GL screensavers} +%{?USE_GL:%description gl} +%{?USE_GL:The xscreensaver-gl package contains even more screensavers for your} +%{?USE_GL:mind-numbing, ambition-eroding, time-wasting, hypnotized viewing} +%{?USE_GL:pleasure. These screensavers require OpenGL or Mesa support.} +%{?USE_GL: } +%{?USE_GL:Install the xscreensaver-gl package if you need more screensavers} +%{?USE_GL:for use with the X Window System and you have OpenGL or Mesa} +%{?USE_GL:installed.} %prep %setup -q %build -./configure --prefix=/usr/X11R6 +RPMOPTS="" + +# Is this really needed? If so, why? +# %ifarch alpha +# RPMOPTS="$RPMOPTS --without-xshm-ext" +# %endif + +# On Solaris, build without PAM and with Shadow. +# On other systems, build with PAM and without Shadow. +# +%ifos solaris + RPMOPTS="$RPMOPTS --without-pam" +%else + RPMOPTS="$RPMOPTS --with-pam --without-shadow" +%endif + +%{?USE_GL:RPMOPTS="$RPMOPTS --with-gl"} +%{!?USE_GL:RPMOPTS="$RPMOPTS --without-gl"} + +CFLAGS="$RPM_OPT_FLAGS" \ + ./configure --prefix=%{x11_prefix} \ + --enable-subdir=../lib/xscreensaver \ + --without-setuid-hacks \ + $RPMOPTS + make %install -mkdir -p $RPM_BUILD_ROOT/usr/X11R6/bin -mkdir -p $RPM_BUILD_ROOT/usr/X11R6/man/man1 -mkdir -p $RPM_BUILD_ROOT/etc/X11/wmconfig + +# Most xscreensaver executables go in the X bin directory (/usr/X11R6/bin/) +# but some of them (e.g., the control panel capplet) go in the GNOME bin +# directory instead (/usr/bin/). +# +mkdir -p $RPM_BUILD_ROOT%{gnome_prefix}/bin +mkdir -p $RPM_BUILD_ROOT%{gnome_ccdir} +mkdir -p $RPM_BUILD_ROOT%{gnome_paneldir} + +# Likewise for KDE: the .kss file goes in the KDE bin directory (/usr/bin/). +# +export KDEDIR=%{kde_prefix} +mkdir -p $RPM_BUILD_ROOT$KDEDIR/bin + +# This is a directory that "make install" won't make as needed +# (since Linux uses /etc/pam.d/* and Solaris uses /etc/pam.conf). +# mkdir -p $RPM_BUILD_ROOT/etc/pam.d -make prefix=$RPM_BUILD_ROOT/usr/X11R6 \ - AD_DIR=$RPM_BUILD_ROOT/usr/X11R6/lib/X11/app-defaults \ - PAM_DIR=$RPM_BUILD_ROOT/etc/pam.d \ - install-strip + +make install_prefix=$RPM_BUILD_ROOT \ + AD_DIR=%{x11_prefix}/lib/X11/app-defaults \ + GNOME_BINDIR=%{gnome_prefix}/bin \ + install-strip + +# Make a pair of lists, of the GL and non-GL executables. +# Do this by parsing the output of a dummy run of "make install" +# in the driver/, hacks/ and hacks/glx/ directories. +# +list_files() { + make -s install_prefix=$RPM_BUILD_ROOT INSTALL=true \ + GNOME_BINDIR=%{gnome_prefix}/bin \ + "$@" | + sed -n -e 's@.* /\([^ ]*\)$@/\1@p' | + sed -e "s@^$RPM_BUILD_ROOT@@" \ + -e "s@/bin/\.\./@/@" | + sed -e 's@\(.*/man/.*\)@\1\*@' | + sort +} + +( cd hacks ; list_files install ; \ + cd ../driver; list_files install-program ) \ + > $RPM_BUILD_DIR/xscreensaver-%{version}/exes-non-gl +( cd hacks/glx ; list_files install ) \ + > $RPM_BUILD_DIR/xscreensaver-%{version}/exes-gl + # This line is redundant, except that it causes the "xscreensaver" # executable to be installed unstripped (while all others are stripped.) # You should install it this way so that jwz gets useful bug reports. # -install -m 4755 driver/xscreensaver $RPM_BUILD_ROOT/usr/X11R6/bin +install -m 4755 driver/xscreensaver $RPM_BUILD_ROOT%{x11_prefix}/bin # Even if we weren't compiled with PAM support, make sure to include # the PAM module file in the RPM anyway, just in case. # -( cd driver; make PAM_DIR=$RPM_BUILD_ROOT/etc/pam.d install-pam ) +( cd driver ; + make install_prefix=$RPM_BUILD_ROOT PAM_DIR=/etc/pam.d install-pam ) + +# Make sure all files are readable by all, and writable only by owner. +# +chmod -R a+r,u+w,og-w $RPM_BUILD_ROOT + + +# This is a tricky part... +# +# xscreensaver installs several files that are also installed by the +# "control-center" RPM. The versions from xscreensaver are better, +# and so should override control-center. But, the way RPM works, +# if the xscreensaver RPM contained those files, the end user would +# have to "--force" to make the xscreensaver RPM install. That's +# not something people are used to doing, so that's Bad. +# +# So instead, we rename the files so that they don't conflict with +# the control center. Then we have a "%post" script that creates +# symbolic links to our files. + +CCDIR=$RPM_BUILD_ROOT%{gnome_ccdir} +PADIR=$RPM_BUILD_ROOT%{gnome_paneldir} +CADIR=$RPM_BUILD_ROOT%{gnome_prefix}/bin +DESKF=screensaver-properties.desktop +CAPLT=screensaver-properties-capplet + +if [ -f $CCDIR/$DESKF ]; then + mv $CCDIR/$DESKF $CCDIR/x$DESKF + mv $PADIR/$DESKF $PADIR/x$DESKF + mv $CADIR/$CAPLT $CADIR/x$CAPLT +fi + +%post +# This part runs on the end user's system, when the RPM is installed. +# (See comment above, at end of "%install" section.) + +verbose=0 + +overwrite_links() { + dir="$1" + oname="$2" + nname="$3" + + # only do this if the file we're making a link *to* exists + # (i.e., was present in this rpm.) + # + if [ -f "$dir/$nname" ]; then + + # backup or delete the old version, if any. + # + existed=0 + if [ -f "$dir/$oname" ]; then + existed=1 + if [ -f "$dir/$oname.rpmsave" ]; then + rm -f "$dir/$oname" + if [ $verbose -gt 1 ]; then + echo "$dir/$oname.rpmsave already exists" >&2 + fi + else + mv "$dir/$oname" "$dir/$oname.rpmsave" + if [ $verbose -gt 1 ]; then + echo "saved $dir/$oname as $oname.rpmsave" >&2 + fi + fi + fi + + # install a relative symlink to the new name. + # + ln -s "$nname" "$dir/$oname" + if [ $verbose -ge 1 ]; then + if [ $existed = 1 ] ; then + echo "replaced $dir/$oname" >&2 + else + echo "created $dir/$oname" >&2 + fi + fi + fi +} + +CCDIR=%{gnome_ccdir} +PADIR=%{gnome_paneldir} +CADIR=%{gnome_prefix}/bin +DESKF=screensaver-properties.desktop +CAPLT=screensaver-properties-capplet + +overwrite_links $CCDIR $DESKF x$DESKF +overwrite_links $PADIR $DESKF x$DESKF +overwrite_links $CADIR $CAPLT x$CAPLT -cat > $RPM_BUILD_ROOT/etc/X11/wmconfig/xscreensaver <