Add local spack recipe for spglib

- Add variant shared to enable static library builds
- Add new versions 2.6.0 and 2.7.0
This commit is contained in:
Matthias Krack 2026-02-07 13:04:04 +01:00
parent 4c0ecfe9d1
commit c8face9be8
3 changed files with 255 additions and 0 deletions

View file

@ -0,0 +1,25 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3296d91..d18d26c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -47,17 +47,17 @@ set(SOURCES ${PROJECT_SOURCE_DIR}/src/arithmetic.c
add_library(symspg SHARED ${SOURCES})
set_property(TARGET symspg PROPERTY VERSION ${serial})
set_property(TARGET symspg PROPERTY SOVERSION ${soserial})
-install(TARGETS symspg LIBRARY DESTINATION ${PROJECT_SOURCE_DIR}/lib)
+install(TARGETS symspg LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
# Static link library
add_library(symspg_static STATIC ${SOURCES})
set_property(TARGET symspg_static PROPERTY VERSION ${serial})
set_property(TARGET symspg_static PROPERTY SOVERSION ${soserial})
set_property(TARGET symspg_static PROPERTY OUTPUT_NAME symspg)
-install(TARGETS symspg_static ARCHIVE DESTINATION ${PROJECT_SOURCE_DIR}/lib)
+install(TARGETS symspg_static ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
# Header file
-install(FILES ${PROJECT_SOURCE_DIR}/src/spglib.h DESTINATION ${PROJECT_SOURCE_DIR}/include)
+install(FILES ${PROJECT_SOURCE_DIR}/src/spglib.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
# make check
enable_testing()

View file

@ -0,0 +1,34 @@
From a91ea68d6771ed7d6b03bcbffd891489dc77e574 Mon Sep 17 00:00:00 2001
From: Krishnendu Ghosh
Date: Thu, 22 Feb 2018 14:24:14 -0500
Subject: [PATCH] added extern "C"
---
src/spglib.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/spglib.h b/src/spglib.h
index e1746b1..530dfa4 100644
--- a/src/spglib.h
+++ b/src/spglib.h
@@ -35,6 +35,9 @@
#ifndef __spglib_H__
#define __spglib_H__
+#ifdef __cplusplus
+extern "C" {
+#endif
/* SPGCONST is used instead of 'const' so to avoid gcc warning. */
/* However there should be better way than this way.... */
#ifndef SPGCONST
@@ -481,4 +484,7 @@ void spg_get_neighboring_grid_points(int relative_grid_points[],
/* Return 0 if failed */
int spg_niggli_reduce(double lattice[3][3], const double symprec);
+#ifdef __cplusplus
+}
+#endif
#endif
--
2.7.4.1.g5468f9e

View file

@ -0,0 +1,196 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack_repo.builtin.build_systems.cmake import CMakePackage
from spack.package import *
class Spglib(CMakePackage):
"""C library for finding and handling crystal symmetries."""
homepage = "https://spglib.readthedocs.io/"
url = "https://github.com/spglib/spglib/archive/v2.0.2.tar.gz"
maintainers("RMeli", "mkrack")
patch("fix_cmake_install.patch", when="@:1.10.3")
# patch by Krishnendu Ghosh
patch("fix_cpp.patch", when="@:1.10.3")
license("BSD-3-Clause")
version(
"2.7.0",
sha256="b22fc9abae9716c574fbc6d55cfc53ed654a714fccc5657a26ff5d18114bd8bd",
)
version(
"2.6.0",
sha256="c65af71136c915352eb82444b165ec83289877eb8e46593033f199801b43dbf7",
)
version(
"2.5.0",
sha256="b6026f5e85106c0c9ee57e54b9399890d0f29982e20e96ede0428b3efbe6b914",
)
version(
"2.4.0",
sha256="e33694b189c6864f719a59c31e2af55301a524fb68ba9fb65f08e95af471847d",
)
version(
"2.3.1",
sha256="c295dbea7d2fc9e50639aa14331fef277878c35f00ef0766e688bfbb7b17d44c",
)
version(
"2.3.0",
sha256="c05eb869018efe2efe5dcb2654cda19c5dd4c07434874205fa542f7766f7548e",
)
version(
"2.2.0",
sha256="ac929e20ec9d4621411e2cdec59b1442e02506c1e546005bbe2c7f781e9bd49a",
)
version(
"2.1.0",
sha256="31bca273a1bc54e1cff4058eebe7c0a35d5f9b489579e84667d8e005c73dcc13",
)
version(
"2.0.2",
sha256="10e44a35099a0a5d0fc6ee0cdb39d472c23cb98b1f5167c0e2b08f6069f3db1e",
)
version(
"2.0.1",
sha256="d7407c0d67174a0c5e41a82ed62948c43fcaf1b5529f97238d7fadd1123ffe22",
)
version(
"2.0.0",
sha256="426c4004e84fdb732d86aa5fcada5257ca8bc7a6915c06ced27565176c16ee96",
)
version(
"1.16.5",
sha256="1bbde03b6b78da756c07f458bd90d84f3c253841b9b0632db5b72c5961e87aef",
)
version(
"1.16.4",
sha256="7a1cdfdb104040e696e887999fd53d83931ba1285aa8fc3c703dcafc38fb1009",
)
version(
"1.16.3",
sha256="1dfe313b460f71de90ee8a01d9f2cd250cd59e16836e1bf64924500dd2aa7dc6",
)
version(
"1.16.2",
sha256="5723789bee7371ebba91d78c729d2a608f198fad5e1c95eebe18fda9f2914ec8",
)
version(
"1.16.1",
sha256="e90682239e4ef63b492fa4e44f7dbcde2e2fe2e688579d96b01f2730dfdf5b2e",
)
version(
"1.16.0",
sha256="969311a2942fef77ee79ac9faab089b68e256f21713194969197e7f2bdb14772",
)
version(
"1.15.1",
sha256="b6dc2c8adcc7d0edee7a076e765c28b2941b2aeba590d213a0b4893c8af0c026",
)
version(
"1.15.0",
sha256="2e217beff6840a22ab2149598eb2f40616b2eeb9e155edab52761d3301412f98",
)
version(
"1.14.1",
sha256="9803b0648d9c2d99377f3e1c4cecf712320488403cd674192ec5cbe956bb3c78",
)
version(
"1.14.0",
sha256="0a5e518c3dc221386d2219cbd260d08b032b0d2a31bccc32e1a8cb7874e7e9e9",
)
version(
"1.13.0",
sha256="ed72ae7bdd129487c45ff7bebb8e2ac03074657060e068b015e7741c0271e16b",
)
version(
"1.12.2",
sha256="d92f5e4fa0f54cc0abd0209b81c4d5c647dae9d25b774c2296f44b8558b17976",
)
version(
"1.12.1",
sha256="1765e68982425de6d30029d50d200f20425b8ed1deff52b8e73a4a1457ac9ab6",
)
version(
"1.12.0",
sha256="79361ef230b4fd55d5eb7521c23430acc3f11ab527125dc324ffb315783ebdfa",
)
version(
"1.11.2.1",
sha256="f6795523a04871e012e7f5f5ab97b249fa36657b73cdc9b4ea53ef023cfcaac4",
)
version(
"1.11.2",
sha256="aae61218dd0cca1fda245d4ad906c2eed5e8d30e28b575d74eab9a6be26bbd5d",
)
version(
"1.11.1.2",
sha256="d99dab24accd269df65c01febd05cb5dd1094a89d7279f8390871f0432df2b56",
)
version(
"1.11.1",
sha256="3b5a859f3fe2c9b096fc0754ffbd9341c568bc8003d2eeb74c958c1cacb480f5",
)
version(
"1.11.0",
sha256="e4befe27473a69b7982597760d6838cc48d9ef7b624a439436a17f5487f78f51",
)
version(
"1.10.4",
sha256="6a15a324a821ad9d3e615e120d9c5e704e284d8eb1f076aa21741a23fbcf08df",
)
version(
"1.10.3",
sha256="43776b5fb220b746d53c1aa39d0230f304687ec05984671392bccaf850d9d696",
)
version(
"1.10.2",
sha256="5907d0d29563689146512ef24aa8960d9475c5de326501f277bb58b3de21b07d",
)
version(
"1.10.1",
sha256="8ed979cda82f6d440567197ec191bffcb82ee83c5bfe8a484c5a008dd00273f0",
)
version(
"1.10.0",
sha256="117fff308731784bea2ddaf3d076f0ecbf3981b31ea1c1bfd5ce4f057a5325b1",
)
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("fortran", type="build") # generated
variant(
"openmp", default=True, description="Build with OpenMP support", when="@1.16.2:"
)
variant(
"fortran", default=True, description="Build Fortran interface", when="@1.16.4:"
)
variant(
"shared", default=True, description="Build shared libraries", when="@2.1.0:"
)
variant("tests", default=False, description="Build with tests", when="@2.1.0:")
depends_on("cmake@3.15:", type="build", when="@2.1.0:")
depends_on("cmake@3.24:", type="build", when="+tests")
@property
def libs(self):
return find_libraries(
"libsymspg", root=self.prefix, shared=True, recursive=True
)
def cmake_args(self):
pfx = "SPGLIB_" if self.spec.satisfies("@2.1.0:") else ""
return [
self.define_from_variant(pfx + "SHARED_LIBS", "shared"),
self.define_from_variant(pfx + "USE_OMP", "openmp"),
self.define_from_variant(pfx + "WITH_Fortran", "fortran"),
self.define_from_variant(pfx + "WITH_TESTS", "tests"),
]