On Tue, May 19, 2015 at 9:15 AM, David Cournapeau <courn...@gmail.com>
wrote:

> Honestly, I still haven't seen a solid explanation of why (at least on
>> Windows) static linking isn't a viable option.
>
>
well - it does get us pretty far....


> Because some libraries simply don't work as static libraries, or are too
> big (MKL comes to mind). Also, we have been historically using static libs
> for our eggs at Enthought on windows, and it has been a nightmare to
> support. It just does not scale when you have 100s of packages.
>

there is also the issue of semi-developers -- I want people to be able to
easily build my package, that depends on a bunch of libs that I really want
to be the same. I suppose I could deliver the static libs themselves, along
with the headers, etc, but that does get ugly.


> But really, once wheels support arbitrary file locations, this becomes
> fairly easy at the packaging level: the remaining issue is one of ABI /
> standards, but that's mostly a non technical issue.
>

yup -- social issues are the big one.


> Gholke has 100s of packages using wheels,
>

doesn't he ship the dlls with the packages, even when  not using static
libs? so that multiple packages may have the same dll? which is almost the
same as a static lib.


> and we ourselves at Enthought have close to 500 packages for windows, all
> packaged as eggs, maybe 30-40 % of which are not python but libs, C/C++
> programs, etc... It is more about agreeing about a common way of doing
> things than a real technical limitation.
>

good to know -- I suspected as much but haven't tried it yet.

If someone were to
>> create and publish a Python compatible static ".lib" file for the
>> various hard-to-build dependencies, extensions could specify that you
>> link with it in setup.py, and all the person building the wheel has to
>> do is download the needed libraries for the build.
>>
>
OK, but from a "social" perspective, this is unlikely to happen (it hasn't
yet!), without some "official" support on PyPi, with pip, or ???

So even if  static is the way to go -- there is an infrastructure need.

If there's a technical reason why dynamic linking at runtime is better
>> than static linking (sufficiently better that it justifies all the
>> effort needed to resolve the issues involved),
>
>
I'm not sure the issues are that much greater -- we could build binary
wheels that hold dynamic libs, and put them up on PyPi -- then other
package maintainers would need to actually use those -- almost the same
thing as getting a variety of package maintainers to use this mythical
repository of static libs.

(and by the way, gcc makes it remarkably had to force a static build)

Another issue I've run  into is nested static libs -- you have to change
yoru setup.py in special ways for that to work:

libnetcdf depends on libhdf5, depends on libcurl and libz and...

getting all that statically linked into my extension is tricky.

-Chris

-- 

Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

chris.bar...@noaa.gov
_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to