Blame SOURCES/gst-p-ugly-cleanup.sh

f2c8ed
#!/bin/sh
f2c8ed
f2c8ed
# Process a gst-plugins-ugly tarball to remove
f2c8ed
# unwanted GStreamer plugins.
f2c8ed
#
f2c8ed
# See https://bugzilla.redhat.com/show_bug.cgi?id=1397261
f2c8ed
# for details
f2c8ed
#
f2c8ed
# Bastien Nocera <bnocera@redhat.com> - 2010
f2c8ed
# Yaakov Selkowitz <yselkowi@redhat.com> - 2016
f2c8ed
#
f2c8ed
f2c8ed
SOURCE="$1"
f2c8ed
NEW_SOURCE=`echo $SOURCE | sed 's/ugly-/ugly-free-/'`
f2c8ed
DIRECTORY=`echo $SOURCE | sed 's/\.tar\.xz//'`
f2c8ed
f2c8ed
ALLOWED="
f2c8ed
xingmux
f2c8ed
"
f2c8ed
f2c8ed
NOT_ALLOWED="
f2c8ed
asfdemux
f2c8ed
dvdlpcmdec
f2c8ed
dvdsub
f2c8ed
realmedia
f2c8ed
"
f2c8ed
f2c8ed
error()
f2c8ed
{
f2c8ed
	MESSAGE=$1
f2c8ed
	echo $MESSAGE
f2c8ed
	exit 1
f2c8ed
}
f2c8ed
f2c8ed
check_allowed()
f2c8ed
{
f2c8ed
	MODULE=$1
f2c8ed
	for i in $ALLOWED ; do
f2c8ed
		if test x$MODULE = x$i ; then
f2c8ed
			return 0;
f2c8ed
		fi
f2c8ed
	done
f2c8ed
	# Ignore errors coming from ext/ directory
f2c8ed
	# they require external libraries so are ineffective anyway
f2c8ed
	return 1;
f2c8ed
}
f2c8ed
f2c8ed
check_not_allowed()
f2c8ed
{
f2c8ed
	MODULE=$1
f2c8ed
	for i in $NOT_ALLOWED ; do
f2c8ed
		if test x$MODULE = x$i ; then
f2c8ed
			return 0;
f2c8ed
		fi
f2c8ed
	done
f2c8ed
	return 1;
f2c8ed
}
f2c8ed
f2c8ed
rm -rf $DIRECTORY
f2c8ed
tar xJf $SOURCE || error "Cannot unpack $SOURCE"
f2c8ed
pushd $DIRECTORY > /dev/null || error "Cannot open directory \"$DIRECTORY\""
f2c8ed
f2c8ed
unknown=""
f2c8ed
for subdir in gst ext; do
f2c8ed
	for dir in $subdir/* ; do
f2c8ed
		# Don't touch non-directories
f2c8ed
		if ! [ -d $dir ] ; then
f2c8ed
			continue;
f2c8ed
		fi
f2c8ed
		MODULE=`basename $dir`
f2c8ed
		if ( check_not_allowed $MODULE ) ; then
f2c8ed
			echo "**** Removing $MODULE ****"
f2c8ed
			echo "Removing directory $dir"
f2c8ed
			rm -r $dir || error "Cannot remove $dir"
f2c8ed
			if grep -q "AG_GST_CHECK_PLUGIN($MODULE)" configure.ac ; then
f2c8ed
				echo "Removing element check for $MODULE"
f2c8ed
				grep -v "AG_GST_CHECK_PLUGIN($MODULE)" configure.ac > configure.ac.new && mv configure.ac.new configure.ac
f2c8ed
			fi
f2c8ed
			echo "Removing Makefile generation for $MODULE"
f2c8ed
			grep -v "$dir/Makefile" configure.ac > configure.ac.new && mv configure.ac.new configure.ac
f2c8ed
			echo "Removing documentation for $MODULE"
f2c8ed
			if grep -q "$MODULE" docs/plugins/Makefile.am ; then
f2c8ed
				grep -v $dir docs/plugins/Makefile.am > docs/plugins/Makefile.am.new && mv docs/plugins/Makefile.am.new docs/plugins/Makefile.am
f2c8ed
			fi
f2c8ed
			echo
f2c8ed
		elif test $subdir = ext  || test $subdir = sys; then
f2c8ed
			# Ignore library or system non-blacklisted plugins
f2c8ed
			continue;
f2c8ed
		elif ! ( check_allowed $MODULE ) ; then
f2c8ed
			echo "Unknown module in $dir"
f2c8ed
			unknown="$unknown $dir"
f2c8ed
		fi
f2c8ed
	done
f2c8ed
done
f2c8ed
f2c8ed
echo "Fixing up AC_CONFIG_SRCDIR"
f2c8ed
sed -e '/AC_CONFIG_SRCDIR/s/asfdemux/xingmux/g' configure.ac > configure.ac.new && mv configure.ac.new configure.ac
f2c8ed
f2c8ed
echo "Fixing up docs/plugins/Makefile.am"
f2c8ed
sed -e ':a;N;$!ba;s| *\\\n\n|\n\n|g' docs/plugins/Makefile.am > docs/plugins/Makefile.am.new && mv docs/plugins/Makefile.am.new docs/plugins/Makefile.am
f2c8ed
f2c8ed
echo
f2c8ed
f2c8ed
if test "x$unknown" != "x"; then
f2c8ed
  echo -n "Aborting due to unknown modules: "
f2c8ed
  echo "$unknown" | sed "s/ /\n  /g"
f2c8ed
  exit 1
f2c8ed
fi
f2c8ed
f2c8ed
autoreconf
f2c8ed
f2c8ed
popd > /dev/null
f2c8ed
f2c8ed
tar cJf $NEW_SOURCE $DIRECTORY
f2c8ed
echo "$NEW_SOURCE is ready to use"
f2c8ed