spack/var/spack/repos/builtin/packages/neovim/package.py
Harmen Stoppels eef9939c21
Automated git version fixes (#39637)
Use full length commit sha instead of short prefixes, to improve
reproducibility (future clashes) and guard against compromised repos and
man in the middle attacks.

Abbreviated commit shas are expanded to full length, to guard against future
clashes on short hash. It also guards against compromised repos and
man in the middle attacks, where attackers can easily fabricate a malicious
commit with a shasum prefix collision.

Versions with just tags now also get a commit sha, which can later be used to
check for retagged commits.
2023-08-29 16:33:03 +02:00

144 lines
5.4 KiB
Python

# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class Neovim(CMakePackage):
"""Neovim: Vim-fork focused on extensibility and usability"""
homepage = "https://neovim.io"
git = "https://github.com/neovim/neovim.git"
url = "https://github.com/neovim/neovim/archive/v0.4.3.tar.gz"
maintainers("albestro", "trws")
version("master", branch="master")
version("stable", tag="stable", commit="7d4bba7aa7a4a3444919ea7a3804094c290395ef")
version("0.9.1", sha256="8db17c2a1f4776dcda00e59489ea0d98ba82f7d1a8ea03281d640e58d8a3a00e")
version("0.9.0", sha256="39d79107c54d2f3babcad2cd157c399241c04f6e75e98c18e8afaf2bb5e82937")
version("0.8.3", sha256="adf45ff160e1d89f519b6114732eba03485ae469beb27919b0f7a4f6b44233c1")
version("0.8.2", sha256="c516c8db73e1b12917a6b2e991b344d0914c057cef8266bce61a2100a28ffcc9")
version("0.8.0", sha256="505e3dfb71e2f73495c737c034a416911c260c0ba9fd2092c6be296655be4d18")
version("0.7.2", sha256="ccab8ca02a0c292de9ea14b39f84f90b635a69282de38a6b4ccc8565bc65d096")
version("0.7.0", sha256="792a9c55d5d5f4a5148d475847267df309d65fb20f05523f21c1319ea8a6c7df")
version("0.6.1", sha256="dd882c21a52e5999f656cae3f336b5fc702d52addd4d9b5cd3dc39cfff35e864")
version("0.6.0", sha256="2cfd600cfa5bb57564cc22ffbbbcb2c91531053fc3de992df33656614384fa4c")
version("0.5.1", sha256="aa449795e5cc69bdd2eeed7095f20b9c086c6ecfcde0ab62ab97a9d04243ec84")
version(
"0.5.0",
sha256="6bcfa5192c9460c946e853dbd1a0baf659df5de184436144147711d1bceedeee",
deprecated=True,
)
version(
"0.4.4",
sha256="2f76aac59363677f37592e853ab2c06151cca8830d4b3fe4675b4a52d41fc42c",
deprecated=True,
)
version(
"0.4.3",
sha256="91a0b5d32204a821bf414690e6b48cf69224d1961d37158c2b383f6a6cf854d2",
deprecated=True,
)
version(
"0.3.4",
sha256="a641108bdebfaf319844ed46b1bf35d6f7c30ef5aeadeb29ba06e19c3274bc0e",
deprecated=True,
)
version(
"0.3.1",
sha256="bc5e392d4c076407906ccecbc283e1a44b7832c2f486cad81aa04cc29973ad22",
deprecated=True,
)
version(
"0.3.0",
sha256="f7acb61b16d3f521907d99c486b7a9f1e505e8b2a18c9ef69a6d7f18f29f74b8",
deprecated=True,
)
version(
"0.2.2",
sha256="a838ee07cc9a2ef8ade1b31a2a4f2d5e9339e244ade68e64556c1f4b40ccc5ed",
deprecated=True,
)
version(
"0.2.1",
sha256="9e2c068a8994c9023a5f84cde9eb7188d3c85996a7e42e611e3cd0996e345dd3",
deprecated=True,
)
version(
"0.2.0",
sha256="72e263f9d23fe60403d53a52d4c95026b0be428c1b9c02b80ab55166ea3f62b5",
deprecated=True,
)
variant(
"no_luajit",
default=False,
description="use lua rather than luajit as lua language provider",
)
# depend on virtual, lua-luajit-openresty preferred
depends_on("lua-lang")
depends_on("luajit", when="~no_luajit")
depends_on("lua@5.1:5.1.99", when="+no_luajit")
# dependencies to allow regular lua to work
depends_on("lua-ffi", when="^lua", type=("link", "run"))
depends_on("lua-bitlib", type=("link", "run"), when="^lua")
# base dependencies
depends_on("cmake@3.0:", type="build")
depends_on("pkgconfig", type="build")
depends_on("gettext")
depends_on("gperf", type="link")
depends_on("jemalloc", type="link", when="platform=linux")
depends_on("lua-lpeg")
depends_on("lua-mpack")
depends_on("iconv", type="link")
depends_on("libtermkey", type="link")
depends_on("libuv", type="link")
depends_on("libluv", type="link")
depends_on("libvterm", type="link")
depends_on("msgpack-c", type="link")
depends_on("unibilium", type="link")
depends_on("unibilium@:1.2.0", type="link", when="@0.2.0")
# versions
with when("@0.4:"):
depends_on("libuv@1.28:", type="link")
depends_on("libluv@1.30.0:", type="link")
depends_on("libtermkey@0.18:", type="link")
depends_on("libvterm@0.1:", type="link")
depends_on("unibilium@2.0:", type="link")
depends_on("msgpack-c@1.0.0:", type="link")
with when("@0.5:"):
depends_on("libuv@1.42:", type="link")
depends_on("tree-sitter")
with when("@0.6:"):
depends_on("cmake@3.10:", type="build")
depends_on("gperf@3.1:", type="link")
conflicts("^libiconv@:1.14")
depends_on("libtermkey@0.22:", type="link")
depends_on("libvterm@0.1.4:", type="link")
depends_on("msgpack-c@3.0.0:", type="link")
with when("@0.7:"):
depends_on("gettext@0.20.1:")
depends_on("libluv@1.43.0:", type="link")
depends_on("libuv@1.44.1:", type="link")
depends_on("tree-sitter@0.20.6:")
with when("@0.8:"):
depends_on("libvterm@0.3:", type="link")
with when("@0.9:"):
depends_on("tree-sitter@0.20.8:")
# Support for `libvterm@0.2:` has been added in neovim@0.8.0
# term: Add support for libvterm >= 0.2 (https://github.com/neovim/neovim/releases/tag/v0.8.0)
# https://github.com/neovim/neovim/issues/16217#issuecomment-958590493
conflicts("^libvterm@0.2:", when="@:0.7")
@when("^lua")
def cmake_args(self):
return [self.define("PREFER_LUA", True)]