{"record":{"id":"ee0a8f168bf5bdb3","repo":"apache/beam","slug":"machine-architecture-s-unsupported-for-constructing-a-prism","errorCode":null,"errorMessage":"Machine architecture \"%s\" unsupported for constructing a Prism release binary URL.","messagePattern":"Machine architecture \"(.+?)\" unsupported for constructing a Prism release binary URL\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"sdks/python/apache_beam/runners/portability/prism_runner.py","lineNumber":331,"sourceCode":"    and canonical names used by the Go build targets.\n\n    platform.system() provides compatible listings, so we need to filter out\n    the unsupported versions.\"\"\"\n    opsys = sys.lower()\n    if opsys not in ['linux', 'windows', 'darwin']:\n      raise ValueError(\n          'Operating System \"%s\" unsupported for constructing a Prism release '\n          'binary URL.' % (opsys))\n\n    # platform.machine() will vary by system, but many names are compatible.\n    arch = mach.lower()\n    if arch in ['amd64', 'x86_64', 'x86-64', 'x64']:\n      arch = 'amd64'\n    if arch in ['arm64', 'aarch64_be', 'aarch64', 'armv8b', 'armv8l']:\n      arch = 'arm64'\n\n    if arch not in ['amd64', 'arm64']:\n      raise ValueError(\n          'Machine architecture \"%s\" unsupported for constructing a Prism '\n          'release binary URL.' % (opsys))\n\n    # Some special handling is needed when creating url for release candidates.\n    # For example, v2.66.0rc2 should have the following url\n    # https://github.com/apache/beam/releases/download/v2.66.0-RC2/apache_beam-v2.66.0-prism-xxx-yyy.zip\n    if 'rc' in version:\n      version = version.split('rc')[0]\n\n    if 'rc' in root_tag:\n      root_tag = '-RC'.join(root_tag.split('rc'))\n\n    return (\n        GITHUB_DOWNLOAD_PREFIX +\n        f\"{root_tag}/apache_beam-{version}-prism-{opsys}-{arch}.zip\")\n\n  @staticmethod\n  def _resolve_from_location_override(path, version) -> str:","sourceCodeStart":313,"sourceCodeEnd":349,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/python/apache_beam/runners/portability/prism_runner.py#L313-L349","documentation":"Prism releases are only published for amd64 and arm64 architectures. After normalizing common machine names (x86_64, aarch64, etc.), _construct_download_url raises this ValueError for any other architecture, so no release binary URL can be built.","triggerScenarios":"Running PrismRunner (without a local binary or --prism_location override) on architectures like 386, riscv64, ppc64le, s390x, or armv7.","commonSituations":"Older 32-bit machines; RISC-V/POWER dev boards; s390x mainframe Linux (e.g. Z/OS-based CI); Raspberry Pi on 32-bit ARM OS.","solutions":["Build prism from source (`go build`) for your architecture and pass --prism_location.","Run on an amd64 or arm64 machine/container instead.","Use an external prism job server via --job_endpoint."],"exampleFix":"// before (ppc64le, no override)\n--runner=PrismRunner\n// after\n--runner=PrismRunner --prism_location=/opt/prism/prism-ppc64le","handlingStrategy":"validation","validationCode":"import platform, sys\narch = platform.machine().lower()\nOK = {'amd64', 'x86_64', 'x86-64', 'x64', 'arm64', 'aarch64', 'aarch64_be', 'armv8b', 'armv8l'}\nif arch not in OK and not prism_location_override:\n    sys.exit(f'no prism release for {arch}; build prism and set --prism_location')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Verify platform.machine() is amd64/arm64-compatible before downloading.","Cross-compile prism from source for non-standard architectures.","Use --job_endpoint to offload execution to a supported host."],"tags":["architecture","prism","unsupported-platform"],"backgroundTag":"unsupported-platform","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}