fpdb/pyfpdb/py2exe_setup.py

149 lines
5.4 KiB
Python
Raw Normal View History

2009-09-03 09:46:22 +02:00
#!/usr/bin/env python
"""setup.py
Py2exe script for fpdb.
"""
# Copyright 2009, Ray E. Barker
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
########################################################################
2010-02-06 19:07:00 +01:00
#TODO:
2009-09-03 09:46:22 +02:00
# include the lib needed to handle png files in mucked
# get rid of all the uneeded libraries (e.g., pyQT)
# think about an installer
2010-02-06 19:07:00 +01:00
# done: change GuiAutoImport so that it knows to start HUD_main.exe, when appropriate
#HOW TO USE this script:
#
2010-02-06 19:07:00 +01:00
#- cd to the folder where this script is stored, usually .../pyfpdb.
# [If there are build and dist subfolders present , delete them to get
# rid of earlier builds. Update: script now does this for you]
#- Run the script with "py2exe_setup.py py2exe"
#- You will frequently get messages about missing .dll files. E. g.,
# MSVCP90.dll. These are somewhere in your windows install, so you
2010-02-06 19:07:00 +01:00
# can just copy them to your working folder. (or just assume other
# person will have them? any copyright issues with including them?)
#- If it works, you'll have 3 new folders, build and dist and gfx. Build is
# working space and should be deleted. Dist and gfx contain the files to be
# distributed.
#- Last, you must copy the etc/, lib/ and share/ folders from your
# gtk/bin/ (just /gtk/?) folder to the dist folder. (the whole folders,
# not just the contents)
#- You can (should) then prune the etc/, lib/ and share/ folders to
# remove components we don't need.
2010-02-09 00:02:08 +01:00
# sqlcoder notes: this worked for me with the following notes:
#- I used the following versions:
# python 2.5.4
# gtk+ 2.14.7
# pycairo 1.4.12-2
# pygobject 2.14.2-2
# pygtk 2.12.1-3
# matplotlib 0.98.3
# numpy 1.4.0
# py2exe-0.6.9 for python 2.5
#
#- I also copied these dlls manually from <gtk>/bin to /dist :
#
# libgobject-2.0-0.dll
# libgdk-win32-2.0-0.dll
2010-02-06 19:07:00 +01:00
import os
import sys
2009-09-03 09:46:22 +02:00
from distutils.core import setup
import py2exe
2010-02-06 19:07:00 +01:00
import glob
import matplotlib
from datetime import date
def remove_tree(top):
# Delete everything reachable from the directory named in 'top',
# assuming there are no symbolic links.
# CAUTION: This is dangerous! For example, if top == '/', it
# could delete all your disk files.
# sc: Nicked this from somewhere, added the if statement to try
# make it a bit safer
if top in ('build','dist','gfx') and os.path.basename(os.getcwd()) == 'pyfpdb':
#print "removing directory '"+top+"' ..."
for root, dirs, files in os.walk(top, topdown=False):
for name in files:
os.remove(os.path.join(root, name))
for name in dirs:
os.rmdir(os.path.join(root, name))
os.rmdir(top)
def test_and_remove(top):
if os.path.exists(top):
if os.path.isdir(top):
remove_tree(top)
else:
print "Unexpected file '"+top+"' found. Exiting."
exit()
# remove build and dist dirs if they exist
test_and_remove('dist')
test_and_remove('build')
test_and_remove('gfx')
today = date.today().strftime('%Y%m%d')
print "\n" + r"Output will be created in \dist\ and \fpdb_XXX_"+today+'\\'
2010-02-06 19:07:00 +01:00
print "Enter value for XXX (any length): ", # the comma means no newline
xxx = sys.stdin.readline().rstrip()
dist_dir = r'..\fpdb-' + xxx + '-' + today + '-exe'
2010-02-06 19:07:00 +01:00
print
2009-09-03 09:46:22 +02:00
setup(
name = 'fpdb',
description = 'Free Poker DataBase',
version = '0.12',
console = [ {'script': 'fpdb.py', },
{'script': 'HUD_main.py', },
{'script': 'Configuration.py', }
2009-09-03 09:46:22 +02:00
],
options = {'py2exe': {
'packages' : ['encodings', 'matplotlib'],
'includes' : ['cairo', 'pango', 'pangocairo', 'atk', 'gobject'
,'PokerStarsToFpdb', 'matplotlib.numerix.random_array'],
'excludes' : ['_gtkagg', '_tkagg', '_agg2', 'cocoaagg', 'fltkagg'],
'dll_excludes': ['libglade-2.0-0.dll', 'libgdk-win32-2.0-0.dll'
,'libgobject-2.0-0.dll'],
2009-09-03 09:46:22 +02:00
}
},
# files in 2nd value in tuple are moved to dir named in 1st value
2010-02-06 19:07:00 +01:00
data_files = [('', ['HUD_config.xml.example', 'Cards01.png', 'logging.conf'])
,(dist_dir, [r'..\run_fpdb.bat'])
2010-02-06 19:07:00 +01:00
,( dist_dir + r'\gfx', glob.glob(r'..\gfx\*.*') )
# line below has problem with fonts subdir ('not a regular file')
2010-02-06 19:07:00 +01:00
#,(r'matplotlibdata', glob.glob(r'c:\python25\Lib\site-packages\matplotlib\mpl-data\*'))
] + matplotlib.get_py2exe_datafiles()
2009-09-03 09:46:22 +02:00
)
2010-02-06 19:07:00 +01:00
print '\n' + r'If py2exe was successful move the \dist\ directory '
print 'into \\'+dist_dir+'\\ and rename it as \\pyfpdb\\'
print "Don't forget to add the \\etc \\lib and \\share dirs from your gtk dir\n"
2010-02-06 19:07:00 +01:00