diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/gstreamer')
32 files changed, 1716 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/bad/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/bad/default.nix new file mode 100644 index 000000000000..9b2d3d0e2470 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/bad/default.nix @@ -0,0 +1,290 @@ +{ stdenv +, fetchurl +, meson +, ninja +, gettext +, config +, pkgconfig +, python3 +, gst-plugins-base +, orc +, gobject-introspection +, enableZbar ? true +, faacSupport ? false +, faac ? null +, faad2 +, libass +, libkate +, libmms +, librdf +, ladspaH +, libnice +, webrtc-audio-processing +, lilv +, lv2 +, serd +, sord +, sratom +, libbs2b +, libmodplug +, mpeg2dec +, openjpeg +, libopus +, librsvg +, bluez +, chromaprint +, curl +, darwin +, directfb +, fdk_aac +, flite +, gsm +, libaom +, libdc1394 +, libde265 +, libdrm +, libdvdnav +, libdvdread +, libgudev +, libofa +, libsndfile +, libusb1 +, neon +, openal +, opencv4 +, openexr +, openh264 +, pango +, rtmpdump +, sbc +, soundtouch +, spandsp +, srtp +, zbar +, wayland-protocols +, wildmidi +, fluidsynth +, libvdpau +, wayland +, libwebp +, xvidcore +, gnutls +, mjpegtools +, libGLU +, libGL +, libintl +, libgme +, openssl +, x265 +, libxml2 +, srt +}: + +assert faacSupport -> faac != null; + +let + inherit (stdenv.lib) optional optionals; +in stdenv.mkDerivation rec { + pname = "gst-plugins-bad"; + version = "1.16.2"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; + sha256 = "0x0y0hm0ga3zqi5q4090hw5sjh59y1ry9ak16qsaascm72i7mjzi"; + }; + + patches = [ + ./fix_pkgconfig_includedir.patch + ]; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + python3 + gettext + gobject-introspection + ] ++ optionals stdenv.isLinux [ + wayland-protocols + ]; + + buildInputs = [ + gst-plugins-base + orc + faad2 + libass + libkate + libmms + webrtc-audio-processing # webrtc + libbs2b + libmodplug + mpeg2dec + openjpeg + libopus + librsvg + curl.dev + fdk_aac + gsm + libaom + libdc1394 + libde265 + libdvdnav + libdvdread + libsndfile + libusb1 + mjpegtools + neon + openal + opencv4 + openexr + openh264 + rtmpdump + pango + soundtouch + srtp + fluidsynth + libvdpau + libwebp + xvidcore + gnutls + libGL + libGLU + libgme + openssl + x265 + libxml2 + libintl + srt + ] ++ optionals enableZbar [ + zbar + ] ++ optionals faacSupport [ + faac + ] ++ optionals stdenv.isLinux [ + bluez + wayland + ] ++ optionals (!stdenv.isDarwin) [ + # wildmidi requires apple's OpenAL + # TODO: package apple's OpenAL, fix wildmidi, include on Darwin + wildmidi + # TODO: mjpegtools uint64_t is not compatible with guint64 on Darwin + mjpegtools + + chromaprint + directfb + flite + libdrm + libgudev + libnice + libofa + librdf + sbc + spandsp + + # ladspa plug-in + ladspaH + librdf # TODO: make build on Darwin + + # lv2 plug-in + lilv + lv2 + serd + sord + sratom + ] ++ optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ + # For unknown reasons the order is important, e.g. if + # VideoToolbox is last, we get: + # fatal error: 'VideoToolbox/VideoToolbox.h' file not found + VideoToolbox + AudioToolbox + AVFoundation + CoreMedia + CoreVideo + Foundation + MediaToolbox + ]); + + mesonFlags = [ + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + + "-Ddts=disabled" # required `libdca` library not packaged in nixpkgs as of writing, and marked as "BIG FAT WARNING: libdca is still in early development" + "-Dzbar=${if enableZbar then "enabled" else "disabled"}" + "-Dfaac=${if faacSupport then "enabled" else "disabled"}" + "-Diqa=disabled" # required `dssim` library not packaging in nixpkgs as of writing + "-Dmsdk=disabled" # not packaged in nixpkgs as of writing / no Windows support + # As of writing, with `libmpcdec` in `buildInputs` we get + # "Could not find libmpcdec header files, but Musepack was enabled via options" + # This is likely because nixpkgs has the header in libmpc/mpcdec.h + # instead of mpc/mpcdec.h, like Arch does. The situation is not trivial. + # There are apparently 2 things called `libmpcdec` from the same author: + # * http://svn.musepack.net/libmpcdec/trunk/src/ + # * http://svn.musepack.net/libmpc/trunk/include/mpc/ + # Fixing it likely requires to first figure out with upstream which one + # is needed, and then patching upstream to find it (though it probably + # already works on Arch?). + "-Dmusepack=disabled" + "-Dopenmpt=disabled" # `libopenmpt` not packaged in nixpkgs as of writing + "-Dopenni2=disabled" # not packaged in nixpkgs as of writing + "-Dopensles=disabled" # not packaged in nixpkgs as of writing + "-Dsctp=disabled" # required `usrsctp` library not packaged in nixpkgs as of writing + "-Dteletext=disabled" # required `zvbi` library not packaged in nixpkgs as of writing + "-Dtinyalsa=disabled" # not packaged in nixpkgs as of writing + "-Dvoaacenc=disabled" # required `vo-aacenc` library not packaged in nixpkgs as of writing + "-Dvoamrwbenc=disabled" # required `vo-amrwbenc` library not packaged in nixpkgs as of writing + "-Dvulkan=disabled" # Linux-only, and we haven't figured out yet which of the vulkan nixpkgs it needs + "-Dwasapi=disabled" # not packaged in nixpkgs as of writing / no Windows support + "-Dwpe=disabled" # required `wpe-webkit` library not packaged in nixpkgs as of writing + + # Requires CUDA and we haven't figured out how to make Meson find CUDA yet; + # it probably searches via pkgconfig, for which we have no .pc files, + # see https://github.com/NixOS/nixpkgs/issues/54395 + "-Dnvdec=disabled" + "-Dnvenc=disabled" + ] + ++ optionals stdenv.isDarwin [ + "-Dbluez=disabled" + "-Dchromaprint=disabled" + "-Ddirectfb=disabled" + "-Dflite=disabled" + "-Dkms=disabled" # renders to libdrm output + "-Dofa=disabled" + "-Dlv2=disabled" + "-Dsbc=disabled" + "-Dspandsp=disabled" + "-Ddvb=disabled" + "-Dfbdev=disabled" + "-Duvch264=disabled" # requires gudev + "-Dladspa=disabled" # requires lrdf + "-Dwebrtc=disabled" # requires libnice, which as of writing doesn't work on Darwin in nixpkgs + "-Dwildmidi=disabled" # see dependencies above + ] ++ optionals (!gst-plugins-base.glEnabled) [ + "-Dgl=disabled"] + ++ optionals (!gst-plugins-base.waylandEnabled) [ + "-Dwayland=disabled" + ] ++ optionals (!gst-plugins-base.glEnabled) [ + # `applemedia/videotexturecache.h` requires `gst/gl/gl.h`, + # but its meson build system does not declare the dependency. + "-Dapplemedia=disabled" + ]; + + # This package has some `_("string literal")` string formats + # that trip up clang with format security enabled. + hardeningDisable = [ "format" ]; + + doCheck = false; # fails 20 out of 58 tests, expensive + + meta = with stdenv.lib; { + description = "GStreamer Bad Plugins"; + homepage = "https://gstreamer.freedesktop.org"; + longDescription = '' + a set of plug-ins that aren't up to par compared to the + rest. They might be close to being good quality, but they're missing + something - be it a good code review, some documentation, a set of tests, + a real live maintainer, or some actual wide use. + ''; + license = licenses.lgpl2Plus; + platforms = platforms.linux ++ platforms.darwin; + maintainers = with maintainers; [ matthewbauer ]; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/bad/fix_pkgconfig_includedir.patch b/nixpkgs/pkgs/development/libraries/gstreamer/bad/fix_pkgconfig_includedir.patch new file mode 100644 index 000000000000..c687fffc9c08 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/bad/fix_pkgconfig_includedir.patch @@ -0,0 +1,15 @@ +diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build +index 271f327f3..7e2afa754 100644 +--- a/pkgconfig/meson.build ++++ b/pkgconfig/meson.build +@@ -2,8 +2,8 @@ pkgconf = configuration_data() + + pkgconf.set('prefix', join_paths(get_option('prefix'))) + pkgconf.set('exec_prefix', '${prefix}') +-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir'))) +-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir'))) ++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) ++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir'))) + pkgconf.set('GST_API_VERSION', api_version) + pkgconf.set('VERSION', gst_version) + diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/base/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/base/default.nix new file mode 100644 index 000000000000..178f6a1fe893 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/base/default.nix @@ -0,0 +1,158 @@ +{ stdenv +, fetchurl +, lib +, pkgconfig +, meson +, ninja +, gettext +, gobject-introspection +, python3 +, gstreamer +, orc +, pango +, libtheora +, libintl +, libopus +, isocodes +, libjpeg +, libpng +, libvisual +, tremor # provides 'virbisidec' +, libGL +, gtk-doc +, docbook_xsl +, docbook_xml_dtd_43 +, enableX11 ? stdenv.isLinux +, libXv +, enableWayland ? stdenv.isLinux +, wayland +, wayland-protocols +, enableAlsa ? stdenv.isLinux +, alsaLib +# Enabling Cocoa seems to currently not work, giving compile +# errors. Suspected is that a newer version than clang +# is needed than 5.0 but it is not clear. +, enableCocoa ? false +, darwin +, enableGl ? (enableX11 || enableWayland || enableCocoa) +, enableCdparanoia ? (!stdenv.isDarwin) +, cdparanoia +}: + +stdenv.mkDerivation rec { + pname = "gst-plugins-base"; + version = "1.16.2"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; + sha256 = "0sl1hxlyq46r02k7z70v09vx1gi4rcypqmzra9jid93lzvi76gmi"; + }; + + patches = [ + ./fix_pkgconfig_includedir.patch + ]; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + python3 + gettext + gobject-introspection + + # docs + gtk-doc + docbook_xsl + docbook_xml_dtd_43 + ]; + + buildInputs = [ + orc + libtheora + libintl + libopus + isocodes + libpng + libjpeg + tremor + libGL + ] ++ lib.optional (!stdenv.isDarwin) [ + libvisual + ] ++ lib.optionals stdenv.isDarwin [ + pango + darwin.apple_sdk.frameworks.OpenGL + ] ++ lib.optionals enableAlsa [ + alsaLib + ] ++ lib.optionals enableX11 [ + libXv + pango + ] ++ lib.optionals enableWayland [ + wayland + wayland-protocols + ] ++ lib.optional enableCocoa darwin.apple_sdk.frameworks.Cocoa + ++ lib.optional enableCdparanoia cdparanoia; + + propagatedBuildInputs = [ + gstreamer + ]; + + mesonFlags = [ + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + "-Dgl-graphene=disabled" # not packaged in nixpkgs as of writing + # See https://github.com/GStreamer/gst-plugins-base/blob/d64a4b7a69c3462851ff4dcfa97cc6f94cd64aef/meson_options.txt#L15 for a list of choices + "-Dgl_winsys=${lib.concatStringsSep "," (lib.optional enableX11 "x11" ++ lib.optional enableWayland "wayland" ++ lib.optional enableCocoa "cocoa")}" + # We must currently disable gtk_doc API docs generation, + # because it is not compatible with some features being disabled. + # See for example + # https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/564 + # for it failing because some Wayland symbols are missing. + # This problem appeared between 1.15.1 and 1.16.0. + # In 1.18 they should switch to hotdoc, which should make this issue irrelevant. + "-Dgtk_doc=disabled" + ] + ++ lib.optional (!enableX11) "-Dx11=disabled" + # TODO How to disable Wayland? + ++ lib.optional (!enableGl) "-Dgl=disabled" + ++ lib.optional (!enableAlsa) "-Dalsa=disabled" + ++ lib.optional (!enableCdparanoia) "-Dcdparanoia=disabled" + ++ lib.optionals stdenv.isDarwin [ + "-Dlibvisual=disabled" + ]; + + postPatch = '' + patchShebangs common/scangobj-merge.py + ''; + + # This package has some `_("string literal")` string formats + # that trip up clang with format security enabled. + hardeningDisable = [ "format" ]; + + doCheck = false; # fails, wants DRI access for OpenGL + + passthru = { + # Downstream `gst-*` packages depending on `gst-plugins-base` + # have meson build options like 'gl' etc. that depend + # on these features being built in `-base`. + # If they are not built here, then the downstream builds + # will fail, as they, too, use `-Dauto_features=enabled` + # which would enable these options unconditionally. + # That means we must communicate to these downstream packages + # if the `-base` enabled these options or not, so that + # the can enable/disable those features accordingly. + # The naming `*Enabled` vs `enable*` is intentional to + # distinguish inputs from outputs (what is to be built + # vs what was built) and to make them easier to search for. + glEnabled = enableGl; + waylandEnabled = enableWayland; + }; + + meta = with lib; { + description = "Base GStreamer plug-ins and helper libraries"; + homepage = "https://gstreamer.freedesktop.org"; + license = licenses.lgpl2Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ matthewbauer ]; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/base/fix_pkgconfig_includedir.patch b/nixpkgs/pkgs/development/libraries/gstreamer/base/fix_pkgconfig_includedir.patch new file mode 100644 index 000000000000..04486a4647f9 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/base/fix_pkgconfig_includedir.patch @@ -0,0 +1,15 @@ +diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build +index 04abfbee5..88c86b431 100644 +--- a/pkgconfig/meson.build ++++ b/pkgconfig/meson.build +@@ -2,8 +2,8 @@ pkgconf = configuration_data() + + pkgconf.set('prefix', get_option('prefix')) + pkgconf.set('exec_prefix', '${prefix}') +-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir'))) +-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir'))) ++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) ++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir'))) + pkgconf.set('GST_API_VERSION', api_version) + pkgconf.set('VERSION', gst_version) + pkgconf.set('LIBM', libm.found() ? '-lm' : '') diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/core/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/core/default.nix new file mode 100644 index 000000000000..3dd7a547de96 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/core/default.nix @@ -0,0 +1,109 @@ +{ stdenv +, fetchurl +, fetchpatch +, meson +, ninja +, pkgconfig +, gettext +, gobject-introspection +, bison +, flex +, python3 +, glib +, makeWrapper +, libcap +, libunwind +, darwin +, elfutils # for libdw +, bash-completion +, docbook_xsl +, docbook_xml_dtd_43 +, gtk-doc +, lib +, CoreServices +}: + +stdenv.mkDerivation rec { + pname = "gstreamer"; + version = "1.16.2"; + + outputs = [ "out" "dev" "devdoc" ]; + outputBin = "dev"; + + src = fetchurl { + url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; + sha256 = "0kp93622y29pck8asvil1fmzf55s2gx76wv475a6izc3cwj49w73"; + }; + + patches = [ + ./fix_pkgconfig_includedir.patch + ]; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + gettext + bison + flex + python3 + makeWrapper + gobject-introspection + bash-completion + + # documentation + gtk-doc + docbook_xsl + docbook_xml_dtd_43 + ]; + + buildInputs = lib.optionals stdenv.isLinux [ + libcap + libunwind + elfutils + ] ++ lib.optionals stdenv.isDarwin [ + CoreServices + ]; + + propagatedBuildInputs = [ + glib + ]; + + mesonFlags = [ + "-Ddbghelp=disabled" # not needed as we already provide libunwind and libdw, and dbghelp is a fallback to those + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + ] ++ lib.optionals stdenv.isDarwin [ + # darwin.libunwind doesn't have pkgconfig definitions so meson doesn't detect it. + "-Dlibunwind=disabled" + "-Dlibdw=disabled" + ]; + + postPatch = '' + patchShebangs \ + gst/parse/get_flex_version.py \ + gst/parse/gen_grammar.py.in \ + gst/parse/gen_lex.py.in \ + libs/gst/helpers/ptp_helper_post_install.sh + ''; + + postInstall = '' + for prog in "$dev/bin/"*; do + # We can't use --suffix here due to quoting so we craft the export command by hand + wrapProgram "$prog" --run "export GST_PLUGIN_SYSTEM_PATH=\$GST_PLUGIN_SYSTEM_PATH"$\{GST_PLUGIN_SYSTEM_PATH:+:\}"\$(unset _tmp; for profile in \$NIX_PROFILES; do _tmp="\$profile/lib/gstreamer-1.0''$\{_tmp:+:\}\$_tmp"; done; printf "\$_tmp")" + done + ''; + + preFixup = '' + moveToOutput "share/bash-completion" "$dev" + ''; + + setupHook = ./setup-hook.sh; + + meta = with lib ;{ + description = "Open source multimedia framework"; + homepage = "https://gstreamer.freedesktop.org"; + license = licenses.lgpl2Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ ttuegel matthewbauer ]; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/core/fix_pkgconfig_includedir.patch b/nixpkgs/pkgs/development/libraries/gstreamer/core/fix_pkgconfig_includedir.patch new file mode 100644 index 000000000000..c388a82fa2a8 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/core/fix_pkgconfig_includedir.patch @@ -0,0 +1,15 @@ +diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build +index edb0586c2..7ed46dfce 100644 +--- a/pkgconfig/meson.build ++++ b/pkgconfig/meson.build +@@ -2,8 +2,8 @@ pkgconf = configuration_data() + + pkgconf.set('prefix', join_paths(get_option('prefix'))) + pkgconf.set('exec_prefix', '${prefix}') +-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir'))) +-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir'))) ++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) ++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir'))) + pkgconf.set('GST_API_VERSION', apiversion) + pkgconf.set('VERSION', gst_version) + pkgconf.set('LIBM', mathlib.found() ? '-lm' : '') diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/core/setup-hook.sh b/nixpkgs/pkgs/development/libraries/gstreamer/core/setup-hook.sh new file mode 100644 index 000000000000..026a4e5f55a0 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/core/setup-hook.sh @@ -0,0 +1,9 @@ +addGstreamer1LibPath () { + if test -d "$1/lib/gstreamer-1.0" + then + export GST_PLUGIN_SYSTEM_PATH_1_0="${GST_PLUGIN_SYSTEM_PATH_1_0-}${GST_PLUGIN_SYSTEM_PATH_1_0:+:}$1/lib/gstreamer-1.0" + fi +} + +addEnvHooks "$hostOffset" addGstreamer1LibPath + diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/default.nix new file mode 100644 index 000000000000..94d71760a7f8 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/default.nix @@ -0,0 +1,29 @@ +{ callPackage, CoreServices }: + +rec { + gstreamer = callPackage ./core { inherit CoreServices; }; + + gstreamermm = callPackage ./gstreamermm { }; + + gst-plugins-base = callPackage ./base { inherit gstreamer; }; + + gst-plugins-good = callPackage ./good { inherit gst-plugins-base; }; + + gst-plugins-bad = callPackage ./bad { inherit gst-plugins-base; }; + + gst-plugins-ugly = callPackage ./ugly { inherit gst-plugins-base; }; + + gst-rtsp-server = callPackage ./rtsp-server { inherit gst-plugins-base gst-plugins-bad; }; + + gst-libav = callPackage ./libav { inherit gst-plugins-base; }; + + gst-editing-services = callPackage ./ges { inherit gst-plugins-base; }; + + gst-vaapi = callPackage ./vaapi { + inherit gst-plugins-base gstreamer gst-plugins-bad; + }; + + gst-validate = callPackage ./validate { inherit gst-plugins-base; }; + + # note: gst-python is in ./python/default.nix - called under pythonPackages +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/ges/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/ges/default.nix new file mode 100644 index 000000000000..6e9a604f7946 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/ges/default.nix @@ -0,0 +1,66 @@ +{ stdenv +, fetchurl +, fetchpatch +, meson +, ninja +, pkgconfig +, python +, gst-plugins-base +, libxml2 +, flex +, perl +, gettext +, gobject-introspection +}: + +stdenv.mkDerivation rec { + pname = "gstreamer-editing-services"; + version = "1.16.2"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; + sha256 = "05hcf3prna8ajjnqd53221gj9syarrrjbgvjcbhicv0c38csc1hf"; + }; + + patches = [ + ./fix_pkgconfig_includedir.patch + ]; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + gettext + gobject-introspection + python + flex + perl + ]; + + buildInputs = [ + libxml2 + ]; + + propagatedBuildInputs = [ + gst-plugins-base + ]; + + mesonFlags = [ + "-Dgtk_doc=disabled" + ]; + + postPatch = '' + # for some reason, gst-plugins-bad cannot be found + # fortunately, they are only used by tests, which we do not run + sed -i -r -e 's/p(bad|good) = .*/p\1 = pbase/' tests/check/meson.build + ''; + + meta = with stdenv.lib; { + description = "Library for creation of audio/video non-linear editors"; + homepage = "https://gstreamer.freedesktop.org"; + license = licenses.lgpl2Plus; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/ges/fix_pkgconfig_includedir.patch b/nixpkgs/pkgs/development/libraries/gstreamer/ges/fix_pkgconfig_includedir.patch new file mode 100644 index 000000000000..1e12f3bbfbea --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/ges/fix_pkgconfig_includedir.patch @@ -0,0 +1,15 @@ +diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build +index a612b21b..c017eaff 100644 +--- a/pkgconfig/meson.build ++++ b/pkgconfig/meson.build +@@ -2,8 +2,8 @@ pkgconf = configuration_data() + + pkgconf.set('prefix', get_option('prefix')) + pkgconf.set('exec_prefix', '${prefix}') +-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir'))) +-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir'))) ++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) ++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir'))) + pkgconf.set('GST_API_VERSION', apiversion) + pkgconf.set('VERSION', gst_version) + diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/good/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/good/default.nix new file mode 100644 index 000000000000..a7c2bcf838e7 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/good/default.nix @@ -0,0 +1,151 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, python3 +, gst-plugins-base +, orc +, bzip2 +, gettext +, libv4l +, libdv +, libavc1394 +, libiec61883 +, libvpx +, speex +, flac +, taglib +, libshout +, cairo +, gdk-pixbuf +, aalib +, libcaca +, libsoup +, libpulseaudio +, libintl +, darwin +, lame +, mpg123 +, twolame +, gtkSupport ? false, gtk3 ? null + # As of writing, jack2 incurs a Qt dependency (big!) via `ffado`. + # In the future we should probably split `ffado`. +, enableJack ? false, jack2 +, libXdamage +, libXext +, libXfixes +, ncurses +, xorg +, libgudev +, wavpack +}: + +assert gtkSupport -> gtk3 != null; + +let + inherit (stdenv.lib) optionals; +in +stdenv.mkDerivation rec { + pname = "gst-plugins-good"; + version = "1.16.2"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; + sha256 = "068k3cbv1yf3gbllfdzqsg263kzwh21y8dpwr0wvgh15vapkpfs0"; + }; + + patches = [ ./fix_pkgconfig_includedir.patch ]; + + nativeBuildInputs = [ + pkgconfig + python3 + meson + ninja + gettext + ]; + + buildInputs = [ + gst-plugins-base + orc + bzip2 + libdv + libvpx + speex + flac + taglib + cairo + gdk-pixbuf + aalib + libcaca + libsoup + libshout + lame + mpg123 + twolame + libintl + libXdamage + libXext + libXfixes + ncurses + xorg.libXfixes + xorg.libXdamage + wavpack + ] ++ optionals gtkSupport [ + # for gtksink + gtk3 + ] ++ optionals stdenv.isDarwin [ + darwin.apple_sdk.frameworks.Cocoa + ] ++ optionals stdenv.isLinux [ + libv4l + libpulseaudio + libavc1394 + libiec61883 + libgudev + ] ++ optionals (stdenv.isLinux && enableJack) [ + jack2 + ]; + + mesonFlags = [ + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + "-Dqt5=disabled" # not clear as of writing how to correctly pass in the required qt5 deps + ] ++ optionals (!gtkSupport) [ + "-Dgtk3=disabled" + ] ++ optionals (!stdenv.isLinux || !enableJack) [ + "-Djack=disabled" # unclear whether Jack works on Darwin + ] ++ optionals (!stdenv.isLinux) [ + "-Ddv1394=disabled" # Linux only + "-Doss4=disabled" # Linux only + "-Doss=disabled" # Linux only + "-Dpulse=disabled" # TODO check if we can keep this enabled + "-Dv4l2-gudev=disabled" # Linux-only + "-Dv4l2=disabled" # Linux-only + "-Dximagesrc=disabled" # Linux-only + "-Dpulse=disabled" # TODO check if we can keep this enabled + ]; + + + NIX_LDFLAGS = [ + # linking error on Darwin + # https://github.com/NixOS/nixpkgs/pull/70690#issuecomment-553694896 + "-lncurses" + ]; + + # fails 1 tests with "Unexpected critical/warning: g_object_set_is_valid_property: object class 'GstRtpStorage' has no property named ''" + doCheck = false; + + meta = with stdenv.lib; { + description = "GStreamer Good Plugins"; + homepage = "https://gstreamer.freedesktop.org"; + longDescription = '' + a set of plug-ins that we consider to have good quality code, + correct functionality, our preferred license (LGPL for the plug-in + code, LGPL or LGPL-compatible for the supporting library). + ''; + license = licenses.lgpl2Plus; + platforms = platforms.linux ++ platforms.darwin; + maintainers = with maintainers; [ matthewbauer ]; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/good/fix_pkgconfig_includedir.patch b/nixpkgs/pkgs/development/libraries/gstreamer/good/fix_pkgconfig_includedir.patch new file mode 100644 index 000000000000..f68ad603a37c --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/good/fix_pkgconfig_includedir.patch @@ -0,0 +1,15 @@ +diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build +index b3bf0d4d4..3e6e576c0 100644 +--- a/pkgconfig/meson.build ++++ b/pkgconfig/meson.build +@@ -2,8 +2,8 @@ pkgconf = configuration_data() + + pkgconf.set('prefix', get_option('prefix')) + pkgconf.set('exec_prefix', '${prefix}') +-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir'))) +-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir'))) ++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) ++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir'))) + pkgconf.set('GST_API_VERSION', api_version) + pkgconf.set('VERSION', gst_version) + diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/gstreamermm/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/gstreamermm/default.nix new file mode 100644 index 000000000000..35c278da03b1 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/gstreamermm/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, file, glibmm, gst_all_1, gnome3 }: +stdenv.mkDerivation rec { + pname = "gstreamermm"; + version = "1.10.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0q4dx9sncqbwgpzma0zvj6zssc279yl80pn8irb95qypyyggwn5y"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ pkgconfig file ]; + + propagatedBuildInputs = [ glibmm gst_all_1.gst-plugins-base ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + versionPolicy = "none"; # Unpredictable version stability + }; + }; + + meta = with stdenv.lib; { + description = "C++ interface for GStreamer"; + homepage = "https://gstreamer.freedesktop.org/bindings/cplusplus.html"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; + +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gnonlin/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gnonlin/default.nix new file mode 100644 index 000000000000..402074a4e5f4 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gnonlin/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, gst-plugins-base, gstreamer }: + +stdenv.mkDerivation rec { + name = "gnonlin-0.10.17"; + + src = fetchurl { + urls = [ + "https://gstreamer.freedesktop.org/src/gnonlin/${name}.tar.bz2" + "mirror://gentoo/distfiles/${name}.tar.bz2" + ]; + sha256 = "0dc9kvr6i7sh91cyhzlbx2bchwg84rfa4679ccppzjf0y65dv8p4"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gst-plugins-base gstreamer ]; + + meta = { + homepage = https://gstreamer.freedesktop.org/modules/gnonlin.html; + description = "Gstreamer Non-Linear Multimedia Editing Plugins"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-bad/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-bad/default.nix new file mode 100644 index 000000000000..77465645d237 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-bad/default.nix @@ -0,0 +1,36 @@ +{ fetchurl, stdenv, pkgconfig, glib, gstreamer, gst-plugins-base +, libdvdnav, libdvdread, orc }: + +stdenv.mkDerivation rec { + name = "gst-plugins-bad-0.10.23"; + + src = fetchurl { + urls = [ + "${meta.homepage}/src/gst-plugins-bad/${name}.tar.bz2" + "mirror://gentoo/distfiles/${name}.tar.bz2" + ]; + sha256 = "148lw51dm6pgw8vc6v0fpvm7p233wr11nspdzmvq7bjp2cd7vbhf"; + }; + + postInstall = '' + # Fixes CVE-2016-9447 + # Does not actually impact NSF playback + rm -v $out/lib/gstreamer-0.10/libgstnsf.so + ''; + + buildInputs = + [ pkgconfig glib gstreamer gst-plugins-base libdvdnav libdvdread orc ]; + + enableParallelBuilding = true; + + meta = { + homepage = https://gstreamer.freedesktop.org; + + description = "‘Bad’ (potentially low quality) plug-ins for GStreamer"; + + maintainers = [stdenv.lib.maintainers.raskin]; + platforms = stdenv.lib.platforms.linux; + + license = stdenv.lib.licenses.lgpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-base/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-base/default.nix new file mode 100644 index 000000000000..eed9d423fdb9 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-base/default.nix @@ -0,0 +1,60 @@ +{ fetchurl, fetchpatch, stdenv, pkgconfig, gstreamer, xorg, alsaLib, cdparanoia +, libogg, libtheora, libvorbis, freetype, pango, liboil, glib, cairo, orc +, libintl +, ApplicationServices +, # Whether to build no plugins that have external dependencies + # (except the ALSA plugin). + minimalDeps ? false +}: + +stdenv.mkDerivation rec { + name = "gst-plugins-base-0.10.36"; + + src = fetchurl { + urls = [ + "${meta.homepage}/src/gst-plugins-base/${name}.tar.xz" + "mirror://gentoo/distfiles/${name}.tar.xz" + ]; + sha256 = "0jp6hjlra98cnkal4n6bdmr577q8mcyp3c08s3a02c4hjhw5rr0z"; + }; + + patches = [ + ./gcc-4.9.patch + (fetchpatch { + url = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/commit/f672277509705c4034bc92a141eefee4524d15aa.patch"; + name = "CVE-2019-9928.patch"; + sha256 = "1dlamsmyr7chrb6vqqmwikqvvqcx5l7k72p98448qm6k59ndnimc"; + }) + ]; + + postPatch = '' + sed -i 's@/bin/echo@echo@g' configure + sed -i -e 's/^ /\t/' docs/{libs,plugins}/Makefile.in + ''; + + outputs = [ "out" "dev" ]; + + # TODO : v4l, libvisual + buildInputs = + [ pkgconfig glib cairo orc libintl ] + # can't build alsaLib on darwin + ++ stdenv.lib.optional (!stdenv.isDarwin) alsaLib + ++ stdenv.lib.optionals (!minimalDeps) + [ xorg.xlibsWrapper xorg.libXv libogg libtheora libvorbis freetype pango + liboil ] + # can't build cdparanoia on darwin + ++ stdenv.lib.optional (!minimalDeps && !stdenv.isDarwin) cdparanoia + ++ stdenv.lib.optional stdenv.isDarwin ApplicationServices; + + propagatedBuildInputs = [ gstreamer ]; + + postInstall = "rm -rf $out/share/gtk-doc"; + + meta = with stdenv.lib; { + homepage = https://gstreamer.freedesktop.org; + description = "Base plug-ins for GStreamer"; + license = licenses.lgpl2Plus; + maintainers = with maintainers; [ lovek323 ]; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-base/gcc-4.9.patch b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-base/gcc-4.9.patch new file mode 100644 index 000000000000..fd9f6ea240d2 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-base/gcc-4.9.patch @@ -0,0 +1,38 @@ +https://bugzilla.gnome.org/show_bug.cgi?id=670690 + +From 9bd5a7ae5435469c3557a3d70e762791cb3dc5c7 Mon Sep 17 00:00:00 2001 +From: Antoine Jacoutot <ajacoutot@gnome.org> +Date: Mon, 20 Jan 2014 15:44:09 +0100 +Subject: [PATCH] audioresample: fix build on BSD + +On i386, EMMINTRIN is defined but not usable without sse so check for +__SSE__ and __SSE2__ as well. + +https://bugzilla.gnome.org/show_bug.cgi?id=670690 +--- + gst/audioresample/resample.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gst/audioresample/resample.c b/gst/audioresample/resample.c +index 98d006c..481fa01 100644 +--- a/gst/audioresample/resample.c ++++ b/gst/audioresample/resample.c +@@ -77,13 +77,13 @@ + #define EXPORT G_GNUC_INTERNAL + + #ifdef _USE_SSE +-#ifndef HAVE_XMMINTRIN_H ++#if !defined(__SSE__) || !defined(HAVE_XMMINTRIN_H) + #undef _USE_SSE + #endif + #endif + + #ifdef _USE_SSE2 +-#ifndef HAVE_EMMINTRIN_H ++#if !defined(__SSE2__) || !defined(HAVE_XMMINTRIN_H) + #undef _USE_SSE2 + #endif + #endif +-- +1.8.5.3 + diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/default.nix new file mode 100644 index 000000000000..2b78d4daaf30 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/default.nix @@ -0,0 +1,52 @@ +{ fetchurl, stdenv, lib, pkgconfig, gst-plugins-base, aalib, cairo +, flac, libjpeg, speex, libpng, libdv, libcaca, libvpx +, taglib, libpulseaudio, gdk-pixbuf, orc +, glib, gstreamer, bzip2, libsoup, libshout, ncurses, libintl +, # Whether to build no plugins that have external dependencies + # (except the PulseAudio plugin). + minimalDeps ? false +}: + +stdenv.mkDerivation rec { + name = "gst-plugins-good-0.10.31"; + + src = fetchurl { + urls = [ + "${meta.homepage}/src/gst-plugins-good/${name}.tar.bz2" + "mirror://gentoo/distfiles/${name}.tar.bz2" + ]; + sha256 = "1ijswgcrdp243mfsyza31fpzq6plz40p4b83vkr2x4x7807889vy"; + }; + + patches = [ ./v4l.patch ./linux-headers-3.9.patch ]; + + configureFlags = [ "--enable-experimental" "--disable-oss" ]; + + buildInputs = + [ pkgconfig glib gstreamer gst-plugins-base libintl ] + ++ lib.optional stdenv.isLinux libpulseaudio + ++ lib.optionals (!minimalDeps) + [ aalib libcaca cairo libdv flac libjpeg libpng speex + taglib bzip2 libvpx gdk-pixbuf orc libsoup libshout ]; + + enableParallelBuilding = true; + + postInstall = lib.optionalString (!minimalDeps) '' + substituteInPlace $out/lib/gstreamer-0.10/libgstaasink.la \ + --replace "${ncurses.dev}/lib" "${ncurses.out}/lib" + ''; + + # fails 1 out of 65 tests with "Could not read TLS certificate from '../../tests/files/test-cert.pem': TLS support is not available" + doCheck = false; + + meta = { + homepage = https://gstreamer.freedesktop.org; + + description = "`Good' plug-ins for GStreamer"; + + maintainers = [stdenv.lib.maintainers.raskin]; + platforms = stdenv.lib.platforms.unix; + + license = stdenv.lib.licenses.lgpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/linux-headers-3.9.patch b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/linux-headers-3.9.patch new file mode 100644 index 000000000000..f13d3a166714 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/linux-headers-3.9.patch @@ -0,0 +1,27 @@ +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/media-plugins/gst-plugins-v4l2/files/gst-plugins-v4l2-0.10.31-linux-headers-3.9.patch + +From 8e633d2059cb835448021cf79becb487aff10975 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera <hadess@hadess.net> +Date: Mon, 18 Mar 2013 14:59:35 +0000 +Subject: v4l2: fix compilation against newer kernel headers as on FC19 + +--- +diff --git a/sys/v4l2/v4l2_calls.c b/sys/v4l2/v4l2_calls.c +index 07d390a..4c10f4f 100644 +--- a/sys/v4l2/v4l2_calls.c ++++ b/sys/v4l2/v4l2_calls.c +@@ -291,8 +291,12 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object) + break; + case V4L2_CID_HFLIP: + case V4L2_CID_VFLIP: ++#ifndef V4L2_CID_PAN_RESET + case V4L2_CID_HCENTER: ++#endif ++#ifndef V4L2_CID_TILT_RESET + case V4L2_CID_VCENTER: ++#endif + #ifdef V4L2_CID_PAN_RESET + case V4L2_CID_PAN_RESET: + #endif +-- +cgit v0.9.0.2-2-gbebe diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/v4l.patch b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/v4l.patch new file mode 100644 index 000000000000..22cff574134f --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/v4l.patch @@ -0,0 +1,11 @@ +diff -ru -x '*~' gst-plugins-good-0.10.31-orig/sys/v4l2/gstv4l2bufferpool.c gst-plugins-good-0.10.31/sys/v4l2/gstv4l2bufferpool.c +--- gst-plugins-good-0.10.31-orig/sys/v4l2/gstv4l2bufferpool.c 2011-12-30 14:59:13.000000000 +0100 ++++ gst-plugins-good-0.10.31/sys/v4l2/gstv4l2bufferpool.c 2013-01-28 17:41:25.549523708 +0100 +@@ -181,7 +181,6 @@ + GST_LOG_OBJECT (pool->v4l2elem, " MMAP offset: %u", + ret->vbuffer.m.offset); + GST_LOG_OBJECT (pool->v4l2elem, " length: %u", ret->vbuffer.length); +- GST_LOG_OBJECT (pool->v4l2elem, " input: %u", ret->vbuffer.input); + + data = (guint8 *) v4l2_mmap (0, ret->vbuffer.length, + PROT_READ | PROT_WRITE, MAP_SHARED, pool->video_fd, diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-ugly/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-ugly/default.nix new file mode 100644 index 000000000000..2f46016adac8 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-ugly/default.nix @@ -0,0 +1,30 @@ +{ fetchurl, stdenv, pkgconfig, glib, gstreamer, gst-plugins-base +, libmad, libdvdread, a52dec, x264, orc, lame, libintl }: + +stdenv.mkDerivation rec { + name = "gst-plugins-ugly-0.10.19"; + + src = fetchurl { + urls = [ + "${meta.homepage}/src/gst-plugins-ugly/${name}.tar.bz2" + "mirror://gentoo/distfiles/${name}.tar.bz2" + ]; + sha256 = "1w4d5iz9ffvh43l261zdp997i6s2iwd61lflf755s3sw4xch1a8w"; + }; + + buildInputs = + [ pkgconfig glib gstreamer gst-plugins-base libmad libdvdread a52dec x264 orc lame libintl ]; + + enableParallelBuilding = true; + + meta = { + homepage = https://gstreamer.freedesktop.org; + + description = "‘Ugly’ (potentially patent-encumbered) plug-ins for GStreamer"; + + maintainers = [stdenv.lib.maintainers.raskin]; + platforms = stdenv.lib.platforms.unix; + + license = stdenv.lib.licenses.lgpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-python/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-python/default.nix new file mode 100644 index 000000000000..c8414a7b681b --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-python/default.nix @@ -0,0 +1,37 @@ +{ fetchurl, stdenv, pkgconfig, python2Packages, gstreamer, gst-plugins-base +}: + +let + inherit (python2Packages) python pygobject2; +in stdenv.mkDerivation rec { + name = "gst-python-0.10.22"; + + src = fetchurl { + urls = [ + "${meta.homepage}/src/gst-python/${name}.tar.bz2" + "mirror://gentoo/distfiles/${name}.tar.bz2" + ]; + sha256 = "0y1i4n5m1diljqr9dsq12anwazrhbs70jziich47gkdwllcza9lg"; + }; + + hardeningDisable = [ "bindnow" ]; + + # Need to disable the testFake test case due to bug in pygobject. + # See https://bugzilla.gnome.org/show_bug.cgi?id=692479 + patches = [ ./disable-testFake.patch ]; + + buildInputs = + [ pkgconfig gst-plugins-base pygobject2 ] + ; + + propagatedBuildInputs = [ gstreamer python ]; + + meta = { + homepage = https://gstreamer.freedesktop.org; + + description = "Python bindings for GStreamer"; + + license = stdenv.lib.licenses.lgpl2Plus; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-python/disable-testFake.patch b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-python/disable-testFake.patch new file mode 100644 index 000000000000..d0c9960e5d22 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-python/disable-testFake.patch @@ -0,0 +1,56 @@ +diff -Nurp gst-python-0.10.22.orig/testsuite/test_bin.py gst-python-0.10.22/testsuite/test_bin.py +--- gst-python-0.10.22.orig/testsuite/test_bin.py 2014-10-29 18:58:00.921827721 +0100 ++++ gst-python-0.10.22/testsuite/test_bin.py 2014-10-29 19:00:32.019353092 +0100 +@@ -131,52 +131,6 @@ class BinAddRemove(TestCase): + self.assertRaises(gst.AddError, self.bin.add, src, sink) + self.bin.remove(src, sink) + self.assertRaises(gst.RemoveError, self.bin.remove, src, sink) +- +-class Preroll(TestCase): +- def setUp(self): +- TestCase.setUp(self) +- self.bin = gst.Bin('bin') +- +- def tearDown(self): +- # FIXME: wait for state change thread to settle down +- while self.bin.__gstrefcount__ > 1: +- time.sleep(0.1) +- self.assertEquals(self.bin.__gstrefcount__, 1) +- del self.bin +- TestCase.tearDown(self) +- +- def testFake(self): +- src = gst.element_factory_make('fakesrc') +- sink = gst.element_factory_make('fakesink') +- self.bin.add(src) +- +- # bin will go to paused, src pad task will start and error out +- self.bin.set_state(gst.STATE_PAUSED) +- ret = self.bin.get_state() +- self.assertEquals(ret[0], gst.STATE_CHANGE_SUCCESS) +- self.assertEquals(ret[1], gst.STATE_PAUSED) +- self.assertEquals(ret[2], gst.STATE_VOID_PENDING) +- +- # adding the sink will cause the bin to go in preroll mode +- gst.debug('adding sink and setting to PAUSED, should cause preroll') +- self.bin.add(sink) +- sink.set_state(gst.STATE_PAUSED) +- ret = self.bin.get_state(timeout=0) +- self.assertEquals(ret[0], gst.STATE_CHANGE_ASYNC) +- self.assertEquals(ret[1], gst.STATE_PAUSED) +- self.assertEquals(ret[2], gst.STATE_PAUSED) +- +- # to actually complete preroll, we need to link and re-enable fakesrc +- src.set_state(gst.STATE_READY) +- src.link(sink) +- src.set_state(gst.STATE_PAUSED) +- ret = self.bin.get_state() +- self.assertEquals(ret[0], gst.STATE_CHANGE_SUCCESS) +- self.assertEquals(ret[1], gst.STATE_PAUSED) +- self.assertEquals(ret[2], gst.STATE_VOID_PENDING) +- +- self.bin.set_state(gst.STATE_NULL) +- self.bin.get_state() + + class ConstructorTest(TestCase): + def testGood(self): diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/darwin.patch b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/darwin.patch new file mode 100644 index 000000000000..67dfc34434db --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/darwin.patch @@ -0,0 +1,14 @@ +diff --git a/gst/gstdatetime.c b/gst/gstdatetime.c +index 60f709f..cdc7e75 100644 +--- a/gst/gstdatetime.c ++++ b/gst/gstdatetime.c +@@ -21,8 +21,8 @@ + #include "config.h" + #endif + +-#include "glib-compat-private.h" + #include "gst_private.h" ++#include "glib-compat-private.h" + #include "gstdatetime.h" + #include <glib.h> + #include <math.h> diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/default.nix new file mode 100644 index 000000000000..c70e898a47d8 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/default.nix @@ -0,0 +1,85 @@ +{ fetchurl, fetchpatch, stdenv, autoreconfHook +, perl, bison2, flex, pkgconfig, glib, libxml2, libintl, libunwind +}: + +stdenv.mkDerivation rec { + name = "gstreamer-0.10.36"; + + src = fetchurl { + urls = + [ "${meta.homepage}/src/gstreamer/${name}.tar.xz" + "mirror://gentoo/distfiles/${name}.tar.xz" + ]; + sha256 = "1nkid1n2l3rrlmq5qrf5yy06grrkwjh3yxl5g0w58w0pih8allci"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ autoreconfHook flex perl pkgconfig libintl bison2 glib ]; + buildInputs = stdenv.lib.optional stdenv.isDarwin libunwind; + propagatedBuildInputs = [ glib libxml2 ]; + + patches = [ + (fetchpatch { + url = "https://github.com/GStreamer/common/commit/03a0e5736761a72d4ed880e8c485bbf9e4a8ea47.patch"; + sha256 = "0rin3x01yy78ky3smmhbwlph18hhym18q4x9w6ddiqajg5lk4xhm"; + extraPrefix = "common/"; + stripLen = 1; + }) + (fetchpatch { + url = "https://github.com/GStreamer/common/commit/8aadeaaa8a948d7ce62008789ab03e9aa514c2b9.patch"; + sha256 = "0n2mqvq2al7jr2hflhz4l781i3jya5a9i725jvy508ambpgycz3x"; + extraPrefix = "common/"; + stripLen = 1; + }) + (fetchpatch { + url = "https://github.com/GStreamer/common/commit/7bb2bcecda471a0d514a964365a78150f3ee5747.patch"; + sha256 = "0famdj70m7wjvr1dpy7iywhrkqxmrshxz0rizz1bixgp42dvkhbq"; + extraPrefix = "common/"; + stripLen = 1; + }) + ] ++ + # See https://trac.macports.org/ticket/40783 for explanation of patch + stdenv.lib.optional stdenv.isDarwin ./darwin.patch; + + postPatch = '' + sed -i -e 's/^ /\t/' docs/gst/Makefile.in docs/libs/Makefile.in docs/plugins/Makefile.in + ''; + + configureFlags = [ + "--disable-examples" + "--localstatedir=/var" + "--disable-gtk-doc" + "--disable-docbook" + ]; + + doCheck = false; # fails. 2 tests crash + + postInstall = '' + # Hm, apparently --disable-gtk-doc is ignored... + rm -rf $out/share/gtk-doc + ''; + + setupHook = ./setup-hook.sh; + + meta = { + homepage = https://gstreamer.freedesktop.org; + + description = "Library for constructing graphs of media-handling components"; + + longDescription = '' + GStreamer is a library for constructing graphs of media-handling + components. The applications it supports range from simple + Ogg/Vorbis playback, audio/video streaming to complex audio + (mixing) and video (non-linear editing) processing. + + Applications can take advantage of advances in codec and filter + technology transparently. Developers can add new codecs and + filters by writing a simple plugin with a clean, generic + interface. + ''; + + license = stdenv.lib.licenses.lgpl2Plus; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/setup-hook.sh b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/setup-hook.sh new file mode 100644 index 000000000000..636e20b732b4 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/setup-hook.sh @@ -0,0 +1,8 @@ +addGstreamerLibPath () { + if test -d "$1/lib/gstreamer-0.10" + then + export GST_PLUGIN_SYSTEM_PATH="${GST_PLUGIN_SYSTEM_PATH-}${GST_PLUGIN_SYSTEM_PATH:+:}$1/lib/gstreamer-0.10" + fi +} + +addEnvHooks "$hostOffset" addGstreamerLibPath diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamermm/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamermm/default.nix new file mode 100644 index 000000000000..27036ad86edf --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamermm/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, glibmm, gstreamer, gst-plugins-base, libsigcxx, libxmlxx, pkgconfig }: + +let + ver_maj = "0.10"; + ver_min = "11"; +in +stdenv.mkDerivation { + name = "gstreamermm-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://gnome/sources/gstreamermm/${ver_maj}/gstreamermm-${ver_maj}.${ver_min}.tar.xz"; + sha256 = "12b5f377363594a69cb79f2f5cd0a8b1813ca6553680c3216e6354cfd682ebc6"; + }; + + doCheck = false; # Tests require pulseaudio in /homeless-shelter + + propagatedBuildInputs = [ + glibmm gstreamer gst-plugins-base libsigcxx libxmlxx + ]; + + nativeBuildInputs = [ pkgconfig ]; + + meta = with stdenv.lib; { + description = "C++ bindings for the GStreamer streaming multimedia library"; + homepage = https://www.gtkmm.org/; + license = licenses.lgpl2Plus; + maintainers = with maintainers; [ plcplc ]; + platforms = platforms.unix; + }; + +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/libav/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/libav/default.nix new file mode 100644 index 000000000000..e36eba370071 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/libav/default.nix @@ -0,0 +1,46 @@ +{ stdenv +, lib +, fetchurl +, meson +, ninja +, pkgconfig +, python3 +, gst-plugins-base +, gettext +, libav +}: + +# Note that since gst-libav-1.6, libav is actually ffmpeg. See +# https://gstreamer.freedesktop.org/releases/1.6/ for more info. + +stdenv.mkDerivation rec { + pname = "gst-libav"; + version = "1.16.2"; + + src = fetchurl { + url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; + sha256 = "1wpfilc98bad9nsv3y1qapxp35dvn2mvwvrmqwrsj58cf09gc967"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ + meson + ninja + gettext + pkgconfig + python3 + ]; + + buildInputs = [ + gst-plugins-base + libav + ]; + + meta = with lib; { + description = "FFmpeg/libav plugin for GStreamer"; + homepage = "https://gstreamer.freedesktop.org"; + license = licenses.lgpl2Plus; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/rtsp-server/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/rtsp-server/default.nix new file mode 100644 index 000000000000..dfb18754c839 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/rtsp-server/default.nix @@ -0,0 +1,50 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, gettext +, gobject-introspection +, gst-plugins-base +, gst-plugins-bad +}: + +stdenv.mkDerivation rec { + pname = "gst-rtsp-server"; + version = "1.16.2"; + + src = fetchurl { + url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; + sha256 = "0vn23nxwvs96g7gcxw5zbnw23hkhky8a8r42wq68411vgf1s41yy"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ + meson + ninja + gettext + gobject-introspection + pkgconfig + ]; + + buildInputs = [ + gst-plugins-base + gst-plugins-bad + ]; + + mesonFlags = [ + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + ]; + + meta = with stdenv.lib; { + description = "GStreamer RTSP server"; + homepage = "https://gstreamer.freedesktop.org"; + longDescription = '' + A library on top of GStreamer for building an RTSP server. + ''; + license = licenses.lgpl2Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ bkchr ]; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/ugly/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/ugly/default.nix new file mode 100644 index 000000000000..870b4468860f --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/ugly/default.nix @@ -0,0 +1,76 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, python +, gst-plugins-base +, orc +, gettext +, a52dec +, libcdio +, libdvdread +, libmad +, libmpeg2 +, x264 +, libintl +, lib +, opencore-amr +, darwin +}: + +stdenv.mkDerivation rec { + pname = "gst-plugins-ugly"; + version = "1.16.2"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; + sha256 = "1jpvc32x6q01zjkfgh6gmq6aaikiyfwwnhj7bmvn52syhrdl202m"; + }; + + nativeBuildInputs = [ + meson + ninja + gettext + pkgconfig + python + ]; + + buildInputs = [ + gst-plugins-base + orc + a52dec + libcdio + libdvdread + libmad + libmpeg2 + x264 + libintl + opencore-amr + ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ + IOKit + CoreFoundation + DiskArbitration + ]); + + mesonFlags = [ + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + "-Dsidplay=disabled" # sidplay / sidplay/player.h isn't packaged in nixpkgs as of writing + ]; + + meta = with lib; { + description = "Gstreamer Ugly Plugins"; + homepage = "https://gstreamer.freedesktop.org"; + longDescription = '' + a set of plug-ins that have good quality and correct functionality, + but distributing them might pose problems. The license on either + the plug-ins or the supporting libraries might not be how we'd + like. The code might be widely known to present patent problems. + ''; + license = licenses.lgpl2Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ matthewbauer ]; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/vaapi/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/vaapi/default.nix new file mode 100644 index 000000000000..cac56f64cc91 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/vaapi/default.nix @@ -0,0 +1,72 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, gst-plugins-base +, bzip2 +, libva +, wayland +, libdrm +, udev +, xorg +, libGLU +, libGL +, gstreamer +, gst-plugins-bad +, nasm +, libvpx +, python +}: + +stdenv.mkDerivation rec { + pname = "gstreamer-vaapi"; + version = "1.16.2"; + + src = fetchurl { + url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; + sha256 = "00f6sx700qm1ximi1ag2c27m35dywwhhg6awhz85va34mfqff78r"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + bzip2 + ]; + + buildInputs = [ + gstreamer + gst-plugins-base + gst-plugins-bad + libva + wayland + libdrm + udev + xorg.libX11 + xorg.libXext + xorg.libXv + xorg.libXrandr + xorg.libSM + xorg.libICE + libGL + libGLU + nasm + libvpx + python + ]; + + mesonFlags = [ + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + ]; + + meta = with stdenv.lib; { + description = "Set of VAAPI GStreamer Plug-ins"; + homepage = "https://gstreamer.freedesktop.org"; + license = licenses.lgpl21Plus; + maintainers = with maintainers; [ tstrobel ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/validate/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/validate/default.nix new file mode 100644 index 000000000000..9439ddd94e8f --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/validate/default.nix @@ -0,0 +1,43 @@ +{ stdenv +, fetchurl +, pkgconfig +, gstreamer +, gst-plugins-base +, python +, gobject-introspection +, json-glib +}: + +stdenv.mkDerivation rec { + pname = "gst-validate"; + version = "1.16.2"; + + src = fetchurl { + url = "${meta.homepage}/src/${pname}/${pname}-${version}.tar.xz"; + sha256 = "1jpfrzg3yc6kp66bgq3jy14xsj3x71mk2zh0k16yf0326awwqqa8"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ + pkgconfig + gobject-introspection + ]; + + buildInputs = [ + python + json-glib + ]; + + propagatedBuildInputs = [ + gstreamer + gst-plugins-base + ]; + + meta = with stdenv.lib; { + description = "Integration testing infrastructure for the GStreamer framework"; + homepage = "https://gstreamer.freedesktop.org"; + license = licenses.lgpl2Plus; + platforms = platforms.unix; + }; +} |