gstpad: Probes that return HANDLED can reset the data info field
[platform/upstream/gstreamer.git] / scripts / gst-uninstalled
1 #!/bin/bash -i
2 #
3 # this script is in git as gstreamer/scripts/gst-uninstalled
4 #
5 # It will set up the environment to use and develop gstreamer and projects
6 # that use gstreamer with an uninstalled git checkout of gstreamer and the
7 # plugin modules.
8 #
9 # It will set up LD_LIBRARY_PATH, DYLD_LIBRARY_PATH, PKG_CONFIG_PATH,
10 # GST_PLUGIN_PATH, GST_PLUGIN_SYSTEM_PATH, GST_REGISTRY, MANPATH, PYTHONPATH
11 # to prefer the uninstalled versions but also contain the installed ones.
12 # The only exception to this is, that no system installed plugins will be
13 # used but only the uninstalled ones.
14 #
15 # This script assumes that the relevant modules are checked out one by one
16 # under a given tree specified below in MYGST.
17 #
18 # Symlink this script in a directory in your path (for example $HOME/bin). You
19 # must name the symlink gst-something, where something is the subdirectory
20 # of MYGST that contains your gstreamer module checkouts.
21 #
22 # e.g.:
23 # - mkdir $HOME/gst/head
24 # - ln -sf gst-uninstalled $HOME/bin/gst-head
25 # - checkout copies of gstreamer modules in $HOME/gst/head
26 # - gst-head
27
28 # This script is run -i so that PS1 doesn't get cleared
29
30 if [ -z $GST_UNINSTALLED_ROOT ];
31 then
32     # Change this variable to the location of your gstreamer git checkouts
33     MYGST=$HOME/gst
34
35     #
36     # Everything below this line shouldn't be edited!
37     #
38
39     # extract version from $0
40     # if this script is called "gst-head" then version will be "head"
41     VERSION=`echo $0 | sed s/.*gst-//g`
42
43     # base path under which dirs are installed
44     GST=$MYGST/$VERSION
45 else
46     # Alternatively, you can set the GST_UNINSTALLED_ROOT environment variable to the
47     # location of your checkout and call this script directly.
48     #
49     # Ex: GST_UNINSTALLED_ROOT=$HOME/checkout/location gst-uninstalled
50
51     GST=$GST_UNINSTALLED_ROOT
52 fi
53
54 GST_PREFIX=$GST/prefix
55 if test ! -e $GST; then
56   echo "$GST does not exist !"
57   exit
58 fi
59
60 # set up a bunch of paths
61 PATH="\
62 $GST/gstreamer/tools:\
63 $GST/gst-plugins-base/tools:\
64 $GST/gst-player/src:\
65 $GST/gst-editor/src:\
66 $GST/gstreamer-sharp/tools:\
67 $GST/orc/tools:\
68 $GST_PREFIX/bin:\
69 $PATH"
70
71 # /some/path: makes the dynamic linker look in . too, so avoid this
72 LD_LIBRARY_PATH=$GST_PREFIX/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
73 DYLD_LIBRARY_PATH=$GST_PREFIX/lib${DYLD_LIBRARY_PATH:+:$DYLD_LIBRARY_PATH}
74 GI_TYPELIB_PATH=$GST_PREFIX/share/gir-1.0${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}
75
76 # Nice
77 LD_LIBRARY_PATH=$GST/libnice/nice/.libs:$LD_LIBRARY_PATH
78 DYLD_LIBRARY_PATH=$GST/libnice/nice/.libs:$DYLD_LIBRARY_PATH
79
80 # ORC
81 LD_LIBRARY_PATH=$GST/orc/orc/.libs:$GST/orc/orc-test/.libs:$LD_LIBRARY_PATH
82 DYLD_LIBRARY_PATH=$GST/orc/orc/.libs:$GST/orc/orc-test/.libs:$DYLD_LIBRARY_PATH
83
84 # GStreamer rtsp server library
85 LD_LIBRARY_PATH=$GST/gst-rtsp-server/gst/rtsp-server/.libs:$LD_LIBRARY_PATH
86 DYLD_LIBRARY_PATH=$GST/gst-rtsp-server/gst/rtsp-server/.libs:$DYLD_LIBRARY_PATH
87 GI_TYPELIB_PATH=$GST/gst-rtsp-server/gst/rtsp-server:$GI_TYPELIB_PATH
88
89 # GStreamer Editing Services library
90 LD_LIBRARY_PATH=$GST/gst-editing-services/ges/.libs:$LD_LIBRARY_PATH
91 DYLD_LIBRARY_PATH=$GST/gst-editing-services/ges/.libs:$DYLD_LIBRARY_PATH
92 GI_TYPELIB_PATH=$GST/gst-editing-services/ges:$GI_TYPELIB_PATH
93 PATH=$GST/gst-editing-services/tools:$PATH
94
95 # GStreamer plugins vaapi libraries
96 LD_LIBRARY_PATH=$GST/gstreamer-vaapi/gst-libs/gst/vaapi/.libs:$LD_LIBRARY_PATH
97 DYLD_LIBRARY_PATH=$GST/gstreamer-vaapi/gst-libs/gst/vaapi/.libs:$DYLD_LIBRARY_PATH
98
99 # GStreamer plugins base libraries
100 for path in allocators app audio fft gl pbutils riff rtp rtsp sdp tag utils video
101 do
102   LD_LIBRARY_PATH=$GST/gst-plugins-base/gst-libs/gst/$path/.libs:$LD_LIBRARY_PATH
103   DYLD_LIBRARY_PATH=$GST/gst-plugins-base/gst-libs/gst/$path/.libs:$DYLD_LIBRARY_PATH
104   GI_TYPELIB_PATH=$GST/gst-plugins-base/gst-libs/gst/$path:$GI_TYPELIB_PATH
105 done
106
107 # GStreamer plugins bad libraries
108 for path in adaptivedemux audio basecamerabinsrc codecparsers insertbin interfaces mpegts opencv player uridownloader video wayland webrtc
109 do
110   LD_LIBRARY_PATH=$GST/gst-plugins-bad/gst-libs/gst/$path/.libs:$LD_LIBRARY_PATH
111   DYLD_LIBRARY_PATH=$GST/gst-plugins-bad/gst-libs/gst/$path/.libs:$DYLD_LIBRARY_PATH
112   GI_TYPELIB_PATH=$GST/gst-plugins-bad/gst-libs/gst/$path:$GI_TYPELIB_PATH
113 done
114 export GST_HAAR_CASCADES_PATH=$GST/gst-plugins-bad/ext/opencv/
115
116 # GStreamer core libraries
117 for path in base check controller net
118 do
119   LD_LIBRARY_PATH=$GST/gstreamer/libs/gst/$path/.libs:$LD_LIBRARY_PATH
120   DYLD_LIBRARY_PATH=$GST/gstreamer/libs/gst/$path/.libs:$DYLD_LIBRARY_PATH
121   GI_TYPELIB_PATH=$GST/gstreamer/libs/gst/$path:$GI_TYPELIB_PATH
122 done
123 LD_LIBRARY_PATH=$GST/gstreamer/gst/.libs:$LD_LIBRARY_PATH
124 DYLD_LIBRARY_PATH=$GST/gstreamer/gst/.libs:$DYLD_LIBRARY_PATH
125 GI_TYPELIB_PATH=$GST/gstreamer/gst:$GI_TYPELIB_PATH
126 export LD_LIBRARY_PATH
127 export DYLD_LIBRARY_PATH
128 export GI_TYPELIB_PATH
129   
130 export PKG_CONFIG_PATH="\
131 $GST_PREFIX/lib/pkgconfig\
132 :$GST/gstreamer/pkgconfig\
133 :$GST/gst-plugins-base/pkgconfig\
134 :$GST/gst-plugins-good/pkgconfig\
135 :$GST/gst-plugins-ugly/pkgconfig\
136 :$GST/gst-plugins-bad/pkgconfig\
137 :$GST/gst-libav/pkgconfig\
138 :$GST/gst-ffmpeg/pkgconfig\
139 :$GST/gst-python/pkgconfig\
140 :$GST/gst-rtsp-server/pkgconfig\
141 :$GST/gst-editing-services/pkgconfig\
142 :$GST/gstreamer-sharp/pkgconfig\
143 :$GST/gstreamer-vaapi/pkgconfig\
144 :$GST/orc\
145 :$GST/farsight2\
146 :$GST/libnice/nice\
147 ${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
148
149 export GST_PLUGIN_PATH="\
150 $GST/gstreamer/plugins\
151 :$GST/gst-plugins-base/ext\
152 :$GST/gst-plugins-base/gst\
153 :$GST/gst-plugins-base/sys\
154 :$GST/gst-plugins-good/ext\
155 :$GST/gst-plugins-good/gst\
156 :$GST/gst-plugins-good/sys\
157 :$GST/gst-plugins-ugly/ext\
158 :$GST/gst-plugins-ugly/gst\
159 :$GST/gst-plugins-ugly/sys\
160 :$GST/gst-plugins-bad/ext\
161 :$GST/gst-plugins-bad/gst\
162 :$GST/gst-plugins-bad/sys\
163 :$GST/gst-libav/ext/\
164 :$GST/gst-ffmpeg/ext/\
165 :$GST/gst-omx/omx/.libs\
166 :$GST/clutter-gst/clutter-gst/.libs\
167 :$GST/gstreamer-vaapi/gst/vaapi/.libs\
168 :$GST/plugins\
169 :$GST/farsight2/gst\
170 :$GST/farsight2/transmitters\
171 :$GST/libnice/gst\
172 :$GST/gst-rpicamsrc/src/.libs\
173 :$GST/gst-rtsp-server/gst/rtsp-sink/.libs\
174 :$GST/gst-editing-services/plugins/nle/.libs\
175 :$GST/prefix/lib/gstreamer-1.0\
176 ${GST_PLUGIN_PATH:+:$GST_PLUGIN_PATH}"
177
178 export GST_PRESET_PATH="\
179 $GST/gst-plugins-good/gst/equalizer/\
180 :$GST/gst-plugins-good/gst/equalizer\
181 :$GST/gst-plugins-good/ext/vpx/\
182 :$GST/gst-plugins-ugly/ext/x264\
183 :$GST/gst-plugins-ugly/ext/amrnb\
184 :$GST/gst-plugins-bad/gst/freeverb\
185 :$GST/gst-plugins-bad/ext/voamrwbenc\
186 ${GST_PRESET_PATH:+:$GST_PRESET_PATH}"
187
188 # don't use any system-installed plug-ins at all
189 export GST_PLUGIN_SYSTEM_PATH=
190 # set our registry somewhere else so we don't mess up the registry generated
191 # by an installed copy
192 rm -f $GST/gstreamer/registry.xml 2>/dev/null
193 export GST_REGISTRY=$GST/gstreamer/registry.dat
194 # Point at the uninstalled plugin scanner
195 export GST_PLUGIN_SCANNER=$GST/gstreamer/libs/gst/helpers/gst-plugin-scanner
196 # Point at the uninstalled PTP helper
197 export GST_PTP_HELPER=$GST/gstreamer/libs/gst/helpers/.libs/gst-ptp-helper
198
199 # once MANPATH is set, it needs at least an "empty"component to keep pulling
200 # in the system-configured man paths from man.config
201 # this still doesn't make it work for the uninstalled case, since man goes
202 # look for a man directory "nearby" instead of the directory I'm telling it to
203 export MANPATH=$GST/gstreamer/tools:$GST_PREFIX/share/man:$GST/gst-editing-services/docs/man/:$MANPATH
204 if [ -z "$PYTHON" ]; then PYTHON="python3"; fi
205 pythonver=`$PYTHON -c "import sys; print (sys.version[:3])"`
206 pythonsites=`$PYTHON -c "import site; print(':'.join(site.getsitepackages()))"`
207 export PYTHONPATH="${PYTHONPATH}:${pythonsites}:${GST}/gst-python"
208
209 # clutter-gst
210 export PKG_CONFIG_PATH=$GST/clutter-gst:$PKG_CONFIG_PATH
211 export LD_LIBRARY_PATH=$GST/clutter-gst/clutter-gst/.libs:$LD_LIBRARY_PATH
212 export DYLD_LIBRARY_PATH=$GST/clutter-gst/clutter-gst/.libs:$DYLD_LIBRARY_PATH
213
214 # totem-pl-parser
215 export PKG_CONFIG_PATH=$GST/totem-pl-parser:$PKG_CONFIG_PATH
216 export LD_LIBRARY_PATH=$GST/totem-pl-parser/plparse/.libs:$LD_LIBRARY_PATH
217 export DYLD_LIBRARY_PATH=$GST/totem-pl-parser/plparse/.libs:$DYLD_LIBRARY_PATH
218
219 # totem
220 export PATH=$GST/totem/src:$PATH
221
222 # gstreamer-sharp
223 export MONO_PATH=$GST/gstreamer-sharp/gstreamer-sharp:$MONO_PATH
224 export LD_LIBRARY_PATH=$GST/gstreamer-sharp/gstreamer-sharp/glue/.libs:$LD_LIBRARY_PATH
225 export DYLD_LIBRARY_PATH=$GST/gstreamer-sharp/gstreamer-sharp/glue/.libs:$DYLD_LIBRARY_PATH
226
227 # gst-devtools/validate
228 export PATH=$GST/gst-devtools/validate/tools:$PATH
229 export PKG_CONFIG_PATH=$GST/gst-devtools/validate/pkgconfig:$PKG_CONFIG_PATH
230 export GST_VALIDATE_SCENARIOS_PATH=$GST/gst-devtools/validate/data/scenarios:$GST_VALIDATE_SCENARIOS_PATH
231 export GST_VALIDATE_APPS_DIR=$GST_VALIDATE_APPS_DIR:$GST/gst-editing-services/tests/validate/
232 export GST_VALIDATE_PLUGIN_PATH=$GST_VALIDATE_PLUGIN_PATH:$GST/gst-devtools/validate/plugins/
233 export GIO_EXTRA_MODULES=$GST/prefix/lib/gio/modules:$GIO_EXTRA_MODULES
234
235 if [ -d "$GST/gst-libav" -a -d "$GST/gst-ffmpeg" ]; then
236   echo
237   echo "====================================================================="
238   echo " You have both an uninstalled gst-ffmpeg checkout and a gst-libav"
239   echo " checkout. You need to remove one of those. You should remove"
240   echo
241   echo "   $GST/gst-ffmpeg"
242   echo
243   echo " since gst-libav replaces gst-ffmpeg."
244   echo "====================================================================="
245   echo
246 fi
247
248 # if we got a command, run it, else start a shell
249 if test ! -z "$1";
250 then
251   $@
252   exit $?
253 fi
254
255 # set up prompt to help us remember we're in a subshell, cd to
256 # the gstreamer base dir and start $SHELL
257 cd $GST
258 shell=$SHELL
259 if test "x$SHELL" = "x/bin/bash"
260 then
261   # debian/ubuntu resets our PS1.  bastards.
262   shell="$SHELL --noprofile"
263 fi
264 PS1="[gst-$VERSION] $PS1" $shell
265