blob: f244ea579f4459537b348bb29c47db15ee8c48fa (
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# the purpose of this magic is to pull in the latest runtime files for vim
# we start withe theruntime provoded by the tarballs and compare MD5s against
# the latest runtime
# if this fails we look in the local source cache if they have been fetched
# for an earlier build and compare those MD5 files
# if this fails, we fetch the stuff from online and store it in the local src
# cache.
# The local cache has to be set (makepkg.conf) AND it has to be writable
update_runtime() {
_OLDDIR=$(pwd) #get absolute path
_errors=0
_ftp="ftp://ftp.vim.org/pub/vim/runtime"
# we're gonna be sneaky and grok the A-A-P recipe for the files we need
_recipe="getunix.aap"
_srccache="${SRCDEST}/vim-${_srcver}/"
echo "getting runtime recipe"
cd ${startdir}/src
[ -f "${_recipe}" ] && rm "${_recipe}"
wget "${_ftp}/${_recipe}" >/dev/null 2>&1
cd "${_runtimedir}"
_runtimedir=$(pwd) #get absolute path
# change IFS to loop line-by-line
_OLDIFS=$IFS
IFS="
"
echo "begin fetching updated runtime files..."
for _file in $(grep "file = " "${startdir}/src/${_recipe}"); do
_file=$(echo ${_file} | sed "s|.*file = \(.*\)|\1|")
_md5=$(grep -A2 "file = ${_file} *$" "${startdir}/src/${_recipe}" | \
grep "get_md5" | \
sed 's|@if get_md5(file) != "\(.*\)":|\1|g')
_dir=$(dirname "${_file}")
mkdir -p "${_dir}"
echo -e "\t${_file}"
_havefile=0
# if we have the file and the MD5sum fails, we technically don't have the file
if [ -f ${_file} ]; then
# MD5 fails ? ... we don't have the file
if [ $(echo "${_md5} ${_file}" | md5sum --status -c -) ]; then
rm ${_file}
else
_havefile=1
fi
fi
# look files that were not copied from the unzipped sources
_cachefile=${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//")/runtime/${_file}
if [ ${_havefile} -ne 1 -a -f ${_cachefile} ]; then
# MD5 fails ? ... we lookup if we downloaded another version earlier
if [ $(echo "${_md5} ${_cachefile}" | md5sum --status -c -) ]; then
_cachefile=${_srccache}/${_file}
if [ -f ${_cachefile} ]; then
if [ $(echo "${_md5} ${_cachefile}" | md5sum --status -c -) ]; then
rm ${_cachefile}
else
cp ${_cachefile} ${_dir}
_havefile=1
fi
fi
else
cp ${_cachefile} ${_dir}
_havefile=1
fi
fi
# look up the local $SRCDEST
_cachefile=${_srccache}/${_file}
if [ ${_havefile} -ne 1 -a -f ${_cachefile} ]; then
# MD5 fails ? ... we don't have the file
if [ $(echo "${_md5} ${_cachefile}" | md5sum --status -c -) ]; then
rm ${_cachefile}
else
cp ${_cachefile} ${_dir}
_havefile=1
fi
fi
# so we finally have to fetch it and store it to $SRCDEST (cache)
if [ ${_havefile} -ne 1 ]; then
echo -n -e "\t ... fetching file ${_file} ..."
cd "${_dir}"
wget "${_ftp}/${_file}" >/dev/null 2>&1
cd "${_runtimedir}"
# store freshly downloaded file in SRCDEST
mkdir -p ${_srccache}/${_dir}
cp ${_file} ${_srccache}/${_dir}
echo -e " done!"
fi
# check the MD5 sum finally
if [ $(echo "${_md5} ${_file}" | md5sum --status -c -) ]; then
echo "!!!! md5sum check for ${_file} failed !!!!"
errors=$((${_errors} + 1))
fi
done
IFS=${_OLDIFS}
echo "vim runtime got updated"
if [ ${_errors} -gt 0 ]; then
echo "${_errors} failed MD5 checks while updating runtime files -> build can't be completed"
return 1
else
echo -e "\tpatching filetype.vim for better handling of pacman related files ..."
sed -i "s/rpmsave/pacsave/;s/rpmnew/pacnew/;s/,\*\.ebuild/\0,PKGBUILD*,*.install/" filetype.vim
sed -i "/find the end/,+3{s/changelog_date_entry_search/changelog_date_end_entry_search/}" ftplugin/changelog.vim
fi
# make Aaron happy
wget http://www.vim.org/scripts/download_script.php\?src_id=7766 \
-O autoload/pythoncomplete.vim
cd "${_OLDDIR}"
return 0
}
|