From 4340a1582ffbd90f19e42f1480d36e17c0b515c7 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Thu, 1 Mar 2018 05:32:36 +0100 Subject: [PATCH] =?UTF-8?q?pitivi:=200.96=20=E2=86=92=200.99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkgs/applications/video/pitivi/default.nix | 61 ++++++++++++------- .../prevent-closure-contamination.patch | 23 +++++++ 2 files changed, 63 insertions(+), 21 deletions(-) create mode 100644 pkgs/applications/video/pitivi/prevent-closure-contamination.patch diff --git a/pkgs/applications/video/pitivi/default.nix b/pkgs/applications/video/pitivi/default.nix index 48074a86b55..6c92b9aeed6 100644 --- a/pkgs/applications/video/pitivi/default.nix +++ b/pkgs/applications/video/pitivi/default.nix @@ -1,61 +1,80 @@ { stdenv, fetchurl, pkgconfig, intltool, itstool, wrapGAppsHook , python3Packages, gst, gtk3, hicolor-icon-theme , gobjectIntrospection, librsvg, gnome3, libnotify -# for gst-transcoder: -, which, meson, ninja +, meson, ninja }: let - version = "0.96"; + version = "0.99"; # gst-transcoder will eventually be merged with gstreamer (according to # gst-transcoder 1.8.0 release notes). For now the only user is pitivi so we # don't bother exposing the package to all of nixpkgs. gst-transcoder = stdenv.mkDerivation rec { - name = "gst-transcoder-1.8.0"; + version = "1.12.2"; + name = "gst-transcoder-${version}"; src = fetchurl { name = "${name}.tar.gz"; - url = "https://github.com/pitivi/gst-transcoder/archive/1.8.0.tar.gz"; - sha256 = "0iggr6idmp7cmfsf6pkhfl3jq1bkga37jl5prbcl1zapkzi26fg6"; + url = "https://github.com/pitivi/gst-transcoder/archive/${version}.tar.gz"; + sha256 = "0cnwmrsd321s02ff91m3j27ydj7f8wks0jvmp5admlhka6z7zxm9"; }; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ which meson ninja gobjectIntrospection ] - ++ (with gst; [ gstreamer gst-plugins-base ]); + nativeBuildInputs = [ pkgconfig meson ninja gobjectIntrospection ]; + buildInputs = with gst; [ gstreamer gst-plugins-base ]; }; -in stdenv.mkDerivation rec { +in python3Packages.buildPythonApplication rec { name = "pitivi-${version}"; src = fetchurl { - url = "mirror://gnome/sources/pitivi/${version}/${name}.tar.xz"; - sha256 = "115d37mvi32yds8gqj2yidkk6pap7szavhjf2hw0388ynydlc2zs"; + url = "mirror://gnome/sources/pitivi/${gnome3.versionBranch version}/${name}.tar.xz"; + sha256 = "0z4gvcr0cvyz2by47f36nqf7x2kfv9wn382w9glhs7l0d7b2zl69"; }; - nativeBuildInputs = [ pkgconfig intltool itstool wrapGAppsHook ]; + format = "other"; + + patches = [ + # By default, the build picks up environment variables like PYTHONPATH + # and saves them to the generated binary. This would make the build-time + # dependencies part of the closure so we remove it. + ./prevent-closure-contamination.patch + ]; + + postPatch = '' + patchShebangs ./getenvvar.py + ''; + + nativeBuildInputs = [ meson ninja pkgconfig intltool itstool wrapGAppsHook ]; buildInputs = [ - gobjectIntrospection gtk3 librsvg gnome3.gnome-desktop + gobjectIntrospection gtk3 librsvg gnome3.gnome-desktop gnome3.gsound gnome3.defaultIconTheme gnome3.gsettings-desktop-schemas libnotify gst-transcoder ] ++ (with gst; [ gstreamer gst-editing-services - gst-plugins-base gst-plugins-good + gst-plugins-base (gst-plugins-good.override { gtkSupport = true; }) gst-plugins-bad gst-plugins-ugly gst-libav gst-validate - ]) ++ (with python3Packages; [ - python pygobject3 gst-python pyxdg numpy pycairo matplotlib - dbus-python ]); + pythonPath = with python3Packages; [ pygobject3 gst-python pyxdg numpy pycairo matplotlib dbus-python ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "pitivi"; + versionPolicy = "none"; # we are using dev version, since the stable one is too old + }; + }; + meta = with stdenv.lib; { description = "Non-Linear video editor utilizing the power of GStreamer"; - homepage = "http://pitivi.org/"; + homepage = http://pitivi.org/; longDescription = '' Pitivi is a video editor built upon the GStreamer Editing Services. It aims to be an intuitive and flexible application that can appeal to newbies and professionals alike. ''; - license = licenses.lgpl21Plus; - platforms = platforms.linux; + license = licenses.lgpl21Plus; + maintainers = with maintainers; []; + platforms = platforms.linux; }; } diff --git a/pkgs/applications/video/pitivi/prevent-closure-contamination.patch b/pkgs/applications/video/pitivi/prevent-closure-contamination.patch new file mode 100644 index 00000000000..0025ecd0a4c --- /dev/null +++ b/pkgs/applications/video/pitivi/prevent-closure-contamination.patch @@ -0,0 +1,23 @@ +--- a/meson.build ++++ b/meson.build +@@ -26,15 +26,15 @@ + geteenvvar = find_program('getenvvar.py') + cdata = configuration_data() + cdata.set('CONFIGURED_PYTHONPATH', +- run_command(geteenvvar, 'PYTHONPATH').stdout().strip()) ++ '') + cdata.set('CONFIGURED_GI_TYPELIB_PATH', +- run_command(geteenvvar, 'GI_TYPELIB_PATH').stdout().strip()) ++ '') + cdata.set('CONFIGURED_LD_LIBRARY_PATH', +- run_command(geteenvvar, 'LD_LIBRARY_PATH').stdout().strip()) ++ '') + cdata.set('CONFIGURED_GST_PLUGIN_PATH', +- run_command(geteenvvar, 'GST_PLUGIN_PATH').stdout().strip()) ++ '') + cdata.set('CONFIGURED_GST_PLUGIN_SYSTEM_PATH', +- run_command(geteenvvar, 'GST_PLUGIN_SYSTEM_PATH').stdout().strip()) ++ '') + cdata.set('LIBDIR', join_paths(get_option('prefix'), get_option('libdir'))) + cdata.set('DATADIR', join_paths(get_option('prefix'), get_option('datadir'))) + cdata.set('PACKAGE_NAME', 'Pitivi')