rpms/wallpapoz/F-11 wallpapoz-0.4.1-rev92-kill-daemon-without-x.patch, NONE, 1.1 wallpapoz-0.4.1-rev92-kill-multiple-daemon.patch, NONE, 1.1 wallpapoz-0.4.1-rev92-compiz-respawn.patch, 1.1, 1.2 wallpapoz.spec, 1.27, 1.28 command-wrapper.sh, 1.1, NONE daemon_wallpapoz-wrapper, 1.2, NONE kill-daemon_wallpapoz, 1.1, NONE wallpapoz-0.4.1-rev92-path-fedora.patch, 1.1, NONE

Mamoru Tasaka mtasaka at fedoraproject.org
Mon Feb 8 18:32:03 UTC 2010


Author: mtasaka

Update of /cvs/extras/rpms/wallpapoz/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv2354/F-11

Modified Files:
	wallpapoz-0.4.1-rev92-compiz-respawn.patch wallpapoz.spec 
Added Files:
	wallpapoz-0.4.1-rev92-kill-daemon-without-x.patch 
	wallpapoz-0.4.1-rev92-kill-multiple-daemon.patch 
Removed Files:
	command-wrapper.sh daemon_wallpapoz-wrapper 
	kill-daemon_wallpapoz wallpapoz-0.4.1-rev92-path-fedora.patch 
Log Message:
* Tue Feb  9 2010 Mamoru Tasaka <mtasaka at ioa.s.u-tokyo.ac.jp> - 0.4.1-15.svn92_trunk
- Change the way to fix backtrace with no X resource issue


wallpapoz-0.4.1-rev92-kill-daemon-without-x.patch:
 wallpapoz_system.py |   34 +++++++++++++++++++++++++++++-----
 1 file changed, 29 insertions(+), 5 deletions(-)

--- NEW FILE wallpapoz-0.4.1-rev92-kill-daemon-without-x.patch ---
--- wallpapoz-0.4.1-svn92_trunk/share/wallpapoz/lib/wallpapoz_system.py.kill_nox	2010-02-09 03:05:24.000000000 +0900
+++ wallpapoz-0.4.1-svn92_trunk/share/wallpapoz/lib/wallpapoz_system.py	2010-02-09 03:07:00.000000000 +0900
@@ -24,9 +24,11 @@
 ## wallpapoz_system.py -- finds current desktop and changes wallpaper
 # achieve goal by calling external program
 
+import subprocess
 import os
 import sys
 import string
+import signal
 
 class WallpapozSystem:
 
@@ -38,12 +40,34 @@
       self.finding_row_and_column()
     self.finding_total_workspaces()
 
+  def exec_cmd(self, cmd):
+    p = subprocess.Popen(
+      cmd,
+      stdout = subprocess.PIPE,
+      stderr = subprocess.PIPE,
+      shell = True
+      )
+
+    pstdout = p.stdout.read()
+    pstderr = p.stderr.read()
+    ret = p.wait()
+
+    if ( ret != 0 ) and ( ret & 0xFF ):
+      err_str = 'unable to open display'
+
+      if pstderr.find(err_str) >= 0:
+        ## No X resource available, kill daemon_wallpapoz
+        cpid = os.getpid()
+        os.kill (cpid, signal.SIGTERM)
+
+    return pstdout
+
   def set_style(self, style):
     self.wallpaper_style = style
 
   ## class method to find monitor resolution
   def finding_screen_resolution(self):
-    raw_resolution = os.popen('xwininfo -root').read()
+    raw_resolution = self.exec_cmd('xwininfo -root')
     start_width = raw_resolution.find('Width')
     end_width = raw_resolution.find('\n',start_width)
     start_height = raw_resolution.find('Height')
@@ -56,11 +80,11 @@
     if self.beryl:
       self.total_workspaces = self.row_workspaces * self.column_workspaces
     else:
-      self.total_workspaces = int(os.popen("xprop -root _NET_NUMBER_OF_DESKTOPS").read()[36:38])
+      self.total_workspaces = int(self.exec_cmd("xprop -root _NET_NUMBER_OF_DESKTOPS")[36:38])
 
   ## class method to find if user use beryl in his system or not
   def check_beryl(self):
-    raw_geometry = os.popen('xprop -root _NET_DESKTOP_GEOMETRY').read()
+    raw_geometry = self.exec_cmd('xprop -root _NET_DESKTOP_GEOMETRY')
     # output of xprop -root _NET_DESKTOP_GEOMETRY is '_NET_DESKTOP_GEOMETRY(CARDINAL) = 1024, 768\n'
     # and we just need the '1024, 768' part
     raw_geometry = raw_geometry[34:raw_geometry.find('\n')]
@@ -90,7 +114,7 @@
   ## class method to know what workspace we are in now
   def current_desktop(self):
     if self.beryl:
-      raw_viewport = os.popen('xprop -root _NET_DESKTOP_VIEWPORT').read()
+      raw_viewport = self.exec_cmd('xprop -root _NET_DESKTOP_VIEWPORT')
       # output of xprop -root _NET_DESKTOP_VIEWPORT is '_NET_DESKTOP_VIEWPORT(CARDINAL) = 1024, 768\n'
       # and we just need the '1024, 768' part
       raw_viewport = raw_viewport[34:raw_viewport.find('\n')]
@@ -99,7 +123,7 @@
       y_pos = int(viewport[1]) / self.screen_height
       workspace = x_pos + self.column_workspaces * y_pos
     else:
-      raw_workspace = os.popen('xprop -root _NET_CURRENT_DESKTOP').read()
+      raw_workspace = self.exec_cmd('xprop -root _NET_CURRENT_DESKTOP')
       workspace = int(raw_workspace[33] + raw_workspace[34])
     return workspace
 

wallpapoz-0.4.1-rev92-kill-multiple-daemon.patch:
 share/wallpapoz/lib/wallpapoz_system.py |   15 +++++++++++++++
 src/daemon_wallpapoz                    |    4 ++++
 2 files changed, 19 insertions(+)

--- NEW FILE wallpapoz-0.4.1-rev92-kill-multiple-daemon.patch ---
--- wallpapoz-0.4.1-svn92_trunk/share/wallpapoz/lib/wallpapoz_system.py.kill_multi	2010-02-09 03:12:50.000000000 +0900
+++ wallpapoz-0.4.1-svn92_trunk/share/wallpapoz/lib/wallpapoz_system.py	2010-02-09 03:13:01.000000000 +0900
@@ -150,3 +150,18 @@
     print "os.execvp failed, exiting..."
     sys.exit(1)
     return
+
+  def prevent_multiple_start(self):
+    cpid = os.getpid()
+    cid = os.getuid()
+
+    wallpapoz_cmd = "pgrep -U %i -f daemon_wallpapoz" %cid
+    python_cmd = "pgrep -U %i -f python" %cid
+
+    wallpapoz_id_list = os.popen(wallpapoz_cmd).read().splitlines()
+    python_id_list = os.popen(python_cmd).read().splitlines()
+
+    for id_list in wallpapoz_id_list:
+      if ( id_list in python_id_list ) and ( int(id_list) != cpid) :
+        os.kill(int(id_list), signal.SIGTERM)
+
--- wallpapoz-0.4.1-svn92_trunk/src/daemon_wallpapoz.kill_multi	2010-02-09 03:12:50.000000000 +0900
+++ wallpapoz-0.4.1-svn92_trunk/src/daemon_wallpapoz	2010-02-09 03:13:01.000000000 +0900
@@ -98,6 +98,10 @@
   # create the system class ( to change wallpaper and read current desktop )
   # by calling external program
   wallpapoz_system = WallpapozSystem()
+
+  # Kill other daemon_wallpapoz if running
+  wallpapoz_system.prevent_multiple_start()
+
   available_style = { '3' : 'zoom', '2' : 'scaled', '1' : 'stretched', 
       '0' : 'centered', '4' : 'wallpaper' } 
   style = available_style[wallpapozxml.style()]

wallpapoz-0.4.1-rev92-compiz-respawn.patch:
 share/wallpapoz/lib/wallpapoz_system.py |   13 +++++++++++++
 src/daemon_wallpapoz                    |   19 ++++++++++++++++++-
 2 files changed, 31 insertions(+), 1 deletion(-)

Index: wallpapoz-0.4.1-rev92-compiz-respawn.patch
===================================================================
RCS file: /cvs/extras/rpms/wallpapoz/F-11/wallpapoz-0.4.1-rev92-compiz-respawn.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- wallpapoz-0.4.1-rev92-compiz-respawn.patch	3 Feb 2010 20:06:05 -0000	1.1
+++ wallpapoz-0.4.1-rev92-compiz-respawn.patch	8 Feb 2010 18:32:02 -0000	1.2
@@ -29,7 +29,7 @@
 +    new_argv.extend(sys.argv)
 +    os.execvp('daemon_wallpapoz', new_argv)
 +    print "os.execvp failed, exiting..."
-+    exit()
++    sys.exit(1)
 +    return
 --- wallpapoz-0.4.1-svn92_trunk/src/daemon_wallpapoz.compiz	2009-08-30 01:22:07.000000000 +0900
 +++ wallpapoz-0.4.1-svn92_trunk/src/daemon_wallpapoz	2010-02-04 02:31:21.000000000 +0900


Index: wallpapoz.spec
===================================================================
RCS file: /cvs/extras/rpms/wallpapoz/F-11/wallpapoz.spec,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -p -r1.27 -r1.28
--- wallpapoz.spec	7 Feb 2010 19:50:30 -0000	1.27
+++ wallpapoz.spec	8 Feb 2010 18:32:02 -0000	1.28
@@ -8,7 +8,7 @@
 %define         mainver         0.4.1
 %undefine         betaver
 %define         svnver          svn92_trunk
-%define         fedorarel       14
+%define         fedorarel       15
 
 %define         rel             %{?betaver:0.}%{fedorarel}%{?svnver:.%svnver}%{?betaver:.%betaver}
 
@@ -21,18 +21,12 @@ Group:          User Interface/Desktops
 License:        GPLv2+
 URL:            %{srcurl}
 Source0:        %{srcurl}files/%{name}-%{mainver}%{?svnver:-%svnver}%{?betaver:%betaver}.tar.bz2
-Source10:       daemon_wallpapoz-wrapper
 %if 0%{?fedora} >= 12
 Source11:       wallpapoz-autostart.desktop
 %endif
-# Source12,13: For bug 531343, 538533, 541434, 556377
-# Kill daemon_wallpapoz when X resource is no longer available
-Source12:       kill-daemon_wallpapoz
-Source13:       command-wrapper.sh
 # Misc fixes for daemon_wallpapoz under compiz working,
 # containing fix for bug 531342, 542244
 Patch0:         wallpapoz-0.4.1-rev92-compiz-respawn.patch
-Patch1:         wallpapoz-0.4.1-rev92-path-fedora.patch
 # Check if selected item is really a directory when adding directory
 # bug 549219
 Patch2:         wallpapoz-0.4.1-rev92-dircheck.patch
@@ -40,6 +34,11 @@ Patch2:         wallpapoz-0.4.1-rev92-di
 Patch3:         wallpapoz-0.4.1-rev92-noitem_selected.patch
 # Intialization for pasting selected items
 Patch4:         wallpapoz-0.4.1-rev92-paste-initialization.patch
+# Kill daemon_wallpapoz when X resource is no longer available
+# bug 531343, 538533, 541434, 556377
+Patch5:         wallpapoz-0.4.1-rev92-kill-daemon-without-x.patch
+# Kill other daemon_wallpapoz if running
+Patch6:         wallpapoz-0.4.1-rev92-kill-multiple-daemon.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildArch:      noarch
@@ -72,10 +71,11 @@ wallpapers for different workspaces or v
 %prep
 %setup -q -n %{name}-%{version}%{?svnver:-%svnver}
 %patch0 -p1 -b .compiz
-%patch1 -p1 -b .path
 %patch2 -p1 -b .dircheck
 %patch3 -p1 -b .noitem
 %patch4 -p1 -b .patch_init
+%patch5 -p1 -b .kill_nox
+%patch6 -p1 -b .kill_multi
 
 %build
 
@@ -93,24 +93,6 @@ desktop-file-install \
    --delete-original \
    $RPM_BUILD_ROOT%{_datadir}/applications/%{name}.desktop
 
-# Install daemon_wallpapoz-wrapper, move the original one
-# to %%_libexecdir/wallpapoz
-%{__mkdir_p} $RPM_BUILD_ROOT%{_libexecdir}/wallpapoz
-%{__mv} $RPM_BUILD_ROOT%{_bindir}/daemon_wallpapoz \
-	$RPM_BUILD_ROOT%{_libexecdir}/wallpapoz
-%{__install} -cpm 0755 %{SOURCE10} \
-	$RPM_BUILD_ROOT%{_bindir}/daemon_wallpapoz
-
-# Install some other wrapper stuff
-%{__install} -cpm 0755 \
-	%{SOURCE12} %{SOURCE13} \
-	$RPM_BUILD_ROOT%{_libexecdir}/wallpapoz/
-for file in \
-	xprop xwininfo
-do
-	ln -sf $(basename %{SOURCE13}) $RPM_BUILD_ROOT%{_libexecdir}/wallpapoz/$file
-done
-
 # Install desktop application autostart stuff
 %if 0%{?fedora} >= 12
 mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/xdg/autostart
@@ -128,7 +110,6 @@ desktop-file-install \
 %defattr(-,root,root,-)
 %doc COPYING README
 %{_bindir}/*%{name}
-%{_libexecdir}/wallpapoz/
 
 %if 0%{?fedora} >= 12
 %{_sysconfdir}/xdg/autostart/wallpapoz-autostart.desktop
@@ -141,6 +122,9 @@ desktop-file-install \
 %{_datadir}/applications/fedora-%{name}.desktop
 
 %changelog
+* Tue Feb  9 2010 Mamoru Tasaka <mtasaka at ioa.s.u-tokyo.ac.jp> - 0.4.1-15.svn92_trunk
+- Change the way to fix backtrace with no X resource issue
+
 * Mon Feb  8 2010 Mamoru Tasaka <mtasaka at ioa.s.u-tokyo.ac.jp> - 0.4.1-14.svn92_trunk
 - Check if the selected item is really a directory on directory
   chooser dialog (bug 549219)


--- command-wrapper.sh DELETED ---


--- daemon_wallpapoz-wrapper DELETED ---


--- kill-daemon_wallpapoz DELETED ---


--- wallpapoz-0.4.1-rev92-path-fedora.patch DELETED ---



More information about the scm-commits mailing list