mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Make VCS download strategies work without user paths
Closes Homebrew/homebrew#15139. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
This commit is contained in:
parent
69ba010637
commit
ee485b16e7
@ -458,12 +458,17 @@ class MercurialDownloadStrategy < AbstractDownloadStrategy
|
|||||||
|
|
||||||
def cached_location; @clone; end
|
def cached_location; @clone; end
|
||||||
|
|
||||||
|
|
||||||
def hgpath
|
def hgpath
|
||||||
@path ||= (which("hg") || "#{HOMEBREW_PREFIX}/bin/hg")
|
@path ||= %W[
|
||||||
|
#{which("hg")}
|
||||||
|
#{HOMEBREW_PREFIX}/bin/hg
|
||||||
|
#{HOMEBREW_PREFIX}/share/python/hg
|
||||||
|
].find { |p| File.executable? p }
|
||||||
end
|
end
|
||||||
|
|
||||||
def fetch
|
def fetch
|
||||||
raise "You must: brew install hg" unless File.file?(hgpath)
|
raise "You must: brew install mercurial" unless hgpath
|
||||||
|
|
||||||
ohai "Cloning #{@url}"
|
ohai "Cloning #{@url}"
|
||||||
|
|
||||||
@ -501,17 +506,24 @@ class BazaarDownloadStrategy < AbstractDownloadStrategy
|
|||||||
|
|
||||||
def cached_location; @clone; end
|
def cached_location; @clone; end
|
||||||
|
|
||||||
|
def bzrpath
|
||||||
|
@path ||= %W[
|
||||||
|
#{which("bzr")}
|
||||||
|
#{HOMEBREW_PREFIX}/bin/bzr
|
||||||
|
].find { |p| File.executable? p }
|
||||||
|
end
|
||||||
|
|
||||||
def fetch
|
def fetch
|
||||||
raise "You must install bazaar first" unless which "bzr"
|
raise "You must: brew install bazaar" unless bzrpath
|
||||||
|
|
||||||
ohai "Cloning #{@url}"
|
ohai "Cloning #{@url}"
|
||||||
unless @clone.exist?
|
unless @clone.exist?
|
||||||
url=@url.sub(%r[^bzr://], '')
|
url=@url.sub(%r[^bzr://], '')
|
||||||
# 'lightweight' means history-less
|
# 'lightweight' means history-less
|
||||||
safe_system 'bzr', 'checkout', '--lightweight', url, @clone
|
safe_system bzrpath, 'checkout', '--lightweight', url, @clone
|
||||||
else
|
else
|
||||||
puts "Updating #{@clone}"
|
puts "Updating #{@clone}"
|
||||||
Dir.chdir(@clone) { safe_system 'bzr', 'update' }
|
Dir.chdir(@clone) { safe_system bzrpath, 'update' }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -526,10 +538,10 @@ class BazaarDownloadStrategy < AbstractDownloadStrategy
|
|||||||
# if @spec and @ref
|
# if @spec and @ref
|
||||||
# ohai "Checking out #{@spec} #{@ref}"
|
# ohai "Checking out #{@spec} #{@ref}"
|
||||||
# Dir.chdir @clone do
|
# Dir.chdir @clone do
|
||||||
# safe_system 'bzr', 'export', '-r', @ref, dst
|
# safe_system bzrpath, 'export', '-r', @ref, dst
|
||||||
# end
|
# end
|
||||||
# else
|
# else
|
||||||
# safe_system 'bzr', 'export', dst
|
# safe_system bzrpath, 'export', dst
|
||||||
# end
|
# end
|
||||||
#end
|
#end
|
||||||
end
|
end
|
||||||
@ -544,25 +556,32 @@ class FossilDownloadStrategy < AbstractDownloadStrategy
|
|||||||
|
|
||||||
def cached_location; @clone; end
|
def cached_location; @clone; end
|
||||||
|
|
||||||
|
def fossilpath
|
||||||
|
@path ||= %W[
|
||||||
|
#{which("fossil")}
|
||||||
|
#{HOMEBREW_PREFIX}/bin/fossil
|
||||||
|
].find { |p| File.executable? p }
|
||||||
|
end
|
||||||
|
|
||||||
def fetch
|
def fetch
|
||||||
raise "You must install fossil first" unless which "fossil"
|
raise "You must: brew install fossil" unless fossilpath
|
||||||
|
|
||||||
ohai "Cloning #{@url}"
|
ohai "Cloning #{@url}"
|
||||||
unless @clone.exist?
|
unless @clone.exist?
|
||||||
url=@url.sub(%r[^fossil://], '')
|
url=@url.sub(%r[^fossil://], '')
|
||||||
safe_system 'fossil', 'clone', url, @clone
|
safe_system fossilpath, 'clone', url, @clone
|
||||||
else
|
else
|
||||||
puts "Updating #{@clone}"
|
puts "Updating #{@clone}"
|
||||||
safe_system 'fossil', 'pull', '-R', @clone
|
safe_system fossilpath, 'pull', '-R', @clone
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def stage
|
def stage
|
||||||
# TODO: The 'open' and 'checkout' commands are very noisy and have no '-q' option.
|
# TODO: The 'open' and 'checkout' commands are very noisy and have no '-q' option.
|
||||||
safe_system 'fossil', 'open', @clone
|
safe_system fossilpath, 'open', @clone
|
||||||
if @spec and @ref
|
if @spec and @ref
|
||||||
ohai "Checking out #{@spec} #{@ref}"
|
ohai "Checking out #{@spec} #{@ref}"
|
||||||
safe_system 'fossil', 'checkout', @ref
|
safe_system fossilpath, 'checkout', @ref
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user