-
Notifications
You must be signed in to change notification settings - Fork 354
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rewrite setup.py for smoother builds and more platforms #34
Conversation
Hi Dan! Thanks for your enthusiasm and support! As I'm sure you can tell, the build process was somewhat hacked together as I figured out how to bend it to my will. I'm certainly not sold on it, and welcome improvement. Your Points:
There hasn't been anything too significant in the build since then (minus small additions to the macros that you haven't reimplemented).
It currently works for me. That doesn't mean that I don't believe you, because I know it is very fragile. The
Totally with you here.
Yeah. The FFmpeg vs. Libav thing is a nightmare. We used to depend on a configure script too... My ObservationsI have never seen I'm ready to be easily convinced, but is the automatic discovery of the modules to build really that bad? =P Cheers, Mike |
Great. This is exciting. For shipping pip packages that don't require cython to build, pandas has a less brittle (but still convoluted) approach. I will dig into that. As for I expected this PR to stay a work-in-progress until it is thoroughly tested on OSX and Travis. I dream of Windows, but maybe not in the first round. |
Oh, yeah, maybe automatic discovery is fine. This way was part of my learning process. :- D |
Ok I understand. |
@danielballan: I don't understand why you think what this project does is brittle. The Makefile is for PyAV authors to generate the C source, and is not touched by the end user. Automatic module discovery aside, it is just C sources. |
@danielballan: How about just using install_requires? We would have to have the building of the |
Fair questions. About the Makefile: PyAV authors aren't the only ones who might want to generate the C source. My first encounter with PyAV was trying About install_requires: OK, that sounds like a good suggestion. I may have over-thought that part of things. |
I think the reason I went with a Makefile instead of the But I am more than happy to investigate it again. Especially because you raise very good points about being a good packaging citizen. On Jul 21, 2014, at 9:49 AM, Dan Allan notifications@github.com wrote:
|
Hi Mike,
I just got back from SciPy 2014 in Austin, where a major theme was the python "build problem," the difficulty of installing packages with non-Python dependencies. Software developers from Microsoft, Enthought, and ContinuumIO were there all week helping us make progress. I spent the last two days in a room with people writing reliable recipes for building difficult packages. The community is generally rallying around conda's build recipes and binary installers, in conjunction with binstar, as a solution. (Hashdist is also doing good work in this area.) I'd like to be able to
conda install ffmpeg
andconda install av
on all three platforms. (I'm not a Windows user, but a lot of my scientific collaborators are.)There were also many people doing imaging work -- the scikit-image lead devs were there -- and I promoted PyAV as the far-and-away best solution for getting video into Python. Scikit-image recently dropped their support for video because OpenCV is so problematic. I'd like to see scikit-image adopt PyAV as a dependency. Your approach is the right the one, and no one else has put in the work to do this right.
To get wider adoption, I think PyAV needs a more standard
setup.py
. This is my attempt to simplify it. Some notes:master
later.pip install av
ever actually work? It has never worked for me. It seems likemake
was required. My revisedsetup.py
does not need theMakefile
. I'm envisioning that you might keepMakefile
for all its testing capabilities, but that a basic install would never touch it._core.so
wasn't built.setup.py
does not handlePYAV_HAVE...
headers. I'll need to add that, I know.Sorry for the long-winded message. Are you receptive to this kind of change? I'm no build expert, but I think there is enough interest and support in the community to work toward a reliable cross-platform build.