Title: [264096] trunk/Tools
Revision
264096
Author
[email protected]
Date
2020-07-08 04:22:43 -0700 (Wed, 08 Jul 2020)

Log Message

[Flatpak SDK] Pre-start sccache server
https://bugs.webkit.org/show_bug.cgi?id=213973

Patch by Philippe Normand <[email protected]> on 2020-07-08
Reviewed by Žan Doberšek.

Pre-start the sccache-dist server when the flatpak sandbox is being invoked for a build.
Usually the first sccache client process would do it but it seems to be racy when a large
number of clients is being started simultaneously.

* flatpak/flatpakutils.py:
(WebkitFlatpak.run_in_sandbox):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (264095 => 264096)


--- trunk/Tools/ChangeLog	2020-07-08 11:19:27 UTC (rev 264095)
+++ trunk/Tools/ChangeLog	2020-07-08 11:22:43 UTC (rev 264096)
@@ -1,3 +1,17 @@
+2020-07-08  Philippe Normand  <[email protected]>
+
+        [Flatpak SDK] Pre-start sccache server
+        https://bugs.webkit.org/show_bug.cgi?id=213973
+
+        Reviewed by Žan Doberšek.
+
+        Pre-start the sccache-dist server when the flatpak sandbox is being invoked for a build.
+        Usually the first sccache client process would do it but it seems to be racy when a large
+        number of clients is being started simultaneously.
+
+        * flatpak/flatpakutils.py:
+        (WebkitFlatpak.run_in_sandbox):
+
 2020-07-08  Carlos Alberto Lopez Perez  <[email protected]>
 
         [GTK][WPE] install-dependencies should install the gstreamer plugins

Modified: trunk/Tools/flatpak/flatpakutils.py (264095 => 264096)


--- trunk/Tools/flatpak/flatpakutils.py	2020-07-08 11:19:27 UTC (rev 264095)
+++ trunk/Tools/flatpak/flatpakutils.py	2020-07-08 11:22:43 UTC (rev 264096)
@@ -653,11 +653,12 @@
 
     def run_in_sandbox(self, *args, **kwargs):
         self.setup_builddir()
-        cwd = kwargs.pop("cwd", None)
-        extra_env_vars = kwargs.pop("env", {})
-        stdout = kwargs.pop("stdout", sys.stdout)
-        extra_flatpak_args = kwargs.pop("extra_flatpak_args", [])
-        skip_icc = kwargs.pop("skip_icc", False)
+        cwd = kwargs.get("cwd", None)
+        extra_env_vars = kwargs.get("env", {})
+        stdout = kwargs.get("stdout", sys.stdout)
+        extra_flatpak_args = kwargs.get("extra_flatpak_args", [])
+        start_sccache = kwargs.get("start_sccache", True)
+        skip_icc = kwargs.get("skip_icc", False)
 
         if not isinstance(args, list):
             args = list(args)
@@ -774,18 +775,29 @@
         remote_sccache_configs = set(["SCCACHE_REDIS", "SCCACHE_BUCKET", "SCCACHE_MEMCACHED",
                                       "SCCACHE_GCS_BUCKET", "SCCACHE_AZURE_CONNECTION_STRING",
                                       "WEBKIT_USE_SCCACHE"])
-        if remote_sccache_configs.intersection(set(os.environ.keys())):
+        if remote_sccache_configs.intersection(set(os.environ.keys())) and start_sccache:
             _log.debug("Enabling network access for the remote sccache")
             flatpak_command.append(share_network_option)
 
-            if os.path.isfile(self.sccache_config_file) and not self.regenerate_toolchains and "SCCACHE_CONF" not in os.environ.keys():
-                sandbox_environment["SCCACHE_CONF"] = self.host_path_to_sandbox_path(self.sccache_config_file)
+            sccache_environment = {}
+            if os.path.isfile(self.sccache_config_file) and not self.regenerate_toolchains and \
+               "SCCACHE_CONF" not in os.environ.keys():
+                sccache_environment["SCCACHE_CONF"] = self.host_path_to_sandbox_path(self.sccache_config_file)
 
-        override_sccache_server_port = os.environ.get("WEBKIT_SCCACHE_SERVER_PORT")
-        if override_sccache_server_port:
-            _log.debug("Overriding sccache server port to %s" % override_sccache_server_port)
-            sandbox_environment["SCCACHE_SERVER_PORT"] = override_sccache_server_port
+            override_sccache_server_port = os.environ.get("WEBKIT_SCCACHE_SERVER_PORT")
+            if override_sccache_server_port:
+                _log.debug("Overriding sccache server port to %s" % override_sccache_server_port)
+                sccache_environment["SCCACHE_SERVER_PORT"] = override_sccache_server_port
 
+            if building:
+                # Spawn the sccache server in background, and avoid recursing here, using a bool keyword.
+                _log.debug("Pre-starting the SCCache dist server")
+                self.run_in_sandbox("sccache", "--start-server", env=sccache_environment,
+                                    extra_flatpak_args=[share_network_option], start_sccache=False)
+
+            # Forward sccache server env vars to sccache clients.
+            sandbox_environment.update(sccache_environment)
+
         if self.use_icecream and not skip_icc:
             _log.debug('Enabling the icecream compiler')
             if share_network_option not in flatpak_command:
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to