1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
|
{ stdenv
, fetchFromGitHub
, fetchurl
, fetchpatch
, pkg-config
, gettext
, itstool
, python3
, wrapGAppsHook
, python3Packages
, gst_all_1
, gtk3
, gobject-introspection
, librsvg
, gnome3
, libnotify
, gsound
, meson
, ninja
, gsettings-desktop-schemas
}:
let
# gst-transcoder was merged with gst-plugins-bad 1.18.
# TODO: switch to that once available.
gst-transcoder = stdenv.mkDerivation rec {
version = "1.14.1";
pname = "gst-transcoder";
src = fetchFromGitHub {
owner = "pitivi";
repo = "gst-transcoder";
rev = version;
sha256 = "16skiz9akavssii529v9nr8zd54w43livc14khdyzv164djg9q8f";
};
nativeBuildInputs = [
pkg-config
meson
ninja
gobject-introspection
python3
];
buildInputs = with gst_all_1; [
gstreamer
gst-plugins-base
];
};
in python3Packages.buildPythonApplication rec {
pname = "pitivi";
version = "0.999";
format = "other";
src = fetchurl {
url = "mirror://gnome/sources/pitivi/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0mxp2p4gg976fp1vj3rb5rmpl5mqfzncm9vw2719irl32f1qlvyb";
};
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
# Port from intltool to gettext.
# Needed for the following patches to apply.
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/pitivi/commit/89b1053f2516c594f414c5c67c835471bce44b67.patch";
sha256 = "8yhArzAtZC+WjHftcSDrstBlT8j6WlGHffU9Nj+ny+c=";
excludes = [ "po/POTFILES.in" ];
})
# Complete switching to gst-transcoder in gst-plugins-bad.
# Otherwise there will likely be conflics.
# TODO: Apply this patch once we are using gst-transcoder from gst-plugins-bad.
# (fetchpatch {
# url = "https://gitlab.gnome.org/GNOME/pitivi/commit/51ae6533ee26ffd47e453eb5f5ad8cd46f57d15e.patch";
# sha256 = "zxJm+E5o+oZ3lW6wYNY/ERo2g4NmCjoY8oV+uScq8j8=";
# })
# Generate renderer.so on macOS instead of dylib.
# Needed for the following patch to apply.
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/pitivi/commit/bcacadcafabf8911efb0fddc8d57329237d08cd1.patch";
sha256 = "2BM5acIwOgdr1L9vhtMMN4trrLuqCg/K6v6ZYtD1Fjw=";
postFetch = ''
sed -i -e "s/1.90.0.1/0.999/g" "$out"
'';
})
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/pitivi/commit/0a3cc054a2c20b59f5aaaaa307de3c9af3c0d270.patch";
sha256 = "6DhqRlxFWFFdLwGoFem+vPt8x7v732KMVjMF9fypMK4=";
postFetch = ''
sed "$out" -i \
-e "s/1.90.0.1/0.999/g" \
-e "s/\(-python_dep.*\)/\1\n /" \
-e "s/-1,9 +1,16/-1,10 +1,17/"
'';
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
itstool
python3
wrapGAppsHook
];
buildInputs = [
gobject-introspection
gtk3
librsvg
gnome3.gnome-desktop
gsound
gnome3.adwaita-icon-theme
gsettings-desktop-schemas
libnotify
gst-transcoder
] ++ (with gst_all_1; [
gstreamer
gst-editing-services
gst-plugins-base
(gst-plugins-good.override { gtkSupport = true; })
gst-plugins-bad
gst-plugins-ugly
gst-libav
gst-validate
]);
pythonPath = with python3Packages; [
pygobject3
gst-python
pyxdg
numpy
pycairo
matplotlib
dbus-python
];
postPatch = ''
patchShebangs ./getenvvar.py
# fetchpatch does not support renamings
mv data/org.pitivi.Pitivi-mime.xml data/org.pitivi.Pitivi-mime.xml.in
'';
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/";
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;
maintainers = with maintainers; [];
platforms = platforms.linux;
};
}
|