| #!/bin/bash -i | |
| # | |
| # this script is in git as gstreamer/scripts/gst-uninstalled | |
| # | |
| # It will set up the environment to use and develop gstreamer and projects | |
| # that use gstreamer with an uninstalled git checkout of gstreamer and the | |
| # plugin modules. | |
| # | |
| # It will set up LD_LIBRARY_PATH, DYLD_LIBRARY_PATH, PKG_CONFIG_PATH, | |
| # GST_PLUGIN_PATH, GST_PLUGIN_SYSTEM_PATH, GST_REGISTRY, MANPATH, PYTHONPATH | |
| # to prefer the uninstalled versions but also contain the installed ones. | |
| # The only exception to this is, that no system installed plugins will be | |
| # used but only the uninstalled ones. | |
| # | |
| # This script assumes that the relevant modules are checked out one by one | |
| # under a given tree specified below in MYGST. | |
| # | |
| # Symlink this script in a directory in your path (for example $HOME/bin). You | |
| # must name the symlink gst-something, where something is the subdirectory | |
| # of MYGST that contains your gstreamer module checkouts. | |
| # | |
| # e.g.: | |
| # - mkdir $HOME/gst/head | |
| # - ln -sf gst-uninstalled $HOME/bin/gst-head | |
| # - checkout copies of gstreamer modules in $HOME/gst/head | |
| # - gst-head | |
| # This script is run -i so that PS1 doesn't get cleared | |
| if [ -z $GST_UNINSTALLED_ROOT ]; | |
| then | |
| # Change this variable to the location of your gstreamer git checkouts | |
| MYGST=$HOME/gst | |
| # | |
| # Everything below this line shouldn't be edited! | |
| # | |
| # extract version from $0 | |
| # if this script is called "gst-head" then version will be "head" | |
| VERSION=`echo $0 | sed s/.*gst-//g` | |
| # base path under which dirs are installed | |
| GST=$MYGST/$VERSION | |
| else | |
| # Alternatively, you can set the GST_UNINSTALLED_ROOT environment variable to the | |
| # location of your checkout and call this script directly. | |
| # | |
| # Ex: GST_UNINSTALLED_ROOT=$HOME/checkout/location gst-uninstalled | |
| GST=$GST_UNINSTALLED_ROOT | |
| fi | |
| GST_PREFIX=$GST/prefix | |
| if test ! -e $GST; then | |
| echo "$GST does not exist !" | |
| exit | |
| fi | |
| # set up a bunch of paths | |
| PATH="\ | |
| $GST/gstreamer/tools:\ | |
| $GST/gst-plugins-base/tools:\ | |
| $GST/gst-player/src:\ | |
| $GST/gst-editor/src:\ | |
| $GST/gstreamer-sharp/tools:\ | |
| $GST/orc/tools:\ | |
| $GST_PREFIX/bin:\ | |
| $PATH" | |
| # /some/path: makes the dynamic linker look in . too, so avoid this | |
| LD_LIBRARY_PATH=$GST_PREFIX/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} | |
| DYLD_LIBRARY_PATH=$GST_PREFIX/lib${DYLD_LIBRARY_PATH:+:$DYLD_LIBRARY_PATH} | |
| GI_TYPELIB_PATH=$GST_PREFIX/share/gir-1.0${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH} | |
| # ORC | |
| LD_LIBRARY_PATH=$GST/orc/orc/.libs:$GST/orc/orc-test/.libs:$LD_LIBRARY_PATH | |
| DYLD_LIBRARY_PATH=$GST/orc/orc/.libs:$GST/orc/orc-test/.libs:$DYLD_LIBRARY_PATH | |
| # GStreamer rtsp server library | |
| LD_LIBRARY_PATH=$GST/gst-rtsp-server/gst/rtsp-server/.libs:$LD_LIBRARY_PATH | |
| DYLD_LIBRARY_PATH=$GST/gst-rtsp-server/gst/rtsp-server/.libs:$DYLD_LIBRARY_PATH | |
| GI_TYPELIB_PATH=$GST/gst-rtsp-server/gst/rtsp-server:$GI_TYPELIB_PATH | |
| # GStreamer Editing Services library | |
| LD_LIBRARY_PATH=$GST/gst-editing-services/ges/.libs:$LD_LIBRARY_PATH | |
| DYLD_LIBRARY_PATH=$GST/gst-editing-services/ges/.libs:$DYLD_LIBRARY_PATH | |
| GI_TYPELIB_PATH=$GST/gst-editing-services/ges:$GI_TYPELIB_PATH | |
| PATH=$GST/gst-editing-services/tools:$PATH | |
| # GStreamer plugins vaapi libraries | |
| LD_LIBRARY_PATH=$GST/gstreamer-vaapi/gst-libs/gst/vaapi/.libs:$LD_LIBRARY_PATH | |
| DYLD_LIBRARY_PATH=$GST/gstreamer-vaapi/gst-libs/gst/vaapi/.libs:$DYLD_LIBRARY_PATH | |
| # GStreamer plugins base libraries | |
| for path in allocators app audio fft pbutils riff rtp rtsp sdp tag utils video | |
| do | |
| LD_LIBRARY_PATH=$GST/gst-plugins-base/gst-libs/gst/$path/.libs:$LD_LIBRARY_PATH | |
| DYLD_LIBRARY_PATH=$GST/gst-plugins-base/gst-libs/gst/$path/.libs:$DYLD_LIBRARY_PATH | |
| GI_TYPELIB_PATH=$GST/gst-plugins-base/gst-libs/gst/$path:$GI_TYPELIB_PATH | |
| done | |
| # GStreamer plugins bad libraries | |
| for path in adaptivedemux audio base basecamerabinsrc codecparsers gl insertbin interfaces mpegts opencv player uridownloader video wayland | |
| do | |
| LD_LIBRARY_PATH=$GST/gst-plugins-bad/gst-libs/gst/$path/.libs:$LD_LIBRARY_PATH | |
| DYLD_LIBRARY_PATH=$GST/gst-plugins-bad/gst-libs/gst/$path/.libs:$DYLD_LIBRARY_PATH | |
| GI_TYPELIB_PATH=$GST/gst-plugins-bad/gst-libs/gst/$path:$GI_TYPELIB_PATH | |
| done | |
| export GST_HAAR_CASCADES_PATH=$GST/gst-plugins-bad/ext/opencv/ | |
| # GStreamer core libraries | |
| for path in base check controller net | |
| do | |
| LD_LIBRARY_PATH=$GST/gstreamer/libs/gst/$path/.libs:$LD_LIBRARY_PATH | |
| DYLD_LIBRARY_PATH=$GST/gstreamer/libs/gst/$path/.libs:$DYLD_LIBRARY_PATH | |
| GI_TYPELIB_PATH=$GST/gstreamer/libs/gst/$path:$GI_TYPELIB_PATH | |
| done | |
| LD_LIBRARY_PATH=$GST/gstreamer/gst/.libs:$LD_LIBRARY_PATH | |
| DYLD_LIBRARY_PATH=$GST/gstreamer/gst/.libs:$DYLD_LIBRARY_PATH | |
| GI_TYPELIB_PATH=$GST/gstreamer/gst:$GI_TYPELIB_PATH | |
| export LD_LIBRARY_PATH | |
| export DYLD_LIBRARY_PATH | |
| export GI_TYPELIB_PATH | |
| export PKG_CONFIG_PATH="\ | |
| $GST_PREFIX/lib/pkgconfig\ | |
| :$GST/gstreamer/pkgconfig\ | |
| :$GST/gst-plugins-base/pkgconfig\ | |
| :$GST/gst-plugins-good/pkgconfig\ | |
| :$GST/gst-plugins-ugly/pkgconfig\ | |
| :$GST/gst-plugins-bad/pkgconfig\ | |
| :$GST/gst-libav/pkgconfig\ | |
| :$GST/gst-ffmpeg/pkgconfig\ | |
| :$GST/gst-python/pkgconfig\ | |
| :$GST/gst-rtsp-server/pkgconfig\ | |
| :$GST/gst-editing-services/pkgconfig\ | |
| :$GST/gstreamer-sharp/pkgconfig\ | |
| :$GST/gstreamer-vaapi/pkgconfig\ | |
| :$GST/orc\ | |
| :$GST/farsight2\ | |
| :$GST/libnice/nice\ | |
| ${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" | |
| export GST_PLUGIN_PATH="\ | |
| $GST/gstreamer/plugins\ | |
| :$GST/gst-plugins-base/ext\ | |
| :$GST/gst-plugins-base/gst\ | |
| :$GST/gst-plugins-base/sys\ | |
| :$GST/gst-plugins-good/ext\ | |
| :$GST/gst-plugins-good/gst\ | |
| :$GST/gst-plugins-good/sys\ | |
| :$GST/gst-plugins-ugly/ext\ | |
| :$GST/gst-plugins-ugly/gst\ | |
| :$GST/gst-plugins-ugly/sys\ | |
| :$GST/gst-plugins-bad/ext\ | |
| :$GST/gst-plugins-bad/gst\ | |
| :$GST/gst-plugins-bad/sys\ | |
| :$GST/gst-libav/ext/\ | |
| :$GST/gst-ffmpeg/ext/\ | |
| :$GST/gst-omx/omx/.libs\ | |
| :$GST/clutter-gst/clutter-gst/.libs\ | |
| :$GST/gstreamer-vaapi/gst/vaapi/.libs\ | |
| :$GST/plugins\ | |
| :$GST/farsight2/gst\ | |
| :$GST/farsight2/transmitters\ | |
| :$GST/libnice/gst\ | |
| :$GST/gst-rpicamsrc/src/.libs\ | |
| :$GST/gst-rtsp-server/gst/rtsp-sink/.libs\ | |
| :$GST/gst-editing-services/plugins/nle/.libs\ | |
| ${GST_PLUGIN_PATH:+:$GST_PLUGIN_PATH}" | |
| export GST_PRESET_PATH="\ | |
| $GST/gst-plugins-good/gst/equalizer/\ | |
| :$GST/gst-plugins-good/gst/equalizer\ | |
| :$GST/gst-plugins-good/ext/vpx/\ | |
| :$GST/gst-plugins-ugly/ext/x264\ | |
| :$GST/gst-plugins-ugly/ext/amrnb\ | |
| :$GST/gst-plugins-bad/gst/freeverb\ | |
| :$GST/gst-plugins-bad/ext/voamrwbenc\ | |
| ${GST_PRESET_PATH:+:$GST_PRESET_PATH}" | |
| # don't use any system-installed plug-ins at all | |
| export GST_PLUGIN_SYSTEM_PATH= | |
| # set our registry somewhere else so we don't mess up the registry generated | |
| # by an installed copy | |
| rm -f $GST/gstreamer/registry.xml 2>/dev/null | |
| export GST_REGISTRY=$GST/gstreamer/registry.dat | |
| # Point at the uninstalled plugin scanner | |
| export GST_PLUGIN_SCANNER=$GST/gstreamer/libs/gst/helpers/gst-plugin-scanner | |
| # Point at the uninstalled PTP helper | |
| export GST_PTP_HELPER=$GST/gstreamer/libs/gst/helpers/.libs/gst-ptp-helper | |
| # once MANPATH is set, it needs at least an "empty"component to keep pulling | |
| # in the system-configured man paths from man.config | |
| # this still doesn't make it work for the uninstalled case, since man goes | |
| # look for a man directory "nearby" instead of the directory I'm telling it to | |
| export MANPATH=$GST/gstreamer/tools:$GST_PREFIX/share/man:$GST/gst-editing-services/docs/man/:$MANPATH | |
| if [ -z "$PYTHON" ]; then PYTHON="python3"; fi | |
| pythonver=`$PYTHON -c "import sys; print (sys.version[:3])"` | |
| pythonsites=`$PYTHON -c "import site; print(':'.join(site.getsitepackages()))"` | |
| export PYTHONPATH="${PYTHONPATH}:${pythonsites}:${GST}/gst-python" | |
| # clutter-gst | |
| export PKG_CONFIG_PATH=$GST/clutter-gst:$PKG_CONFIG_PATH | |
| export LD_LIBRARY_PATH=$GST/clutter-gst/clutter-gst/.libs:$LD_LIBRARY_PATH | |
| export DYLD_LIBRARY_PATH=$GST/clutter-gst/clutter-gst/.libs:$DYLD_LIBRARY_PATH | |
| # totem-pl-parser | |
| export PKG_CONFIG_PATH=$GST/totem-pl-parser:$PKG_CONFIG_PATH | |
| export LD_LIBRARY_PATH=$GST/totem-pl-parser/plparse/.libs:$LD_LIBRARY_PATH | |
| export DYLD_LIBRARY_PATH=$GST/totem-pl-parser/plparse/.libs:$DYLD_LIBRARY_PATH | |
| # totem | |
| export PATH=$GST/totem/src:$PATH | |
| # gstreamer-sharp | |
| export MONO_PATH=$GST/gstreamer-sharp/gstreamer-sharp:$MONO_PATH | |
| export LD_LIBRARY_PATH=$GST/gstreamer-sharp/gstreamer-sharp/glue/.libs:$LD_LIBRARY_PATH | |
| export DYLD_LIBRARY_PATH=$GST/gstreamer-sharp/gstreamer-sharp/glue/.libs:$DYLD_LIBRARY_PATH | |
| # gst-devtools/validate | |
| export PATH=$GST/gst-devtools/validate/tools:$PATH | |
| export PKG_CONFIG_PATH=$GST/gst-devtools/validate/pkgconfig:$PKG_CONFIG_PATH | |
| export GST_VALIDATE_SCENARIOS_PATH=$GST/gst-devtools/validate/data/scenarios:$GST_VALIDATE_SCENARIOS_PATH | |
| export GST_VALIDATE_APPS_DIR=$GST_VALIDATE_APPS_DIR:$GST/gst-editing-services/tests/validate/ | |
| export GST_VALIDATE_PLUGIN_PATH=$GST_VALIDATE_PLUGIN_PATH:$GST/gst-devtools/validate/plugins/ | |
| export GIO_EXTRA_MODULES=$GST/prefix/lib/gio/modules:$GIO_EXTRA_MODULES | |
| if [ -d "$GST/gst-libav" -a -d "$GST/gst-ffmpeg" ]; then | |
| echo | |
| echo "=====================================================================" | |
| echo " You have both an uninstalled gst-ffmpeg checkout and a gst-libav" | |
| echo " checkout. You need to remove one of those. You should remove" | |
| echo | |
| echo " $GST/gst-ffmpeg" | |
| echo | |
| echo " since gst-libav replaces gst-ffmpeg." | |
| echo "=====================================================================" | |
| echo | |
| fi | |
| # if we got a command, run it, else start a shell | |
| if test ! -z "$1"; | |
| then | |
| $@ | |
| exit $? | |
| fi | |
| # set up prompt to help us remember we're in a subshell, cd to | |
| # the gstreamer base dir and start $SHELL | |
| cd $GST | |
| shell=$SHELL | |
| if test "x$SHELL" = "x/bin/bash" | |
| then | |
| # debian/ubuntu resets our PS1. bastards. | |
| shell="$SHELL --noprofile" | |
| fi | |
| PS1="[gst-$VERSION] $PS1" $shell | |