Skip to content

spdlog, hipblaslt: Fix spdlog 1.17.0 version pairing with fmt - #5743

Closed
bernhardkaindl wants to merge 1 commit into
spack:developfrom
bernhardkaindl:fix-spdlog@1.17.0-fmt-version-pairing
Closed

spdlog, hipblaslt: Fix spdlog 1.17.0 version pairing with fmt#5743
bernhardkaindl wants to merge 1 commit into
spack:developfrom
bernhardkaindl:fix-spdlog@1.17.0-fmt-version-pairing

Conversation

@bernhardkaindl

@bernhardkaindl bernhardkaindl commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

A helpful comment by @Chrismarsh in the spdlog package.py file explains the version pairing of spdlog and fmt. The comment explains that while spdlog can work with different versions of fmt, it is best to assume that the internal fmt version is the minimum version for compatibility.

This change adds the missing version pairing for spdlog 1.17.0 with fmt. The spdlog package.py now depends on fmt 12.1 or later for spdlog 1.17.0 which is the recommended version pairing for spdlog 1.17.0 according to the comment in the spdlog package.py based on the spdlog release notes at https://github.com/gabime/spdlog/releases#release-v1.17.0.

Related to it, the last pull request for hipblaslt (#5309) assumed that it has to ensure proper version pairing while as explained above it should leave this to the spdlog recipe. The pairing added in #5309 conflicts with all existing spdlog/fmt pairings, so it was to possible to concretize hipblaslt@7.1: anymore.

Fix this by using a conflict for the fmt versions it does not support and leave the spdlog/fmt version pairing to the spdlog recipe.

Fixes: 1769b89 #5467: "spdlog: add v1.17.0 && fmt: add v12.2.0"
Fixes: 3e1fd73 #5309: "hipblaslt: Support air-gapped build"

Review: @afzpatel, @srekolam, @renjithravindrankannath
Cc: @m-fila, @yizeyi18, @williampiat3

@spackbot-triage spackbot-triage Bot added dependencies Modifications with a `depends_on()` directive update-package Modifications to packages in the repository labels Jul 24, 2026
@bernhardkaindl
bernhardkaindl force-pushed the fix-spdlog@1.17.0-fmt-version-pairing branch from 6edb4f6 to 656ab8c Compare July 25, 2026 11:00
@bernhardkaindl

bernhardkaindl commented Jul 27, 2026

Copy link
Copy Markdown
Contributor Author

GitLab CI was failing with my initial push of this PR (updated now, I hope this fixes CI):

In https://gitlab.spack.io/spack/spack-packages/-/jobs/23537388, the build of rocblas@7.1.1 failed with:

CMake Error at /home/software/spack/[padded-to-256-chars]/linux-x86_64_v3/hipblaslt-7.1.1-exsqldmaibynkmiso77e27ujoyzvoi5x/lib/cmake/hipblaslt/hipblaslt-targets.cmake:77 (set_target_properties):
  The link interface of target "roc::hipblaslt" contains:
    roc::hipblas-common
  but the target was not found.

From the GitLab build log, it appears to be added to the build with this spec:

 -       ^hipblaslt@7.1.1~asan~ipo amdgpu_target:=gfx90a build_system=cmake build_type=Release generator=make patches:=0364327,b1efb38 platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx,fortran=gcc@11.4.0
 ...
  -           ^fmt@12.1.0~ipo+pic~shared build_system=cmake build_type=Release cxxstd=11 generator=make platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
 ... 
   -          ^hipblas-common@7.1.1~ipo build_system=cmake build_type=Release generator=make platform=linux os=ubuntu22.04 target=x86_64_v3
 ...
  -           ^spdlog@1.17.0~ipo+shared build_system=cmake build_type=Release cxxstd=14 generator=make patches:=fdc325d platform=linux os=ubuntu22.04 target=x86_64_v3 %cxx=gcc@11.4.0

I found these lines too:

[ ] jadqvcg hipblas-common@7.1.1 fetching from build cache (0s)
...
[ ] jadqvcg hipblas-common@7.1.1 relocating (0s)
...
[+] jadqvcg hipblas-common@7.1.1 /home/software/spack/[padded-to-256-chars]/linux-x86_64_v3/hipblas-common-7.1.1-jadqvcgoei2cdexhff2piy4ed6eo5qi7 (0s)

So far, I've not found a hint why roc::hipblas-common isn't found.

@bernhardkaindl
bernhardkaindl force-pushed the fix-spdlog@1.17.0-fmt-version-pairing branch 3 times, most recently from 217e225 to d40a996 Compare July 28, 2026 02:45
@spackbot-triage
spackbot-triage Bot requested review from cgmb and haampie July 28, 2026 02:45
@bernhardkaindl
bernhardkaindl force-pushed the fix-spdlog@1.17.0-fmt-version-pairing branch from d40a996 to d170996 Compare July 28, 2026 03:02
@bernhardkaindl
bernhardkaindl marked this pull request as draft July 28, 2026 03:04
@bernhardkaindl
bernhardkaindl force-pushed the fix-spdlog@1.17.0-fmt-version-pairing branch from d170996 to 01b6b61 Compare July 28, 2026 03:14
"7.2.3",
]:
depends_on(f"hipblas-common@{ver}", when=f"@{ver}")
depends_on(f"hipblas@{ver}", when=f"@{ver}", type=("build", "link", "run"))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as far as i know, depends_on(hipblas) is only applicable when HIPBLASLT_ENABLE_HIPBLAS_DIRECT is set to ON. or on older releases, when LEGACY_HIPBLAS_DIRECT is set to ON. Otherwise, it is always depends_on(hipblas-common)

@bernhardkaindl
bernhardkaindl force-pushed the fix-spdlog@1.17.0-fmt-version-pairing branch from 01b6b61 to 34734e6 Compare July 29, 2026 17:21
@spackbot-triage spackbot-triage Bot added the conflicts Modifications with a `conflicts()` directive label Jul 29, 2026
@bernhardkaindl
bernhardkaindl requested a review from srekolam July 29, 2026 17:26
@bernhardkaindl
bernhardkaindl marked this pull request as ready for review July 30, 2026 06:52
A helpful comment in the spdlog package.py file explains the version
pairing of spdlog and fmt. The comment explains that while spdlog can
work with different versions of fmt, it is best to assume that the
internal fmt version is the minimum version for compatibility.

This change adds the missing version pairing for spdlog 1.17.0 with fmt.
The spdlog package.py now depends on fmt 12.1 or later for spdlog 1.17.0
which is the recommended version pairing for spdlog 1.17.0 according to
the comment in the spdlog package.py.

Related to it, the last pull request for hipblaslt assumed that it has
to ensure proper version pairing while as explained above it should
leave this to the spdlog recipe. The pairing added  in the pull request
conflicts with all existin spdlog/fmt pairings, so it was to possible
to concretize hipblaslt@7.1: anymore.

Fix this by using a conflict for the fmt versions it does not support
and leave the spdlog/fmt version pairing to the spdlog recipe.

Fixes: 1769b89 spack#5467: "spdlog: add v1.17.0 && fmt: add v12.2.0"
Fixes: 3e1fd73 spack#5309: "hipblaslt: Support air-gapped build"
@bernhardkaindl
bernhardkaindl force-pushed the fix-spdlog@1.17.0-fmt-version-pairing branch from 580e461 to 31923f9 Compare July 30, 2026 06:57
@bernhardkaindl

Copy link
Copy Markdown
Contributor Author

Closing, I'm changing the approach.

@bernhardkaindl

Copy link
Copy Markdown
Contributor Author

New PR: #5802

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

conflicts Modifications with a `conflicts()` directive dependencies Modifications with a `depends_on()` directive update-package Modifications to packages in the repository

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants