package including all dependencies for win32 #243
Labels
No Label
0.2.0
0.3.0
0.4.0
0.5.0
0.5.1
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
1.0.0
1.1.0
1.10.0
1.10.1
1.10.2
1.10a2
1.11.0
1.12.0
1.12.1
1.13.0
1.14.0
1.15.0
1.15.1
1.2.0
1.3.0
1.4.1
1.5.0
1.6.0
1.6.1
1.7.0
1.7.1
1.7β
1.8.0
1.8.1
1.8.2
1.8.3
1.8β
1.9.0
1.9.0-s3branch
1.9.0a1
1.9.0a2
1.9.0b1
1.9.1
1.9.2
1.9.2a1
LeastAuthority.com automation
blocker
cannot reproduce
cloud-branch
code
code-dirnodes
code-encoding
code-frontend
code-frontend-cli
code-frontend-ftp-sftp
code-frontend-magic-folder
code-frontend-web
code-mutable
code-network
code-nodeadmin
code-peerselection
code-storage
contrib
critical
defect
dev-infrastructure
documentation
duplicate
enhancement
fixed
invalid
major
minor
n/a
normal
operational
packaging
somebody else's problem
supercritical
task
trivial
unknown
was already fixed
website
wontfix
worksforme
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#243
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
It would be nice to build a package for Windows which includes all dependencies so that people can install Tahoe without having to install any dependencies. See ticket #242 -- "binary package for w32" -- for the first step. The second step is to build a package that contains all the dependencies as well as Tahoe itself.
One could use [http://py2exe.org]py2exe for this, but if I'm the one implementing this I will first try to use distutils/setuptools. For example, we could install all of the dependencies and tahoe into the same directory (with
--prefix/--single-version-externally-managed
), then use distutils/setuptools's "bdist_wininst" or "bdist_msi" feature to build a Windows installer that contains all of that code.Note that this ticket is not about making a user-friendly application on Windows (that's the subject of ticket #195 -- "user-friendly installer for Windows -- for my Dad!"). This ticket is about a package targeted at programmers (e.g. Samantha) who want to start using Tahoe through the wapi/wui or cli with minimal time spent installing dependencies.
From the discussion yesterday, the focus of this is specifically working towards building an installer, and hence tahoe distribution, geared towards end users. While the initial builds will not include all the niceties required for shipping to end users, that goal is the purpose of this packaging.
From a quick look at what bdist_wininst seems to be doing (specifically it seems to be a thin .exe wrapper mechanism for installing a projects source code into an existing python install on windows), I think that py2exe (i.e. building binary .exes, including services, for windows from python source) is definitely the better strategy of the two for the goals in mind.
See also trac ticket #195.
So the limitation of the bdist_wininst method is that it doesn't include a python interpreter, and it doesn't provide a feature of installing services?
while it remains the case that there's a 'gotcha' in re .egg packaging (*) the windows build process, which spits out an installer (c.f. #195), encompasses py2exe (c.f. #242) and hence is including all the binary dependencies into an easy to use package which provides, amongst other things, a tahoe client node running as a service which provides a webapi interface.
(*) the gotcha is that py2exe cannot traverse .egg files to extract the sources it finds dependencies upon. it can handle .egg directories just fine, since they can be considered simply as python module directories as far as sys.path and contained .py files are concerned. the net effect is that if you have python dependencies installed in site-packages as .egg files, then the py2exe build will fail. the tahoe build process will successfully and correctly build any dependencies it manages as .egg directories, but it will not bother doing so for dependencies satisfied from site-packages.