| #!/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 |