Always link symlinks directly
This commit is contained in:
parent
1fb1677532
commit
7b26c885bd
@ -384,7 +384,7 @@ class Keg
|
|||||||
dst = HOMEBREW_PREFIX + src.relative_path_from(path)
|
dst = HOMEBREW_PREFIX + src.relative_path_from(path)
|
||||||
dst.extend ObserverPathnameExtension
|
dst.extend ObserverPathnameExtension
|
||||||
|
|
||||||
if src.file?
|
if src.symlink? || src.file?
|
||||||
Find.prune if File.basename(src) == '.DS_Store'
|
Find.prune if File.basename(src) == '.DS_Store'
|
||||||
# Don't link pyc files because Python overwrites these cached object
|
# Don't link pyc files because Python overwrites these cached object
|
||||||
# files and next time brew wants to link, the pyc file is in the way.
|
# files and next time brew wants to link, the pyc file is in the way.
|
||||||
@ -403,15 +403,6 @@ class Keg
|
|||||||
make_relative_symlink dst, src, mode
|
make_relative_symlink dst, src, mode
|
||||||
end
|
end
|
||||||
elsif src.directory?
|
elsif src.directory?
|
||||||
# If the `src` in the Cellar is a symlink itself, link it directly.
|
|
||||||
# For example Qt has `Frameworks/QtGui.framework -> lib/QtGui.framework`
|
|
||||||
# Not making a link here, would result in an empty dir because the
|
|
||||||
# `src` is not followed by `find`.
|
|
||||||
if src.symlink? && !dst.exist?
|
|
||||||
make_relative_symlink dst, src, mode
|
|
||||||
Find.prune
|
|
||||||
end
|
|
||||||
|
|
||||||
# if the dst dir already exists, then great! walk the rest of the tree tho
|
# if the dst dir already exists, then great! walk the rest of the tree tho
|
||||||
next if dst.directory? and not dst.symlink?
|
next if dst.directory? and not dst.symlink?
|
||||||
# no need to put .app bundles in the path, the user can just use
|
# no need to put .app bundles in the path, the user can just use
|
||||||
|
|||||||
@ -199,4 +199,22 @@ class LinkTests < Homebrew::TestCase
|
|||||||
@dst.delete
|
@dst.delete
|
||||||
assert_equal 3, @keg.unlink
|
assert_equal 3, @keg.unlink
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_pkgconfig_is_mkpathed
|
||||||
|
link = HOMEBREW_PREFIX.join("lib", "pkgconfig")
|
||||||
|
@keg.join("lib", "pkgconfig").mkpath
|
||||||
|
@keg.link
|
||||||
|
assert_predicate link.lstat, :directory?
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_symlinks_are_linked_directly
|
||||||
|
link = HOMEBREW_PREFIX.join("lib", "pkgconfig")
|
||||||
|
|
||||||
|
@keg.join("lib", "example").mkpath
|
||||||
|
@keg.join("lib", "pkgconfig").make_symlink "example"
|
||||||
|
@keg.link
|
||||||
|
|
||||||
|
assert_predicate link.resolved_path, :symlink?
|
||||||
|
assert_predicate link.lstat, :symlink?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user