blob: 53404df76bdd5d9fe0b9231fad470bd92e09d37d [file] [log] [blame]
#!/bin/sh
FFMPEG_DIR=ffmpeg
FFMPEG_MOVED_DIR=ffmpeg_removed
SYSTEM_FFMPEG_DIR=${EPREFIX}/usr/include
# Move directories
[ -d "${FFMPEG_DIR}/.git" ] && mv "${FFMPEG_DIR}" "${FFMPEG_MOVED_DIR}"
[ -d "${FFMPEG_MOVED_DIR}" ] || exit 1
[ -d "${FFMPEG_DIR}" ] || mkdir "${FFMPEG_DIR}"
# Keep required files and check them
SANITIZED_REGEXP='^\#[[:space:]]*include.*\".*[.]h\"'
sanitize_includes() {
sed -e "s/^\#[[:space:]]*include.*\"config[.]h\"/#include <config.h>/" \
-e "s/^\#[[:space:]]*include.*\"\(libav.*\/.*[.]h\)\"/#include \<\1\>/" \
-e "/${SANITIZED_REGEXP}/{s:\"\(.*\)\":\<${2}\/\1\>:}" ${1}
}
check_sanitized_includes() {
grep -q "${SANITIZED_REGEXP}" $1
}
get_header_deps() {
grep "^#[[:space:]]*include.*\<libav.*[.]h\>" ${1} | \
sed -e "s/^#[[:space:]]*include.*\<\(libav.*[.]h\)\>/\1/" | \
tr -d '<>' | tr '\n' ' '
}
check_header_deps() {
for i ; do
printf "Checking for the presence of ${i}...\n"
if [ ! -f "${SYSTEM_FFMPEG_DIR}/${i}" -a ! -f "${FFMPEG_DIR}/${i}" ] ; then
printf "Header depends on ${i}\n"
printf "... but that file cannot be found, aborting\n"
exit 1
fi
done
}
move_file() {
mydir="$(dirname $1)"
printf "Moving and checking file: ${1}\n"
[ -d "${FFMPEG_DIR}/${mydir}" ] || mkdir -p "${FFMPEG_DIR}/${mydir}"
if [ ! -f "${FFMPEG_DIR}/${1}" ] ; then
sanitize_includes "${FFMPEG_MOVED_DIR}/${1}" ${mydir} > "${FFMPEG_DIR}/${1}"
fi
if $(check_sanitized_includes "${FFMPEG_DIR}/${1}") ; then
printf "Error, found non sanitized file in ffmpeg:\n"
printf "${FFMPEG_DIR}/${1}\n"
printf "Please report it at bugs.gentoo.org\n"
exit 1
fi
if [ "${1%.h}" != "${1}" ] ; then
mydeps=$(get_header_deps "${FFMPEG_DIR}/${1}")
check_header_deps ${mydeps}
fi
}
# HEADERS (order matters for the consistency checks: leaves come first)
FILES=" libavutil/x86_cpu.h \
libavformat/internal.h "
# Files that are sed'ed but not compiled, used to check for availability of
# some codecs
FILES="${FILES} libavcodec/allcodecs.c libavformat/allformats.c libavfilter/allfilters.c"
for i in ${FILES} ; do
move_file $i
done
rm -rf "${FFMPEG_MOVED_DIR}"
exit 0