mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-27 18:50:48 +00:00
260 lines
9.3 KiB
Bash
Executable file
260 lines
9.3 KiB
Bash
Executable file
#!/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 gl 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 basecamerabinsrc codecparsers insertbin interfaces mpegts opencv player uridownloader video wayland webrtc
|
|
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
|
|
|