diff options
Diffstat (limited to 'abs/core/vi/fetch_runtime.sh')
-rw-r--r-- | abs/core/vi/fetch_runtime.sh | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/abs/core/vi/fetch_runtime.sh b/abs/core/vi/fetch_runtime.sh new file mode 100644 index 0000000..f244ea5 --- /dev/null +++ b/abs/core/vi/fetch_runtime.sh @@ -0,0 +1,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 +} |