From 35bb3d3c8ecb7f79dae6b2c1fda40593508c9080 Mon Sep 17 00:00:00 2001 From: Paul Sajna <paulsajna@gmail.com> Date: Thu, 2 Nov 2017 19:25:30 -0700 Subject: [PATCH] recipe for vim --- recipes/vim/recipe.sh | 56 +++++++++++ recipes/vim/vim.patch | 211 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 267 insertions(+) create mode 100644 recipes/vim/recipe.sh create mode 100644 recipes/vim/vim.patch diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh new file mode 100644 index 000000000..c14e95e90 --- /dev/null +++ b/recipes/vim/recipe.sh @@ -0,0 +1,56 @@ +VERSION=8.0.586 +TAR=http://ftp.vim.org/vim/unix/vim-$VERSION.tar.bz2 +BUILD_DEPENDS=(ncurses) + +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + sysroot="${PWD}/../sysroot" + export LDFLAGS="-L$sysroot/lib" + export CPPFLAGS="-I$sysroot/include" + export vim_cv_toupper_broken=set + export vim_cv_terminfo=no + export vim_cv_tty_group=world + export vim_cv_getcwd_broken=yes + export vim_cv_stat_ignores_slash=no + export vim_cv_memmove_handles_overlap=yes + ./configure --host=${HOST} --prefix=/ --with-tlib=ncurses + make + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" ${MAKEFLAGS} install + skip=1 +} diff --git a/recipes/vim/vim.patch b/recipes/vim/vim.patch new file mode 100644 index 000000000..26d5ad698 --- /dev/null +++ b/recipes/vim/vim.patch @@ -0,0 +1,211 @@ +diff -ru source/src/channel.c source-new/src/channel.c +--- source/src/channel.c 2017-10-30 17:21:14.784946514 -0700 ++++ source-new/src/channel.c 2017-10-30 17:27:08.234992143 -0700 +@@ -852,29 +852,27 @@ + * actually able to connect. + * We detect a failure to connect when either read and write fds + * are set. Use getsockopt() to find out what kind of failure. */ +-/* +- * if (FD_ISSET(sd, &rfds) || FD_ISSET(sd, &wfds)) +- * { +- * ret = getsockopt(sd, +- * SOL_SOCKET, SO_ERROR, &so_error, &so_error_len); +- * if (ret < 0 || (so_error != 0 +- * && so_error != EWOULDBLOCK +- * && so_error != ECONNREFUSED +- *# ifdef EINPROGRESS +- * && so_error != EINPROGRESS +- *# endif +- * )) +- * { +- * ch_errorn(channel, +- * "channel_open: Connect failed with errno %d", +- * so_error); +- * PERROR(_(e_cannot_connect)); +- * sock_close(sd); +- * channel_free(channel); +- * return NULL; +- * } +- * } +- */ ++ if (FD_ISSET(sd, &rfds) || FD_ISSET(sd, &wfds)) ++ { ++ ret = getsockopt(sd, ++ SOL_SOCKET, SO_ERROR, &so_error, &so_error_len); ++ if (ret < 0 || (so_error != 0 ++ && so_error != EWOULDBLOCK ++ && so_error != ECONNREFUSED ++# ifdef EINPROGRESS ++ && so_error != EINPROGRESS ++# endif ++ )) ++ { ++ ch_errorn(channel, ++ "channel_open: Connect failed with errno %d", ++ so_error); ++ PERROR(_(e_cannot_connect)); ++ sock_close(sd); ++ channel_free(channel); ++ return NULL; ++ } ++ } + + if (FD_ISSET(sd, &wfds) && so_error == 0) + /* Did not detect an error, connection is established. */ +diff -ru source/src/memfile.c source-new/src/memfile.c +--- source/src/memfile.c 2017-10-30 17:24:53.944974807 -0700 ++++ source-new/src/memfile.c 2017-10-30 17:27:08.244992145 -0700 +@@ -596,88 +596,88 @@ + if (hp == NULL || status == FAIL) + mfp->mf_dirty = FALSE; + +-/* if ((flags & MFS_FLUSH) && *p_sws != NUL)*/ +- /*{*/ +-/*#if defined(UNIX)*/ +-/*# ifdef HAVE_FSYNC*/ ++ if ((flags & MFS_FLUSH) && *p_sws != NUL) ++ { ++#if defined(UNIX) ++# ifdef HAVE_FSYNC + /* + * most Unixes have the very useful fsync() function, just what we need. + */ +- /*if (STRCMP(p_sws, "fsync") == 0)*/ +- /*{*/ +- /*if (fsync(mfp->mf_fd))*/ +- /*status = FAIL;*/ +- /*}*/ +- /*else*/ +-/*# endif*/ +- /*[> OpenNT is strictly POSIX (Benzinger) <]*/ +- /*[> Tandem/Himalaya NSK-OSS doesn't have sync() <]*/ +- /*[> No sync() on Stratus VOS <]*/ +-/*# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__)*/ +- /*fflush(NULL);*/ +-/*# else*/ +- /*//sync();*/ +-/*# endif*/ +-/*#endif*/ +-/*#ifdef VMS*/ +- /*if (STRCMP(p_sws, "fsync") == 0)*/ +- /*{*/ +- /*if (fsync(mfp->mf_fd))*/ +- /*status = FAIL;*/ +- /*}*/ +-/*#endif*/ +-/*#ifdef SYNC_DUP_CLOSE*/ ++ if (STRCMP(p_sws, "fsync") == 0) ++ { ++ if (fsync(mfp->mf_fd)) ++ status = FAIL; ++ } ++ else ++# endif ++ /* OpenNT is strictly POSIX (Benzinger) */ ++ /* Tandem/Himalaya NSK-OSS doesn't have sync() */ ++ /* No sync() on Stratus VOS */ ++# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__) ++ fflush(NULL); ++# else ++ sync(); ++# endif ++#endif ++#ifdef VMS ++ if (STRCMP(p_sws, "fsync") == 0) ++ { ++ if (fsync(mfp->mf_fd)) ++ status = FAIL; ++ } ++#endif ++#ifdef SYNC_DUP_CLOSE + /* + * Win32 is a bit more work: Duplicate the file handle and close it. + * This should flush the file to disk. + */ +- /*if ((fd = dup(mfp->mf_fd)) >= 0)*/ +- /*close(fd);*/ +-/*#endif*/ +-/*#ifdef AMIGA*/ +-/*# if defined(__AROS__) || defined(__amigaos4__)*/ +- /*if (fsync(mfp->mf_fd) != 0)*/ +- /*status = FAIL;*/ +-/*# else*/ ++ if ((fd = dup(mfp->mf_fd)) >= 0) ++ close(fd); ++#endif ++#ifdef AMIGA ++# if defined(__AROS__) || defined(__amigaos4__) ++ if (fsync(mfp->mf_fd) != 0) ++ status = FAIL; ++# else + /* + * Flush() only exists for AmigaDos 2.0. + * For 1.3 it should be done with close() + open(), but then the risk + * is that the open() may fail and lose the file.... + */ +-/*# ifdef FEAT_ARP*/ +- /*if (dos2)*/ +-/*# endif*/ +-/*# ifdef SASC*/ +- /*{*/ +- /*struct UFB *fp = chkufb(mfp->mf_fd);*/ ++# ifdef FEAT_ARP ++ if (dos2) ++# endif ++# ifdef SASC ++ { ++ struct UFB *fp = chkufb(mfp->mf_fd); + +- /*if (fp != NULL)*/ +- /*Flush(fp->ufbfh);*/ +- /*}*/ +-/*# else*/ +-/*# if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__)*/ +- /*{*/ +-/*# if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__)*/ ++ if (fp != NULL) ++ Flush(fp->ufbfh); ++ } ++# else ++# if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__) ++ { ++# if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__) + /* Have function (in libnix at least), + * but ain't got no prototype anywhere. */ +- /*extern unsigned long fdtofh(int filedescriptor);*/ +-/*# endif*/ +-/*# if !defined(__libnix__)*/ +- /*fflush(NULL);*/ +-/*# else*/ +- /*BPTR fh = (BPTR)fdtofh(mfp->mf_fd);*/ ++ extern unsigned long fdtofh(int filedescriptor); ++# endif ++# if !defined(__libnix__) ++ fflush(NULL); ++# else ++ BPTR fh = (BPTR)fdtofh(mfp->mf_fd); + +- /*if (fh != 0)*/ +- /*Flush(fh);*/ +-/*# endif*/ +- /*}*/ +-/*# else [> assume Manx <]*/ +- /*Flush(_devtab[mfp->mf_fd].fd);*/ +-/*# endif*/ +-/*# endif*/ +-/*# endif*/ +-/*#endif [> AMIGA <]*/ +- /*}*/ ++ if (fh != 0) ++ Flush(fh); ++# endif ++ } ++# else /* assume Manx */ ++ Flush(_devtab[mfp->mf_fd].fd); ++# endif ++# endif ++# endif ++#endif /* AMIGA */ ++ } + + got_int |= got_int_save; -- GitLab