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

9ac2ee
#!/bin/sh
9ac2ee
9ac2ee
# Process a gst-plugins-bad tarball to remove
9ac2ee
# unwanted GStreamer plugins.
9ac2ee
#
9ac2ee
# See https://bugzilla.redhat.com/show_bug.cgi?id=532470
9ac2ee
# for details
9ac2ee
#
9ac2ee
# Bastien Nocera <bnocera@redhat.com> - 2010
9ac2ee
#
9ac2ee
9ac2ee
SOURCE="$1"
9ac2ee
NEW_SOURCE=`echo $SOURCE | sed 's/bad-/bad-free-/'`
9ac2ee
DIRECTORY=`echo $SOURCE | sed 's/\.tar\.xz//'`
9ac2ee
9ac2ee
ALLOWED="
9ac2ee
aacparse
9ac2ee
adpcmdec
9ac2ee
adpcmenc
9ac2ee
aiff
9ac2ee
aiffparse
9ac2ee
amrparse
9ac2ee
asfmux
9ac2ee
audioparsers
9ac2ee
audiovisualizers
9ac2ee
autoconvert
9ac2ee
bayer
9ac2ee
camerabin
9ac2ee
camerabin2
9ac2ee
cdxaparse
9ac2ee
coloreffects
9ac2ee
colorspace
9ac2ee
dataurisrc
9ac2ee
dccp
9ac2ee
debugutils
9ac2ee
dtmf
9ac2ee
faceoverlay
9ac2ee
festival
9ac2ee
fieldanalysis
9ac2ee
freeverb
9ac2ee
freeze
9ac2ee
frei0r
9ac2ee
gaudieffects
9ac2ee
geometrictransform
9ac2ee
h264parse
9ac2ee
hdvparse
9ac2ee
hls
9ac2ee
id3tag
9ac2ee
inter
9ac2ee
interlace
9ac2ee
invtelecine
9ac2ee
ivfparse
9ac2ee
jpegformat
9ac2ee
jp2kdecimator
9ac2ee
legacyresample
9ac2ee
librfb
9ac2ee
liveadder
9ac2ee
mve
9ac2ee
mpegdemux
9ac2ee
mpeg4videoparse
9ac2ee
mpegpsmux
9ac2ee
mpegtsdemux
9ac2ee
mpegtsmux
9ac2ee
mpegvideoparse
9ac2ee
mxf
9ac2ee
nsf
9ac2ee
nuvdemux
9ac2ee
patchdetect
9ac2ee
pcapparse
9ac2ee
pnm
9ac2ee
qtmux
9ac2ee
rawparse
9ac2ee
removesilence
9ac2ee
rtpmux
9ac2ee
rtpvp8
9ac2ee
scaletempo
9ac2ee
sdi
9ac2ee
sdp
9ac2ee
segmentclip
9ac2ee
selector
9ac2ee
smooth
9ac2ee
speed
9ac2ee
stereo
9ac2ee
subenc
9ac2ee
tta
9ac2ee
valve
9ac2ee
videofilters
9ac2ee
videomaxrate
9ac2ee
videomeasure
9ac2ee
videoparsers
9ac2ee
videosignal
9ac2ee
vmnc
9ac2ee
y4m
9ac2ee
"
9ac2ee
9ac2ee
NOT_ALLOWED="
9ac2ee
dvbsuboverlay
9ac2ee
dvdspu
9ac2ee
real
9ac2ee
siren
9ac2ee
"
9ac2ee
9ac2ee
error()
9ac2ee
{
9ac2ee
	MESSAGE=$1
9ac2ee
	echo $MESSAGE
9ac2ee
	exit 1
9ac2ee
}
9ac2ee
9ac2ee
check_allowed()
9ac2ee
{
9ac2ee
	MODULE=$1
9ac2ee
	for i in $ALLOWED ; do
9ac2ee
		if test x$MODULE = x$i ; then
9ac2ee
			return 0;
9ac2ee
		fi
9ac2ee
	done
9ac2ee
	# Ignore errors coming from ext/ directory
9ac2ee
	# they require external libraries so are ineffective anyway
9ac2ee
	return 1;
9ac2ee
}
9ac2ee
9ac2ee
check_not_allowed()
9ac2ee
{
9ac2ee
	MODULE=$1
9ac2ee
	for i in $NOT_ALLOWED ; do
9ac2ee
		if test x$MODULE = x$i ; then
9ac2ee
			return 0;
9ac2ee
		fi
9ac2ee
	done
9ac2ee
	return 1;
9ac2ee
}
9ac2ee
9ac2ee
rm -rf $DIRECTORY
9ac2ee
tar xJf $SOURCE || error "Cannot unpack $SOURCE"
9ac2ee
pushd $DIRECTORY > /dev/null || error "Cannot open directory \"$DIRECTORY\""
9ac2ee
9ac2ee
unknown=""
9ac2ee
for subdir in gst ext sys; do
9ac2ee
	for dir in $subdir/* ; do
9ac2ee
		# Don't touch non-directories
9ac2ee
		if ! [ -d $dir ] ; then
9ac2ee
			continue;
9ac2ee
		fi
9ac2ee
		MODULE=`basename $dir`
9ac2ee
		if ( check_not_allowed $MODULE ) ; then
9ac2ee
			echo "**** Removing $MODULE ****"
9ac2ee
			echo "Removing directory $dir"
9ac2ee
			rm -r $dir || error "Cannot remove $dir"
9ac2ee
			if grep -q "AG_GST_CHECK_PLUGIN($MODULE)" configure.ac ; then
9ac2ee
				echo "Removing element check for $MODULE"
9ac2ee
				grep -v "AG_GST_CHECK_PLUGIN($MODULE)" configure.ac > configure.ac.new && mv configure.ac.new configure.ac
9ac2ee
			fi
9ac2ee
			echo "Removing Makefile generation for $MODULE"
9ac2ee
			grep -v "$dir/Makefile" configure.ac > configure.ac.new && mv configure.ac.new configure.ac
9ac2ee
			# Urgh
9ac2ee
			if test $MODULE = real ; then
9ac2ee
				grep -v "AG_GST_DISABLE_PLUGIN(real)" configure.ac > configure.ac.new && mv configure.ac.new configure.ac
9ac2ee
			fi
9ac2ee
			echo "Removing documentation for $MODULE"
9ac2ee
			if grep -q "$MODULE" docs/plugins/Makefile.am ; then
9ac2ee
				grep -v $dir docs/plugins/Makefile.am > docs/plugins/Makefile.am.new && mv docs/plugins/Makefile.am.new docs/plugins/Makefile.am
9ac2ee
			fi
9ac2ee
			echo
9ac2ee
		elif test $subdir = ext  || test $subdir = sys; then
9ac2ee
			# Ignore library or system non-blacklisted plugins
9ac2ee
			continue;
9ac2ee
		elif ! ( check_allowed $MODULE ) ; then
9ac2ee
			echo "Unknown module in $dir"
9ac2ee
			unknown="$unknown $dir"
9ac2ee
		fi
9ac2ee
	done
9ac2ee
done
9ac2ee
9ac2ee
echo
9ac2ee
9ac2ee
if test "x$unknown" != "x"; then
9ac2ee
  echo -n "Aborting due to unkown modules: "
9ac2ee
  echo "$unknown" | sed "s/ /\n  /g"
9ac2ee
  exit 1
9ac2ee
fi
9ac2ee
9ac2ee
autoreconf
9ac2ee
9ac2ee
popd > /dev/null
9ac2ee
9ac2ee
tar cJf $NEW_SOURCE $DIRECTORY
9ac2ee
echo "$NEW_SOURCE is ready to use"
9ac2ee