Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
180 commits
Select commit Hold shift + click to select a range
36a0d4d
refactor(hostnumerics): consolidate accepted prototype and consumer i…
newling Oct 16, 2026
db247fa
fix(hostnumerics): complete upstream consumer integration after rebase
newling Oct 16, 2026
2c0ec19
test(hostnumerics): separate generic Expected contracts from integrat…
newling Oct 16, 2026
ab58e46
fix(hostnumerics): keep MX scale plans compatible with C++17
newling Oct 16, 2026
67f3618
docs(hostnumerics): mirror Shape comment cleanup
newling Oct 16, 2026
adf6384
refactor(hostnumerics): validate Shape inputs before computation
newling Oct 16, 2026
26b037b
refactor(hostnumerics): reject oversized Shapes at construction
newling Oct 16, 2026
b7f38d7
refactor(hostnumerics): establish Shape subproduct invariant and expl…
newling Oct 17, 2026
bc6946b
refactor(hostnumerics): rely on Shape invariant in GEMM validation
newling Oct 17, 2026
902490a
fix(tensilelite): validate raw descriptors against Shape invariant
newling Oct 17, 2026
e3164ed
docs(hostnumerics): document Python Shape on its bindings
newling Oct 18, 2026
eb61a98
test(hostnumerics): verify Shape validation error paths
newling Oct 18, 2026
47aceba
refactor(hostnumerics): keep Shape validation helpers private
newling Oct 18, 2026
ac8e0d2
tentative proposal dir
newling Oct 19, 2026
a24d744
refactor(hostnumerics): simplify Shape APIs and cache element count
newling Oct 19, 2026
c1648ba
refactor(hostnumerics): adapt consumers to the smaller Shape API
newling Oct 19, 2026
185b068
test(hostnumerics): verify the Shape move and installed bridge contracts
newling Oct 19, 2026
655a6cc
refactor(hostnumerics): mirror final Shape API cleanup
newling Oct 19, 2026
938b46c
fix(hostnumerics): adapt consumers to explicit Shape order
newling Oct 19, 2026
f6d7b0f
docs(hostnumerics): mirror scalar dispatch comments and sqrt example
newling Oct 19, 2026
8307eea
Document and cover unchecked Shape dimension access
newling Oct 19, 2026
78073e6
Keep Shape dimensions and cached count consistent across moves
newling Oct 19, 2026
fa70355
Remove Python Shape slicing support
newling Oct 19, 2026
9b55f42
Explain intentional moved-from queries in Shape regressions
newling Oct 19, 2026
216fe1f
Use checked nonnegative axis access for Python Shape indexing
newling Oct 19, 2026
a062a3a
test(hostnumerics): explicitly discard results in exception checks
newling Oct 19, 2026
762a02b
fix(hostnumerics): keep generation constants local to MSVC lambdas
newling Oct 19, 2026
e791791
fix(hostnumerics): validate installed headers against the current pub…
newling Oct 19, 2026
0aa6866
fix(hostnumerics): clarify dispatch diagnostics and documentation
newling Oct 19, 2026
3f806cc
docs(hostnumerics): move README details into documentation and trim d…
newling Oct 19, 2026
7a633ed
ci(hostnumerics): normalize the Windows package source path
newling Oct 19, 2026
ebb7866
fix(hostnumerics): integrate rebased benchmark candidate search
newling Oct 20, 2026
3f3f0cb
docs(ci): mirror the Windows HostNumerics Python scope
newling Oct 20, 2026
f1e32cf
fix(hostnumerics): mirror Layout validation and value semantics
newling Oct 20, 2026
b0bf232
Clarify HostNumerics Python test naming and sanitizer exclusion
newling Oct 21, 2026
2626521
Print Shape extents in native test failures
newling Oct 21, 2026
beda413
Exercise Shape span APIs with native array arguments
newling Oct 21, 2026
f13add5
Document rank-based Python Shape truthiness
newling Oct 21, 2026
a4a7632
ci(hostnumerics): mirror Windows runner review feedback
newling Oct 21, 2026
a50ba4c
refactor(hostnumerics): use pinned expected backport behind compat fa…
newling Oct 21, 2026
fdf481d
chore(hostnumerics): preserve vendored header whitespace
newling Oct 21, 2026
d20f179
docs(hostnumerics): distinguish upstream copy from local facade
newling Oct 22, 2026
14f6946
fix(hostnumerics): disambiguate result types in MSVC tests
newling Oct 22, 2026
dbb031c
refactor(hostnumerics): keep results in a small variant wrapper
newling Oct 22, 2026
4266eab
docs(hostnumerics): record result design and C++23 migration plan
newling Oct 22, 2026
01bfb5b
fix(hostnumerics): mirror Expected review changes in prototype
newling Oct 22, 2026
17e4795
fix(hostnumerics): integrate develop int4 and MX client paths
newling Oct 22, 2026
92b2633
fix(hostnumerics): avoid nested decoder lambdas in MSVC
newling Oct 22, 2026
758e552
refactor(hostnumerics): explore checked and prepared error boundaries
newling Oct 23, 2026
7a67cc8
fix(hipblaslt): complete HostNumerics consumer integration
newling Oct 23, 2026
19e8481
test(hipblaslt): check Freivalds encoded device transport
newling Oct 23, 2026
1b47109
style(hipblaslt): normalize HostNumerics adapter formatting
newling Oct 23, 2026
aaf8f58
refactor(hostnumerics): make Layout failures format their diagnostics
newling Oct 23, 2026
e2119c8
refactor(hostnumerics): group shared offset checks into static methods
newling Oct 23, 2026
b9d1fc1
docs(hostnumerics): shorten Layout description
newling Oct 23, 2026
348f4f6
refactor(hostnumerics): require explicit Layout offsets
newling Oct 23, 2026
e74551e
fix(hostnumerics): bound gfx11 Freivalds accumulation errors
newling Oct 23, 2026
3116350
docs(hostnumerics): tighten Layout documentation
newling Oct 23, 2026
e0352ff
refactor(hostnumerics): require explicit numerical policies
newling Oct 23, 2026
f3b4d38
refactor(hostnumerics): align native conversion with explicit policies
newling Oct 25, 2026
d43b831
test(hostnumerics): align scalar tests with design preference
newling Oct 25, 2026
9857fb7
test(hostnumerics): mirror native scalar conversion tutorial
newling Oct 25, 2026
7399dbe
test(hostnumerics): mirror inline conversion tutorial policies
newling Oct 25, 2026
800936d
refactor(hostnumerics): mirror selection cleanup and general prime he…
newling Oct 25, 2026
8f408c4
fix(tensilelite): validate scalar descriptors before native conversion
newling Oct 25, 2026
d5598ba
refactor(hostnumerics): mirror Identity policy and functional convers…
newling Oct 25, 2026
782d959
refactor(hostnumerics): use general index selection and explicit orde…
newling Oct 25, 2026
bb9f813
fix(hipblaslt): preserve shared rotating footprint after rebase
newling Oct 26, 2026
b9d21d5
style(hipblaslt): format HostNumerics callers with clang-format 13
newling Oct 26, 2026
a880184
refactor(hostnumerics): remove unused enum counts
newling Oct 26, 2026
3cdafb5
fix(hostnumerics): mirror Layout diagnostics and API coverage
newling Oct 25, 2026
1dd2c02
refactor(hostnumerics): simplify Layout validation and tests
newling Oct 26, 2026
f9ead35
docs(hostnumerics): explain selective enum counts
newling Oct 26, 2026
dff39d4
test(tensilelite): match detailed Layout extent diagnostics
newling Oct 26, 2026
753551f
fix(hostnumerics): mirror character conversion and native domain cont…
newling Oct 26, 2026
03652a7
docs(hostnumerics): mirror enum policy contracts and conversion examples
newling Oct 26, 2026
b203077
refactor(hostnumerics): mirror scalar conversion simplification
newling Oct 26, 2026
09374a7
refactor(hostnumerics): mirror Shape coordinate visitation
newling Oct 26, 2026
a6c8165
refactor(hostnumerics): remove combined index selection
newling Oct 26, 2026
4a6d0e9
refactor(hostnumerics): keep index arithmetic with ranges
newling Oct 26, 2026
6afc59a
refactor(hostnumerics): bind ranges and explicit sets at invocation b…
newling Oct 27, 2026
f651e7c
refactor(hostnumerics): define ranges by start end and stride
newling Oct 27, 2026
0cc27ca
refactor(hostnumerics): migrate callers to bounded ranges
newling Oct 27, 2026
f289bf4
fix(hostnumerics): integrate per-device validation after rebase
newling Oct 27, 2026
2d723ce
style(hipblaslt): format rebased HostNumerics consumers
newling Oct 27, 2026
cc627eb
refactor(hostnumerics): mirror scalar header consolidation
newling Oct 26, 2026
d555c38
refactor(hostnumerics): share public native conversion implementation
newling Oct 26, 2026
0b17075
docs(hostnumerics): shorten convertScalar documentation
newling Oct 26, 2026
98aa182
fix(hostnumerics): reject std::complex with non-floating components
newling Oct 26, 2026
02be12f
refactor(hostnumerics): mirror convertToInteger integer primitive
newling Oct 26, 2026
9420a48
docs(hostnumerics): mirror convertToInteger examples
newling Oct 26, 2026
4749821
fix(hostnumerics): mirror 64-bit limit in convertToInteger
newling Oct 26, 2026
008a826
feat(hostnumerics): add explicit floating encoding policies
newling Oct 27, 2026
ebc1138
feat(hostnumerics): add binomial recipes and sampling offsets
newling Oct 27, 2026
11123e1
feat(hipblaslt): add deterministic MAF input presets
newling Oct 27, 2026
0372c7a
refactor(hostnumerics): mirror #14317 readiness cleanup
newling Oct 27, 2026
c0ce114
refactor(tensilelite): sample reference outputs with primeIndexRange
newling Oct 27, 2026
d431710
docs(hostnumerics): mirror coordinate traversal comment
newling Oct 27, 2026
6be92eb
refactor(hostnumerics): align explicit-policy generation traversal
newling Oct 27, 2026
4b4f172
style(hipblaslt): format upstream pointer-array numerics tests
newling Oct 27, 2026
c26a771
fix(hipblaslt): adapt grouped C API to HostNumerics client
newling Oct 27, 2026
521af4a
fix(hostnumerics): widen floating comparison subtraction
newling Oct 27, 2026
a4b88ad
test(hostnumerics): use native assertions for scalar distances
newling Oct 27, 2026
ffe2379
bench(hostnumerics): measure distinct comparison workloads
newling Oct 27, 2026
3294905
fix(hostnumerics): remove unused GEMM validation count
newling Oct 27, 2026
a30015a
refactor(hostnumerics): remove unused compatibility headers
newling Oct 27, 2026
5e4d514
fix(hostnumerics): preserve strict symmetric client comparison
newling Oct 27, 2026
41ad23e
perf(hostnumerics): keep default allclose scan on direct predicate
newling Oct 27, 2026
95e1a6b
refactor(hostnumerics): keep named activations outside Tensor
newling Oct 28, 2026
1dd7909
test(hostnumerics): retain strict scalar comparison classifications
newling Oct 28, 2026
be98e69
test(hipblaslt): restore retired verifier and guard assertions
newling Oct 28, 2026
d31fc65
perf(hostnumerics): avoid unused elementwise work in norm comparisons
newling Oct 28, 2026
11beb81
perf(hipblaslt): upload identical rotating inputs once
newling Oct 28, 2026
959bf74
fix(hipblaslt): preserve truncated rotating block offsets
newling Oct 28, 2026
f172621
style(hipblaslt): format merged adapters and launch guard with clang-…
newling Oct 28, 2026
c44f979
docs(hostnumerics): state AMD MX scale layout argument contracts
newling Oct 28, 2026
b5e2f61
test(hostnumerics): pin exact AMD MX scale and pre-tile layouts
newling Oct 28, 2026
049f3dd
refactor(hostnumerics): replace preSwizzle with typed operand layouts
newling Oct 28, 2026
1c7162c
refactor(hostnumerics): pass gfx950 scale extents explicitly
newling Oct 28, 2026
d5fd177
refactor(hostnumerics): require the MX block size for every scale layout
newling Oct 28, 2026
523bb37
refactor(hostnumerics): make the MX generation leading dimension opti…
newling Oct 28, 2026
1782428
refactor(hostnumerics): make the structured sparsity slice count opti…
newling Oct 28, 2026
2369d8e
refactor(hostnumerics): pair each GEMM block scale with its block size
newling Oct 28, 2026
2f496da
refactor(hostnumerics): make zero requested prime samples select nothing
newling Oct 28, 2026
89d77d9
feat(hostnumerics): mirror convertToInteger input assertions
newling Oct 28, 2026
9bba457
fix(hostnumerics): integrate develop changes into the prototype consu…
newling Oct 30, 2026
678d2c3
refactor(hostnumerics): take axis orders as Permutation across the pr…
newling Oct 30, 2026
70143cd
refactor(hostnumerics): move prime index sampling into its own header
newling Oct 30, 2026
615b9b7
fix(hostnumerics): apply permutations to boolean vectors
newling Oct 30, 2026
0f6b807
style(hostnumerics): format migrated hipBLASLt and TensileLite orders
newling Oct 30, 2026
96da633
fix(hostnumerics): accept sequence inputs in Permutation apply
newling Nov 4, 2026
ce6a29d
test(hostnumerics): remove redundant Shape order rejections
newling Nov 4, 2026
0538d66
fix(hostnumerics): integrate current develop validation and MX support
newling Nov 4, 2026
c08bc85
test(hipblaslt): correct unsupported extended-test arguments
newling Nov 4, 2026
9a94b76
test(hostnumerics): guard traversal order contracts
newling Nov 4, 2026
5e74ae2
fix(hostnumerics): integrate develop d92d37ae93b into the prototype c…
newling Nov 5, 2026
235eb43
style(hipblaslt): restore develop formatting in modified consumer files
newling Nov 5, 2026
024dc37
fix(hipblaslt): remove the shadowed runtime_error handler in hipblasl…
newling Nov 5, 2026
30f7328
refactor(hipblaslt): return an optional norm limit instead of throwing
newling Nov 5, 2026
4c5c7d0
refactor(tensilelite): return translation failures without throwing i…
newling Nov 5, 2026
f8ae127
refactor(hostnumerics): adopt the reviewed AMD GPU layout implementation
newling Nov 5, 2026
50a9cf1
refactor: migrate consumers to the MxScaleStoragePlan constructor
newling Nov 5, 2026
f3645ca
build(hostnumerics): require OpenMP
newling Nov 5, 2026
61fd879
build(hostnumerics): compile the AMD GPU layout target as C++20
newling Nov 5, 2026
b765140
refactor(hostnumerics): keep operation enums out of the core Python b…
newling Nov 5, 2026
8d8272d
refactor(hostnumerics): reuse layout offset checks in Tensor Python b…
newling Nov 5, 2026
dfacfc8
refactor(hostnumerics): remove duplicated Tensor copy validation and …
newling Nov 5, 2026
f28eb4c
refactor(hostnumerics): validate copyWithPermutedDimensions with Perm…
newling Nov 5, 2026
1fe9f63
refactor(hostnumerics): let -Wswitch cover LayoutError messages
newling Nov 5, 2026
10d58a5
test(hipblaslt): require OpenMP in the MAF thread-independence test
newling Nov 5, 2026
eea5f83
docs(hostnumerics consumers): make adapter comments timeless
newling Nov 5, 2026
de89e0a
fix(hipblaslt): handle MAF modes explicitly in initialization recipe …
newling Nov 5, 2026
ab1a62f
refactor(rocroller): simplify host reference scale handling
newling Nov 5, 2026
39805e7
refactor(hipblaslt): name the optional matrix initialization settings
newling Nov 5, 2026
35d7909
refactor(hostnumerics): require OpenMP in operation threading
newling Nov 5, 2026
acf1efd
test(hostnumerics): run thread-count checks unconditionally
newling Nov 5, 2026
167f8f9
test(hostnumerics): drop a misplaced IndexRange stride check
newling Nov 5, 2026
fd87275
test(hostnumerics): link OpenMP into tests that compile private helpers
newling Nov 5, 2026
53c030a
Merge branch 'users/newling/pr10553-scan-part-2' into users/newling/p…
newling Nov 5, 2026
cec6b38
Merge branch 'users/newling/pr10553-scan-part-3' into users/newling/p…
newling Nov 5, 2026
5a0f82c
refactor(hostnumerics): use one Freivalds probe mapping with an expli…
newling Nov 6, 2026
5bded73
build(hipblaslt, rocroller): find HostNumerics like other shared comp…
newling Nov 6, 2026
db82d98
refactor(hostnumerics): require an explicit generation index order
newling Nov 6, 2026
5c7d4be
refactor(hostnumerics): make every structured sparsity pattern field …
newling Nov 6, 2026
43c2b9e
refactor(rocroller): carry each operand's scale with its block size
newling Nov 6, 2026
11b590d
refactor(tensilelite): name the reference element selection
newling Nov 6, 2026
248789a
refactor(tensilelite): keep MX operand scaling optional in the GEMM a…
newling Nov 6, 2026
981fd40
refactor(hipblaslt): make the unit-check tolerance choice explicit
newling Nov 6, 2026
7f0c077
refactor(hostnumerics): require values that had non-obvious defaults
newling Nov 6, 2026
88a465d
refactor(hostnumerics): take a Permutation in copyWithPermutedDimensions
newling Nov 6, 2026
77a3b0c
refactor(hostnumerics): require every scalar conversion policy explic…
newling Nov 6, 2026
014b8be
refactor(hostnumerics): remove Layout and LayoutFailure zero defaults
newling Nov 6, 2026
d06ea6d
refactor(hostnumerics): replace Python NumPy and storage sentinels wi…
newling Nov 6, 2026
30cbd76
refactor(hostnumerics): make empty element bounds explicit and keep l…
newling Nov 6, 2026
91bed84
refactor(hostnumerics): replace ShapeAccess with a public Shape::getE…
newling Nov 6, 2026
02fdbeb
build(hostnumerics): fail clearly when MSVC lacks CMake 3.30
newling Nov 6, 2026
47526fc
refactor(hostnumerics): make the native scalar Tensor constructor exp…
newling Nov 6, 2026
06f5786
Merge branch 'users/newling/pr10553-followup-part-3' into users/newli…
newling Nov 6, 2026
b17a64f
Merge branch 'users/newling/pr10553-followup-part-1' into users/newli…
newling Nov 6, 2026
1bdacfb
build(hostnumerics): use MSVC's default OpenMP runtime
newling Nov 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 2 additions & 4 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,9 @@
/projects/rocwmma/ @ROCm/rocwmma-reviewers
/projects/rpp/ @ROCm/rpp-reviewers
/shared/origami/ @ROCm/origami-reviewers
/shared/mxdatagenerator/ @ROCm/rocroller-developers
# Temporary while the HostNumerics extraction remains experimental.
/shared/hostnumerics/ @newling
/shared/mxdatagenerator/ @newling
/shared/rocroller/ @ROCm/rocroller-developers
/shared/tensile/ @ROCm/tensile-reviewers
/shared/stinkytofu/ @ROCm/stinkytofu-reviewers
Expand All @@ -142,9 +143,6 @@
/shared/hostnumerics/**/*.cmake.in @ROCm/rocm-math-lib-build-infra
/shared/hostnumerics/**/CMakeLists.txt @ROCm/rocm-math-lib-build-infra

/shared/mxdatagenerator/**/*.cmake @ROCm/rocm-math-lib-build-infra
/shared/mxdatagenerator/**/CMakeLists.txt @ROCm/rocm-math-lib-build-infra

/shared/origami/**/*.cmake @ROCm/rocm-math-lib-build-infra
/shared/origami/**/CMakeLists.txt @ROCm/rocm-math-lib-build-infra

Expand Down
5 changes: 1 addition & 4 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"project: hipblaslt":
- changed-files:
- any-glob-to-any-file: 'projects/hipblaslt/**/*'
- any-glob-to-any-file: 'shared/hostnumerics/**/*'
- any-glob-to-any-file: 'shared/origami/**/*'
- any-glob-to-any-file: 'shared/stinkytofu/**/*'

Expand Down Expand Up @@ -143,10 +144,6 @@
- changed-files:
- any-glob-to-any-file: 'projects/rpp/**/*'

"shared: mxdatagenerator":
- changed-files:
- any-glob-to-any-file: 'shared/mxdatagenerator/**/*'

"shared: origami":
- changed-files:
- any-glob-to-any-file: 'shared/origami/**/*'
Expand Down
9 changes: 0 additions & 9 deletions .github/repos-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,6 @@
"auto_subtree_push": false,
"monorepo_source_of_truth": true
},
{
"name": "mxdatagenerator",
"url": "ROCm/mxDataGenerator",
"branch": "develop",
"category": "shared",
"auto_subtree_pull": false,
"auto_subtree_push": true,
"monorepo_source_of_truth": true
},
{
"name": "composablekernel",
"url": "ROCm/composable_kernel",
Expand Down
177 changes: 177 additions & 0 deletions .github/scripts/validate_hostnumerics_install.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
#!/usr/bin/env python3
# Copyright Advanced Micro Devices, Inc., or its affiliates.
# SPDX-License-Identifier: MIT

"""Validate the HostNumerics install tree against its source and manifest."""

from __future__ import annotations

import argparse
import os
import re
import sys
from pathlib import Path


class ValidationError(RuntimeError):
"""An install invariant was not satisfied."""


def _files_below(root: Path) -> set[Path]:
return {
path.relative_to(root)
for path in root.rglob("*")
if path.is_file() or path.is_symlink()
}


def _display_paths(paths: set[Path]) -> str:
return "\n".join(f" {path.as_posix()}" for path in sorted(paths))


def _manifest_entries(manifest: Path, install_prefix: Path) -> set[Path]:
try:
entries = [Path(line) for line in manifest.read_text().splitlines() if line]
except OSError as error:
raise ValidationError(
f"could not read install manifest {manifest}: {error}"
) from error

prefix = Path(os.path.abspath(install_prefix))
relative_entries: set[Path] = set()
outside_prefix: set[Path] = set()
for entry in entries:
absolute_entry = Path(os.path.abspath(entry))
try:
relative_entries.add(absolute_entry.relative_to(prefix))
except ValueError:
outside_prefix.add(absolute_entry)

if outside_prefix:
raise ValidationError(
"install manifest contains paths outside the install prefix:\n"
f"{_display_paths(outside_prefix)}"
)
return relative_entries


def _validate_install_tree(
source_dir: Path, build_dir: Path, install_prefix: Path
) -> None:
public_include_dir = source_dir / "include"
installed_include_dir = install_prefix / "include"
manifest = build_dir / "install_manifest.txt"

if not public_include_dir.is_dir():
raise ValidationError(
f"public include directory is missing: {public_include_dir}"
)
if not installed_include_dir.is_dir():
raise ValidationError(
f"installed include directory is missing: {installed_include_dir}"
)

# Public headers generated from templates are installed without the .in suffix.
expected_public_files = {
path.with_suffix("") if path.suffix == ".in" else path
for path in _files_below(public_include_dir)
}
package_config = (build_dir / "HostNumericsConfig.cmake").read_text()
if re.search(r"set\(\s*HostNumerics_BLAS_AVAILABLE\s+OFF\s*\)", package_config):
expected_public_files.discard(Path("roc/hostnumerics/backends/blas.hpp"))
if not expected_public_files:
raise ValidationError(f"no public files found below {public_include_dir}")

installed_public_files = _files_below(installed_include_dir)
manifest_entries = _manifest_entries(manifest, install_prefix)
manifest_public_files = {
path.relative_to("include")
for path in manifest_entries
if path.is_relative_to("include")
}

missing_installed = expected_public_files - installed_public_files
unexpected_installed = installed_public_files - expected_public_files
missing_manifest = expected_public_files - manifest_public_files
unexpected_manifest = manifest_public_files - expected_public_files

errors: list[str] = []
if missing_installed:
errors.append(
"public source files missing from the install tree:\n"
f"{_display_paths(missing_installed)}"
)
if unexpected_installed:
errors.append(
"unexpected files installed under include/:\n"
f"{_display_paths(unexpected_installed)}"
)
if missing_manifest:
errors.append(
"public source files missing from the install manifest:\n"
f"{_display_paths(missing_manifest)}"
)
if unexpected_manifest:
errors.append(
"unexpected include files recorded in the install manifest:\n"
f"{_display_paths(unexpected_manifest)}"
)

missing_outputs = {
path
for path in manifest_entries
if not (install_prefix / path).exists()
and not (install_prefix / path).is_symlink()
}
if missing_outputs:
errors.append(
"install manifest entries missing from the install tree:\n"
f"{_display_paths(missing_outputs)}"
)

source_license = source_dir / "LICENSE.md"
if source_license.is_file():
installed_licenses = [
install_prefix / path
for path in manifest_entries
if path.name == source_license.name
]
if not any(
path.is_file() and path.read_bytes() == source_license.read_bytes()
for path in installed_licenses
):
errors.append(
f"{source_license.name} was not installed from the source tree"
)

if errors:
raise ValidationError("\n".join(errors))

print(
f"Validated {len(expected_public_files)} public install files; "
"no implementation headers outside the public include tree are installed."
)


def _parse_arguments() -> argparse.Namespace:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--source-dir", required=True, type=Path)
parser.add_argument("--build-dir", required=True, type=Path)
parser.add_argument("--install-prefix", required=True, type=Path)
return parser.parse_args()


def main() -> int:
arguments = _parse_arguments()
try:
_validate_install_tree(
arguments.source_dir, arguments.build_dir, arguments.install_prefix
)
except ValidationError as error:
print(f"error: {error}", file=sys.stderr)
return 1
return 0


if __name__ == "__main__":
sys.exit(main())
2 changes: 1 addition & 1 deletion .github/workflows/gfx1250_hipblaslt_tensilelite_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ jobs:
sparse-checkout: |
projects/hipblaslt
shared/origami
shared/mxdatagenerator
shared/hostnumerics
shared/stinkytofu
cmake
.github/actions/ci-env
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/hipblaslt-drop-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ jobs:
projects/hipblaslt
projects/hipsparse
projects/hipsparselt
shared/mxdatagenerator
shared/hostnumerics
shared/origami
shared/rocroller
shared/stinkytofu
Expand Down
Loading
Loading