{"record":{"id":"835308c61621a46a","repo":"apache/beam","slug":"operating-system-s-unsupported-for-constructing-a-prism","errorCode":null,"errorMessage":"Operating System \"%s\" unsupported for constructing a Prism release binary URL.","messagePattern":"Operating System \"(.+?)\" 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":319,"sourceCode":"          raise RuntimeError(\n              'Unable to fetch remote prism binary at %s: %s' % (url, e))\n        # If we download a new prism, then we should always use it but not\n        # the cached one.\n        ignore_cache = True\n    return cached_file, ignore_cache\n\n  @staticmethod\n  def _construct_download_url(\n      version: str, root_tag: str, sys: str, mach: str) -> str:\n    \"\"\"Construct the prism download URL with the appropriate release tag.\n    This maps operating systems and machine architectures to the compatible\n    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","sourceCodeStart":301,"sourceCodeEnd":337,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/python/apache_beam/runners/portability/prism_runner.py#L301-L337","documentation":"Prism release binaries are only published for linux, windows, and darwin (matching Go build targets). _construct_download_url raises this ValueError when platform.system() returns anything else, because no release URL can be constructed for that OS.","triggerScenarios":"Running PrismRunner (without a local prism binary or --prism_location override) on an OS whose platform.system() is not linux/windows/darwin, e.g. FreeBSD or Cygwin.","commonSituations":"Developers on BSD variants or unusual platforms; containers reporting an unexpected system name; attempting release-download on unsupported systems.","solutions":["Build prism from source with `go build` and pass --prism_location=/path/to/prism.","Run the pipeline on linux/macos/windows, or inside a linux container.","Use an already-running prism job server via --job_endpoint."],"exampleFix":"// before (FreeBSD, no override)\n--runner=PrismRunner\n// after\n--runner=PrismRunner --prism_location=/opt/prism/prism","handlingStrategy":"validation","validationCode":"import platform, sys\nif platform.system().lower() not in ('linux', 'windows', 'darwin') and not prism_location_override:\n    sys.exit('Prism release binaries unavailable for this OS; build prism and set --prism_location')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Check platform.system() before enabling PrismRunner on exotic OSes.","Ship a locally built prism binary for unsupported platforms.","Run in a linux container when the host OS is unsupported."],"tags":["platform","prism","unsupported-os"],"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"}