-
-
Notifications
You must be signed in to change notification settings - Fork 14.6k
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
ffmpeg: refactor, ffmpeg -> ffmpeg-full & add ffmpeg (minimal) #7160
Conversation
1106164
to
9a89a59
Compare
Everything builds and works great on Darwin except ffmpeg_0_5 which fails at configure with
But that's a minor issue. This looks awesome. I'm excited. |
Yeah, the darwin work-around always passes the disable flag. I'll fix it for libvpx and pulseaudio. |
Yes, I expect most packages only need a light version. This not only reduces the closure of the output, but also build-time closure, which may simplify some rebuilds nontrivially. This won't allow using extra features with older ffmpeg versions – we'll see in future if that's needed or not. Of course, not having to maintain support for it seems good, if we can avoid it. |
9a89a59
to
c12719b
Compare
@spwhitt @vcunat |
Dow do you determine what features are used by programs linking against ffmpeg? |
@vcunat |
On Darwin, trying to build
|
Otherwise, with these changes,
all build on Darwin (10.10.2) without error. |
@henrytill |
c12719b
to
f8cfbf0
Compare
+ adds a minimal dependency version of ffmpeg as the default + the current ffmpeg changes have been moved to ffmpeg-full + ffmpeg default 2.5 -> 2.6 + removed ffmpeg 0.5 & 2.5 (unused versions)
f8cfbf0
to
542700a
Compare
Only two packages used ffmpeg 0.5, both were broken so I removed it. I fixed Since @spwhitt fixed rtmpdump & wavpack on darwin I re-enabled them. @vcunat Added a final fix for ffmpeg-full to use libv4l instead of v4l-utils which will reduce dependency bloat significantly. |
OK, in staging now. |
So this depends on Qt4, JACK etc. again? IMHO that's not desirable even for a "full" version. Also, doesn't this increase the maintenance burden by adding yet another version of ffmpeg? |
Actually, the maintenance seems slightly simplified in comparison to the state before this PR (perhaps it's subjective, and git/hub doesn't show the diff well): there was one huge expression supporting all possible features on all versions. Both expressions are now simpler than the one before. |
@edolstra @edolstra @vcunat ffmpeg-full is only used if you want to use ffmpeg directly, not to build against so you only pull in the dependency bloat if you want additional ffmpeg features (some of these could be disabled). |
I assumed Qt was pulled by |
@vcunat |
:-) in the meantime I checked it doesn't pull Qt (not even in build-time closure). Jack seems rather small in comparison to many other dependencies. IMO much more will be gained by #7117 techniques which should mainly get rid of development stuff (e.g. now we have libtool in closure and many others). |
With this PR the default ffmpeg build now only includes dependencies required by builds that link against or use ffmpeg. The current feature-complete build is moved to
ffmpeg-full
and backwards compatibility has been removed.ffmpeg-full
will use the latest version of ffmpeg available which allows the versioning to be removed from the build simplifying things. The default ffmpeg build is now simpler and easier to maintain, and still supports all versions of ffmpeg.I did not add network support or x11 screen grabbing support because I couldn't find any builds that use it, if anyone knows of any please let me know and I will re-add it. Most link directly against libX11, etc... instead of using ffmpeg.
@edolstra
This PR should resolve 3779aa0 in a clean way and help with #7117.
The mixed hyphen and camel case has been removed, it was caused because I copied optionals directly from the configure script and appended a suffix. The
faacSupport
vsfaacExtlib
suffix is because all optionals are seperated into categories, Extlib, Programs, Library, Licensing, Documentation, Build & Developer, however only the external libraries that are disabled by default use this.@peti
I migrated it to use
stdenv.lib.enableFeature
, I wasn't aware a builtin function existed.@vcunat
I also added the
inherit (stdenv) isLinux
etc... changes you mentioned@spwhitt @henrytill
I changed the way the darwin fixes were implemented a bit for
ffmpeg
&ffmpeg-full
so if the changes break anything on Darwin let me know.@copumpkin @Fuuzetsu