[jokosher-devel] setup.py - real installation



Hellas,

Michael Vogt and I had a go at setup.py and tried to make jokosher run
happily locally, but also installed with  sudo ./setup.py

Here's the result from a quick hack session. Please review it and see if
it makes sense.

Packaging should be *really* easy now.

Have a nice day,
 Daniel

diff -ruN trunk/Jokosher/AddInstrumentDialog.py jokosher/Jokosher/AddInstrumentDialog.py
--- trunk/Jokosher/AddInstrumentDialog.py	2006-08-25 01:58:13.000000000 +0200
+++ jokosher/Jokosher/AddInstrumentDialog.py	2006-08-25 15:59:44.000000000 +0200
@@ -135,14 +135,11 @@
 	if len(instrumentPropertyList) > 0:
 		return
 		
-	basepath = os.path.dirname(os.path.abspath(__file__))
-	instrpath = os.path.join(basepath, "..", "Instruments")
-	
-	files = os.walk(instrpath).next()[2]
+	files = os.walk(Globals.INSTR_PATH).next()[2]
 	instrFiles = [x for x in files if x.endswith(".instr")]
 	for f in instrFiles:
 		config = SafeConfigParser()
-		config.read(os.path.join(instrpath, f))
+		config.read(os.path.join(Globals.INSTR_PATH, f))
 		
 		if config.has_option('core', 'type') and config.has_option('core', 'icon'):
 			icon = config.get('core', 'icon')
@@ -163,7 +160,7 @@
 		else:
 			continue
 		
-		pixbufPath = os.path.join(instrpath, "images", icon)
+		pixbufPath = os.path.join(Globals.INSTR_PATH, "images", icon)
 		pixbuf = gtk.gdk.pixbuf_new_from_file(pixbufPath)
 		
 		instrumentPropertyList.append((name, type, pixbuf))
diff -ruN trunk/Jokosher/Globals.py jokosher/Jokosher/Globals.py
--- trunk/Jokosher/Globals.py	2006-08-25 01:58:13.000000000 +0200
+++ jokosher/Jokosher/Globals.py	2006-08-25 15:55:51.000000000 +0200
@@ -90,14 +90,23 @@
 def SetAbsPaths():
 	"""Set a bunch of paths for use across the project. This is particularly
 	useful for that 'orrible packaging lot"""
-	global JOKOSHER_PATH, IMAGE_PATH, GLADE_PATH, LOCALE_DIR, LOCALE_APP, EFFECT_PRESETS_PATH
-	
-	JOKOSHER_PATH = os.path.dirname(os.path.abspath(__file__))
-	IMAGE_PATH = os.path.join(JOKOSHER_PATH, "..", "images")
-	EFFECT_PRESETS_PATH = os.path.join(JOKOSHER_PATH, "..", "effectspresets")
-	GLADE_PATH = os.path.join(JOKOSHER_PATH, "Jokosher.glade")
-	LOCALE_DIR = os.path.join(JOKOSHER_PATH, "..", "locale")
+	global JOKOSHER_PATH, IMAGE_PATH, GLADE_PATH, LOCALE_DIR, LOCALE_APP, EFFECT_PRESETS_PATH, INSTR_PATH
+
 	LOCALE_APP = "jokosher"
+ 	JOKOSHER_PATH = os.getenv("JOKOSHER_DATA_PATH")
+	if JOKOSHER_PATH:
+		IMAGE_PATH = "/usr/share/pixmaps"
+		EFFECT_PRESETS_PATH = os.path.join(JOKOSHER_PATH, "effectspresets")
+		INSTR_PATH = os.path.join(JOKOSHER_PATH, "Instruments")
+	  	GLADE_PATH = os.path.join(JOKOSHER_PATH, "Jokosher.glade")
+	  	LOCALE_DIR = os.path.join("/usr/share/locale")
+        else:
+  	 	JOKOSHER_PATH = os.path.dirname(os.path.abspath(__file__))
+	  	IMAGE_PATH = os.path.join(JOKOSHER_PATH, "..", "images")
+	  	EFFECT_PRESETS_PATH = os.path.join(JOKOSHER_PATH, "..", "effectspresets")
+	  	GLADE_PATH = os.path.join(JOKOSHER_PATH, "Jokosher.glade")
+	  	LOCALE_DIR = os.path.join(JOKOSHER_PATH, "..", "locale")
+		INSTR_PATH = os.path.join(JOKOSHER_PATH, "..", "Instruments")	
 	
 settings = Settings()
 
diff -ruN trunk/Jokosher/Jokosher jokosher/Jokosher/Jokosher
--- trunk/Jokosher/Jokosher	2006-08-25 02:24:39.000000000 +0200
+++ jokosher/Jokosher/Jokosher	2006-08-25 16:00:49.000000000 +0200
@@ -1,3 +1,13 @@
-#!/bin/bash
+#!/usr/bin/env python
+
+try:
+	import JokosherApp
+	print "Runing local"
+except ImportError, e:
+	print "runing from global because of ", e
+	import Jokosher.JokosherApp as JokosherApp
+	import os
+	os.environ["JOKOSHER_DATA_PATH"] = "/usr/share/jokosher/"
+
+JokosherApp.main()
 
-PYTHONPATH=$(dirname $(dirname $0)):$PYTHONPATH python $(dirname $0)/JokosherApp.py
\ Kein Zeilenumbruch am Dateiende.
diff -ruN trunk/Jokosher/JokosherApp.py jokosher/Jokosher/JokosherApp.py
--- trunk/Jokosher/JokosherApp.py	2006-08-25 01:58:13.000000000 +0200
+++ jokosher/Jokosher/JokosherApp.py	2006-08-25 16:01:19.000000000 +0200
@@ -174,7 +174,13 @@
 		self.PopulateRecentProjects()
 		
 		#set window icon
-		self.window.set_icon_from_file(os.path.join(Globals.IMAGE_PATH, "jokosher-icon.png"))
+		#self.window.set_icon_from_file(os.path.join(Globals.IMAGE_PATH, "jokosher-icon.png"))
+		icon_theme = gtk.icon_theme_get_default()
+		try:
+			pixbuf = icon_theme.load_icon("jokosher-icon", 48, 0)
+			self.window.set_icon(pixbuf)
+		except gobject.GError, exc:
+		        print "can't load icon", exc
 		#make icon available to others
 		self.icon = self.window.get_icon()
 		
diff -ruN trunk/jokosher.desktop jokosher/jokosher.desktop
--- trunk/jokosher.desktop	2006-08-25 02:24:39.000000000 +0200
+++ jokosher/jokosher.desktop	2006-08-25 16:02:37.000000000 +0200
@@ -4,8 +4,8 @@
 Name=Jokosher
 GenericName=Jokosher audio editing
 Comment=Multi-track non-linear audio editing
-Exec=Jokosher/Jokosher
-Icon=images/jokosher-icon.png
+Exec=Jokosher
+Icon=jokosher-icon
 Terminal=false
 Type=Application
 Categories=Application;AudioVideo;
diff -ruN trunk/locale/src/Makefile jokosher/locale/src/Makefile
--- trunk/locale/src/Makefile	2006-08-04 22:46:08.000000000 +0200
+++ jokosher/locale/src/Makefile	2006-08-25 14:46:03.000000000 +0200
@@ -1,34 +1,20 @@
-#Generic rule for MO files
-%.mo: DIR1 = ../$(basename $@)
-%.mo: DIR2 = $(DIR1)/LC_MESSAGES
-%.mo: %.po
-	##############
-	#GENERATING $@
-	##############
-	if [ ! -d $(DIR1) ]; then mkdir $(DIR1); fi
-	if [ ! -d $(DIR2) ]; then mkdir $(DIR2); fi
-	msgfmt $< -o $@
-	cp $@ $(DIR2)/jokosher.mo
-
-#Generic rule for PO files
-%.po: jokosher.pot
-	##################
-	#MERGING $@ AND $<
-	##################
-	msgmerge -UN $@ $<
-
-#Generic rule for POT files
-%.pot: ../../Jokosher.glade ../../*.py ../../Instruments/*.instr
-	############
-	#CREATING $@
-	############
-	intltool-extract --type=gettext/glade ../../Jokosher.glade
-	python i18nReadInstr.py ../../Instruments/*.instr > i18n.instr.h
-	xgettext -k_ -kN_ -o $@ ../../Jokosher.glade.h ../../*.py i18n.instr.h
 
-update: $(shell ls *.po)
+DOMAIN=jokosher
+PO_FILES := $(wildcard *.po)
 
-all: $(subst .po,.mo,$(shell ls *.po))
+all: update-po
 
-clean:
-	rm *.mo i18n.instr.h ../../Jokosher.glade.h
\ Kein Zeilenumbruch am Dateiende.
+# update the pot
+$(DOMAIN).pot:
+	intltool-update -p -g $(DOMAIN)
+
+# merge the new stuff into the po files
+merge-po: $(PO_FILES)
+	intltool-update -r -g $(DOMAIN); 
+
+# create mo from the pos
+%.mo : %.po
+	mkdir -p mo/$(subst .po,,$<)/LC_MESSAGES/ 
+	msgfmt $< -o mo/$(subst .po,,$<)/LC_MESSAGES/$(DOMAIN).mo 
+
+update-po: $(DOMAIN).pot merge-po $(patsubst %.po,%.mo,$(wildcard *.po))	
diff -ruN trunk/locale/src/POTFILES.in jokosher/locale/src/POTFILES.in
--- trunk/locale/src/POTFILES.in	1970-01-01 01:00:00.000000000 +0100
+++ jokosher/locale/src/POTFILES.in	2006-08-25 14:55:12.000000000 +0200
@@ -0,0 +1,12 @@
+../Jokosher/AddInstrumentDialog.py
+../Jokosher/CompactMixView.py
+../Jokosher/EventLaneViewer.py
+../Jokosher/EventViewer.py
+../Jokosher/Extension.py
+../Jokosher/InstrumentConnectionsDialog.py
+../Jokosher/InstrumentViewer.py
+../Jokosher/JokosherApp.py
+../Jokosher/MasterMixerStrip.py
+../Jokosher/MixerStrip.py
+../Jokosher/NewProjectDialog.py
+../Jokosher/VUWidget.py
diff -ruN trunk/setup.py jokosher/setup.py
--- trunk/setup.py	1970-01-01 01:00:00.000000000 +0100
+++ jokosher/setup.py	2006-08-25 14:57:57.000000000 +0200
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+
+from distutils.core import setup
+import os
+import glob
+
+I18NFILES = []
+for filepath in glob.glob("locale/src/mo/*/LC_MESSAGES/*.mo"):
+    lang = filepath[len("locale/src/mo/"):]
+    targetpath = os.path.dirname(os.path.join("share/locale",lang))
+    I18NFILES.append((targetpath, [filepath]))
+os.system("cd locale/src; make update-po")
+
+
+setup(name='jokosher',
+      version='0.2',
+      scripts=['Jokosher/Jokosher'],
+      packages=['Jokosher'],
+      data_files=[('share/jokosher/',
+                   glob.glob("*/*.glade")
+                  ),
+                  ('share/jokosher/Instruments',
+                   glob.glob("Instruments/*.instr")
+                  ),
+                  ('share/jokosher/Instruments/images',
+                   glob.glob('Instruments/images/*')
+                  ),
+                  ('share/applications',
+                   glob.glob("*/jokosher.desktop")
+                  ),
+                  ('share/icons/hicolor/48x48/apps',
+                   ['Jokosher/jokosher-logo.png']
+                  ),
+                  ('share/pixmaps',
+                   glob.glob("images/*.png")
+                  ),
+		  ('share/applications',
+		   ['jokosher.desktop'],
+	          )
+                 ]+I18NFILES
+      )
+

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]