re2c: rework package to use multiple build systems (#46748)

Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
This commit is contained in:
Massimiliano Culpo 2024-10-04 19:48:58 +02:00 committed by GitHub
parent 7a9a634c94
commit 1756aeb45a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 36 additions and 51 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2,13 +2,11 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details. # Spack Project Developers. See the top-level COPYRIGHT file for details.
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.build_systems import autotools, cmake
import sys
from spack.package import * from spack.package import *
class Re2c(Package): class Re2c(AutotoolsPackage, CMakePackage):
"""re2c: a free and open-source lexer generator for C and C++""" """re2c: a free and open-source lexer generator for C and C++"""
homepage = "https://re2c.org/index.html" homepage = "https://re2c.org/index.html"
@ -17,13 +15,13 @@ class Re2c(Package):
license("Public-Domain") license("Public-Domain")
# Python 3.7 is required for re2c@3.1, but the clingo bootstrap on OpenSUSE Leap uses version("3.1", sha256="0ac299ad359e3f512b06a99397d025cfff81d3be34464ded0656f8a96676c029")
# the system Python 3.6 such that the bootstrap fails with an UnsatisfiableVersionSpecError
# version("3.1", sha256="0ac299ad359e3f512b06a99397d025cfff81d3be34464ded0656f8a96676c029")
version("3.0", sha256="b3babbbb1461e13fe22c630a40c43885efcfbbbb585830c6f4c0d791cf82ba0b") version("3.0", sha256="b3babbbb1461e13fe22c630a40c43885efcfbbbb585830c6f4c0d791cf82ba0b")
version("2.2", sha256="0fc45e4130a8a555d68e230d1795de0216dfe99096b61b28e67c86dfd7d86bda") version("2.2", sha256="0fc45e4130a8a555d68e230d1795de0216dfe99096b61b28e67c86dfd7d86bda")
version("2.1.1", sha256="036ee264fafd5423141ebd628890775aa9447a4c4068a6307385d7366fe711f8") version("2.1.1", sha256="036ee264fafd5423141ebd628890775aa9447a4c4068a6307385d7366fe711f8")
version("2.1", sha256="8cba0d95c246c670de8f97f57def83a9c0f2113eaa6f7e4867a941f48f633540") version("2.1", sha256="8cba0d95c246c670de8f97f57def83a9c0f2113eaa6f7e4867a941f48f633540")
with default_args(deprecated=True):
version("2.0.3", sha256="b2bc1eb8aaaa21ff2fcd26507b7e6e72c5e3d887e58aa515c2155fb17d744278") version("2.0.3", sha256="b2bc1eb8aaaa21ff2fcd26507b7e6e72c5e3d887e58aa515c2155fb17d744278")
version("2.0.2", sha256="6cddbb558dbfd697a729cb4fd3f095524480283b89911ca5221835d8a67ae5e0") version("2.0.2", sha256="6cddbb558dbfd697a729cb4fd3f095524480283b89911ca5221835d8a67ae5e0")
version("2.0.1", sha256="aef8b50bb75905b2d55a7236380c0efdc756fa077fe16d808aaacbb10fb53531") version("2.0.1", sha256="aef8b50bb75905b2d55a7236380c0efdc756fa077fe16d808aaacbb10fb53531")
@ -31,24 +29,17 @@ class Re2c(Package):
version("1.3", sha256="f37f25ff760e90088e7d03d1232002c2c2672646d5844fdf8e0d51a5cd75a503") version("1.3", sha256="f37f25ff760e90088e7d03d1232002c2c2672646d5844fdf8e0d51a5cd75a503")
version("1.2.1", sha256="1a4cd706b5b966aeffd78e3cf8b24239470ded30551e813610f9cd1a4e01b817") version("1.2.1", sha256="1a4cd706b5b966aeffd78e3cf8b24239470ded30551e813610f9cd1a4e01b817")
depends_on("c", type="build") # generated build_system(conditional("cmake", when="@2.2:"), "autotools", default="autotools")
depends_on("cxx", type="build") # generated
phases = ["configure", "build", "install"] depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("python@3.7:", when="@3.1", type="build")
depends_on("cmake", when="platform=windows") with when("build_system=cmake"):
depends_on("gmake", when="platform=linux") depends_on("cmake@3.12:", type="build")
depends_on("gmake", when="platform=darwin")
depends_on("gmake", when="platform=freebsd")
# depends_on("python@3:", when="@3.1:", type="build")
@property
def make_tool(self):
if sys.platform == "win32":
return ninja
else:
return make
class AutotoolsBuilder(autotools.AutotoolsBuilder):
def configure_args(self): def configure_args(self):
return [ return [
"--disable-benchmarks", "--disable-benchmarks",
@ -56,24 +47,18 @@ def configure_args(self):
"--disable-dependency-tracking", "--disable-dependency-tracking",
"--disable-docs", "--disable-docs",
"--disable-lexers", # requires existing system re2c "--disable-lexers", # requires existing system re2c
"--disable-libs", # experimental "--enable-libs",
"--enable-golang", "--enable-golang",
] ]
def configure(self, spec, prefix):
with working_dir(self.stage.source_path, create=True):
configure("--prefix=" + prefix, *self.configure_args())
@when("platform=windows") class CMakeBuilder(cmake.CMakeBuilder):
def configure(self, spec, prefix): def cmake_args(self):
with working_dir(self.stage.source_path, create=True): return [
args = ["-G", "Ninja", "-DCMAKE_INSTALL_PREFIX=%s" % prefix] self.define("RE2C_BUILD_LIBS", True),
cmake(*args) self.define("RE2C_REBUILD_DOCS", False),
self.define("RE2C_REBUILD_LEXERS", False),
def build(self, spec, prefix): self.define("RE2C_REBUILD_PARSERS", False),
with working_dir(self.stage.source_path): self.define("RE2C_BUILD_RE2RUST", False),
self.make_tool() self.define("RE2C_BUILD_RE2GO", False),
]
def install(self, spec, prefix):
with working_dir(self.stage.source_path):
self.make_tool("install")