Skip to content

Commit 7b9931e

Browse files
committed
Disable build isolation for workflow tarball by default. Add an env var to enable it if needed.
1 parent 82ebcb2 commit 7b9931e

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

sdks/python/container/boot.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,11 @@ func installSetupPackages(ctx context.Context, logger *tools.Logger, files []str
390390
bufLogger.Printf(ctx, "Failed to setup acceptable wheel specs, leave it as empty: %v", err)
391391
}
392392

393+
useBuildIsolationForWorkflow := false
394+
if os.Getenv("USE_BUILD_ISOLATION_FOR_WORKFLOW") != "" {
395+
useBuildIsolationForWorkflow = true
396+
}
397+
393398
// Install the Dataflow Python SDK if one was staged. In released
394399
// container images, SDK is already installed, but can be overriden
395400
// using the --sdk_location pipeline option.
@@ -411,7 +416,7 @@ func installSetupPackages(ctx context.Context, logger *tools.Logger, files []str
411416
if err := installExtraPackages(ctx, logger, files, extraPackagesFile, workDir); err != nil {
412417
return fmt.Errorf("failed to install extra packages: %v", err)
413418
}
414-
if err := pipInstallPackage(ctx, logger, files, workDir, workflowFile, false, true, nil); err != nil {
419+
if err := pipInstallPackage(ctx, logger, files, workDir, workflowFile, false, true, useBuildIsolationForWorkflow, nil); err != nil {
415420
return fmt.Errorf("failed to install workflow: %v", err)
416421
}
417422
if err := logRuntimeDependencies(ctx, bufLogger); err != nil {

sdks/python/container/piputil.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func isPackageInstalled(pkgName string) bool {
8181
}
8282

8383
// pipInstallPackage installs the given package, if present.
84-
func pipInstallPackage(ctx context.Context, logger *tools.Logger, files []string, dir, name string, force, optional bool, extras []string) error {
84+
func pipInstallPackage(ctx context.Context, logger *tools.Logger, files []string, dir, name string, force, optional, useBuildIsolation bool, extras []string) error {
8585
pythonVersion, err := expansionx.GetPythonVersion()
8686
if err != nil {
8787
return err
@@ -112,6 +112,9 @@ func pipInstallPackage(ctx context.Context, logger *tools.Logger, files []string
112112
// installed if necessary. This achieves our goal outlined above.
113113
args := []string{"-m", "pip", "install", "--no-cache-dir", "--disable-pip-version-check", "--upgrade", "--force-reinstall", "--no-deps",
114114
filepath.Join(dir, packageSpec)}
115+
if !useBuildIsolation {
116+
args = append(args, "--no-build-isolation")
117+
}
115118
err := execx.ExecuteEnvWithIO(nil, os.Stdin, bufLogger, bufLogger, pythonVersion, args...)
116119
if err != nil {
117120
bufLogger.FlushAtError(ctx)
@@ -120,6 +123,9 @@ func pipInstallPackage(ctx context.Context, logger *tools.Logger, files []string
120123
bufLogger.FlushAtDebug(ctx)
121124
}
122125
args = []string{"-m", "pip", "install", "--no-cache-dir", "--disable-pip-version-check", filepath.Join(dir, packageSpec)}
126+
if !useBuildIsolation {
127+
args = append(args, "--no-build-isolation")
128+
}
123129
err = execx.ExecuteEnvWithIO(nil, os.Stdin, bufLogger, bufLogger, pythonVersion, args...)
124130
if err != nil {
125131
bufLogger.FlushAtError(ctx)
@@ -131,6 +137,9 @@ func pipInstallPackage(ctx context.Context, logger *tools.Logger, files []string
131137

132138
// Case when we do not perform a forced reinstall.
133139
args := []string{"-m", "pip", "install", "--no-cache-dir", "--disable-pip-version-check", filepath.Join(dir, packageSpec)}
140+
if !useBuildIsolation {
141+
args = append(args, "--no-build-isolation")
142+
}
134143
err := execx.ExecuteEnvWithIO(nil, os.Stdin, bufLogger, bufLogger, pythonVersion, args...)
135144
if err != nil {
136145
bufLogger.FlushAtError(ctx)
@@ -168,7 +177,7 @@ func installExtraPackages(ctx context.Context, logger *tools.Logger, files []str
168177
for s.Scan() {
169178
extraPackage := s.Text()
170179
bufLogger.Printf(ctx, "Installing extra package: %s", extraPackage)
171-
if err = pipInstallPackage(ctx, logger, files, dir, extraPackage, true, false, nil); err != nil {
180+
if err = pipInstallPackage(ctx, logger, files, dir, extraPackage, true, false, true, nil); err != nil {
172181
return fmt.Errorf("failed to install extra package %s: %v", extraPackage, err)
173182
}
174183
}
@@ -203,7 +212,7 @@ func installSdk(ctx context.Context, logger *tools.Logger, files []string, workD
203212
if sdkWhlFile != "" {
204213
// by default, pip rejects to install wheel if same version already installed
205214
isDev := strings.Contains(sdkWhlFile, ".dev")
206-
err := pipInstallPackage(ctx, logger, files, workDir, sdkWhlFile, isDev, false, []string{"gcp"})
215+
err := pipInstallPackage(ctx, logger, files, workDir, sdkWhlFile, isDev, false, true, []string{"gcp"})
207216
if err == nil {
208217
return nil
209218
}
@@ -215,6 +224,6 @@ func installSdk(ctx context.Context, logger *tools.Logger, files []string, workD
215224
return nil
216225
}
217226
}
218-
err := pipInstallPackage(ctx, logger, files, workDir, sdkSrcFile, false, false, []string{"gcp"})
227+
err := pipInstallPackage(ctx, logger, files, workDir, sdkSrcFile, false, false, true, []string{"gcp"})
219228
return err
220229
}

0 commit comments

Comments
 (0)