mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-18 20:47:54 +00:00
windows installer build refinements
this resolves problems of py2exe's modulefinder collection of sources from .zipped egg files, not by using easy_install to reach the --always-unzip option, but rather with a small tool which unpacks any zipped egg files found in misc/dependencies. this fixes the py2exe build given rollback of the easy_install stuff which had broken the unix builds. misc/hatch-eggs.py performs the honours. this also includes a misc/sub-ver.py tool which substitutes elements of the verion number for the current code base (by importing allmydata.__version__ hence make-version should be run first, and the python path carefully managed) into template files using python's string interpolation of named args from a dict as the templating syntax. i.e. %(major)d %(minor)d %(point)d %(nano)d each expand to the individual components of the version number as codified by the pyutil.version_class.Version class. there is also a %(build)s tag which expands to the string form of the whole version number. This tool is used to interpolate the automatically generated version information into the innosetup source file in a form consistent with innosetup/windows' restrictions
This commit is contained in:
parent
2dd5d2fc63
commit
3cb08209d2
15
Makefile
15
Makefile
@ -417,9 +417,18 @@ deb-gutsy-head:
|
||||
fakeroot debian/rules binary
|
||||
|
||||
# These targets provide for windows native builds
|
||||
INNOSETUP := $(shell cygpath -au "$(PROGRAMFILES)/Inno Setup 5/Compil32.exe")
|
||||
|
||||
windows-exe:
|
||||
PYTHON=$(PYTHON) $(PP) $(MAKE) -C windows
|
||||
.PHONY: hatch-eggs windows-exe windows-installer
|
||||
|
||||
hatch-eggs:
|
||||
$(PP) $(PYTHON) misc/hatch-eggs.py
|
||||
|
||||
windows-exe: hatch-eggs
|
||||
#PYTHON=$(PYTHON) $(PP) $(MAKE) -C windows
|
||||
cd windows && $(PP) $(PYTHON) setup.py py2exe
|
||||
|
||||
windows-installer: windows-exe
|
||||
$(MAKE) -C windows installer
|
||||
$(PP) $(PYTHON) misc/sub-ver.py windows/installer.tmpl >windows/installer.iss
|
||||
cd windows && "$(INNOSETUP)" /cc installer.iss
|
||||
|
||||
|
41
misc/hatch-eggs.py
Normal file
41
misc/hatch-eggs.py
Normal file
@ -0,0 +1,41 @@
|
||||
#! /usr/bin/python
|
||||
|
||||
import os.path
|
||||
import sys
|
||||
import zipfile
|
||||
|
||||
path = []
|
||||
if sys.platform == 'win32':
|
||||
support_lib = "support/Lib/site-packages"
|
||||
else:
|
||||
pyver = "python%d.%d" % (sys.version_info[:2])
|
||||
support_lib = "support/lib/%s/site-packages" % pyver
|
||||
|
||||
if os.path.exists(support_lib):
|
||||
for fn in os.listdir(support_lib):
|
||||
if fn.endswith(".egg"):
|
||||
path.append(os.path.abspath(os.path.join(support_lib, fn)))
|
||||
|
||||
# We also need to include .egg's in the CWD, because if there is an .egg there
|
||||
# then "make build-deps" will take that as satisfying its requirements.
|
||||
for fn in os.listdir("."):
|
||||
if fn.endswith(".egg"):
|
||||
path.append(os.path.abspath(os.path.join(os.getcwd(), fn)))
|
||||
|
||||
for eggpath in path:
|
||||
if os.path.isfile(eggpath):
|
||||
bak = eggpath + '.bak'
|
||||
os.rename(eggpath, bak)
|
||||
os.mkdir(eggpath)
|
||||
zf = zipfile.ZipFile(bak, 'r')
|
||||
print bak
|
||||
for name in zf.namelist():
|
||||
dirname = os.path.join(eggpath, os.path.dirname(name))
|
||||
if not os.path.isdir(dirname):
|
||||
print 'creating', dirname
|
||||
os.makedirs(dirname)
|
||||
print name
|
||||
f = file(os.path.join(eggpath, name), 'wb')
|
||||
f.write(zf.read(name))
|
||||
f.close()
|
||||
|
26
misc/sub-ver.py
Normal file
26
misc/sub-ver.py
Normal file
@ -0,0 +1,26 @@
|
||||
#! /usr/bin/python
|
||||
|
||||
from allmydata import __version__ as v
|
||||
|
||||
import sys
|
||||
|
||||
if len(sys.argv) == 1:
|
||||
input = sys.stdin
|
||||
elif len(sys.argv) == 2:
|
||||
fname = sys.argv[1]
|
||||
input = file(fname, 'rb')
|
||||
else:
|
||||
raise ValueError('must provide 0 or 1 argument (stdin, or filename)')
|
||||
|
||||
vern = {
|
||||
'major': v.major,
|
||||
'minor': v.minor,
|
||||
'point': v.micro,
|
||||
'micro': v.micro,
|
||||
'nano' : v.nano,
|
||||
'build': str(v),
|
||||
}
|
||||
|
||||
for line in input.readlines():
|
||||
print line % vern,
|
||||
|
@ -1,12 +0,0 @@
|
||||
|
||||
INNOSETUP := $(shell cygpath -u "$(PROGRAMFILES)/Inno Setup 5/Compile32.exe")
|
||||
|
||||
# note that this requires the python path to be set appropriately, and hence this
|
||||
# should be invoked by calling the windows-exe taget in the top level makefile
|
||||
|
||||
windows-exe:
|
||||
$(PYTHON) setup.py py2exe
|
||||
|
||||
installer:
|
||||
$(INNOSETUP)
|
||||
#$(INNOSETUP) /cc installer.iss
|
@ -1,8 +1,8 @@
|
||||
[Setup]
|
||||
AppName=Allmydata Tahoe
|
||||
AppVerName=Allmydata Tahoe 2.9
|
||||
AppVersion=2.9.0
|
||||
VersionInfoVersion=2.9.0
|
||||
AppVerName=Allmydata Tahoe %(major)d.%(minor)d
|
||||
AppVersion=%(major)d.%(minor)d.%(point)d-%(nano)d
|
||||
VersionInfoVersion=%(major)d.%(minor)d.%(point)d.%(nano)d
|
||||
AppPublisher=Allmydata Inc.
|
||||
AppPublisherURL=http://www.allmydata.com/
|
||||
AppSupportURL=http://www.allmydata.com/support/
|
||||
@ -12,13 +12,13 @@ DefaultGroupName=Allmydata
|
||||
MinVersion=0,4.0
|
||||
Compression=lzma/max
|
||||
SolidCompression=yes
|
||||
OutputDir=installer/Allmydata_Tahoe_Setup_v2_9_0.exe
|
||||
OutputDir=./installer/
|
||||
SourceDir=dist
|
||||
SetupIconFile=installer.ico
|
||||
UninstallDisplayIcon=installer.ico
|
||||
SetupIconFile=../installer.ico
|
||||
UninstallDisplayIcon=../amdicon.ico
|
||||
; license file needs to be build/all dir
|
||||
;LicenseFile=../license.txt
|
||||
OutputBaseFilename=AllmydataSetup-%BUILD%
|
||||
OutputBaseFilename=Allmydata_Tahoe_Setup_v%(major)d_%(minor)d_%(point)d
|
||||
|
||||
[Files]
|
||||
; contents of 'binaries' dir. (consolidated build target)
|
||||
@ -44,7 +44,7 @@ Filename: "{app}\Install\confwiz.exe"; Flags: hidewizard
|
||||
; Performed before the uninstaller runs to undo things
|
||||
Filename: "{sys}\net.exe"; Parameters: "stop Tahoe"; Flags: runhidden
|
||||
Filename: "{app}\Install\tahoesvc.exe"; Parameters: "-remove"; Flags: runhidden
|
||||
;Filename: "http://www.allmydata.com/redirect/uninstallsurvey.php?build=%BUILD%"; Flags: shellexec
|
||||
;Filename: "http://www.allmydata.com/redirect/uninstallsurvey.php?build=%(build)%"; Flags: shellexec
|
||||
|
||||
[Registry]
|
||||
Root: HKLM; Subkey: "Software\Allmydata"; Flags: uninsdeletekeyifempty
|
Loading…
Reference in New Issue
Block a user