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

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