Add timestamp offset for block header
[p2pool.git] / setup.py
index 6eb84d9..9554783 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1,39 +1,70 @@
 import os
+import shutil
 import sys
+import zipfile
+import platform
 
 from distutils.core import setup
+from distutils.sysconfig import get_python_lib
 import py2exe
 
-def get_version():
-    root_dir = os.path.abspath(os.path.dirname(sys.argv[0]))
-    git_dir = os.path.join(root_dir, '.git')
-    head = open(os.path.join(git_dir, 'HEAD')).read().strip()
-    prefix = 'ref: '
-    if head.startswith(prefix):
-        path = head[len(prefix):].split('/')
-        return open(os.path.join(git_dir, *path)).read().strip()[:7]
-    else:
-        return head[:7]
-
-open('p2pool/__init__.py', 'wb').write('__version__ = %r\r\n\r\nDEBUG = False\r\n' % get_version())
-
-sys.argv[1:] = ['py2exe']
-setup(name='p2pool',
-    version='1.0',
-    description='Peer-to-peer Bitcoin mining pool',
-    author='Forrest Voight',
-    author_email='forrest@forre.st',
-    url='http://p2pool.forre.st/',
-    data_files=[('', ['README', 'README-Litecoin'])],
-    
-    console=['run_p2pool.py'],
-    options=dict(py2exe=dict(
-        bundle_files=1,
-        dll_excludes=['w9xpopen.exe'],
-        includes=['twisted.web.resource', 'ltc_scrypt'],
-    )),
-    zipfile=None,
-)
-
-os.rename('dist', 'p2pool_win32_' + get_version())
-print 'p2pool_win32_' + get_version()
\ No newline at end of file
+version = __import__('p2pool').__version__
+im64 = '64' in platform.architecture()[0]
+
+if os.path.exists('INITBAK'):
+    os.remove('INITBAK')
+os.rename(os.path.join('p2pool', '__init__.py'), 'INITBAK')
+try:
+    open(os.path.join('p2pool', '__init__.py'), 'wb').write('__version__ = %r%s%sDEBUG = False%s' % (version, os.linesep, os.linesep, os.linesep))
+    mfcdir = get_python_lib() + '\pythonwin\\'
+    mfcfiles = [os.path.join(mfcdir, i) for i in ["mfc90.dll", "mfc90u.dll", "mfcm90.dll", "mfcm90u.dll", "Microsoft.VC90.MFC.manifest"]]
+    bundle = 1
+    if im64:
+        bundle = bundle + 2
+    sys.argv[1:] = ['py2exe']
+    setup(name='p2pool',
+        version=version,
+        description='Peer-to-peer Bitcoin mining pool',
+        author='Forrest Voight',
+        author_email='forrest@forre.st',
+        url='http://p2pool.forre.st/',
+        data_files=[
+            ('', ['README.md']),
+            ("Microsoft.VC90.MFC", mfcfiles),
+            ('web-static', [
+                'web-static/d3.v2.min.js',
+                'web-static/favicon.ico',
+                'web-static/graphs.html',
+                'web-static/index.html',
+                'web-static/share.html',
+            ]),
+        ],
+
+        console=['run_p2pool.py'],
+        options=dict(py2exe=dict(
+            bundle_files=bundle,
+            dll_excludes=['w9xpopen.exe', "mswsock.dll", "MSWSOCK.dll"],
+            includes=['twisted.web.resource', 'ltc_scrypt'],
+        )),
+        zipfile=None,
+    )
+finally:
+    os.remove(os.path.join('p2pool', '__init__.py'))
+    os.rename('INITBAK', os.path.join('p2pool', '__init__.py'))
+
+win = '32'
+if im64:
+    win = '64'
+
+dir_name = 'p2pool_win' + win + '_' + version
+
+if os.path.exists(dir_name):
+    shutil.rmtree(dir_name)
+os.rename('dist', dir_name)
+
+with zipfile.ZipFile(dir_name + '.zip', 'w', zipfile.ZIP_DEFLATED) as zf:
+    for dirpath, dirnames, filenames in os.walk(dir_name):
+        for filename in filenames:
+            zf.write(os.path.join(dirpath, filename))
+
+print dir_name