Changeset 8982

Show
Ignore:
Timestamp:
11/16/07 15:04:18 (13 months ago)
Author:
baron
Message:

Removed path adjustment from gajim.py and moved it outside of gajim proper.

Location:
trunk
Files:
1 added
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/setup_osx.py

    r8972 r8982  
    2828export DYLD_LIBRARY_PATH=%s/lib \n\ 
    2929export PATH=%s/bin:$PATH \n\ 
     30export PYTHONPATH=%s/lib/python2.5/site-packages:%s/lib/python2.5/site-packages/gtk-2.0 \n\ 
    3031exec ${0}.bin \n\ 
    31 ' % (GTK_DIR, GTK_DIR) 
     32' % (GTK_DIR, GTK_DIR, GTK_DIR, GTK_DIR) 
    3233 
    3334GAJIM_REMOTE_SCRIPT = \ 
     
    123124 
    124125 
     126def setupPrep(): 
     127        copy("src/osx/prep_py2app.py", APP_RS) 
     128        move("dist/Gajim.app/Contents/Resources/__boot__.py", 
     129                 "dist/Gajim.app/Contents/Resources/__boot__.py.org") 
     130        new = file("dist/Gajim.app/Contents/Resources/__boot__.py", "w+") 
     131        org = file("dist/Gajim.app/Contents/Resources/__boot__.py.org") 
     132        for line in org: 
     133                new.write(line) 
     134                if (('site.addsitedir' in line) and ('Python' in line)): 
     135                        new.write("    import prep_py2app\n") 
     136        new.close() 
     137        org.close() 
     138        unlink("dist/Gajim.app/Contents/Resources/__boot__.py.org") 
     139        return 
     140 
     141 
    125142def finishApp(): 
    126143        # setup gajim dirs 
     
    143160                 "dist/Gajim.app/Contents/MacOS/Gajim.bin") 
    144161        writeScript("dist/Gajim.app/Contents/MacOS/Gajim", GAJIM_SCRIPT) 
     162        setupPrep() 
    145163        # Setup the gajim-remote script 
    146164        writeScript("dist/Gajim.app/Contents/MacOS/gajim-remote", 
     
    174192elif sys.argv[1] == "build": 
    175193        sys.argv[1] = "py2app" 
     194        sys.argv.append('--use-pythonpath') 
    176195        cleanup() 
    177196        stageInstall() 
     
    180199elif sys.argv[1] == "dist": 
    181200        distApp() 
    182 """ 
    183 Usage: 
    184     python setup_osx.py [build | dist] 
    185 """ 
    186  
    187 from setuptools import setup 
    188 import sys, glob, os, commands, types 
    189 from os import system, unlink, symlink, getcwd, mkdir, utime 
    190 from shutil import move, copy, copytree, rmtree 
    191  
    192 ### 
    193 ### Globals 
    194 ### 
    195  
    196 GTK_DIR="/Library/Frameworks/GTK+.framework/Versions/Current" 
    197 NAME = 'Gajim' 
    198 VERSION = '0.11' 
    199 DESCRIPTION = 'A full featured Jabber client' 
    200 AUTHOR = 'Gajim Development Team' 
    201 URL = 'http://www.gajim.org/' 
    202 DOWNLOAD_URL = 'http://www.gajim.org/downloads.php' 
    203 LICENSE = 'GPL' 
    204 PWD = getcwd() 
    205 APP_RS = "dist/Gajim.app/Contents/Resources" 
    206  
    207 GAJIM_SCRIPT = \ 
    208 '#!/bin/bash \n\ 
    209 export DYLD_LIBRARY_PATH=%s/lib \n\ 
    210 export PATH=%s/bin:$PATH \n\ 
    211 exec ${0}.bin \n\ 
    212 ' % (GTK_DIR, GTK_DIR) 
    213  
    214 GAJIM_REMOTE_SCRIPT = \ 
    215 '#!/bin/bash \n\ 
    216 export DYLD_LIBRARY_PATH=%s/lib \n\ 
    217 TOPDIR=${0%%/MacOS/gajim-remote} \n\ 
    218 echo "${TOPDIR}" | grep -e "^/" \n\ 
    219 [ $? -ne 0 ] && TOPDIR=`pwd`/${TOPDIR} \n\ 
    220 export RESOURCEPATH=${TOPDIR}/Resources \n\ 
    221 export PYTHONHOME=${RESOURCEPATH}/lib/python2.5 \n\ 
    222 export PYTHONPATH=${RESOURCEPATH}/lib/python2.5/lib-dynload:${RESOURCEPATH}/lib/python2.5/site-packages.zip:${PYTHONPATH} \n\ 
    223 cd ${RESOURCEPATH} \n\ 
    224 exec ${TOPDIR}/MacOS/Python ${RESOURCEPATH}/gajim-remote.py $* \n\ 
    225 ' % GTK_DIR 
    226  
    227 ### 
    228 ### Functions 
    229 ### 
    230  
    231 def check(ret): 
    232         if type(ret) == types.ListType: 
    233                 if ret[0] != 0: 
    234                         raise Exception("Command failed: " + ret[1]) 
    235         elif type(ret) == types.IntType: 
    236                 if ret != 0: 
    237                         raise Exception("Command failed") 
    238         return 
    239  
    240  
    241 def force(func): 
    242         try: 
    243                 func() 
    244         except: 
    245                 pass 
    246         return 
    247  
    248  
    249 def writeScript(filename, contents): 
    250         script = file(filename, "w+") 
    251         script.write(contents) 
    252         script.close() 
    253         system("chmod +x %s" % filename) 
    254         return 
    255  
    256  
    257 def cleanup(): 
    258         force(lambda:rmtree("build")) 
    259         force(lambda:rmtree("dist")) 
    260  
    261 def stageInstall(): 
    262         check(system("make DATADIR=%s/build/inst LIBDIR=%s/build/inst prefix=%s/build/inst DOCDIR=%s/build/inst/share/doc install" % (PWD, PWD, PWD, PWD))) 
    263         force(lambda:unlink("src/osx/growl/_growl.so")) 
    264         force(lambda:unlink("src/osx/growl/_growlImage.so")) 
    265         force(lambda:unlink("src/osx/idle.so")) 
    266         force(lambda:unlink("src/osx/nsapp.so")) 
    267         force(lambda:unlink("src/osx/syncmenu.so")) 
    268         force(lambda:unlink("src/gtkspell.so")) 
    269         symlink("%s/build/inst/lib/gajim/_growl.so" % PWD, "src/osx/growl/_growl.so") 
    270         symlink("%s/build/inst/lib/gajim/_growlImage.so" % PWD, 
    271                  "src/osx/growl/_growlImage.so") 
    272         symlink("%s/build/inst/lib/gajim/idle.so" % PWD, "src/osx/idle.so") 
    273         symlink("%s/build/inst/lib/gajim/nsapp.so" % PWD, "src/osx/nsapp.so") 
    274         symlink("%s/build/inst/lib/gajim/syncmenu.so" % PWD, "src/osx/syncmenu.so") 
    275         if os.path.isfile("build/inst/lib/gajim/gtkspell.so"): 
    276                 symlink("%s/build/inst/lib/gajim/gtkspell.so" % PWD, "src/gtkspell.so") 
    277         return 
    278  
    279  
    280 def buildApp(): 
    281         sys.path.append('src') 
    282         sys.path.append(GTK_DIR + "/lib/python2.5/site-packages") 
    283         sys.path.append(GTK_DIR + "/lib/python2.5/site-packages/gtk-2.0") 
    284         OPTIONS = {'argv_emulation':True, 
    285                            'excludes':'docutils,Crypto,dbus,OpenSSL,cairo,gtk,gobject,atk,pangocairo', 
    286                            'iconfile':'data/pixmaps/gajim.icns', 
    287                            'includes':'osx,ConfigParser,compiler,UserString,history_manager', 
    288                            'plist':{'LSMinimumSystemVersion':'10.4.0', 
    289                                                 'NSHumanReadableCopyright':'GNU General Public License', 
    290                                                 'CFBundleIdentifier':'org.gajim', 
    291                                                 'NSMainNibFile':'Gajim', 
    292                                                 }, 
    293                            } 
    294         setup( 
    295                 name = NAME, version = VERSION, description = DESCRIPTION, 
    296                 author = AUTHOR, url = URL, download_url = DOWNLOAD_URL, 
    297                 license = LICENSE, 
    298                 app=['src/gajim.py'], 
    299                 data_files=['data/nibs/Gajim.nib'], 
    300                 options={'py2app': OPTIONS}, 
    301                 setup_requires=['py2app'], 
    302                 ) 
    303         return 
    304  
    305  
    306 def finishApp(): 
    307         # setup gajim dirs 
    308         copytree("build/inst/share/gajim/data", APP_RS + "/data") 
    309         copy("data/pixmaps/gajim.icns", APP_RS + "/data/pixmaps") 
    310         copytree("build/inst/locale", APP_RS + "/locale") 
    311         copytree("build/inst/share/man", APP_RS + "/man") 
    312         force(lambda:unlink("dist/Gajim.app/Contents/data")) 
    313         symlink("Resources/data", "dist/Gajim.app/Contents/data") 
    314         copy("src/gajim-remote.py", "dist/Gajim.app/Contents/Resources") 
    315         # Nuke libs that are in the framework 
    316         move("dist/Gajim.app/Contents/Frameworks/Python.framework", 
    317                  "dist/Gajim.app/Contents/Python.framework") 
    318         rmtree("dist/Gajim.app/Contents/Frameworks") 
    319         mkdir("dist/Gajim.app/Contents/Frameworks") 
    320         move("dist/Gajim.app/Contents/Python.framework", 
    321                  "dist/Gajim.app/Contents/Frameworks/Python.framework") 
    322         # Adjust the running of the app 
    323         move("dist/Gajim.app/Contents/MacOS/Gajim", 
    324                  "dist/Gajim.app/Contents/MacOS/Gajim.bin") 
    325         writeScript("dist/Gajim.app/Contents/MacOS/Gajim", GAJIM_SCRIPT) 
    326         # Setup the gajim-remote script 
    327         writeScript("dist/Gajim.app/Contents/MacOS/gajim-remote", 
    328                                 GAJIM_REMOTE_SCRIPT) 
    329         # Touch the top dir so Finder knows to update its idea of this bundle 
    330         utime("dist/Gajim.app", None) 
    331         return 
    332  
    333  
    334 def distApp(): 
    335         force(lambda:rmtree("dist/Gajim")) 
    336         force(lambda:rmtree("dist/Gajim.tar.bz2")) 
    337         mkdir("dist/Gajim") 
    338         check(system("tar -cf - -C dist Gajim.app | tar -xf - -C dist/Gajim")) 
    339         copy("README.osx", "dist/Gajim/README") 
    340         copy("TODO.osx", "dist/Gajim/TODO") 
    341         check(system("tar -C dist -jcf dist/Gajim-OSX-`date | awk '{printf(\"%s-%s-%s\", $6, $2, $3);}'`.tar.bz2 Gajim")) 
    342         rmtree("dist/Gajim") 
    343         return 
    344  
    345  
    346  
    347 ### 
    348 ### Start 
    349 ### 
    350 if ((len(sys.argv) != 2) or ((sys.argv[1] != "build") and 
    351         (sys.argv[1] != "dist"))): 
    352         print "usage: python setup_osx.py [build]" 
    353         print "   or: python setup_osx.py [dist]" 
    354         sys.exit(1) 
    355 elif sys.argv[1] == "build": 
    356         sys.argv[1] = "py2app" 
    357         cleanup() 
    358         stageInstall() 
    359         buildApp() 
    360         finishApp() 
    361 elif sys.argv[1] == "dist": 
    362         distApp() 
  • trunk/src/gajim.py

    r8972 r8982  
    3030import os 
    3131import urllib 
    32  
    33 if sys.platform == 'darwin': 
    34         OSX_FRAMEWORK='/Library/Frameworks/GTK+.framework/Versions/Current' 
    35         sys.path.append('%s/lib/python2.5/site-packages' % OSX_FRAMEWORK) 
    36         sys.path.append('%s/lib/python2.5/site-packages/gtk-2.0' % OSX_FRAMEWORK) 
    37         os.environ['PATH'] = '%s/bin:' % OSX_FRAMEWORK + os.environ['PATH'] 
    3832 
    3933import logging