def __main__()

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))