Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions repos/spack_repo/builtin/packages/eckit/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,20 @@ class Eckit(CMakePackage):
values=any_combination_of("eigen", "armadillo", "mkl", "lapack"),
description="List of supported linear algebra backends",
)

# There is probably a more elegant way to handle the differences
# in valid compression backends, but this works ...
variant(
"compression",
values=any_combination_of("bzip2", "snappy", "lz4", "aec"),
description="List of supported compression backends",
when="@:1.31",
)
variant(
"compression",
values=any_combination_of("bzip2", "snappy", "lz4", "aec", "zip"),
description="List of supported compression backends",
when="@1.32:",
)
variant("xxhash", default=True, description="Enable xxHash support for hashing")
variant("ssl", default=False, description="Enable MD4 and SHA1 support with OpenSSL")
Expand Down Expand Up @@ -101,6 +111,7 @@ class Eckit(CMakePackage):
depends_on("snappy", when="compression=snappy")
depends_on("lz4", when="compression=lz4")
depends_on("libaec", when="compression=aec")
depends_on("libzip", when="compression=zip")

depends_on("openssl", when="+ssl")

Expand Down Expand Up @@ -145,6 +156,7 @@ def cmake_args(self):
self.define("ENABLE_SNAPPY", "compression=snappy" in self.spec),
self.define("ENABLE_LZ4", "compression=lz4" in self.spec),
self.define("ENABLE_AEC", "compression=aec" in self.spec),
self.define("ENABLE_ZIP", "compression=zip" in self.spec),
self.define_from_variant("ENABLE_XXHASH", "xxhash"),
self.define_from_variant("ENABLE_SSL", "ssl"),
self.define_from_variant("ENABLE_CURL", "curl"),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c3e568fe3..b89ef86c4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -163,6 +163,12 @@ set (subset_project_sources
${PROJECT_SOURCE_DIR}/src/hb-subset-plan.hh
${PROJECT_SOURCE_DIR}/src/hb-subset-plan-member-list.hh
${PROJECT_SOURCE_DIR}/src/hb-subset-serialize.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table.hh
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-layout.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-var.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-cff.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-color.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-other.cc
${PROJECT_SOURCE_DIR}/src/hb-subset.cc
${PROJECT_SOURCE_DIR}/src/hb-subset.hh
${PROJECT_SOURCE_DIR}/src/hb-repacker.hh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 98571a00e..da1fa40e0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -169,6 +169,12 @@ set (subset_project_sources
${PROJECT_SOURCE_DIR}/src/hb-subset-plan-member-list.hh
${PROJECT_SOURCE_DIR}/src/hb-subset-plan-var.cc
${PROJECT_SOURCE_DIR}/src/hb-subset-serialize.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table.hh
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-layout.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-var.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-cff.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-color.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-other.cc
${PROJECT_SOURCE_DIR}/src/hb-subset.cc
${PROJECT_SOURCE_DIR}/src/hb-subset.hh
${PROJECT_SOURCE_DIR}/src/hb-repacker.hh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a3e7b87..8f71406 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -169,6 +169,12 @@ set (subset_project_sources
${PROJECT_SOURCE_DIR}/src/hb-subset-plan-member-list.hh
${PROJECT_SOURCE_DIR}/src/hb-subset-plan-var.cc
${PROJECT_SOURCE_DIR}/src/hb-subset-serialize.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table.hh
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-layout.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-var.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-cff.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-color.cc
+ ${PROJECT_SOURCE_DIR}/src/hb-subset-table-other.cc
${PROJECT_SOURCE_DIR}/src/hb-subset.cc
${PROJECT_SOURCE_DIR}/src/hb-subset.hh
${PROJECT_SOURCE_DIR}/src/hb-repacker.hh
101 changes: 68 additions & 33 deletions repos/spack_repo/builtin/packages/harfbuzz/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,40 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import sys

from spack_repo.builtin.build_systems import autotools, meson
from spack_repo.builtin.build_systems import autotools, cmake, meson
from spack_repo.builtin.build_systems.autotools import AutotoolsPackage
from spack_repo.builtin.build_systems.cmake import CMakePackage
from spack_repo.builtin.build_systems.meson import MesonPackage

from spack.package import *

IS_WINDOWS = sys.platform == "win32"


class Harfbuzz(MesonPackage, AutotoolsPackage):
class Harfbuzz(MesonPackage, AutotoolsPackage, CMakePackage):
"""The Harfbuzz package contains an OpenType text shaping engine."""

homepage = "https://github.com/harfbuzz/harfbuzz"
url = "https://github.com/harfbuzz/harfbuzz/releases/download/9.0.0/harfbuzz-9.0.0.tar.xz"
git = "https://github.com/harfbuzz/harfbuzz.git"

build_system(
conditional("autotools", when="@:2.9"), conditional("meson", when="@3:"), default="meson"
conditional("autotools", when="@:2.9"),
conditional("meson", when="@3:"),
conditional("cmake", when="@10:"),
default="meson" if not IS_WINDOWS else "cmake",
)

# HarfBuzz is licensed under the so-called "Old MIT" license,
# for which no SPDX identifier is listed at https://spdx.org/licenses/
# Ref: https://github.com/harfbuzz/harfbuzz/blob/main/COPYING
license("MIT-old", checked_by="wdconinc")

maintainers("AlexanderRichert-NOAA")

version("11.5.1", sha256="972a60a8d274d49e70361da6920c3a73dfb0fb4387f6c6811906a47ba634d8a1")
version("11.4.1", sha256="7aafab93115eb56cdc9a931ab7d19ff60d7f2937b599d140f17236f374e32698")
version("11.3.3", sha256="e1fbca6b32a91ae91ecd9eb2ca8d47a5bfe2b1cb2e54855ab7a0b464919ef358")
version("11.2.1", sha256="093714c8548a285094685f0bdc999e202d666b59eeb3df2ff921ab68b8336a49")
version("11.2.0", sha256="50f7d0a208367e606dbf6eecc5cfbecc01a47be6ee837ae7aff2787e24b09b45")
version("11.1.0", sha256="477f0d48c34dc32093b45304178eb9733361ca1832b5159879c99e6d40227969")
Expand Down Expand Up @@ -61,36 +70,6 @@ class Harfbuzz(MesonPackage, AutotoolsPackage):
sha256="0edcc980f526a338452180e701d6aba6323aef457b6686976a7d17ccbddc51cf",
deprecated=True,
)
version(
"2.6.8",
sha256="6648a571a27f186e47094121f0095e1b809e918b3037c630c7f38ffad86e3035",
deprecated=True,
)
version(
"2.3.1",
sha256="f205699d5b91374008d6f8e36c59e419ae2d9a7bb8c5d9f34041b9a5abcae468",
deprecated=True,
)
version(
"2.1.3",
sha256="613264460bb6814c3894e3953225c5357402915853a652d40b4230ce5faf0bee",
deprecated=True,
)
version(
"1.9.0",
sha256="11eca62bf0ac549b8d6be55f4e130946399939cdfe7a562fdaee711190248b00",
deprecated=True,
)
version(
"1.4.6",
sha256="21a78b81cd20cbffdb04b59ac7edfb410e42141869f637ae1d6778e74928d293",
deprecated=True,
)
version(
"0.9.37",
sha256="255f3b3842dead16863d1d0c216643d97b80bfa087aaa8fc5926da24ac120207",
deprecated=True,
)

variant("graphite2", default=False, description="enable support for graphite2 font engine")
variant(
Expand All @@ -99,6 +78,26 @@ class Harfbuzz(MesonPackage, AutotoolsPackage):
when="platform=darwin",
description="Enable CoreText shaper backend on macOS",
)
variant("shared", default=True, when="build_system=cmake", description="Build shared harfbuzz")

with when("build_system=cmake"):
with when("platform=windows"):
variant(
"uniscribe",
default=False,
description="Enable Uniscribe shaper backend on Windows",
)
variant(
"directwrite",
default=False,
description="Enable directwrite shaper backend on Windows",
)
variant("gdi", default=False, description="Enable GDI integration helpers on Windows")
# CMake system dropped a number of source files
# they're correctly added as of 11.5
patch("harfbuzz_10_0_cmake_add_missing_table_sources.patch", when="@10:11.1")
patch("harfbuzz_11_2_cmake_add_missing_table_sources.patch", when="@11.2:11.3")
patch("harfbuzz_11_4_cmake_add_missing_table_sources.patch", when="@11.4")

depends_on("c", type="build")
depends_on("cxx", type="build")
Expand All @@ -107,9 +106,20 @@ class Harfbuzz(MesonPackage, AutotoolsPackage):
depends_on("meson@0.60:", when="@11.1:")
depends_on("meson@0.55:", when="@3.2.1:")
depends_on("meson@0.52:")
# harfbuzz's Meson only supports autotools based
# freetype
depends_on("freetype build_system=autotools")
depends_on("cairo build_system=meson")

for plat in ["linux", "darwin", "freebsd"]:
with when(f"platform={plat}"):
variant("gobject", default=False, description="Enable GObject introspection")
variant(
"utils",
default=False,
when="build_system=cmake",
description="Build harfbuzz utils",
)
depends_on("pkgconfig", type="build")
depends_on("glib")
depends_on("gobject-introspection")
Expand Down Expand Up @@ -168,12 +178,14 @@ class MesonBuilder(meson.MesonBuilder, SetupEnvironment):
def meson_args(self):
graphite2 = "enabled" if self.pkg.spec.satisfies("+graphite2") else "disabled"
coretext = "enabled" if self.pkg.spec.satisfies("+coretext") else "disabled"
introspection = "enabled" if self.pkg.spec.satisfies("+gobject") else "disabled"
config_args = [
# disable building of gtk-doc files following #9885 and #9771
"-Ddocs=disabled",
"-Dfreetype=enabled",
f"-Dgraphite2={graphite2}",
f"-Dcoretext={coretext}",
f"-Dintrospection={introspection}",
]

libs = []
Expand Down Expand Up @@ -204,6 +216,7 @@ def configure_args(self):
args.append(f"GTKDOC_REBASE={true}")
args.extend(self.with_or_without("graphite2"))
args.extend(self.with_or_without("coretext"))
args.extend(self.with_or_without("gobject"))

libs = []
pc = which("pkg-config")
Expand All @@ -215,3 +228,25 @@ def configure_args(self):
args.append("LIBS=%s" % " ".join(libs))

return args


class CMakeBuilder(cmake.CMakeBuilder, SetupEnvironment):
def cmake_args(self):
use_gobject = self.spec.satisfies("+gobject")
args = [
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
self.define("HB_HAVE_FREETYPE", True),
self.define("HB_HAVE_ICU", True),
self.define_from_variant("HB_HAVE_GRAPHITE2", "graphite2"),
self.define_from_variant("HB_HAVE_UNISCRIBE", "uniscribe"),
self.define_from_variant("HB_HAVE_GDI", "gdi"),
self.define_from_variant("HB_HAVE_DIRECTWRITE", "directwrite"),
self.define_from_variant("HB_HAVE_CORETEXT", "coretext"),
self.define("HB_HAVE_GLIB", use_gobject),
self.define("HB_HAVE_CAIRO", use_gobject),
self.define("HB_BUILD_UTILS", use_gobject and self.spec.satisfies("+utils")),
self.define("HB_HAVE_GOBJECT", use_gobject),
self.define("HB_HAVE_INTROSPECTION", use_gobject),
]

return args
5 changes: 5 additions & 0 deletions repos/spack_repo/builtin/packages/hpcx_mpi/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ def make_base_environment(self, prefix, env):
env.prepend_path("LD_LIBRARY_PATH", prefix.lib)
env.set("OPAL_PREFIX", prefix)

@property
def libs(self):
libraries = ["libmpi"]
return find_libraries(libraries, root=self.prefix, shared=True, recursive=True)

def setup_dependent_build_environment(
self, env: EnvironmentModifications, dependent_spec: Spec
) -> None:
Expand Down
27 changes: 17 additions & 10 deletions repos/spack_repo/builtin/packages/met/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,14 +212,21 @@ def configure_args(self):

return args

@run_after("install", when="platform=linux")
def fixup_rpaths(self):
# set rpaths of binaries Python's lib directory
rpaths = self.spec["python"].libs.directories
# Adding the Python rpaths to the MET binaries randomly causes
# segmentation faults for different versions of MET and for
# different compilers - set LD_LIBRARY_PATH instead below
# (https://github.com/JCSDA/spack-stack/issues/1839)
#@run_after("install", when="+python platform=linux")
#def fixup_rpaths(self):
# # set rpaths of binaries Python's lib directory
# rpaths = self.spec["python"].libs.directories
#
# for binary in find(self.prefix.bin, "*"):
# patchelf = Executable("patchelf")
# patchelf("--add-rpath", ":".join(rpaths), binary)

def setup_run_environment(self, env: EnvironmentModifications) -> None:
if self.spec.satisfies("+python"):
for libpath in self.spec["python"].libs.directories:
env.append_path("LD_LIBRARY_PATH", libpath)

for binary in find(self.prefix.bin, "*"):
patchelf = Executable("patchelf")
patchelf("--add-rpath", ":".join(rpaths), binary)

# def setup_run_environment(self, env: EnvironmentModifications) -> None:
# env.set('MET_BASE', self.prefix)
2 changes: 2 additions & 0 deletions repos/spack_repo/builtin/packages/pango/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ class Pango(MesonPackage):
depends_on("meson@0.63:", type="build", when="@1.54:")
depends_on("pkgconfig@0.9.0:", type="build")
depends_on("harfbuzz")
for plat in ["linux", "darwin", "freebsd"]:
depends_on("harfbuzz +gobject", when=f"platform={plat}")
depends_on("harfbuzz+coretext", when="platform=darwin")
depends_on("cairo+ft+fc")
# quartz needed even when ~X on the new cairo versions
Expand Down