package including all dependencies for win32 #243

Closed
opened 2007-12-21 18:41:50 +00:00 by zooko · 3 comments

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.

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.
zooko added the
packaging
major
enhancement
0.7.0
labels 2007-12-21 18:41:50 +00:00
Owner

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.

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.
Author

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?

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?
tahoe-lafs added this to the 0.8.0 (Allmydata 3.0 Beta) milestone 2008-01-23 02:41:28 +00:00
zooko modified the milestone from 0.8.0 (Allmydata 3.0 Beta) to 0.9.0 (Allmydata 3.0 final) 2008-03-08 02:14:17 +00:00
Owner

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.

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.
tahoe-lafs added the
fixed
label 2008-03-12 19:11:27 +00:00
Sign in to join this conversation.
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Reference: tahoe-lafs/trac-2024-07-25#243
No description provided.