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.extend ObserverPathnameExtension
 | 
			
		||||
 | 
			
		||||
      if src.file?
 | 
			
		||||
      if src.symlink? || src.file?
 | 
			
		||||
        Find.prune if File.basename(src) == '.DS_Store'
 | 
			
		||||
        # 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.
 | 
			
		||||
@ -403,15 +403,6 @@ class Keg
 | 
			
		||||
          make_relative_symlink dst, src, mode
 | 
			
		||||
        end
 | 
			
		||||
      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
 | 
			
		||||
        next if dst.directory? and not dst.symlink?
 | 
			
		||||
        # no need to put .app bundles in the path, the user can just use
 | 
			
		||||
 | 
			
		||||
@ -199,4 +199,22 @@ class LinkTests < Homebrew::TestCase
 | 
			
		||||
    @dst.delete
 | 
			
		||||
    assert_equal 3, @keg.unlink
 | 
			
		||||
  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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user