diff --git a/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/Manifest b/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/Manifest
new file mode 100644
index 0000000000..4e8ba041e5
--- /dev/null
+++ b/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/Manifest
@@ -0,0 +1,2 @@
+DIST vim-core-9.0.0469.tar.gz 16851209 BLAKE2B 21c8dc3fb68163a9628833e550043de8d84df6afaf50e3a236e18d4766f25f5713e1595fcfb9e821c114cc409379c6a88eae3830112431d8dab7d58fecbc1ae5 SHA512 49f4b0f97745436b4720905a2ac5f16f6bed28a57411083f8b5cb903d5c908d53e626d5dc4f8d1d9d83bd2021281a9d423a2e811b75d4ad6d8bfbea22dc9cd8f
+DIST vim-patches-vim-9.0.0049-patches.tar.gz 2743 BLAKE2B dff3e215b235e1cbc2c62b1af2d1414d10b794dbee9f5e7797fb3d34e00c2e065c339d4c82bf28aed53e0b5f2f8f1ee5c7ce69851cd63360788609bf144ac922 SHA512 7d5c64d674fa77048fdca7287072c0e488723133e254c10711dbadf750416c368725327ca9b76f332017bc70aa544a9baef671765eabf0d172d39921ffd7d942
diff --git a/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/files/gvim.svg b/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/files/gvim.svg
new file mode 100644
index 0000000000..b82742a790
--- /dev/null
+++ b/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/files/gvim.svg
@@ -0,0 +1,94 @@
+
+
+
+
diff --git a/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/files/vimrc-r6 b/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/files/vimrc-r6
new file mode 100644
index 0000000000..0197f057d2
--- /dev/null
+++ b/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/files/vimrc-r6
@@ -0,0 +1,217 @@
+scriptencoding utf-8
+" ^^ Please leave the above line at the start of the file.
+
+" Default configuration file for Vim
+
+" Written by Aron Griffis
+" Modified by Ryan Phillips
+" Modified some more by Ciaran McCreesh
+" Added Redhat's vimrc info by Seemant Kulleen
+
+" You can override any of these settings on a global basis via the
+" "/etc/vim/vimrc.local" file, and on a per-user basis via "~/.vimrc". You may
+" need to create these.
+
+" {{{ General settings
+" The following are some sensible defaults for Vim for most users.
+" We attempt to change as little as possible from Vim's defaults,
+" deviating only where it makes sense
+set nocompatible " Use Vim defaults (much better!)
+set bs=2 " Allow backspacing over everything in insert mode
+set ai " Always set auto-indenting on
+set history=50 " keep 50 lines of command history
+set ruler " Show the cursor position all the time
+
+set viminfo='20,\"500 " Keep a .viminfo file.
+
+" Don't use Ex mode, use Q for formatting
+map Q gq
+
+" When doing tab completion, give the following files lower priority. You may
+" wish to set 'wildignore' to completely ignore files, and 'wildmenu' to enable
+" enhanced tab completion. These can be done in the user vimrc file.
+set suffixes+=.info,.aux,.log,.dvi,.bbl,.out,.o,.lo
+
+" When displaying line numbers, don't use an annoyingly wide number column. This
+" doesn't enable line numbers -- :set number will do that. The value given is a
+" minimum width to use for the number column, not a fixed size.
+if v:version >= 700
+ set numberwidth=3
+endif
+" }}}
+
+" {{{ Modeline settings
+" We don't allow modelines by default. See bug #14088 and bug #73715.
+" If you're not concerned about these, you can enable them on a per-user
+" basis by adding "set modeline" to your ~/.vimrc file.
+set nomodeline
+" }}}
+
+" {{{ Locale settings
+" Try to come up with some nice sane GUI fonts. Also try to set a sensible
+" value for fileencodings based upon locale. These can all be overridden in
+" the user vimrc file.
+if v:lang =~? "^ko"
+ set fileencodings=euc-kr
+ set guifontset=-*-*-medium-r-normal--16-*-*-*-*-*-*-*
+elseif v:lang =~? "^ja_JP"
+ set fileencodings=euc-jp
+ set guifontset=-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*
+elseif v:lang =~? "^zh_TW"
+ set fileencodings=big5
+ set guifontset=-sony-fixed-medium-r-normal--16-150-75-75-c-80-iso8859-1,-taipei-fixed-medium-r-normal--16-150-75-75-c-160-big5-0
+elseif v:lang =~? "^zh_CN"
+ set fileencodings=gb2312
+ set guifontset=*-r-*
+endif
+
+" If we have a BOM, always honour that rather than trying to guess.
+if &fileencodings !~? "ucs-bom"
+ set fileencodings^=ucs-bom
+endif
+
+" Always check for UTF-8 when trying to determine encodings.
+if &fileencodings !~? "utf-8"
+ " If we have to add this, the default encoding is not Unicode.
+ " We use this fact later to revert to the default encoding in plaintext/empty
+ " files.
+ let g:added_fenc_utf8 = 1
+ set fileencodings+=utf-8
+endif
+
+" Make sure we have a sane fallback for encoding detection
+if &fileencodings !~? "default"
+ set fileencodings+=default
+endif
+" }}}
+
+" {{{ Syntax highlighting settings
+" Switch syntax highlighting on, when the terminal has colors
+" Also switch on highlighting the last used search pattern.
+if &t_Co > 2 || has("gui_running")
+ syntax on
+ set hlsearch
+endif
+" }}}
+
+" {{{ Terminal fixes
+if &term ==? "xterm"
+ set t_Sb=^[4%dm
+ set t_Sf=^[3%dm
+ set ttymouse=xterm2
+endif
+
+if &term ==? "gnome" && has("eval")
+ " Set useful keys that vim doesn't discover via termcap but are in the
+ " builtin xterm termcap. See bug #122562. We use exec to avoid having to
+ " include raw escapes in the file.
+ exec "set =\eO5D"
+ exec "set =\eO5C"
+endif
+" }}}
+
+" {{{ Filetype plugin settings
+" Enable plugin-provided filetype settings, but only if the ftplugin
+" directory exists (which it won't on livecds, for example).
+if isdirectory(expand("$VIMRUNTIME/ftplugin"))
+ filetype plugin on
+
+ " Uncomment the next line (or copy to your ~/.vimrc) for plugin-provided
+ " indent settings. Some people don't like these, so we won't turn them on by
+ " default.
+ " filetype indent on
+endif
+" }}}
+
+" {{{ Fix &shell, see bug #101665.
+if "" == &shell
+ if executable("@GENTOO_PORTAGE_EPREFIX@/bin/bash")
+ set shell=@GENTOO_PORTAGE_EPREFIX@/bin/bash
+ elseif executable("@GENTOO_PORTAGE_EPREFIX@/bin/sh")
+ set shell=@GENTOO_PORTAGE_EPREFIX@/bin/sh
+ endif
+endif
+"}}}
+
+" {{{ Our default /bin/sh is bash, not ksh, so syntax highlighting for .sh
+" files should default to bash. See :help sh-syntax and bug #101819.
+if has("eval")
+ let is_bash=1
+endif
+" }}}
+
+" {{{ Autocommands
+if has("autocmd")
+
+augroup gentoo
+ au!
+
+ " Gentoo-specific settings for ebuilds. These are the federally-mandated
+ " required tab settings. See the following for more information:
+ " http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml
+ " Note that the rules below are very minimal and don't cover everything.
+ " Better to emerge app-vim/gentoo-syntax, which provides full syntax,
+ " filetype and indent settings for all things Gentoo.
+ au BufRead,BufNewFile *.e{build,class} let is_bash=1|setfiletype sh
+ au BufRead,BufNewFile *.e{build,class} set ts=4 sw=4 noexpandtab
+
+ " In text files, limit the width of text to 78 characters, but be careful
+ " that we don't override the user's setting.
+ autocmd BufNewFile,BufRead *.txt
+ \ if &tw == 0 && ! exists("g:leave_my_textwidth_alone") |
+ \ setlocal textwidth=78 |
+ \ endif
+
+ " When editing a file, always jump to the last cursor position
+ autocmd BufReadPost *
+ \ if ! exists("g:leave_my_cursor_position_alone") |
+ \ if line("'\"") > 0 && line ("'\"") <= line("$") |
+ \ exe "normal! g'\"" |
+ \ endif |
+ \ endif
+
+ " When editing a crontab file, set backupcopy to yes rather than auto. See
+ " :help crontab and bug #53437.
+ autocmd FileType crontab set backupcopy=yes
+
+ " If we previously detected that the default encoding is not UTF-8
+ " (g:added_fenc_utf8), assume that a file with only ASCII characters (or no
+ " characters at all) isn't a Unicode file, but is in the default encoding.
+ " Except of course if a byte-order mark is in effect.
+ autocmd BufReadPost *
+ \ if exists("g:added_fenc_utf8") && &fileencoding == "utf-8" &&
+ \ ! &bomb && search('[\x80-\xFF]','nw') == 0 && &modifiable |
+ \ set fileencoding= |
+ \ endif
+
+augroup END
+
+endif " has("autocmd")
+" }}}
+
+" We don't want VIM to load their own built-in defaults, preferring ours here
+" instead. This option cannot apply to minimal builds, so it is guarded by a
+" test that's guaranteed to fail for those, owing to the lack of +eval.
+if 1
+ let g:skip_defaults_vim = 1
+endif
+
+" Enable Omni completion when opening a file only if a specific plugin does
+" not already exist for that filetype. This allows Omni completion
+" (Ctrl-x/Ctrl-o) to work with any programming language if and only if a syntax
+" file exists for the said language.
+if exists("+omnifunc")
+ autocmd Filetype *
+ \ if &omnifunc == "" |
+ \ setlocal omnifunc=syntaxcomplete#Complete |
+ \ endif
+endif
+
+" {{{ vimrc.local
+if filereadable("@GENTOO_PORTAGE_EPREFIX@/etc/vim/vimrc.local")
+ source @GENTOO_PORTAGE_EPREFIX@/etc/vim/vimrc.local
+endif
+" }}}
+
+" vim: set fenc=utf-8 tw=80 sw=2 sts=2 et foldmethod=marker :
+
diff --git a/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/files/xxd-completion b/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/files/xxd-completion
new file mode 100644
index 0000000000..174a4093f3
--- /dev/null
+++ b/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/files/xxd-completion
@@ -0,0 +1,25 @@
+# Author: Ciaran McCreesh
+#
+# completion for xxd
+
+_xxd()
+{
+ local cur prev cmd args
+
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ cmd=${COMP_WORDS[0]}
+
+ if [[ "${cur}" == -* ]] ; then
+ args='-a -b -c -E -g -h -i -l -ps -r -s -u -v'
+ COMPREPLY=( $( compgen -W "${args}" -- $cur ) )
+ else
+ _filedir
+ fi
+}
+
+complete -F _xxd xxd
+
+# vim: set ft=sh sw=4 et sts=4 :
+
diff --git a/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/metadata.xml b/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/metadata.xml
new file mode 100644
index 0000000000..841e5550d7
--- /dev/null
+++ b/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ vim@gentoo.org
+ Gentoo Vim Project
+
+
+ vim/vim
+ cpe:/a:vim:vim
+
+
diff --git a/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/vim-core-9.0.0469.ebuild b/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/vim-core-9.0.0469.ebuild
new file mode 100644
index 0000000000..0024b05fe6
--- /dev/null
+++ b/sdk_container/src/third_party/coreos-overlay/app-editors/vim-core/vim-core-9.0.0469.ebuild
@@ -0,0 +1,233 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Please bump with app-editors/vim and app-editors/gvim
+
+VIM_VERSION="9.0"
+inherit vim-doc flag-o-matic bash-completion-r1 prefix desktop xdg-utils
+
+if [[ ${PV} == 9999* ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/vim/vim.git"
+ EGIT_CHECKOUT_DIR=${WORKDIR}/vim-${PV}
+else
+ SRC_URI="https://github.com/vim/vim/archive/v${PV}.tar.gz -> ${P}.tar.gz
+ https://gitweb.gentoo.org/proj/vim-patches.git/snapshot/vim-patches-vim-9.0.0049-patches.tar.gz"
+ KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+fi
+S="${WORKDIR}/vim-${PV}"
+
+DESCRIPTION="vim and gvim shared files"
+HOMEPAGE="https://vim.sourceforge.io/ https://github.com/vim/vim"
+
+LICENSE="vim"
+SLOT="0"
+IUSE="nls acl minimal"
+
+# ncurses is only needed by ./configure, so no subslot operator required
+DEPEND=">=sys-libs/ncurses-5.2-r2:0"
+BDEPEND="sys-devel/autoconf"
+# Avoid icon file collision, bug #673880
+RDEPEND="!> "${S}"/src/feature.h || die
+ echo '#define SYS_GVIMRC_FILE "'${EPREFIX}'/etc/vim/gvimrc"' >> "${S}"/src/feature.h || die
+
+ # Use exuberant ctags which installs as /usr/bin/exuberant-ctags.
+ # Hopefully this pattern won't break for a while at least.
+ # This fixes bug #29398 (27 Sep 2003 agriffis)
+ sed -i 's/\> "$c" || die "echo failed"
+ done
+
+ # Try to avoid sandbox problems. Bug #114475.
+ if [[ -d "${S}"/src/po ]]; then
+ sed -i -e \
+ '/-S check.vim/s,..VIM.,ln -s $(VIM) testvim \; ./testvim -X,' \
+ "${S}"/src/po/Makefile || die "sed failed"
+ fi
+
+ cp -v "${S}"/src/config.mk.dist "${S}"/src/auto/config.mk || die "cp failed"
+
+ # Bug #378107 - Build properly with >=perl-core/ExtUtils-ParseXS-3.20.0
+ sed -i -e \
+ "s:\\\$(PERLLIB)/ExtUtils/xsubpp:${EPREFIX}/usr/bin/xsubpp:" \
+ "${S}"/src/Makefile || die 'sed for ExtUtils-ParseXS failed'
+
+ # Fix bug #76331: -O3 causes problems, use -O2 instead. We'll do this for
+ # everyone since previous flag filtering bugs have turned out to affect
+ # multiple archs...
+ replace-flags -O3 -O2
+
+ # Fix bug #18245: Prevent "make" from the following chain:
+ # (1) Notice configure.ac is newer than auto/configure
+ # (2) Rebuild auto/configure
+ # (3) Notice auto/configure is newer than auto/config.mk
+ # (4) Run ./configure (with wrong args) to remake auto/config.mk
+ sed -i 's# auto/config\.mk:#:#' src/Makefile || die "Makefile sed failed"
+
+ # Remove src/auto/configure file.
+ rm -v src/auto/configure || die "rm configure failed"
+
+ eapply_user
+}
+
+src_configure() {
+ # Fix bug #37354: Disallow -funroll-all-loops on amd64
+ # Bug 57859 suggests that we want to do this for all archs
+ filter-flags -funroll-all-loops
+
+ emake -j1 -C src autoconf
+
+ # This should fix a sandbox violation (see bug 24447). The hvc
+ # things are for ppc64, see bug 86433.
+ for file in /dev/pty/s* /dev/console /dev/hvc/* /dev/hvc*; do
+ if [[ -e "${file}" ]]; then
+ addwrite ${file}
+ fi
+ done
+
+ # Let Portage do the stripping. Some people like that.
+ export ac_cv_prog_STRIP="$(type -P true ) faking strip"
+
+ local myconf=(
+ --with-modified-by=Gentoo-${PVR}
+ --enable-gui=no
+ --without-x
+ --disable-darwin
+ --disable-perlinterp
+ --disable-pythoninterp
+ --disable-rubyinterp
+ --disable-gpm
+ --disable-selinux
+ $(use_enable nls)
+ $(use_enable acl)
+ )
+
+ # Keep Gentoo Prefix env contained within the EPREFIX
+ use prefix && myconf+=( --without-local-dir )
+
+ if tc-is-cross-compiler ; then
+ export vim_cv_getcwd_broken=no \
+ vim_cv_memmove_handles_overlap=yes \
+ vim_cv_stat_ignores_slash=yes \
+ vim_cv_terminfo=yes \
+ vim_cv_toupper_broken=no
+ fi
+
+ econf "${myconf[@]}"
+}
+
+src_compile() {
+ emake -j1 -C src auto/osdef.h objects
+ emake tools
+}
+
+src_test() { :; }
+
+src_install() {
+ local vimfiles=/usr/share/vim/vim${VIM_VERSION/.}
+
+ dodir /usr/{bin,share/{man/man1,vim}}
+ emake -C src \
+ installruntime \
+ installmanlinks \
+ installmacros \
+ installtutor \
+ installtutorbin \
+ installtools \
+ install-languages \
+ DESTDIR="${D}" \
+ BINDIR="${EPREFIX}"/usr/bin \
+ MANDIR="${EPREFIX}"/usr/share/man \
+ DATADIR="${EPREFIX}"/usr/share
+
+ keepdir ${vimfiles}/keymap
+
+ # default vimrc is installed by vim-core since it applies to
+ # both vim and gvim
+ insinto /etc/vim/
+ newins "${FILESDIR}"/vimrc-r6 vimrc
+ eprefixify "${ED}"/etc/vim/vimrc
+
+ if use minimal; then
+ # To save space, install only a subset of the files.
+ # Helps minimalize the livecd, bug 65144.
+ rm -rv "${ED}${vimfiles}"/{compiler,doc,ftplugin,indent} || die
+ rm -rv "${ED}${vimfiles}"/{macros,print,tools,tutor} || die
+ rm -v "${ED}"/usr/bin/vimtutor || die
+
+ for f in "${ED}${vimfiles}"/colors/*.vim; do
+ if [[ ${f} != */@(default).vim ]] ; then
+ printf '%s\0' "${f}"
+ fi
+ done | xargs -0 rm -f || die
+
+ for f in "${ED}${vimfiles}"/syntax/*.vim; do
+ if [[ ${f} != */@(conf|crontab|fstab|inittab|resolv|sshdconfig|syntax|nosyntax|synload).vim ]] ; then
+ printf '%s\0' "${f}"
+ fi
+ done | xargs -0 rm -f || die
+ fi
+
+ newbashcomp "${FILESDIR}"/xxd-completion xxd
+
+ # install gvim icon since both vim/gvim desktop files reference it
+ doicon -s scalable "${FILESDIR}"/gvim.svg
+}
+
+pkg_postinst() {
+ # update documentation tags (from vim-doc.eclass)
+ update_vim_helptags
+
+ # update icon cache
+ xdg_icon_cache_update
+}
+
+pkg_postrm() {
+ # Update documentation tags (from vim-doc.eclass)
+ update_vim_helptags
+
+ # update icon cache
+ xdg_icon_cache_update
+}
diff --git a/sdk_container/src/third_party/coreos-overlay/app-editors/vim/Manifest b/sdk_container/src/third_party/coreos-overlay/app-editors/vim/Manifest
new file mode 100644
index 0000000000..0d678d63dc
--- /dev/null
+++ b/sdk_container/src/third_party/coreos-overlay/app-editors/vim/Manifest
@@ -0,0 +1,2 @@
+DIST vim-9.0.0469.tar.gz 16851209 BLAKE2B 21c8dc3fb68163a9628833e550043de8d84df6afaf50e3a236e18d4766f25f5713e1595fcfb9e821c114cc409379c6a88eae3830112431d8dab7d58fecbc1ae5 SHA512 49f4b0f97745436b4720905a2ac5f16f6bed28a57411083f8b5cb903d5c908d53e626d5dc4f8d1d9d83bd2021281a9d423a2e811b75d4ad6d8bfbea22dc9cd8f
+DIST vim-patches-vim-9.0.0049-patches.tar.gz 2743 BLAKE2B dff3e215b235e1cbc2c62b1af2d1414d10b794dbee9f5e7797fb3d34e00c2e065c339d4c82bf28aed53e0b5f2f8f1ee5c7ce69851cd63360788609bf144ac922 SHA512 7d5c64d674fa77048fdca7287072c0e488723133e254c10711dbadf750416c368725327ca9b76f332017bc70aa544a9baef671765eabf0d172d39921ffd7d942
diff --git a/sdk_container/src/third_party/coreos-overlay/app-editors/vim/files/vim-completion b/sdk_container/src/third_party/coreos-overlay/app-editors/vim/files/vim-completion
new file mode 100644
index 0000000000..67537d6310
--- /dev/null
+++ b/sdk_container/src/third_party/coreos-overlay/app-editors/vim/files/vim-completion
@@ -0,0 +1,36 @@
+# Author: Ciaran McCreesh
+#
+# completion for vim
+
+_vim()
+{
+ local cur prev cmd args
+
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ cmd=${COMP_WORDS[0]}
+
+ if [[ "${prev}" == "--servername" ]] ; then
+ local servers
+ servers=$(gvim --serverlist )
+ COMPREPLY=( $( compgen -W "${servers}" -- $cur ) )
+
+ elif [[ "${prev}" == -[uUi] ]] ; then
+ COMPREPLY=( $( compgen -W "NONE" ) \
+ $( compgen -f -X "!*vim*" -- "$cur" ) )
+
+ elif [[ "${cur}" == -* ]] ; then
+ args='-t -q -c -S --cmd -A -b -C -d -D -e -E -f --nofork \
+ -F -g -h -H -i -L -l -m -M -N -n -nb -o -R -r -s \
+ -T -u -U -V -v -w -W -x -X -y -Y -Z --echo-wid \
+ --help --literal --noplugin --version'
+ COMPREPLY=( $( compgen -W "${args}" -- $cur ) )
+ else
+ _filedir
+ fi
+}
+
+complete -o filenames -F _vim vim ex vi view rvim rview vimdiff
+
+# vim: set ft=sh sw=4 et sts=4 :
diff --git a/sdk_container/src/third_party/coreos-overlay/app-editors/vim/metadata.xml b/sdk_container/src/third_party/coreos-overlay/app-editors/vim/metadata.xml
new file mode 100644
index 0000000000..4d10c66219
--- /dev/null
+++ b/sdk_container/src/third_party/coreos-overlay/app-editors/vim/metadata.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ vim@gentoo.org
+ Gentoo Vim Project
+
+
+
+ cpe:/a:vim:vim
+ vim/vim
+
+
diff --git a/sdk_container/src/third_party/coreos-overlay/app-editors/vim/vim-9.0.0469.ebuild b/sdk_container/src/third_party/coreos-overlay/app-editors/vim/vim-9.0.0469.ebuild
new file mode 100644
index 0000000000..1769b3cf44
--- /dev/null
+++ b/sdk_container/src/third_party/coreos-overlay/app-editors/vim/vim-9.0.0469.ebuild
@@ -0,0 +1,366 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Please bump with app-editors/vim-core and app-editors/gvim
+
+VIM_VERSION="9.0"
+LUA_COMPAT=( lua5-{1..4} luajit )
+PYTHON_COMPAT=( python3_{8..11} )
+PYTHON_REQ_USE="threads(+)"
+USE_RUBY="ruby27 ruby30 ruby31"
+
+inherit vim-doc flag-o-matic bash-completion-r1 lua-single python-single-r1 ruby-single desktop xdg-utils
+
+if [[ ${PV} == 9999* ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/vim/vim.git"
+else
+ SRC_URI="https://github.com/vim/vim/archive/v${PV}.tar.gz -> ${P}.tar.gz
+ https://gitweb.gentoo.org/proj/vim-patches.git/snapshot/vim-patches-vim-9.0.0049-patches.tar.gz"
+ KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+fi
+
+DESCRIPTION="Vim, an improved vi-style text editor"
+HOMEPAGE="https://vim.sourceforge.io/ https://github.com/vim/vim"
+
+LICENSE="vim"
+SLOT="0"
+IUSE="X acl crypt cscope debug gpm lua minimal nls perl python racket ruby selinux sound tcl terminal vim-pager"
+REQUIRED_USE="
+ lua? ( ${LUA_REQUIRED_USE} )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ vim-pager? ( !minimal )
+"
+
+RDEPEND="
+ >=app-eselect/eselect-vi-1.1
+ >=sys-libs/ncurses-5.2-r2:0=
+ nls? ( virtual/libintl )
+ acl? ( kernel_linux? ( sys-apps/acl ) )
+ crypt? ( dev-libs/libsodium:= )
+ cscope? ( dev-util/cscope )
+ gpm? ( >=sys-libs/gpm-1.19.3 )
+ lua? ( ${LUA_DEPS}
+ $(lua_gen_impl_dep 'deprecated' lua5-1)
+ )
+ ~app-editors/vim-core-${PV}
+ !> "${S}"/src/feature.h || die "echo failed"
+ echo '#define SYS_GVIMRC_FILE "'${EPREFIX}'/etc/vim/gvimrc"' \
+ >> "${S}"/src/feature.h || die "echo failed"
+
+ # Use exuberant ctags which installs as /usr/bin/exuberant-ctags.
+ # Hopefully this pattern won't break for a while at least.
+ # This fixes bug #29398 (27 Sep 2003 agriffis)
+ sed -i -e \
+ 's/\> "$c" || die "echo failed"
+ done
+
+ # conditionally make the manpager.sh script
+ if use vim-pager; then
+ cat > "${S}"/runtime/macros/manpager.sh <<-_EOF_ || die "cat EOF failed"
+ #!/bin/sh
+ sed -e 's/\x1B\[[[:digit:]]\+m//g' | col -b | \\
+ vim \\
+ -c 'let no_plugin_maps = 1' \\
+ -c 'set nolist nomod ft=man ts=8' \\
+ -c 'let g:showmarks_enable=0' \\
+ -c 'runtime! macros/less.vim' -
+ _EOF_
+ fi
+
+ # Try to avoid sandbox problems. Bug #114475.
+ if [[ -d "${S}"/src/po ]]; then
+ sed -i -e \
+ '/-S check.vim/s,..VIM.,ln -s $(VIM) testvim \; ./testvim -X,' \
+ "${S}"/src/po/Makefile || die "sed failed"
+ fi
+
+ cp -v "${S}"/src/config.mk.dist "${S}"/src/auto/config.mk || die "cp failed"
+
+ sed -i -e \
+ "s:\\\$(PERLLIB)/ExtUtils/xsubpp:${EPREFIX}/usr/bin/xsubpp:" \
+ "${S}"/src/Makefile || die 'sed for ExtUtils-ParseXS failed'
+
+ # Fix bug 18245: Prevent "make" from the following chain:
+ # (1) Notice configure.ac is newer than auto/configure
+ # (2) Rebuild auto/configure
+ # (3) Notice auto/configure is newer than auto/config.mk
+ # (4) Run ./configure (with wrong args) to remake auto/config.mk
+ sed -i 's# auto/config\.mk:#:#' src/Makefile || die "Makefile sed failed"
+ rm src/auto/configure || die "rm failed"
+
+ eapply_user
+}
+
+src_configure() {
+
+ # Fix bug #37354: Disallow -funroll-all-loops on amd64
+ # Bug #57859 suggests that we want to do this for all archs
+ filter-flags -funroll-all-loops
+
+ # Fix bug 76331: -O3 causes problems, use -O2 instead. We'll do this for
+ # everyone since previous flag filtering bugs have turned out to affect
+ # multiple archs...
+ replace-flags -O3 -O2
+
+ emake -j1 -C src autoconf
+
+ # This should fix a sandbox violation (see bug #24447). The hvc
+ # things are for ppc64, see bug #86433.
+ for file in /dev/pty/s* /dev/console /dev/hvc/* /dev/hvc*; do
+ if [[ -e "${file}" ]]; then
+ addwrite ${file}
+ fi
+ done
+
+ local myconf=()
+ if use minimal; then
+ myconf=(
+ --with-features=tiny
+ --disable-nls
+ --disable-canberra
+ --disable-acl
+ --enable-gui=no
+ --without-x
+ --disable-darwin
+ --disable-luainterp
+ --disable-perlinterp
+ --disable-pythoninterp
+ --disable-mzschemeinterp
+ --disable-rubyinterp
+ --disable-selinux
+ --disable-tclinterp
+ --disable-gpm
+ )
+ else
+ use debug && append-flags "-DDEBUG"
+
+ myconf=(
+ --with-features=huge
+ $(use_enable sound canberra)
+ $(use_enable acl)
+ $(use_enable crypt libsodium)
+ $(use_enable cscope)
+ $(use_enable gpm)
+ $(use_enable nls)
+ $(use_enable perl perlinterp)
+ $(use_enable python python3interp)
+ $(use_with python python3-command "${PYTHON}")
+ $(use_enable racket mzschemeinterp)
+ $(use_enable ruby rubyinterp)
+ $(use_enable selinux)
+ $(use_enable tcl tclinterp)
+ $(use_enable terminal)
+ )
+
+ # --with-features=huge forces on cscope even if we --disable it. We need
+ # to sed this out to avoid screwiness. (1 Sep 2004 ciaranm)
+ if ! use cscope; then
+ sed -i -e \
+ '/# define FEAT_CSCOPE/d' src/feature.h || die "sed failed"
+ fi
+
+ if use lua; then
+ myconf+=(
+ --enable-luainterp
+ $(use_with lua_single_target_luajit luajit)
+ --with-lua-prefix="${EPREFIX}/usr"
+ )
+ fi
+
+ # don't test USE=X here ... see bug #19115
+ # but need to provide a way to link against X ... see bug #20093
+ myconf+=(
+ --enable-gui=no
+ --disable-darwin
+ $(use_with X x)
+ )
+ fi
+
+ # let package manager strip binaries
+ export ac_cv_prog_STRIP="$(type -P true ) faking strip"
+
+ # keep prefix env contained within the EPREFIX
+ use prefix && myconf+=( --without-local-dir )
+
+ if tc-is-cross-compiler ; then
+ export vim_cv_getcwd_broken=no \
+ vim_cv_memmove_handles_overlap=yes \
+ vim_cv_stat_ignores_slash=yes \
+ vim_cv_terminfo=yes \
+ vim_cv_toupper_broken=no
+ fi
+
+ econf \
+ --with-modified-by=Gentoo-${PVR} \
+ "${myconf[@]}"
+}
+
+src_compile() {
+ # The following allows emake to be used
+ emake -j1 -C src auto/osdef.h objects
+
+ emake
+}
+
+src_test() {
+ einfo
+ einfo "Starting vim tests. Several error messages will be shown"
+ einfo "while the tests run. This is normal behaviour and does not"
+ einfo "indicate a fault."
+ einfo
+ ewarn "If the tests fail, your terminal may be left in a strange"
+ ewarn "state. Usually, running 'reset' will fix this."
+ einfo
+
+ # Don't let vim talk to X
+ unset DISPLAY
+
+ # Arch and opensuse seem to do this and at this point, I'm willing
+ # to try anything to avoid random test hangs!
+ export TERM=xterm
+
+ # See https://github.com/vim/vim/blob/f08b0eb8691ff09f98bc4beef986ece1c521655f/src/testdir/runtest.vim#L5
+ # for more information on test variables we can use.
+ # Note that certain variables need vim-compatible regex (not PCRE), see e.g.
+ # http://www.softpanorama.org/Editors/Vimorama/vim_regular_expressions.shtml.
+ #
+ # Skipped tests:
+ # - Test_expand_star_star
+ # Hangs because of a recursive symlink in /usr/include/nodejs (bug #616680)
+ # - Test_exrc
+ # Looks in wrong location? (bug #742710)
+ # - Test_job_tty_in_out
+ # Fragile and depends on TERM(?)
+ # - Test_spelldump_bang
+ # Hangs.
+ # - Test_fuzzy_completion_env
+ # Too sensitive to leaked environment variables.
+ # - Test_term_mouse_multiple_clicks_to_select_mode
+ # Hangs.
+ # - Test_spelldump
+ # Hangs.
+ export TEST_SKIP_PAT='\(Test_expand_star_star\|Test_exrc\|Test_job_tty_in_out\|Test_spelldump_bang\|Test_fuzzy_completion_env\|Test_term_mouse_multiple_clicks_to_select_mode\|Test_spelldump\)'
+
+ emake -j1 -C src/testdir nongui
+}
+
+# Call eselect vi update with --if-unset
+# to respect user's choice (bug #187449)
+eselect_vi_update() {
+ ebegin "Calling eselect vi update"
+ eselect vi update --if-unset
+ eend $?
+}
+
+src_install() {
+ local vimfiles=/usr/share/vim/vim${VIM_VERSION/.}
+
+ # Note: Do not install symlinks for 'vi', 'ex', or 'view', as these are
+ # managed by eselect-vi
+ dobin src/vim
+ if ! use minimal ; then
+ dosym vim /usr/bin/vimdiff
+ fi
+ dosym vim /usr/bin/rvim
+ dosym vim /usr/bin/rview
+ if use vim-pager ; then
+ dosym ${vimfiles}/macros/less.sh /usr/bin/vimpager
+ dosym ${vimfiles}/macros/manpager.sh /usr/bin/vimmanpager
+ insinto ${vimfiles}/macros
+ doins runtime/macros/manpager.sh
+ fperms a+x ${vimfiles}/macros/manpager.sh
+ fi
+
+ domenu runtime/vim.desktop
+
+ newbashcomp "${FILESDIR}"/${PN}-completion ${PN}
+
+ # keep in sync with 'complete ... -F' list
+ bashcomp_alias vim ex vi view rvim rview vimdiff
+}
+
+pkg_postinst() {
+ # Update documentation tags (from vim-doc.eclass)
+ update_vim_helptags
+
+ # Call eselect vi update
+ eselect_vi_update
+
+ # update desktop file mime cache
+ xdg_desktop_database_update
+}
+
+pkg_postrm() {
+ # Update documentation tags (from vim-doc.eclass)
+ update_vim_helptags
+
+ # Call eselect vi update
+ eselect_vi_update
+
+ # update desktop file mime cache
+ xdg_desktop_database_update
+}
diff --git a/sdk_container/src/third_party/coreos-overlay/changelog/security/2022-09-20-vim-update.md b/sdk_container/src/third_party/coreos-overlay/changelog/security/2022-09-20-vim-update.md
new file mode 100644
index 0000000000..18149971f3
--- /dev/null
+++ b/sdk_container/src/third_party/coreos-overlay/changelog/security/2022-09-20-vim-update.md
@@ -0,0 +1 @@
+- vim ([CVE-2022-2042](https://nvd.nist.gov/vuln/detail/CVE-2022-2042), [CVE-2022-2124](https://nvd.nist.gov/vuln/detail/CVE-2022-2124), [CVE-2022-2125](https://nvd.nist.gov/vuln/detail/CVE-2022-2125), [CVE-2022-2126](https://nvd.nist.gov/vuln/detail/CVE-2022-2126), [CVE-2022-2129](https://nvd.nist.gov/vuln/detail/CVE-2022-2129), [CVE-2022-2175](https://nvd.nist.gov/vuln/detail/CVE-2022-2175), [CVE-2022-2182](https://nvd.nist.gov/vuln/detail/CVE-2022-2182), [CVE-2022-2183](https://nvd.nist.gov/vuln/detail/CVE-2022-2183), [CVE-2022-2206](https://nvd.nist.gov/vuln/detail/CVE-2022-2206), [CVE-2022-2207](https://nvd.nist.gov/vuln/detail/CVE-2022-2207), [CVE-2022-2208](https://nvd.nist.gov/vuln/detail/CVE-2022-2208), [CVE-2022-2210](https://nvd.nist.gov/vuln/detail/CVE-2022-2210), [CVE-2022-2231](https://nvd.nist.gov/vuln/detail/CVE-2022-2231), [CVE-2022-2257](https://nvd.nist.gov/vuln/detail/CVE-2022-2257), [CVE-2022-2264](https://nvd.nist.gov/vuln/detail/CVE-2022-2264), [CVE-2022-2284](https://nvd.nist.gov/vuln/detail/CVE-2022-2284), [CVE-2022-2285](https://nvd.nist.gov/vuln/detail/CVE-2022-2285), [CVE-2022-2286](https://nvd.nist.gov/vuln/detail/CVE-2022-2286), [CVE-2022-2287](https://nvd.nist.gov/vuln/detail/CVE-2022-2287), [CVE-2022-2288](https://nvd.nist.gov/vuln/detail/CVE-2022-2288), [CVE-2022-2289](https://nvd.nist.gov/vuln/detail/CVE-2022-2289), [CVE-2022-2304](https://nvd.nist.gov/vuln/detail/CVE-2022-2304), [CVE-2022-2343](https://nvd.nist.gov/vuln/detail/CVE-2022-2343), [CVE-2022-2344](https://nvd.nist.gov/vuln/detail/CVE-2022-2344), [CVE-2022-2345](https://nvd.nist.gov/vuln/detail/CVE-2022-2345), [CVE-2022-2522](https://nvd.nist.gov/vuln/detail/CVE-2022-2522), [CVE-2022-2816](https://nvd.nist.gov/vuln/detail/CVE-2022-2816), [CVE-2022-2817](https://nvd.nist.gov/vuln/detail/CVE-2022-2817), [CVE-2022-2819](https://nvd.nist.gov/vuln/detail/CVE-2022-2819), [CVE-2022-2845](https://nvd.nist.gov/vuln/detail/CVE-2022-2845), [CVE-2022-2849](https://nvd.nist.gov/vuln/detail/CVE-2022-2849), [CVE-2022-2862](https://nvd.nist.gov/vuln/detail/CVE-2022-2862), [CVE-2022-2874](https://nvd.nist.gov/vuln/detail/CVE-2022-2874), [CVE-2022-2889](https://nvd.nist.gov/vuln/detail/CVE-2022-2889), [CVE-2022-2923](https://nvd.nist.gov/vuln/detail/CVE-2022-2923), [CVE-2022-2946](https://nvd.nist.gov/vuln/detail/CVE-2022-2946), [CVE-2022-2980](https://nvd.nist.gov/vuln/detail/CVE-2022-2980), [CVE-2022-2982](https://nvd.nist.gov/vuln/detail/CVE-2022-2982), [CVE-2022-3016](https://nvd.nist.gov/vuln/detail/CVE-2022-3016), [CVE-2022-3099](https://nvd.nist.gov/vuln/detail/CVE-2022-3099), [CVE-2022-3134](https://nvd.nist.gov/vuln/detail/CVE-2022-3134), [CVE-2022-3153](https://nvd.nist.gov/vuln/detail/CVE-2022-3153))
diff --git a/sdk_container/src/third_party/coreos-overlay/changelog/updates/2022-09-20-vim-update.md b/sdk_container/src/third_party/coreos-overlay/changelog/updates/2022-09-20-vim-update.md
new file mode 100644
index 0000000000..aa7d4e969a
--- /dev/null
+++ b/sdk_container/src/third_party/coreos-overlay/changelog/updates/2022-09-20-vim-update.md
@@ -0,0 +1 @@
+- vim ([9.0.0469](https://github.com/vim/vim/releases/tag/v9.0.0469))
diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/amd64/generic/package.use b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/amd64/generic/package.use
index 5beba2518d..d71d119c57 100644
--- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/amd64/generic/package.use
+++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/amd64/generic/package.use
@@ -4,9 +4,3 @@ sys-firmware/intel-microcode vanilla
# Enable gssapi only for amd64, to avoid build errors in arm64.
net-dns/bind-tools gssapi
-
-# -crypt: Disable crypt to avoid installing libsodlium in amd64.
-app-editors/vim -crypt
-
-# minimal: Don't pull app-vim/gentoo-syntax in amd64
-app-editors/vim-core minimal
diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/arm64/generic/package.use b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/arm64/generic/package.use
deleted file mode 100644
index 82e4dbbe81..0000000000
--- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/arm64/generic/package.use
+++ /dev/null
@@ -1,5 +0,0 @@
-# Disable crypt to avoid installing libsodlium in arm64.
-app-editors/vim -crypt
-
-# minimal: Don't pull app-vim/gentoo-syntax in arm64
-app-editors/vim-core minimal
diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.accept_keywords b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.accept_keywords
index ac86527bd5..b9b277b21b 100644
--- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.accept_keywords
+++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.accept_keywords
@@ -42,10 +42,6 @@
# Keep iproute in sync with kernel version.
=sys-apps/iproute2-5.15.0 ~amd64 ~arm64
-# Required for some CVEs
-=app-editors/vim-8.2.5066-r1 ~amd64 ~arm64
-=app-editors/vim-core-8.2.5066-r1 ~amd64 ~arm64
-
# FIPS support is still being tested
=sys-fs/cryptsetup-2.4.3-r1 ~amd64 ~arm64
diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/generic/package.use b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/generic/package.use
index c675c12b17..2a3cb5156b 100644
--- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/generic/package.use
+++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/generic/package.use
@@ -2,7 +2,10 @@
# Distributed under the terms of the GNU General Public License v2
app-admin/sudo ldap sssd
-app-editors/vim minimal
+# -crypt: Disable crypt to avoid installing libsodlium.
+app-editors/vim minimal -crypt
+# minimal: Don't pull app-vim/gentoo-syntax
+app-editors/vim-core minimal
dev-lang/python gdbm
dev-libs/dbus-glib tools
dev-libs/elfutils -utils