Blame scripts/gst-uninstalled

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