[tahoe-lafs-trac-stream] [tahoe-lafs] #182: user-friendly installer for Mac -- for my Mom!

tahoe-lafs trac at tahoe-lafs.org
Wed Sep 11 21:30:14 UTC 2013


#182: user-friendly installer for Mac -- for my Mom!
-----------------------------+-----------------------------------
     Reporter:  zooko        |      Owner:  somebody
         Type:  enhancement  |     Status:  new
     Priority:  major        |  Milestone:  eventually
    Component:  packaging    |    Version:  0.6.1
   Resolution:               |   Keywords:  mac usability install
Launchpad Bug:               |
-----------------------------+-----------------------------------

Old description:

> My Mom wants to see some home movies of my children playing in the back
> yard.  Even though our [source:README] is very well written, it is still
> far beyond her ken to build Tahoe from source.  How could she get Tahoe
> installed on her home computer, which is a PowerPC G5 running Mac OS
> 10.3.9?
>
> One way is that I could upload a binary .egg and instruct her in how to
> install Python 2.5.1 and easy_install and then how to run "easy_install
> allmydata-tahoe".  However, the dependent libraries like Nevow and
> Twisted and so forth wouldn't get automatically installed by easy_install
> so that wouldn't quite work.
>
> Another way is that I could build binary .egg packages of all of our
> dependent libraries and host them somewhere or bundle them into the tahoe
> binary .egg.
>
> Another way is that we could use the "py2app" feature to build an
> installer than works on Mac OS 10.

New description:

 My Mom wants to see some home movies of my children playing in the back
 yard.  Even though our [source:README] is very well written, it is still
 far beyond her ken to build Tahoe from source.  How could she get Tahoe
 installed on her home computer, which is a PowerPC G5 running Mac OS
 10.3.9?

 One way is that I could upload a binary .egg and instruct her in how to
 install Python 2.5.1 and easy_install and then how to run "easy_install
 allmydata-tahoe".  However, the dependent libraries like Nevow and Twisted
 and so forth wouldn't get automatically installed by easy_install so that
 wouldn't quite work.

 Another way is that I could build binary .egg packages of all of our
 dependent libraries and host them somewhere or bundle them into the tahoe
 binary .egg.

 Another way is that we could use the "py2app" feature to build an
 installer than works on Mac OS 10.

--

Comment (by geal):

 Hi,

 I can help a bit on this bug. I have already messed with py2app to
 generate .app packages and I have some code to automatically generate DMG
 images.

 I first tried to add some basic options to py2app and ran it, to see if
 everything is ok. Unfortunately, it seems the latest version of
 modulegraph (necessary for py2app) is in conflict with the setuptools
 version that is used in the project (ImpLoader is part of pkg_resources).


 {{{
 running py2app
 running build_py
 copying src/allmydata/_version.py ->
 build/bdist.macosx-10.6-intel/lib/allmydata
 creating /Users/geoffroycouprie/dev/python/tahoe-
 lafs/build/bdist.macosx-10.6-intel/python2.7-standalone/app
 creating /Users/geoffroycouprie/dev/python/tahoe-
 lafs/build/bdist.macosx-10.6-intel/python2.7-standalone/app/collect
 creating /Users/geoffroycouprie/dev/python/tahoe-
 lafs/build/bdist.macosx-10.6-intel/python2.7-standalone/app/temp
 creating build/bdist.macosx-10.6-intel/python2.7-standalone/app/lib-
 dynload
 creating build/bdist.macosx-10.6-intel/python2.7-standalone/app/Frameworks
 Traceback (most recent call last):
   File "setup.py", line 472, in <module>
     **setup_args
   File
 "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py",
 line 152, in setup
     dist.run_commands()
   File
 "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py",
 line 953, in run_commands
     self.run_command(cmd)
   File
 "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py",
 line 972, in run_command
     cmd_obj.run()
   File "/Library/Python/2.7/site-packages/py2app/build_app.py", line 553,
 in run
     self._run()
   File "/Library/Python/2.7/site-packages/py2app/build_app.py", line 741,
 in _run
     self.run_normal()
   File "/Library/Python/2.7/site-packages/py2app/build_app.py", line 812,
 in run_normal
     mf = self.get_modulefinder()
   File "/Library/Python/2.7/site-packages/py2app/build_app.py", line 691,
 in get_modulefinder
     debug=debug,
   File "/Library/Python/2.7/site-packages/modulegraph/find_modules.py",
 line 274, in find_modules
     find_needed_modules(mf, scripts, includes, packages)
   File "/Library/Python/2.7/site-packages/modulegraph/find_modules.py",
 line 182, in find_needed_modules
     mf.run_script(path)
   File "/Library/Python/2.7/site-packages/modulegraph/modulegraph.py",
 line 673, in run_script
     self.scan_code(co, m)
   File "/Library/Python/2.7/site-packages/modulegraph/modulegraph.py",
 line 1015, in scan_code
     imported_module = self._safe_import_hook(name, m, fromlist, level)[0]
   File "/Library/Python/2.7/site-packages/modulegraph/modulegraph.py",
 line 917, in _safe_import_hook
     mods = self.import_hook(name, caller, level=level)
   File "/Library/Python/2.7/site-packages/modulegraph/modulegraph.py",
 line 684, in import_hook
     q, tail = self.find_head_package(parent, name, level)
   File "/Library/Python/2.7/site-packages/modulegraph/modulegraph.py",
 line 758, in find_head_package
     q = self.import_module(head, qname, parent)
   File "/Library/Python/2.7/site-packages/modulegraph/modulegraph.py",
 line 840, in import_module
     searchpath, parent)
   File "/Library/Python/2.7/site-packages/modulegraph/modulegraph.py",
 line 1119, in find_module
     fp, buf, stuff = find_module(name, path)
   File "/Library/Python/2.7/site-packages/modulegraph/modulegraph.py",
 line 248, in find_module
     if loader.path.endswith('.py') or loader.path.endswith('.pyw'):
 AttributeError: ImpLoader instance has no attribute 'path'

 }}}

 I could try to patch modulegraph to get it working, but I don't want to
 mess too much my current environment. Can tahoe be built under virtualenv?

-- 
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/182#comment:14>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list