Python: allow --no-build-isolation for pip install
This commit is contained in:
		
							parent
							
								
									931327df1f
								
							
						
					
					
						commit
						38a2703aa7
					
				@ -264,14 +264,14 @@ module Language
 | 
			
		||||
        #   Multiline strings are allowed and treated as though they represent
 | 
			
		||||
        #   the contents of a `requirements.txt`.
 | 
			
		||||
        # @return [void]
 | 
			
		||||
        def pip_install(targets)
 | 
			
		||||
        def pip_install(targets, build_isolation: true)
 | 
			
		||||
          targets = Array(targets)
 | 
			
		||||
          targets.each do |t|
 | 
			
		||||
            if t.respond_to? :stage
 | 
			
		||||
              t.stage { do_install Pathname.pwd }
 | 
			
		||||
              t.stage { do_install(Pathname.pwd, build_isolation: build_isolation) }
 | 
			
		||||
            else
 | 
			
		||||
              t = t.lines.map(&:strip) if t.respond_to?(:lines) && t.include?("\n")
 | 
			
		||||
              do_install t
 | 
			
		||||
              do_install(t, build_isolation: build_isolation)
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
@ -281,11 +281,11 @@ module Language
 | 
			
		||||
        #
 | 
			
		||||
        # @param (see #pip_install)
 | 
			
		||||
        # @return (see #pip_install)
 | 
			
		||||
        def pip_install_and_link(targets, link_manpages: false)
 | 
			
		||||
        def pip_install_and_link(targets, link_manpages: false, build_isolation: true)
 | 
			
		||||
          bin_before = Dir[@venv_root/"bin/*"].to_set
 | 
			
		||||
          man_before = Dir[@venv_root/"share/man/man*/*"].to_set if link_manpages
 | 
			
		||||
 | 
			
		||||
          pip_install(targets)
 | 
			
		||||
          pip_install(targets, build_isolation: build_isolation)
 | 
			
		||||
 | 
			
		||||
          bin_after = Dir[@venv_root/"bin/*"].to_set
 | 
			
		||||
          bin_to_link = (bin_after - bin_before).to_a
 | 
			
		||||
@ -301,12 +301,15 @@ module Language
 | 
			
		||||
 | 
			
		||||
        private
 | 
			
		||||
 | 
			
		||||
        def do_install(targets)
 | 
			
		||||
        def do_install(targets, build_isolation: true)
 | 
			
		||||
          targets = Array(targets)
 | 
			
		||||
          @formula.system @venv_root/"bin/pip", "install",
 | 
			
		||||
          args = [
 | 
			
		||||
            "-v", "--no-deps", "--no-binary", ":all:",
 | 
			
		||||
            "--use-feature=no-binary-enable-wheel-cache",
 | 
			
		||||
                          "--ignore-installed", *targets
 | 
			
		||||
            "--ignore-installed"
 | 
			
		||||
          ]
 | 
			
		||||
          args << "--no-build-isolation" if not build_isolation
 | 
			
		||||
          @formula.system @venv_root/"bin/pip", "install", args, *targets
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
@ -67,6 +67,14 @@ describe Language::Python::Virtualenv::Virtualenv, :needs_python do
 | 
			
		||||
 | 
			
		||||
      virtualenv.pip_install res
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "works without build isolation" do
 | 
			
		||||
      expect(formula).to receive(:system)
 | 
			
		||||
        .with(dir/"bin/pip", "install", "-v", "--no-deps", "--no-binary", ":all:",
 | 
			
		||||
              "--use-feature=no-binary-enable-wheel-cache", "--ignore-installed", "--no-build-isolation", "foo")
 | 
			
		||||
        .and_return(true)
 | 
			
		||||
      virtualenv.pip_install("foo", build_isolation: false)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe "#pip_install_and_link" do
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user