tvalentyn commented on code in PR #28317:
URL: https://github.com/apache/beam/pull/28317#discussion_r1317575362


##########
sdks/go/pkg/beam/util/execx/exec.go:
##########
@@ -43,3 +44,20 @@ func ExecuteEnv(env map[string]string, prog string, args 
...string) error {
 
        return cmd.Run()
 }
+
+// ExecuteEnvWithIO runs the program with the given arguments with additional 
environment
+// variables. It attaches custom IO to the child process.
+func ExecuteEnvWithIO(env map[string]string, stdin io.Reader, stdout, stderr 
io.Writer, prog string, args ...string) error {

Review Comment:
   nit: ExecuteEnv can call ExecuteEnvWithIO  with default params set. 
   



##########
sdks/python/container/piputil.go:
##########
@@ -97,19 +107,34 @@ func pipInstallPackage(files []string, dir, name string, 
force, optional bool, e
                                // installed version will match the package 
specified, the package itself
                                // will not be reinstalled, but its 
dependencies will now be resolved and
                                // installed if necessary.  This achieves our 
goal outlined above.
-                               args := []string{"-m", "pip", "install", "-q", 
"--no-cache-dir", "--disable-pip-version-check", "--upgrade", 
"--force-reinstall", "--no-deps",
+                               args := []string{"-m", "pip", "install", 
"--no-cache-dir", "--disable-pip-version-check", "--upgrade", 
"--force-reinstall", "--no-deps",
                                        filepath.Join(dir, packageSpec)}
-                               err := execx.Execute(pythonVersion, args...)
+                               err := execx.ExecuteEnvWithIO(nil, os.Stdin, 
bufLogger, bufLogger, pythonVersion, args...)

Review Comment:
   have you considered passing buffered logger to the `ExexcuteEnvWith...` 
function, and flush at appropriate level inside the helper? 



##########
sdks/go/pkg/beam/util/execx/exec.go:
##########
@@ -43,3 +44,20 @@ func ExecuteEnv(env map[string]string, prog string, args 
...string) error {
 
        return cmd.Run()
 }
+
+// ExecuteEnvWithIO runs the program with the given arguments with additional 
environment
+// variables. It attaches custom IO to the child process.
+func ExecuteEnvWithIO(env map[string]string, stdin io.Reader, stdout, stderr 
io.Writer, prog string, args ...string) error {
+       cmd := exec.Command(prog, args...)
+       cmd.Stdin = stdin

Review Comment:
   does it make sense to default to os.Stdin if stdin is nil, etc?



##########
sdks/python/container/boot.go:
##########
@@ -450,7 +450,7 @@ func processArtifactsInSetupOnlyMode() {
                }
                files[i] = filePayload.GetPath()
        }
-       if setupErr := installSetupPackages(files, workDir, 
[]string{requirementsFile}); setupErr != nil {
+       if setupErr := installSetupPackages(context.Background(), nil, files, 
workDir, []string{requirementsFile}); setupErr != nil {

Review Comment:
   how is 'nil' logger value handled? have you tested the container prebuilding 
workflow with this change?
   
   Note: we should also run python validatescontainer test suite that exercises 
it.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to