You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
2.6 KiB
195 lines
2.6 KiB
#!/bin/sh |
|
|
|
# Process a gst-plugins-bad tarball to remove |
|
# unwanted GStreamer plugins. |
|
# |
|
# See https://bugzilla.redhat.com/show_bug.cgi?id=532470 |
|
# for details |
|
# |
|
# Bastien Nocera <bnocera@redhat.com> - 2010 |
|
# |
|
|
|
SOURCE="$1" |
|
NEW_SOURCE=`echo $SOURCE | sed 's/bad-/bad-free-/'` |
|
DIRECTORY=`echo $SOURCE | sed 's/\.tar\.xz//'` |
|
|
|
ALLOWED=" |
|
aacparse |
|
accurip |
|
adpcmdec |
|
adpcmenc |
|
aiff |
|
aiffparse |
|
amrparse |
|
asfmux |
|
audiobuffersplit |
|
audiofxbad |
|
audiolatency |
|
audiomixer |
|
audiomixmatrix |
|
audioparsers |
|
audiovisualizers |
|
autoconvert |
|
bayer |
|
camerabin |
|
camerabin2 |
|
cdxaparse |
|
coloreffects |
|
colorspace |
|
compositor |
|
dataurisrc |
|
dccp |
|
debugutils |
|
dtmf |
|
dvbsubenc |
|
faceoverlay |
|
festival |
|
fieldanalysis |
|
freeverb |
|
freeze |
|
frei0r |
|
gaudieffects |
|
gdp |
|
geometrictransform |
|
h264parse |
|
hdvparse |
|
hls |
|
id3tag |
|
inter |
|
interlace |
|
invtelecine |
|
ivfparse |
|
ivtc |
|
jpegformat |
|
jp2kdecimator |
|
legacyresample |
|
librfb |
|
liveadder |
|
midi |
|
mve |
|
mpegdemux |
|
mpeg4videoparse |
|
mpegpsmux |
|
mpegtsdemux |
|
mpegtsmux |
|
mpegvideoparse |
|
mxf |
|
netsim |
|
nsf |
|
nuvdemux |
|
onvif |
|
patchdetect |
|
pcapparse |
|
pnm |
|
proxy |
|
qtmux |
|
rawparse |
|
removesilence |
|
rist |
|
rtmp2 |
|
rtp |
|
rtpmux |
|
rtpvp8 |
|
scaletempo |
|
sdi |
|
sdp |
|
segmentclip |
|
selector |
|
smooth |
|
speed |
|
stereo |
|
subenc |
|
switchbin |
|
timecode |
|
transcode |
|
tta |
|
valve |
|
videofilters |
|
videoframe_audiolevel |
|
videomaxrate |
|
videomeasure |
|
videoparsers |
|
videosignal |
|
vmnc |
|
yadif |
|
y4m |
|
" |
|
|
|
NOT_ALLOWED=" |
|
dvbsuboverlay |
|
dvdspu |
|
real |
|
siren |
|
" |
|
|
|
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 sys; 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 unkown 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" |
|
|
|
|