in pkgs/rocm-packages/ubuntu2nix.py [0:0]
def __main__():
args = parser.parse_args()
packages = {}
for pkg in package_info(args.version):
# Skip debug symbol packages for now.
if "dbgsym" not in pkg.name:
packages[pkg.name] = pkg
filtered_packages = {}
# Filter dupes like hip-dev vs. hip-dev6.3.4
for name, info in packages.items():
if name.endswith(args.version):
name_without_version = name[: -len(args.version)]
if name_without_version not in packages:
filtered_packages[name_without_version] = info
else:
filtered_packages[name] = info
packages = filtered_packages
# First pass
# Find -dev and -rpath packages that should be merged.
dev_to_merge = {}
for name in packages.keys():
if name.endswith("-dev") and name[:-4] in packages:
dev_to_merge[name] = name[:-4]
elif name.endswith("-dev-rpath") and name[:-10] in packages:
dev_to_merge[name] = name[:-10]
elif name.endswith("-rpath") and name[:-6] in packages:
dev_to_merge[name] = name[:-6]
# Second pass: get ROCm dependencies and merge -dev packages.
metadata = {}
# sorted will put -dev after non-dev packages.
for name in sorted(packages.keys()):
info = packages[name]
deps = {
dev_to_merge.get(dep, dep)
for dep in info.depends(args.version)
if dep in packages
}
pkg_metadata = {
"name": name,
"sha256": info.sha256,
"url": f"{BASEURL.format(version=args.version)}/{info.filename}",
"version": info.version,
}
if name in dev_to_merge:
target_pkg = dev_to_merge[name]
metadata[target_pkg]["components"].append(pkg_metadata)
metadata[target_pkg]["deps"].update(deps)
else:
metadata[name] = {
"deps": deps,
"components": [pkg_metadata],
"version": info.version,
}
# Remove self-references and convert dependencies to list.
for name, pkg_metadata in metadata.items():
deps = pkg_metadata["deps"]
deps -= {name, f"{name}-dev"}
deps -= {name, f"{name}-rpath"}
pkg_metadata["deps"] = list(sorted(deps))
print(json.dumps(metadata, indent=2))