[tahoe-lafs-trac-stream] [Tahoe-LAFS] #1260: there should be a way to force compiling C extensions from source
Tahoe-LAFS
trac at tahoe-lafs.org
Sat Mar 26 21:30:45 UTC 2016
#1260: there should be a way to force compiling C extensions from source
----------------------------+------------------------------------------
Reporter: davidsarah | Owner: somebody
Type: defect | Status: closed
Priority: major | Milestone: 1.11.0
Component: packaging | Version: 1.8.0
Resolution: fixed | Keywords: install setuptools docs test
Launchpad Bug: |
----------------------------+------------------------------------------
Changes (by warner):
* status: new => closed
* resolution: => fixed
* milestone: undecided => 1.11.0
Old description:
> On tahoe-dev, Zooko O'Whielacronx wrote:
> > One of the goals for this release is to let people on more platforms
> more easily set up Tahoe-LAFS. (Problems with the setup process are
> probably the number one complaint mentioned on the mailing list and issue
> tracker right now.)
>
> > Tahoe-LAFS itself is pure Python and doesn't need to be compiled at
> all, but some of its dependencies do, so a big part of the "ease of
> setup" goal is to provide binary packages of those dependencies.
>
> Scott Dial replied:
> > I actually found this release '''less''' easy to install. On my linux
> machines, neither the {{{setup.py}}} or using {{{easy_install}}} yielded
> working dependencies for my system. Eventually I tracked it down to the
> {{{pycryptopp}}} binary egg:
>
> [snip problem due to a {{{libstdc++}}} ABI mismatch]
>
> > After solving the mystery, I was forced to resort to introspection:
> {{{
> $ python -c "import sys; \
> sys.path.insert(0, 'src/allmydata'); \
> from _auto_deps import install_requires; \
> print '\n'.join(install_requires)" \
> | xargs -I{} pip install "{}"
> # This dependency gets missed for some reason:
> $ pip install pyOpenSSL
> }}}
>
> > To get all of the dependencies to be built by my system
> ({{{easy_install}}} will use the binary eggs, and there is no way to
> force it to ignore them), {{{pip}}} was the only tool I could find that
> would do it without me being involved.
>
> > This release took infinitely longer to install than 1.7, where I just
> ran "{{{python setup.py build}}}" and "{{{python setup.py install}}}" and
> was done.
>
> We need to support an option to force compiling the C/C++ code in
> dependencies from source, for users who either encounter problems with
> the binary eggs, or just prefer to do it that way.
New description:
On tahoe-dev, Zooko O'Whielacronx wrote:
> One of the goals for this release is to let people on more platforms
more easily set up Tahoe-LAFS. (Problems with the setup process are
probably the number one complaint mentioned on the mailing list and issue
tracker right now.)
> Tahoe-LAFS itself is pure Python and doesn't need to be compiled at all,
but some of its dependencies do, so a big part of the "ease of setup" goal
is to provide binary packages of those dependencies.
Scott Dial replied:
> I actually found this release '''less''' easy to install. On my linux
machines, neither the {{{setup.py}}} or using {{{easy_install}}} yielded
working dependencies for my system. Eventually I tracked it down to the
{{{pycryptopp}}} binary egg:
[snip problem due to a {{{libstdc++}}} ABI mismatch]
> After solving the mystery, I was forced to resort to introspection:
{{{
$ python -c "import sys; \
sys.path.insert(0, 'src/allmydata'); \
from _auto_deps import install_requires; \
print '\n'.join(install_requires)" \
| xargs -I{} pip install "{}"
# This dependency gets missed for some reason:
$ pip install pyOpenSSL
}}}
> To get all of the dependencies to be built by my system
({{{easy_install}}} will use the binary eggs, and there is no way to force
it to ignore them), {{{pip}}} was the only tool I could find that would do
it without me being involved.
> This release took infinitely longer to install than 1.7, where I just
ran "{{{python setup.py build}}}" and "{{{python setup.py install}}}" and
was done.
We need to support an option to force compiling the C/C++ code in
dependencies from source, for users who either encounter problems with the
binary eggs, or just prefer to do it that way.
--
Comment:
We're using wheels now, but to force pip to compile from source even
though a binary wheel is available, use: e.g. `pip wheel --no-use-wheel
zfec`.
Also note that neither we nor PyPI host *linux* binary wheels, because of
the variety of incompatible ABIs in the linux world. There is work (see
the [https://www.python.org/dev/peps/pep-0513/ PEP-513 "manylinux"] spec)
to fix this, but we're not using it yet.
I think we can close this. Please re-open if you disagree.
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1260#comment:1>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list