blob: 885946df8cc70d671f8a37d1a7a8080082d0cd36 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#!/bin/sh
FFMPEG_DIR=ffmpeg
FFMPEG_MOVED_DIR=ffmpeg_removed
SYSTEM_FFMPEG_DIR=${EPREFIX}/usr/include
# Move directories
[ -d "${FFMPEG_DIR}" ] && 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/wchar_filename.h libavformat/os_support.h libavformat/internal.h libavutil/x86/asm.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
|