diff options
Diffstat (limited to 'gst-p-ugly-cleanup.sh')
-rwxr-xr-x | gst-p-ugly-cleanup.sh | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/gst-p-ugly-cleanup.sh b/gst-p-ugly-cleanup.sh new file mode 100755 index 0000000..2e1a149 --- /dev/null +++ b/gst-p-ugly-cleanup.sh @@ -0,0 +1,98 @@ +#!/bin/sh + +# Process a gst-plugins-ugly tarball to remove +# unwanted GStreamer plugins. +# +# See https://bugzilla.redhat.com/show_bug.cgi?id=1397261 +# for details +# +# Bastien Nocera <bnocera@redhat.com> - 2010 +# Yaakov Selkowitz <yselkowi@redhat.com> - 2016 +# + +SOURCE="$1" +NEW_SOURCE=`echo $SOURCE | sed 's/ugly-/ugly-free-/'` +DIRECTORY=`echo $SOURCE | sed 's/\.tar\.xz//'` + +ALLOWED=" +xingmux +" + +NOT_ALLOWED=" +asfdemux +dvdlpcmdec +dvdsub +realmedia +" + +error() +{ + MESSAGE=$1 + echo $MESSAGE + exit 1 +} + +check_allowed() +{ + MODULE=$1 + for i in $ALLOWED ; do + if test x$MODULE = x$i ; then + return 0; + fi + done + # Ignore errors coming from ext/ directory + # they require external libraries so are ineffective anyway + return 1; +} + +check_not_allowed() +{ + MODULE=$1 + for i in $NOT_ALLOWED ; do + if test x$MODULE = x$i ; then + return 0; + fi + done + return 1; +} + +rm -rf $DIRECTORY +tar xJf $SOURCE || error "Cannot unpack $SOURCE" +pushd $DIRECTORY > /dev/null || error "Cannot open directory \"$DIRECTORY\"" + +unknown="" +for subdir in gst ext; do + for dir in $subdir/* ; do + # Don't touch non-directories + if ! [ -d $dir ] ; then + continue; + fi + MODULE=`basename $dir` + if ( check_not_allowed $MODULE ) ; then + echo "**** Removing $MODULE ****" + echo "Removing directory $dir" + rm -r $dir || error "Cannot remove $dir" + echo + elif test $subdir = ext || test $subdir = sys; then + # Ignore library or system non-blacklisted plugins + continue; + elif ! ( check_allowed $MODULE ) ; then + echo "Unknown module in $dir" + unknown="$unknown $dir" + fi + done +done + +echo + +if test "x$unknown" != "x"; then + echo -n "Aborting due to unknown modules: " + echo "$unknown" | sed "s/ /\n /g" + exit 1 +fi + +popd > /dev/null + +tar cJf $NEW_SOURCE $DIRECTORY +echo "$NEW_SOURCE is ready to use" + |