Add BUILD_BROKEN_USES_NETWORK

Some people apparently still talk to the network during their build.
Allow this temporarily with a BUILD_BROKEN_USES_NETWORK check.

Bug: 129992021
Test: attempt to talk to the network during the build with and without
      this flag.
Change-Id: Ifb967c656aa24c4599e7232d0f1b5a303b5bac52
diff --git a/ui/build/config.go b/ui/build/config.go
index 64270f8..7eb3a72 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -55,6 +55,7 @@
 
 	brokenDupRules     bool
 	brokenPhonyTargets bool
+	brokenUsesNetwork  bool
 
 	pathReplaced bool
 }
@@ -622,6 +623,14 @@
 	return c.brokenPhonyTargets
 }
 
+func (c *configImpl) SetBuildBrokenUsesNetwork(val bool) {
+	c.brokenUsesNetwork = val
+}
+
+func (c *configImpl) BuildBrokenUsesNetwork() bool {
+	return c.brokenUsesNetwork
+}
+
 func (c *configImpl) SetTargetDeviceDir(dir string) {
 	c.targetDeviceDir = dir
 }
diff --git a/ui/build/dumpvars.go b/ui/build/dumpvars.go
index 7f0b784..3e387c1 100644
--- a/ui/build/dumpvars.go
+++ b/ui/build/dumpvars.go
@@ -203,6 +203,9 @@
 		// Used to turn on --werror_ options in Kati
 		"BUILD_BROKEN_PHONY_TARGETS",
 
+		// Whether to enable the network during the build
+		"BUILD_BROKEN_USES_NETWORK",
+
 		// Not used, but useful to be in the soong.log
 		"BOARD_VNDK_VERSION",
 		"BUILD_BROKEN_ANDROIDMK_EXPORTS",
@@ -238,4 +241,5 @@
 	config.SetPdkBuild(make_vars["TARGET_BUILD_PDK"] == "true")
 	config.SetBuildBrokenDupRules(make_vars["BUILD_BROKEN_DUP_RULES"] == "true")
 	config.SetBuildBrokenPhonyTargets(make_vars["BUILD_BROKEN_PHONY_TARGETS"] == "true")
+	config.SetBuildBrokenUsesNetwork(make_vars["BUILD_BROKEN_USES_NETWORK"] == "true")
 }
diff --git a/ui/build/sandbox_linux.go b/ui/build/sandbox_linux.go
index 85c4a9a..b94db74 100644
--- a/ui/build/sandbox_linux.go
+++ b/ui/build/sandbox_linux.go
@@ -26,6 +26,8 @@
 type Sandbox struct {
 	Enabled              bool
 	DisableWhenUsingGoma bool
+
+	AllowBuildBrokenUsesNetwork bool
 }
 
 var (
@@ -40,6 +42,8 @@
 	ninjaSandbox    = Sandbox{
 		Enabled:              true,
 		DisableWhenUsingGoma: true,
+
+		AllowBuildBrokenUsesNetwork: true,
 	}
 )
 
@@ -152,10 +156,17 @@
 
 		// Only log important warnings / errors
 		"-q",
-
-		// Stop parsing arguments
-		"--",
 	}
+
+	if c.Sandbox.AllowBuildBrokenUsesNetwork && c.config.BuildBrokenUsesNetwork() {
+		c.ctx.Printf("AllowBuildBrokenUsesNetwork: %v", c.Sandbox.AllowBuildBrokenUsesNetwork)
+		c.ctx.Printf("BuildBrokenUsesNetwork: %v", c.config.BuildBrokenUsesNetwork())
+		sandboxArgs = append(sandboxArgs, "-N")
+	}
+
+	// Stop nsjail from parsing arguments
+	sandboxArgs = append(sandboxArgs, "--")
+
 	c.Args = append(sandboxArgs, c.Args[1:]...)
 	c.Path = nsjailPath