jasper: multiple build systems (#44859)
This commit is contained in:
		| @@ -3,34 +3,41 @@ | ||||
| # | ||||
| # SPDX-License-Identifier: (Apache-2.0 OR MIT) | ||||
| 
 | ||||
| from spack.build_systems import autotools, cmake | ||||
| from spack.package import * | ||||
| 
 | ||||
| 
 | ||||
| class Jasper(Package): | ||||
| class Jasper(AutotoolsPackage, CMakePackage): | ||||
|     """Library for manipulating JPEG-2000 images""" | ||||
| 
 | ||||
|     homepage = "https://www.ece.uvic.ca/~frodo/jasper/" | ||||
|     url = "https://github.com/jasper-software/jasper/archive/version-2.0.32.tar.gz" | ||||
| 
 | ||||
|     version("4.2.4", sha256="23a3d58cdeacf3abdf9fa1d81dcefee58da6ab330940790c0f27019703bfd2cd") | ||||
|     version("3.0.6", sha256="c79961bc00158f5b5dc5f5fcfa792fde9bebb024432689d0f9e3f95a097d0ec3") | ||||
|     version("3.0.3", sha256="1b324f7746681f6d24d06fcf163cf3b8ae7ac320adc776c3d611b2b62c31b65f") | ||||
|     version("2.0.32", sha256="a3583a06698a6d6106f2fc413aa42d65d86bedf9a988d60e5cfa38bf72bc64b9") | ||||
|     version("2.0.31", sha256="d419baa2f8a6ffda18472487f6314f0f08b673204723bf11c3a1f5b3f1b8e768") | ||||
|     version("2.0.16", sha256="f1d8b90f231184d99968f361884e2054a1714fdbbd9944ba1ae4ebdcc9bbfdb1") | ||||
|     version("2.0.14", sha256="85266eea728f8b14365db9eaf1edc7be4c348704e562bb05095b9a077cf1a97b") | ||||
|     version("1.900.1", sha256="c2b03f28166f9dc8ae434918839ae9aa9962b880fcfd24eebddd0a2daeb9192c") | ||||
|     version( | ||||
|         "1.900.1", | ||||
|         sha256="c2b03f28166f9dc8ae434918839ae9aa9962b880fcfd24eebddd0a2daeb9192c", | ||||
|         deprecated=True, | ||||
|     ) | ||||
| 
 | ||||
|     build_system( | ||||
|         conditional("cmake", when="@2:"), conditional("autotools", when="@:1"), default="cmake" | ||||
|     ) | ||||
| 
 | ||||
|     variant("jpeg", default=True, description="Enable the use of the JPEG library") | ||||
|     variant("opengl", default=False, description="Enable the use of the OpenGL and GLUT libraries") | ||||
|     variant("shared", default=True, description="Enable the building of shared libraries") | ||||
|     variant( | ||||
|         "build_type", | ||||
|         default="Release", | ||||
|         description="CMake build type", | ||||
|         values=("Debug", "Release"), | ||||
|     ) | ||||
| 
 | ||||
|     depends_on("cmake@2.8.11:", type="build", when="@2:") | ||||
|     depends_on("cmake@3.12:", type="build", when="@3:") | ||||
|     with when("build_system=cmake"): | ||||
|         depends_on("cmake@2.8.11:", type="build") | ||||
|         depends_on("cmake@3.12:", type="build", when="@3:") | ||||
| 
 | ||||
|     depends_on("jpeg", when="+jpeg") | ||||
|     depends_on("gl", when="+opengl") | ||||
| 
 | ||||
| @@ -42,69 +49,22 @@ class Jasper(Package): | ||||
|     # See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=469786 | ||||
|     patch("fix_alpha_channel_assert_fail.patch", when="@1.900.1") | ||||
| 
 | ||||
| 
 | ||||
| class CMakeBuilder(cmake.CMakeBuilder): | ||||
|     def cmake_args(self): | ||||
|         spec = self.spec | ||||
|         args = std_cmake_args | ||||
|         args.append("-DJAS_ENABLE_DOC=false") | ||||
|         return [ | ||||
|             self.define("JAS_ENABLE_DOC", False), | ||||
|             self.define("JAS_ENABLE_LATEX", False), | ||||
|             self.define_from_variant("JAS_ENABLE_LIBJPEG", "jpeg"), | ||||
|             self.define_from_variant("JAS_ENABLE_OPENGL", "opengl"), | ||||
|             self.define_from_variant("JAS_ENABLE_SHARED", "shared"), | ||||
|         ] | ||||
| 
 | ||||
|         if "+jpeg" in spec: | ||||
|             args.append("-DJAS_ENABLE_LIBJPEG=true") | ||||
|         else: | ||||
|             args.append("-DJAS_ENABLE_LIBJPEG=false") | ||||
| 
 | ||||
|         if "+opengl" in spec: | ||||
|             args.append("-DJAS_ENABLE_OPENGL=true") | ||||
|         else: | ||||
|             args.append("-DJAS_ENABLE_OPENGL=false") | ||||
| 
 | ||||
|         if "+shared" in spec: | ||||
|             args.append("-DJAS_ENABLE_SHARED=true") | ||||
|         else: | ||||
|             args.append("-DJAS_ENABLE_SHARED=false") | ||||
| 
 | ||||
|         return args | ||||
| 
 | ||||
| class AutotoolsBuilder(autotools.AutotoolsBuilder): | ||||
|     def configure_args(self): | ||||
|         spec = self.spec | ||||
|         args = ["--prefix={0}".format(self.prefix)] | ||||
| 
 | ||||
|         if "+jpeg" in spec: | ||||
|             args.append("--enable-libjpeg") | ||||
|         else: | ||||
|             args.append("--disable-libjpeg") | ||||
| 
 | ||||
|         if "+opengl" in spec: | ||||
|             args.append("--enable-opengl") | ||||
|         else: | ||||
|             args.append("--disable-opengl") | ||||
| 
 | ||||
|         if "+shared" in spec: | ||||
|             args.append("--enable-shared") | ||||
|         else: | ||||
|             args.append("--disable-shared") | ||||
| 
 | ||||
|         if "build_type=Debug" in spec: | ||||
|             args.append("--enable-debug") | ||||
|         else: | ||||
|             args.append("--disable-debug") | ||||
| 
 | ||||
|         args = [] | ||||
|         args.extend(self.enable_or_disable("jpeg")) | ||||
|         args.extend(self.enable_or_disable("opengl")) | ||||
|         args.extend(self.enable_or_disable("shared")) | ||||
|         return args | ||||
| 
 | ||||
|     @when("@2:") | ||||
|     def install(self, spec, prefix): | ||||
|         with working_dir("spack-build", create=True): | ||||
|             cmake("..", *self.cmake_args()) | ||||
|             make() | ||||
|             if self.run_tests: | ||||
|                 make("test") | ||||
|             make("install") | ||||
| 
 | ||||
|     @when("@:1") | ||||
|     def install(self, spec, prefix): | ||||
|         configure(*self.configure_args()) | ||||
|         make() | ||||
|         if self.run_tests: | ||||
|             make("check") | ||||
|         make("install") | ||||
|         if self.run_tests: | ||||
|             make("installcheck") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Harmen Stoppels
					Harmen Stoppels