http://packetstormsecurity.org/UNIX/admin/xscreensaver-4.01.tar.gz
[xscreensaver] / xscreensaver.spec
index bc8a81b1c739136dfcf2137e062bdf2b6b0020b8..6d7a6cb1fe6b6781b4b02986cf1e178701a48548 100644 (file)
@@ -1,5 +1,5 @@
 %define        name            xscreensaver
-%define        version         3.31
+%define        version         4.01
 %define        release         1
 %define        serial          1
 %define        x11_prefix      /usr/X11R6
@@ -7,7 +7,8 @@
 %define        kde_prefix      /usr
 
 %define gnome_datadir  %{gnome_prefix}/share
-%define gnome_ccdir    %{gnome_datadir}/control-center/Desktop
+%define gnome_ccdir_1  %{gnome_datadir}/control-center/Desktop
+%define gnome_ccdir_2  %{gnome_datadir}/control-center/capplets
 %define gnome_paneldir %{gnome_datadir}/gnome/apps/Settings/Desktop
 %define gnome_icondir  %{gnome_datadir}/pixmaps
 
@@ -29,11 +30,15 @@ Vendor:             Jamie Zawinski <jwz@jwz.org>
 Source:                %{name}-%{version}.tar.gz
 Buildroot:     %{_tmppath}/%{name}-%{version}-root
 
+# This package really should be made to depend on
+# control-center >= 1.4.0.2 -OR- control-center >= 1.5.12
+# but there's no way to express that.
+
 %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 120 display modes are included in this package.
+More than 140 display modes are included in this package.
 %{?USE_GL:See also the xscreensaver-gl package, which}
 %{?USE_GL:includes optional OpenGL display modes.}
 
@@ -75,8 +80,7 @@ RPMOPTS=""
 
 CFLAGS="$RPM_OPT_FLAGS" \
  ./configure --prefix=%{x11_prefix} \
-             --enable-subdir=../lib/xscreensaver \
-             --without-setuid-hacks \
+             --with-setuid-hacks \
              $RPMOPTS
 
 make
@@ -88,7 +92,8 @@ make
 # 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_ccdir_1}
+mkdir -p $RPM_BUILD_ROOT%{gnome_ccdir_2}
 mkdir -p $RPM_BUILD_ROOT%{gnome_paneldir}
 
 # Likewise for KDE: the .kss file goes in the KDE bin directory (/usr/bin/).
@@ -122,9 +127,10 @@ list_files() {
 }
 
 ( cd hacks ; list_files install ; \
-  cd ../driver; list_files install-program ) \
+  cd ../driver; list_files install-program install-scripts ) \
    > $RPM_BUILD_DIR/xscreensaver-%{version}/exes-non-gl
 ( cd hacks/glx ; list_files install ) \
+   | grep -v man1/xscreensaver-gl-helper \
    > $RPM_BUILD_DIR/xscreensaver-%{version}/exes-gl
 
 
@@ -144,89 +150,14 @@ install -m 4755 driver/xscreensaver $RPM_BUILD_ROOT%{x11_prefix}/bin
 #
 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
 
+pids=`pidof xscreensaver`
+if [ -n "$pids" ]; then
+  echo "sending SIGHUP to running xscreensaver ($pids)..." >&2
+  kill -HUP $pids
+fi
 
 %clean
 if [ -d $RPM_BUILD_ROOT    ]; then rm -r $RPM_BUILD_ROOT    ; fi
@@ -246,7 +177,8 @@ if [ -d $RPM_BUILD_ROOT-gl ]; then rm -r $RPM_BUILD_ROOT-gl ; fi
 %config(missingok)  %{kde_prefix}/bin/*.kss
 
 %config(missingok)  %{gnome_prefix}/bin/*-capplet
-%config(missingok)  %{gnome_ccdir}/*.desktop
+%config(missingok)  %{gnome_ccdir_1}/*.desktop
+%config(missingok)  %{gnome_ccdir_2}/*.desktop
 %config(missingok)  %{gnome_paneldir}/*.desktop
 %config(missingok)  %{gnome_icondir}/*