@@ -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