diff options
Diffstat (limited to 'vi/fetch_patches.sh')
-rw-r--r-- | vi/fetch_patches.sh | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/vi/fetch_patches.sh b/vi/fetch_patches.sh new file mode 100644 index 0000000..fdd9188 --- /dev/null +++ b/vi/fetch_patches.sh @@ -0,0 +1,56 @@ +# the external logic for pulling in patches + +get_patches() { + _patchdir=${startdir}/src/patches + cd ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//") + if [ -d ${_patchdir} ]; then + rm -rf ${_patchdir} + echo -e "\tremove patches from old build" + fi + mkdir ${_patchdir} && cd ${_patchdir} + _rpath=ftp://ftp.vim.org/pub/vim/patches/${_srcver} + + # change IFS to loop line-by-line + _OLDIFS=$IFS + IFS=" +" + echo -e "\tfetching checksumfile for patches" + wget ${_rpath}/MD5SUMS >/dev/null 2>&1 + + downloads=0 + for _line in $(/bin/cat MD5SUMS); do + downloads=$((${downloads} + 1)) + _md5=$(echo $_line | cut -d ' ' -f1) + _file=$(echo $_line | cut -d ' ' -f3) + if [ -f ${SRCDEST}/vim-${_srcver}/${_file} ]; then + echo -e "\thaving patch file:${_file}" + cp ${SRCDEST}/vim-${_srcver}/${_file} ./ + else + echo -n -e "\t... fetching patch file: ${_file} ..." + wget ${_rpath}/${_file} >/dev/null 2>&1 + if [ -w ${SRCDEST} ]; then + if [ ! -d ${SRCDEST}/vim-${_srcver} ]; then + mkdir -p ${SRCDEST}/vim-${_srcver} + fi + cp ${_file} ${SRCDEST}/vim-${_srcver}/ + echo " done!" + fi + fi + + if [ $(echo "${_md5} ${_file}" | md5sum --status -c -) ]; then + echo ${_file} md5sums do not match + return 1 + fi + done + + ######## + + IFS=$_OLDIFS + rm MD5SUMS + cd ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//") + for _patchnum in $(seq -w 1 ${_patchlevel} ); do + patch -Np0 -i ${_patchdir}/${_srcver}.${_patchnum} || return 1 + done + rm -rf ${_patchdir} + return 0 +} |