Merge branch 'master' of git://git.assembla.com/fpdb-gimick.git

Conflicts:
	packaging/windows/py2exe_setup.py
This commit is contained in:
Eric Blade 2011-03-19 18:56:00 -04:00
commit cee7617cdb
3 changed files with 256 additions and 269 deletions

View File

@ -134,14 +134,14 @@ Step 4 Get the fpdb GIT tree
Numpy needs special handling, as by default it will install an optimised version for the SSE level of your CPU (SSE3, SSE2 or noSSE). This means that the completed package will not run on an older CPU. Numpy needs special handling, as by default it will install an optimised version for the SSE level of your CPU (SSE3, SSE2 or noSSE). This means that the completed package will not run on an older CPU.
For this reason, do not just run the installer downloaded. We will force a nosse version, to minimise problems on For this reason, do not just run the installer. We will force a nosse version, to minimise problems on
older client PC's older client PC's
5.3.1/ download the package to the Desktop 5.3.1/ download the package to the Desktop
numpy 1.5.1 ... http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/numpy-1.5.1-win32-superpack-python2.7.exe/download numpy 1.5.1 ... http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/numpy-1.5.1-win32-superpack-python2.7.exe/download
5.3.3/ If you are wanting to build a package which works on all CPU's, install noSSE as follows: 5.3.3/ You are normally wanting to build a package which works on all CPU's, so install for noSSE as follows:
dos> cd Desktop dos> cd Desktop
dos> numpy-1.5.1-win32-superpack-python2.7.exe /arch nosse dos> numpy-1.5.1-win32-superpack-python2.7.exe /arch nosse
@ -159,6 +159,11 @@ Completed
Step 6 Run py2exe to generate fpdb.exe Step 6 Run py2exe to generate fpdb.exe
-------------------------------------- --------------------------------------
6.0/ Set version number of build folder
dos> cd Desktop\fpdb\packaging\windows
dos> write py2exe_setup.py
change the value of fpdbver and save file
6.1/ Run the script to create the fpdb.exe bundle 6.1/ Run the script to create the fpdb.exe bundle
dos> cd Desktop\fpdb\packaging\windows dos> cd Desktop\fpdb\packaging\windows
@ -167,7 +172,7 @@ dos> c:\python27\python.exe py2exe_setup.py py2exe
wait a while, watch lots of copying and whatever. wait a while, watch lots of copying and whatever.
6.2/ You should next get prompted for the GTK folder. 6.2/ You should next get prompted for the GTK folder.
c:\GTK Enter c:\GTK
6.3/ If there are no errors reported, it has probably worked, we will test soon. 6.3/ If there are no errors reported, it has probably worked, we will test soon.
@ -205,27 +210,16 @@ Step 9 Initial run
Observe that the msvcp90.dll was provided by the python runtime package, so we don't have to install the separate package from Microsoft. End-users will, however need the dependency. Observe that the msvcp90.dll was provided by the python runtime package, so we don't have to install the separate package from Microsoft. End-users will, however need the dependency.
Step 11 pruning Step 11 deleted
--------------- ---------------
11.1/ The generated folder is 100+MB and can be pruned by removing the following directories: Has been deleted
pyfpdb/lib/glib-2.0
pyfpdb/lib/pkgconfig
pyfpdb/share/aclocal
pyfpdb/share/doc
pyfpdb/share/glib-2.0
pyfpdb/share/gtk-2.0
pyfpdb/share/gtk-doc
pyfpdb/share/locale
pyfpdb/share/man
Step 12 rename folder Step 12 rename folder
--------------------- ---------------------
If needed, rename the folder to something meaningful to the community. If you have built for NoSSE, append anyCPU to the directory name. If needed, rename the folder to something meaningful to the community.
Step 13 Compress to executable archive Step 13 Compress to executable archive
-------------------------------------- --------------------------------------
@ -233,9 +227,3 @@ Step 13 Compress to executable archive
13.1/ Download and install 7zip 914 ... http://sourceforge.net/projects/sevenzip/files/7-Zip/9.14/7z914.exe/download 13.1/ Download and install 7zip 914 ... http://sourceforge.net/projects/sevenzip/files/7-Zip/9.14/7z914.exe/download
13.2/ Rightclick on fpdb executable folder, select 7zip Add to archive... select SFX archive option switch 13.2/ Rightclick on fpdb executable folder, select 7zip Add to archive... select SFX archive option switch
13.3/ Test the created exe file 13.3/ Test the created exe file
Step 14 If you need to build again for a different SSE level
------------------------------------------------------------
Go back to step 5 and run again.

View File

@ -24,32 +24,25 @@ Py2exe script for fpdb.
######################################################################## ########################################################################
#TODO: #TODO:
# get rid of all the uneeded libraries (e.g., pyQT)
# think about an installer # think about an installer
# done: change GuiAutoImport so that it knows to start HUD_main.exe, when appropriate
# include the lib needed to handle png files in mucked
#HOW TO USE this script: #HOW TO USE this script:
# #
#- edit the fpdbver variable in this script (this value will be used to create the distribution folder name)
#- cd to the folder where this script is stored, usually ...packaging/windows #- cd to the folder where this script is stored, usually ...packaging/windows
#- Run the script with python "py2exe_setup.py py2exe" #- Run the script with python "py2exe_setup.py py2exe"
#- You will frequently get messages about missing .dll files.just assume other #- You will frequently get messages about missing .dll files.just assume other
# person will have them? we have copyright issues including some dll's # person will have them? we have copyright issues including some dll's
#- If it works, you'll have a new dir fpdb-YYYYMMDD-exe which should #- If it works, you'll have a new dir fpdb-version which should
# contain 2 dirs; gfx and pyfpdb and run_fpdb.bat # contain 2 dirs; gfx and pyfpdb and run_fpdb.bat
#- [ This bit is now automated:
# Last, you must copy the etc/, lib/ and share/ folders from your
# gtk/bin/ (just /gtk/?) folder to the pyfpdb 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. (see output at end of program run)
# See walkthrough in packaging directory for versions used # See walkthrough in packaging directory for versions used
# Very useful guide here : http://www.no-ack.org/2010/09/complete-guide-to-py2exe-for-pygtk.html
# steffeN: Doesnt seem necessary to gettext-ify this, but feel free to if you disagree # steffeN: Doesnt seem necessary to gettext-ify this, but feel free to if you disagree
# Gimick: restructure to allow script to run from packaging/windows directory, and not to write to source pyfpdb # Gimick: restructure to allow script to run from packaging/windows directory, and not to write to source pyfpdb
fpdbver = '0.22'
import os import os
import sys import sys
@ -61,6 +54,10 @@ except:
print "A parameter is required, quitting now" print "A parameter is required, quitting now"
quit() quit()
if sys.argv[1] <> "py2exe":
print "Parameter 1 is not valid, quitting now"
quit()
from distutils.core import setup from distutils.core import setup
import py2exe import py2exe
import glob import glob
@ -75,12 +72,15 @@ def isSystemDLL(pathname):
return origIsSystemDLL(pathname) return origIsSystemDLL(pathname)
def test_and_remove(top): def test_and_remove(top):
#print "Attempting to delete:", top
if os.path.exists(top): if os.path.exists(top):
if os.path.isdir(top): if os.path.isdir(top):
remove_tree(top) remove_tree(top)
else: else:
print "Unexpected file '"+top+"' found. Exiting." print "Unexpected file '"+top+"' found. Exiting."
exit() exit()
else:
"oops folder not found"
def remove_tree(top): def remove_tree(top):
# Delete everything reachable from the directory named in 'top', # Delete everything reachable from the directory named in 'top',
@ -89,8 +89,8 @@ def remove_tree(top):
# could delete all your disk files. # could delete all your disk files.
# sc: Nicked this from somewhere, added the if statement to try # sc: Nicked this from somewhere, added the if statement to try
# make it a bit safer # make it a bit safer
if top in ('build','dist',distdir) and os.path.basename(os.getcwd()) == 'windows': if (top in ('build','dist') or top.startswith(distdir)) and os.path.basename(os.getcwd()) == 'windows':
#print "removing directory '"+top+"' ..." print "removing directory '"+top+"' ..."
for root, dirs, files in os.walk(top, topdown=False): for root, dirs, files in os.walk(top, topdown=False):
for name in files: for name in files:
os.remove(os.path.join(root, name)) os.remove(os.path.join(root, name))
@ -111,8 +111,6 @@ def copy_file(source,destination):
shutil.copy( source, destination ) shutil.copy( source, destination )
fpdbver = '0.21'
distdir = r'fpdb-' + fpdbver distdir = r'fpdb-' + fpdbver
rootdir = r'../../' #cwd is normally /packaging/windows rootdir = r'../../' #cwd is normally /packaging/windows
pydir = rootdir+'pyfpdb/' pydir = rootdir+'pyfpdb/'
@ -172,9 +170,6 @@ setup(
] + matplotlib.get_py2exe_datafiles() ] + matplotlib.get_py2exe_datafiles()
) )
# ,(distdir, [rootdir+'run_fpdb.bat'])
# ,(distdir+r'\gfx', glob.glob(gfxdir+'*.*'))
# ] +
print "*** py2exe build phase complete ***" print "*** py2exe build phase complete ***"
# copy zone info and fpdb translation folders # copy zone info and fpdb translation folders
@ -185,7 +180,7 @@ copy_tree (pydir+r'locale', os.path.join(r'dist', 'locale'))
copy_tree (gfxdir, os.path.join(distdir, 'gfx')) copy_tree (gfxdir, os.path.join(distdir, 'gfx'))
copy_file (rootdir+'run_fpdb.bat', distdir) copy_file (rootdir+'run_fpdb.bat', distdir)
print "*** Renaming dist folder as distribution pyfpdb folder ***" print "*** Renaming dist folder as pyfpdb folder ***"
dest = os.path.join(distdir, 'pyfpdb') dest = os.path.join(distdir, 'pyfpdb')
os.rename( 'dist', dest ) os.rename( 'dist', dest )
@ -203,23 +198,27 @@ copy_tree(os.path.join(gtk_dir, 'etc'), os.path.join(dest, 'etc'))
copy_tree(os.path.join(gtk_dir, 'lib'), os.path.join(dest, 'lib')) copy_tree(os.path.join(gtk_dir, 'lib'), os.path.join(dest, 'lib'))
copy_tree(os.path.join(gtk_dir, 'share'), os.path.join(dest, 'share')) copy_tree(os.path.join(gtk_dir, 'share'), os.path.join(dest, 'share'))
print "*** All done! ***" print "*** Activating MS-Windows GTK theme ***"
gtkrc = open(os.path.join(distdir, 'pyfpdb', 'etc', 'gtk-2.0', 'gtkrc'), 'w')
print >>gtkrc, 'gtk-theme-name = "MS-Windows"'
gtkrc.close()
print "*** deleting temporary build folder ***"
test_and_remove('build') test_and_remove('build')
print distdir+" is in the pyfpdb dir"
print """
The following dirs can probably removed to make the final package smaller:
pyfpdb/lib/glib-2.0 print "*** deleting folders to shrink package size ***"
pyfpdb/lib/gtk-2.0/include test_and_remove(os.path.join(distdir, 'pyfpdb', 'lib', 'glib-2.0'))
pyfpdb/lib/pkgconfig test_and_remove(os.path.join(distdir, 'pyfpdb', 'lib', 'gtk-2.0','include'))
pyfpdb/share/aclocal test_and_remove(os.path.join(distdir, 'pyfpdb', 'lib', 'pkgconfig'))
pyfpdb/share/doc test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'aclocal'))
pyfpdb/share/glib-2.0 test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'doc'))
pyfpdb/share/gtk-2.0 test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'glib-2.0'))
pyfpdb/share/gtk-doc test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'gtk-2.0'))
pyfpdb/share/locale test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'gtk-doc'))
pyfpdb/share/man test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'locale'))
pyfpdb/share/themes/Default test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'man'))
Use 7-zip to zip up the distribution and create a self extracting archive and that's it! print "***++++++++++++++++++++++++++++++++++++++++++++++"
""" print "All done!"
print "The distribution folder "+distdir+" is in the pyfpdb dir"
print "***++++++++++++++++++++++++++++++++++++++++++++++"

View File

@ -1,210 +1,210 @@
pypokereval build for windows stepbystep guide pypokereval build for windows stepbystep guide
---------------------------------------------- ----------------------------------------------
Created by Gimick on 3rd December 2010 Created by Gimick on 3rd December 2010
Updated for py27 by Gimick 27th Feb 2011 Updated for py27 by Gimick 27th Feb 2011
This walkthrough is derived with the assistance of EricBlade and the build notes This walkthrough is derived with the assistance of EricBlade and the build notes
supplied by Loic Dachary <loic@dachary.org> http://dachary.org/ supplied by Loic Dachary <loic@dachary.org> http://dachary.org/
Content is available under the the GNU Affero General Public License version 3 Content is available under the the GNU Affero General Public License version 3
0. Build environ 0. Build environ
---------------- ----------------
We are building against the 2008 runtime because Python 2.7 We are building against the 2008 runtime because Python 2.7
has the same dependency (msvcr90.dll version 9.0.21022.8) has the same dependency (msvcr90.dll version 9.0.21022.8)
Using winXPhome 32 bit Using winXPhome 32 bit
1 Visual studio 1 Visual studio
--------------- ---------------
1.1/ Get the ISO CD from here ... http://www.microsoft.com/express/Downloads/#2008-All 1.1/ Get the ISO CD from here ... http://www.microsoft.com/express/Downloads/#2008-All
1.2/ Run and install Visual C++ only, don't bother with the additional packages offered 1.2/ Run and install Visual C++ only, don't bother with the additional packages offered
This package will run 30 days before registration is needed This package will run 30 days before registration is needed
2. Python runtime 2. Python runtime
----------------- -----------------
2.1/ Install python runtime from here ... 2.1/ Install python runtime from here ...
Python 2.7 ... http://python.org/ftp/python/2.7/python-2.7.msi Python 2.7 ... http://python.org/ftp/python/2.7/python-2.7.msi
3. Source install 3. Source install
----------------- -----------------
3.1/ grab sources from here 3.1/ grab sources from here
pypoker-eval v138 ... http://download.gna.org/pokersource/sources/pypoker-eval-138.0.tar.gz pypoker-eval v138 ... http://download.gna.org/pokersource/sources/pypoker-eval-138.0.tar.gz
poker-eval v138 ... http://download.gna.org/pokersource/sources/poker-eval-138.0.tar.gz poker-eval v138 ... http://download.gna.org/pokersource/sources/poker-eval-138.0.tar.gz
3.2/ unpack and place the pypoker-eval-138 directory in c:\ 3.2/ unpack and place the pypoker-eval-138 directory in c:\
3.2.1/ rename to pypoker-eval 3.2.1/ rename to pypoker-eval
3.3/ unpack and place the poker-eval-138 directory in c:\ 3.3/ unpack and place the poker-eval-138 directory in c:\
3.3.1/ rename to poker-eval 3.3.1/ rename to poker-eval
Important: the build will fail with bizarre missing header files if the project is placed Important: the build will fail with bizarre missing header files if the project is placed
in a directory containing a space character - you have been warned! in a directory containing a space character - you have been warned!
4. Update source file 4. Update source file
--------------------- ---------------------
4.1/ dos> write c:/pypoker-eval/pypokereval.c 4.1/ dos> write c:/pypoker-eval/pypokereval.c
change this: change this:
#define VERSION_NAME(W) W##2_4 #define VERSION_NAME(W) W##2_4
#define PYTHON_VERSION "2_4" #define PYTHON_VERSION "2_4"
to be this: to be this:
#define VERSION_NAME(W) W##2_7 #define VERSION_NAME(W) W##2_7
#define PYTHON_VERSION "2_7" #define PYTHON_VERSION "2_7"
- - - - - - - - - - - -
Move this block of code: Move this block of code:
#ifdef _DEBUG // for Windows python23_d.lib is not in distribution... ugly but works #ifdef _DEBUG // for Windows python23_d.lib is not in distribution... ugly but works
#undef _DEBUG #undef _DEBUG
#include <Python.h> #include <Python.h>
#define _DEBUG #define _DEBUG
#else #else
#include <Python.h> #include <Python.h>
#endif #endif
To be after this line: To be after this line:
#include "enumdefs.h" #include "enumdefs.h"
4.2/ save and exit 4.2/ save and exit
- - - - - - - - - -
4.3/ dos> write c:/pypoker-eval/pokereval.py 4.3/ dos> write c:/pypoker-eval/pokereval.py
Comment-out this line: Comment-out this line:
_pokereval = __import__('_pokereval_' + sys.version[0] + '_' + sys.version[2]) _pokereval = __import__('_pokereval_' + sys.version[0] + '_' + sys.version[2])
Insert this one in its' place: Insert this one in its' place:
import _pokereval_2_7 as _pokereval import _pokereval_2_7 as _pokereval
4.4/ save and exit 4.4/ save and exit
5. Build pre-preparation 5. Build pre-preparation
------------------------ ------------------------
(Here we are converting the two project definition files to 2008) (Here we are converting the two project definition files to 2008)
5.1 navigate to directory c:/poker-eval 5.1 navigate to directory c:/poker-eval
5.1.1 double click poker-eval.vcproj 5.1.1 double click poker-eval.vcproj
5.1.2 Visual studio will launch and make a conversion - accept all defaults 5.1.2 Visual studio will launch and make a conversion - accept all defaults
5.1.3 exit and save 5.1.3 exit and save
5.2 navigate to directory c:/pypoker-eval 5.2 navigate to directory c:/pypoker-eval
5.2.1 double click pypoker-eval.vcproj 5.2.1 double click pypoker-eval.vcproj
5.2.2 Visual studio will launch and make a conversion - accept all defaults 5.2.2 Visual studio will launch and make a conversion - accept all defaults
5.2.3 exit 5.2.3 exit
6. build preparation 6. build preparation
-------------------- --------------------
6.2 navigate to directory c:/pypoker-eval 6.2 navigate to directory c:/pypoker-eval
6.2.1 double click pypoker-eval.vcproj - visual studio should launch 6.2.1 double click pypoker-eval.vcproj - visual studio should launch
6.2.3 Select Build...configuration manager... 6.2.3 Select Build...configuration manager...
Select "active solution configuration" to "Release" Select "active solution configuration" to "Release"
(The configuration for both projects will change to "Release") (The configuration for both projects will change to "Release")
6.2.3 Close the configuration manager 6.2.3 Close the configuration manager
6.2.4 In the solution explorer window, hilight pythonpoker-eval / right mouse / properties... 6.2.4 In the solution explorer window, hilight pythonpoker-eval / right mouse / properties...
6.2.5 In the pythonpoker-eval properties dialog, 6.2.5 In the pythonpoker-eval properties dialog,
change references to "python24" to "python27" in the following: change references to "python24" to "python27" in the following:
= C/C++/Additional Include Directories/ = C/C++/Additional Include Directories/
= linker/general/Additional library directories = linker/general/Additional library directories
= linker/input/Additional Dependencies = linker/input/Additional Dependencies
Change the following Change the following
= linker/generate debug info - set to No = linker/generate debug info - set to No
6.2.6 Apply all changes to the properties dialog and close 6.2.6 Apply all changes to the properties dialog and close
6.3 Exit from visual studio 6.3 Exit from visual studio
7. Build poker eval 7. Build poker eval
------------------- -------------------
7.1 navigate to directory c:/poker-eval 7.1 navigate to directory c:/poker-eval
7.1.1 double click poker-eval.vcproj 7.1.1 double click poker-eval.vcproj
7.1.2 Visual studio will launch 7.1.2 Visual studio will launch
7.2 In the solution explorer window, hilight poker-eval / right mouse / build 7.2 In the solution explorer window, hilight poker-eval / right mouse / build
7.3 There should be no errors 7.3 There should be no errors
7.4 Exit from visual studio 7.4 Exit from visual studio
8. Build pypoker eval 8. Build pypoker eval
--------------------- ---------------------
8.1 navigate to directory c:/pypoker-eval 8.1 navigate to directory c:/pypoker-eval
8.1.1 double click pypoker-eval.vcproj 8.1.1 double click pypoker-eval.vcproj
8.1.2 Visual studio will launch 8.1.2 Visual studio will launch
8.2 In the solution explorer window, hilight pythonpoker-eval / right mouse / build 8.2 In the solution explorer window, hilight pythonpoker-eval / right mouse / build
8.3 There should be no errors (but a few warnings) 8.3 There should be no errors (but a few warnings)
8.4 Exit from visual studio 8.4 Exit from visual studio
9. Wrap-up 9. Wrap-up
---------- ----------
9.1 Navigate to c:/pypoker-eval/release 9.1 Navigate to c:/pypoker-eval/release
9.2 the output file is pypokereval.dll 9.2 the output file is pypokereval.dll
9.3 rename this file to _pokereval_2_7.pyd 9.3 rename this file to _pokereval_2_7.pyd
9.4 create a zip file containing : 9.4 create a zip file containing :
_pokereval_2_7.pyd from releases _pokereval_2_7.pyd from releases
test.py from pypoker-eval-138.0 test.py from pypoker-eval-138.0
pokereval.py from pypoker-eval-138.0 pokereval.py from pypoker-eval-138.0
poker-eval.vcproj from c:\poker-eval poker-eval.vcproj from c:\poker-eval
pypoker-eval.vcproj from c:\pypoker-eval pypoker-eval.vcproj from c:\pypoker-eval
pypokereval.c from c:\pypoker-eval pypokereval.c from c:\pypoker-eval
Remember to include the version (138), python 27 and win32 in the package filename Remember to include the version (138), python 27 and win32 in the package filename
10. Testing 10. Testing
----------- -----------
Python 2.7 must be installed Python 2.7 must be installed
10.1 Extract the zip file created in 9.4 into a new directory 10.1 Extract the zip file created in 9.4 into a new directory
10.2 Change directory to the directory in 10.1 10.2 Change directory to the directory in 10.1
10.3 execute dos> c:\Python27\python.exe test.py 10.3 execute dos> c:\Python27\python.exe test.py
10.4 hand-output should scroll down the screen 10.4 hand-output should scroll down the screen
10.5 start the python interpreter 10.5 start the python interpreter
10.6 >>> import pokereval 10.6 >>> import pokereval
10.7 No errors should be seen 10.7 No errors should be seen
11. Packaging 11. Packaging
------------- -------------
Please follow pypokereval-win32-packaging-walkthrough.txt in the same directory as this walkthrough. Please follow pypokereval-win32-packaging-walkthrough.txt in the same directory as this walkthrough.