Created by: danielballan
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 and conda 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:
- I am working off of v0.1 for simplicity. I can rebase on your
masterlater. - Did
pip install avever actually work? It has never worked for me. It seems likemakewas required. My revisedsetup.pydoes not need theMakefile. I'm envisioning that you might keepMakefilefor all its testing capabilities, but that a basic install would never touch it. - If the build encounters a problem like a missing library, I think it should raise informatively, not just print a message and continue. It was confusing to have builds finish "successfully" only to error on import because, say,
_core.sowasn't built. - This draft of a simpler
setup.pydoes 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.