py2exe: remove two files with windows line endings. To be fixed in next commit
This commit is contained in:
parent
4a622529c6
commit
632724d5c0
|
@ -1,224 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
"""setup.py
|
|
||||||
|
|
||||||
Py2exe script for fpdb.
|
|
||||||
"""
|
|
||||||
# Copyright 2009-2011, 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
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
|
|
||||||
#TODO:
|
|
||||||
# think about an installer
|
|
||||||
|
|
||||||
#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
|
|
||||||
#- Run the script with python "py2exe_setup.py py2exe"
|
|
||||||
#- You will frequently get messages about missing .dll files.just assume other
|
|
||||||
# person will have them? we have copyright issues including some dll's
|
|
||||||
#- If it works, you'll have a new dir fpdb-version which should
|
|
||||||
# contain 2 dirs; gfx and pyfpdb and run_fpdb.bat
|
|
||||||
|
|
||||||
# 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
|
|
||||||
# Gimick: restructure to allow script to run from packaging/windows directory, and not to write to source pyfpdb
|
|
||||||
|
|
||||||
fpdbver = '0.22'
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
# get out now if parameter not passed
|
|
||||||
try:
|
|
||||||
sys.argv[1] <> ""
|
|
||||||
except:
|
|
||||||
print "A parameter is required, quitting now"
|
|
||||||
quit()
|
|
||||||
|
|
||||||
if sys.argv[1] <> "py2exe":
|
|
||||||
print "Parameter 1 is not valid, quitting now"
|
|
||||||
quit()
|
|
||||||
|
|
||||||
from distutils.core import setup
|
|
||||||
import py2exe
|
|
||||||
import glob
|
|
||||||
import matplotlib
|
|
||||||
import shutil
|
|
||||||
import cdecimal
|
|
||||||
|
|
||||||
def isSystemDLL(pathname):
|
|
||||||
#dwmapi appears to be vista-specific file, not XP
|
|
||||||
if os.path.basename(pathname).lower() in ("dwmapi.dll"):
|
|
||||||
return 0
|
|
||||||
return origIsSystemDLL(pathname)
|
|
||||||
|
|
||||||
def test_and_remove(top):
|
|
||||||
#print "Attempting to delete:", top
|
|
||||||
if os.path.exists(top):
|
|
||||||
if os.path.isdir(top):
|
|
||||||
remove_tree(top)
|
|
||||||
else:
|
|
||||||
print "Unexpected file '"+top+"' found. Exiting."
|
|
||||||
exit()
|
|
||||||
else:
|
|
||||||
"oops folder not found"
|
|
||||||
|
|
||||||
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') or top.startswith(distdir)) and os.path.basename(os.getcwd()) == 'windows':
|
|
||||||
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 copy_tree(source,destination):
|
|
||||||
source = source.replace('\\', '\\\\')
|
|
||||||
destination = destination.replace('\\', '\\\\')
|
|
||||||
print "*** Copying " + source + " to " + destination + " ***"
|
|
||||||
shutil.copytree( source, destination )
|
|
||||||
|
|
||||||
def copy_file(source,destination):
|
|
||||||
source = source.replace('\\', '\\\\')
|
|
||||||
destination = destination.replace('\\', '\\\\')
|
|
||||||
print "*** Copying " + source + " to " + destination + " ***"
|
|
||||||
shutil.copy( source, destination )
|
|
||||||
|
|
||||||
|
|
||||||
distdir = r'fpdb-' + fpdbver
|
|
||||||
rootdir = r'../../' #cwd is normally /packaging/windows
|
|
||||||
pydir = rootdir+'pyfpdb/'
|
|
||||||
gfxdir = rootdir+'gfx/'
|
|
||||||
sys.path.append( pydir ) # allows fpdb modules to be found by options/includes below
|
|
||||||
|
|
||||||
|
|
||||||
print "\n" + r"Output will be created in "+distdir
|
|
||||||
|
|
||||||
print "*** Cleaning working folders ***"
|
|
||||||
test_and_remove('dist')
|
|
||||||
test_and_remove('build')
|
|
||||||
test_and_remove(distdir)
|
|
||||||
|
|
||||||
print "*** Building now in dist folder ***"
|
|
||||||
|
|
||||||
origIsSystemDLL = py2exe.build_exe.isSystemDLL
|
|
||||||
py2exe.build_exe.isSystemDLL = isSystemDLL
|
|
||||||
|
|
||||||
setup(
|
|
||||||
name = 'fpdb',
|
|
||||||
description = 'Free Poker DataBase',
|
|
||||||
version = fpdbver,
|
|
||||||
|
|
||||||
windows = [ {'script': pydir+'fpdb.pyw', "icon_resources": [(1, gfxdir+"fpdb_large_icon.ico")]},
|
|
||||||
{'script': pydir+'HUD_main.pyw', },
|
|
||||||
{'script': pydir+'Configuration.py', }
|
|
||||||
],
|
|
||||||
|
|
||||||
console = [ {'script': pydir+'Stove.py', }
|
|
||||||
],
|
|
||||||
|
|
||||||
options = {'py2exe': {
|
|
||||||
'packages' : ['encodings', 'matplotlib'],
|
|
||||||
'includes' : ['gio', 'cairo', 'pango', 'pangocairo', 'atk', 'gobject'
|
|
||||||
,'matplotlib.numerix.random_array'
|
|
||||||
,'AbsoluteToFpdb', 'BetfairToFpdb'
|
|
||||||
,'CarbonToFpdb', 'EverleafToFpdb'
|
|
||||||
,'FulltiltToFpdb', 'iPokerToFpdb'
|
|
||||||
,'OnGameToFpdb', 'PartyPokerToFpdb'
|
|
||||||
,'PkrToFpdb', 'PokerStarsToFpdb'
|
|
||||||
,'Win2dayToFpdb', 'WinamaxToFpdb'
|
|
||||||
],
|
|
||||||
'excludes' : ['_tkagg', '_agg2', 'cocoaagg', 'fltkagg'],
|
|
||||||
'dll_excludes': ['libglade-2.0-0.dll', 'libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll'
|
|
||||||
, 'msvcr90.dll', 'MSVCP90.dll', 'MSVCR90.dll','msvcr90.dll'], # these are vis c / c++ runtimes, and must not be redistributed
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
# files in 2nd value in tuple are moved to dir named in 1st value
|
|
||||||
# this code will not walk a tree
|
|
||||||
# Note: cwd for 1st value is packaging/windows/dist (this is confusing BTW)
|
|
||||||
# Note: only include files here which are to be put into the package pyfpdb folder or subfolders
|
|
||||||
|
|
||||||
data_files = [('', glob.glob(rootdir+'*.txt'))
|
|
||||||
,('', [pydir+'HUD_config.xml.example',pydir+'Cards01.png', pydir+'logging.conf'])
|
|
||||||
] + matplotlib.get_py2exe_datafiles()
|
|
||||||
)
|
|
||||||
|
|
||||||
print "*** py2exe build phase complete ***"
|
|
||||||
|
|
||||||
# copy zone info and fpdb translation folders
|
|
||||||
copy_tree (r'c:\python27\Lib\site-packages\pytz\zoneinfo', os.path.join(r'dist', 'zoneinfo'))
|
|
||||||
copy_tree (pydir+r'locale', os.path.join(r'dist', 'locale'))
|
|
||||||
|
|
||||||
# create distribution folder and populate with gfx + bat
|
|
||||||
copy_tree (gfxdir, os.path.join(distdir, 'gfx'))
|
|
||||||
copy_file (rootdir+'run_fpdb.bat', distdir)
|
|
||||||
|
|
||||||
print "*** Renaming dist folder as pyfpdb folder ***"
|
|
||||||
dest = os.path.join(distdir, 'pyfpdb')
|
|
||||||
os.rename( 'dist', dest )
|
|
||||||
|
|
||||||
print "*** copying GTK runtime ***"
|
|
||||||
gtk_dir = ""
|
|
||||||
while not os.path.exists(gtk_dir):
|
|
||||||
print "Enter directory name for GTK (e.g. c:/gtk) : ", # the comma means no newline
|
|
||||||
gtk_dir = sys.stdin.readline().rstrip()
|
|
||||||
|
|
||||||
print "*** copying GTK runtime ***"
|
|
||||||
dest = os.path.join(distdir, 'pyfpdb')
|
|
||||||
copy_file(os.path.join(gtk_dir, 'bin', 'libgdk-win32-2.0-0.dll'), dest )
|
|
||||||
copy_file(os.path.join(gtk_dir, 'bin', 'libgobject-2.0-0.dll'), dest)
|
|
||||||
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, 'share'), os.path.join(dest, 'share'))
|
|
||||||
|
|
||||||
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')
|
|
||||||
|
|
||||||
print "*** deleting folders to shrink package size ***"
|
|
||||||
test_and_remove(os.path.join(distdir, 'pyfpdb', 'lib', 'glib-2.0'))
|
|
||||||
test_and_remove(os.path.join(distdir, 'pyfpdb', 'lib', 'gtk-2.0','include'))
|
|
||||||
test_and_remove(os.path.join(distdir, 'pyfpdb', 'lib', 'pkgconfig'))
|
|
||||||
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'aclocal'))
|
|
||||||
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'doc'))
|
|
||||||
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'glib-2.0'))
|
|
||||||
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'gtk-2.0'))
|
|
||||||
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'gtk-doc'))
|
|
||||||
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'locale'))
|
|
||||||
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'man'))
|
|
||||||
|
|
||||||
print "***++++++++++++++++++++++++++++++++++++++++++++++"
|
|
||||||
print "All done!"
|
|
||||||
print "The distribution folder "+distdir+" is in the pyfpdb dir"
|
|
||||||
print "***++++++++++++++++++++++++++++++++++++++++++++++"
|
|
|
@ -1,210 +0,0 @@
|
||||||
pypokereval build for windows stepbystep guide
|
|
||||||
----------------------------------------------
|
|
||||||
|
|
||||||
Created by Gimick on 3rd December 2010
|
|
||||||
Updated for py27 by Gimick 27th Feb 2011
|
|
||||||
|
|
||||||
This walkthrough is derived with the assistance of EricBlade and the build notes
|
|
||||||
supplied by Loic Dachary <loic@dachary.org> http://dachary.org/
|
|
||||||
|
|
||||||
Content is available under the the GNU Affero General Public License version 3
|
|
||||||
|
|
||||||
|
|
||||||
0. Build environ
|
|
||||||
----------------
|
|
||||||
|
|
||||||
We are building against the 2008 runtime because Python 2.7
|
|
||||||
has the same dependency (msvcr90.dll version 9.0.21022.8)
|
|
||||||
|
|
||||||
Using winXPhome 32 bit
|
|
||||||
|
|
||||||
1 Visual studio
|
|
||||||
---------------
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
This package will run 30 days before registration is needed
|
|
||||||
|
|
||||||
2. Python runtime
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
2.1/ Install python runtime from here ...
|
|
||||||
|
|
||||||
Python 2.7 ... http://python.org/ftp/python/2.7/python-2.7.msi
|
|
||||||
|
|
||||||
3. Source install
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
3.1/ grab sources from here
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
3.2/ unpack and place the pypoker-eval-138 directory in c:\
|
|
||||||
3.2.1/ rename to pypoker-eval
|
|
||||||
|
|
||||||
3.3/ unpack and place the poker-eval-138 directory in c:\
|
|
||||||
3.3.1/ rename to poker-eval
|
|
||||||
|
|
||||||
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!
|
|
||||||
|
|
||||||
4. Update source file
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
4.1/ dos> write c:/pypoker-eval/pypokereval.c
|
|
||||||
|
|
||||||
change this:
|
|
||||||
|
|
||||||
#define VERSION_NAME(W) W##2_4
|
|
||||||
#define PYTHON_VERSION "2_4"
|
|
||||||
|
|
||||||
to be this:
|
|
||||||
|
|
||||||
#define VERSION_NAME(W) W##2_7
|
|
||||||
#define PYTHON_VERSION "2_7"
|
|
||||||
|
|
||||||
- - - - - -
|
|
||||||
|
|
||||||
Move this block of code:
|
|
||||||
|
|
||||||
#ifdef _DEBUG // for Windows python23_d.lib is not in distribution... ugly but works
|
|
||||||
#undef _DEBUG
|
|
||||||
#include <Python.h>
|
|
||||||
#define _DEBUG
|
|
||||||
#else
|
|
||||||
#include <Python.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
To be after this line:
|
|
||||||
|
|
||||||
#include "enumdefs.h"
|
|
||||||
|
|
||||||
4.2/ save and exit
|
|
||||||
|
|
||||||
- - - - -
|
|
||||||
|
|
||||||
4.3/ dos> write c:/pypoker-eval/pokereval.py
|
|
||||||
|
|
||||||
Comment-out this line:
|
|
||||||
|
|
||||||
_pokereval = __import__('_pokereval_' + sys.version[0] + '_' + sys.version[2])
|
|
||||||
|
|
||||||
Insert this one in its' place:
|
|
||||||
|
|
||||||
import _pokereval_2_7 as _pokereval
|
|
||||||
|
|
||||||
|
|
||||||
4.4/ save and exit
|
|
||||||
|
|
||||||
|
|
||||||
5. Build pre-preparation
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
(Here we are converting the two project definition files to 2008)
|
|
||||||
|
|
||||||
5.1 navigate to directory c:/poker-eval
|
|
||||||
5.1.1 double click poker-eval.vcproj
|
|
||||||
5.1.2 Visual studio will launch and make a conversion - accept all defaults
|
|
||||||
5.1.3 exit and save
|
|
||||||
|
|
||||||
5.2 navigate to directory c:/pypoker-eval
|
|
||||||
5.2.1 double click pypoker-eval.vcproj
|
|
||||||
5.2.2 Visual studio will launch and make a conversion - accept all defaults
|
|
||||||
5.2.3 exit
|
|
||||||
|
|
||||||
6. build preparation
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
6.2 navigate to directory c:/pypoker-eval
|
|
||||||
6.2.1 double click pypoker-eval.vcproj - visual studio should launch
|
|
||||||
|
|
||||||
6.2.3 Select Build...configuration manager...
|
|
||||||
Select "active solution configuration" to "Release"
|
|
||||||
(The configuration for both projects will change to "Release")
|
|
||||||
|
|
||||||
6.2.3 Close the configuration manager
|
|
||||||
|
|
||||||
6.2.4 In the solution explorer window, hilight pythonpoker-eval / right mouse / properties...
|
|
||||||
|
|
||||||
6.2.5 In the pythonpoker-eval properties dialog,
|
|
||||||
|
|
||||||
change references to "python24" to "python27" in the following:
|
|
||||||
|
|
||||||
= C/C++/Additional Include Directories/
|
|
||||||
= linker/general/Additional library directories
|
|
||||||
= linker/input/Additional Dependencies
|
|
||||||
|
|
||||||
Change the following
|
|
||||||
|
|
||||||
= linker/generate debug info - set to No
|
|
||||||
|
|
||||||
6.2.6 Apply all changes to the properties dialog and close
|
|
||||||
|
|
||||||
6.3 Exit from visual studio
|
|
||||||
|
|
||||||
7. Build poker eval
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
7.1 navigate to directory c:/poker-eval
|
|
||||||
7.1.1 double click poker-eval.vcproj
|
|
||||||
7.1.2 Visual studio will launch
|
|
||||||
|
|
||||||
7.2 In the solution explorer window, hilight poker-eval / right mouse / build
|
|
||||||
|
|
||||||
7.3 There should be no errors
|
|
||||||
|
|
||||||
7.4 Exit from visual studio
|
|
||||||
|
|
||||||
|
|
||||||
8. Build pypoker eval
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
8.1 navigate to directory c:/pypoker-eval
|
|
||||||
8.1.1 double click pypoker-eval.vcproj
|
|
||||||
8.1.2 Visual studio will launch
|
|
||||||
|
|
||||||
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.4 Exit from visual studio
|
|
||||||
|
|
||||||
9. Wrap-up
|
|
||||||
----------
|
|
||||||
|
|
||||||
9.1 Navigate to c:/pypoker-eval/release
|
|
||||||
9.2 the output file is pypokereval.dll
|
|
||||||
9.3 rename this file to _pokereval_2_7.pyd
|
|
||||||
|
|
||||||
9.4 create a zip file containing :
|
|
||||||
|
|
||||||
_pokereval_2_7.pyd from releases
|
|
||||||
test.py from pypoker-eval-138.0
|
|
||||||
pokereval.py from pypoker-eval-138.0
|
|
||||||
poker-eval.vcproj from c:\poker-eval
|
|
||||||
pypoker-eval.vcproj from c:\pypoker-eval
|
|
||||||
pypokereval.c from c:\pypoker-eval
|
|
||||||
|
|
||||||
Remember to include the version (138), python 27 and win32 in the package filename
|
|
||||||
|
|
||||||
10. Testing
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Python 2.7 must be installed
|
|
||||||
|
|
||||||
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.3 execute dos> c:\Python27\python.exe test.py
|
|
||||||
10.4 hand-output should scroll down the screen
|
|
||||||
10.5 start the python interpreter
|
|
||||||
10.6 >>> import pokereval
|
|
||||||
10.7 No errors should be seen
|
|
||||||
|
|
||||||
11. Packaging
|
|
||||||
-------------
|
|
||||||
|
|
||||||
Please follow pypokereval-win32-packaging-walkthrough.txt in the same directory as this walkthrough.
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user