Open Bug 2055533 Opened 4 days ago Updated 10 hours ago

Solaris build failure after ANGLE revendor: missing rule for ANGLEShaderProgramVersion.h.rsp

Categories

(Firefox Build System :: General, defect)

defect

Tracking

(Not tracked)

UNCONFIRMED

People

(Reporter: petr.sumbera, Unassigned)

References

(Regression)

Details

(Keywords: regression)

Steps to reproduce:

Likely regressed by:

Bug 2035541 - Re-vendor ANGLE using new process
commit 7320f912e2a3

This commit introduced the new generated third_party/angle/*_gn/moz.build layout and the angle_program_version_id_gn target.

Affected platform
Solaris / SunOS, both x86_64 and sparc64.

Failure
Solaris build fails during export:

gmake[3]: *** No rule to make target
'third_party/angle/gen/ANGLEShaderProgramVersion.h.rsp',
needed by
'third_party/angle/gen/.deps/ANGLEShaderProgramVersion.h.stub'. Stop.

gmake[2]: *** [config/recurse.mk:34: export] Error 2
gmake[1]: *** [config/rules.mk:357: default] Error 2
gmake: *** [client.mk:58: build] Error 2
Cause
third_party/angle/angle_program_version_id_gn/moz.build always declares:

GeneratedFile(
"/third_party/angle/gen/ANGLEShaderProgramVersion.h",
extra_deps=['!/third_party/angle/gen/ANGLEShaderProgramVersion.h.rsp'],
...
)

but it only creates ANGLEShaderProgramVersion.h.rsp for:

Android
Darwin
Linux
OpenBSD
WINNT

There is no SunOS branch, so the dependency has no generating rule on Solaris.

Also, third_party/angle/angle_common_gn/moz.build has no SunOS branch for the platform-specific system_utils_* sources. Before the ANGLE revendor, Solaris built ANGLE
common code with:

system_utils_posix.cpp
system_utils_linux.cpp

from the old gfx/angle/targets/angle_common/moz.build.

Suggested fix
Add SunOS handling to the generated ANGLE moz.build files, matching the previous Solaris source set:

  diff --git a/third_party/angle/angle_common_gn/moz.build b/third_party/angle/angle_common_gn/moz.build
  --- a/third_party/angle/angle_common_gn/moz.build
  +++ b/third_party/angle/angle_common_gn/moz.build
  @@ -144,6 +144,13 @@ if CONFIG["OS_TARGET"] == "OpenBSD":
       DEFINES["__STDC_CONSTANT_MACROS"] = True
       DEFINES["__STDC_FORMAT_MACROS"] = True
  
  +if CONFIG["OS_TARGET"] == "SunOS":
  +
  +    UNIFIED_SOURCES += [
  +        "/third_party/angle/src/common/system_utils_linux.cpp",
  +        "/third_party/angle/src/common/system_utils_posix.cpp"
  +    ]
  +
   if CONFIG["OS_TARGET"] == "WINNT":
  
       DEFINES["ANGLE_IS_WIN"] = True
  diff --git a/third_party/angle/angle_program_version_id_gn/moz.build b/third_party/angle/angle_program_version_id_gn/moz.build
  --- a/third_party/angle/angle_program_version_id_gn/moz.build
  +++ b/third_party/angle/angle_program_version_id_gn/moz.build
  @@ -69,6 +69,15 @@ if CONFIG["OS_TARGET"] == "OpenBSD":
           script="/python/mozbuild/mozbuild/action/write_path_list.py",
       )
  
  +if CONFIG["OS_TARGET"] == "SunOS":
  +
  +    GeneratedFile(
  
  
Keywords: regression
Regressed by: 2035541

Full suggested fix:

--- a/third_party/angle/angle_common_gn/moz.build       Thu Jul 16 17:00:00 2026 -0700
+++ b/third_party/angle/angle_common_gn/moz.build       Thu Jul 16 17:00:00 2026 -0700
@@ -144,6 +144,13 @@
     DEFINES["__STDC_CONSTANT_MACROS"] = True
     DEFINES["__STDC_FORMAT_MACROS"] = True

+if CONFIG["OS_TARGET"] == "SunOS":
+
+    UNIFIED_SOURCES += [
+        "/third_party/angle/src/common/system_utils_linux.cpp",
+        "/third_party/angle/src/common/system_utils_posix.cpp"
+    ]
+
 if CONFIG["OS_TARGET"] == "WINNT":

     DEFINES["ANGLE_IS_WIN"] = True
diff -r 000000000000 -r 000000000000 third_party/angle/angle_program_version_id_gn/moz.build
--- a/third_party/angle/angle_program_version_id_gn/moz.build   Thu Jul 16 17:00:00 2026 -0700
+++ b/third_party/angle/angle_program_version_id_gn/moz.build   Thu Jul 16 17:00:00 2026 -0700
@@ -69,6 +69,15 @@
         script="/python/mozbuild/mozbuild/action/write_path_list.py",
     )

+if CONFIG["OS_TARGET"] == "SunOS":
+
+    GeneratedFile(
+        "/third_party/angle/gen/ANGLEShaderProgramVersion.h.rsp",
+        entry_point="write_paths",
+        inputs=['ANGLEShaderProgramVersion.h-f55f152d23101920.rsp.in'],
+        script="/python/mozbuild/mozbuild/action/write_path_list.py",
+    )
+
 if CONFIG["OS_TARGET"] == "WINNT":

     DEFINES["UNICODE"] = True

:jnicol, since you are the author of the regressor, bug 2035541, could you take a look? Also, could you set the severity field?

For more information, please visit BugBot documentation.

Flags: needinfo?(jnicol)

The Bugbug bot thinks this bug should belong to the 'Firefox Build System::General' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → General
Product: Firefox → Firefox Build System

Previously we only built a complex ANGLE configuration for windows (the D3D backend), and on other platforms we only built the translator target which is simple. This means we could generate a proper ANGLE build configuration only for windows then derive our moz.build files from it, then just add a few additional paths required for other platforms.

We now want to build complex ANGLE configurations for more platforms: currently the Metal backend on macOS, but perhaps in the future Vulkan on Linux and Android too. The old approach doesn't scale to this, so as of bug 2035541 we now generate the full build configuration for all (supported) platforms and fully derive the moz.build files from that.

Unfortunately since neither upstream ANGLE nor the script we use to generate the build configurations supports Solaris, this causes this issue.

I'll have a think about how we could improve this, but it's not straightforward. So in the meantime this may have to be patched downstream.

Flags: needinfo?(jnicol)
You need to log in before you can comment on or make changes to this bug.