diff --git a/.travis.yml b/.travis.yml index f918a16fae..6f37f73a34 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,7 +26,7 @@ before_install: sudo chown -R "$USER" "$HOMEBREW_REPOSITORY"; else LINUX="1"; - export PATH="$PWD/bin:$PATH"; + export PATH="$PWD/bin:/usr/bin:/bin"; fi # umask 022 fixes Linux `brew tests` failures; - if [ "$LINUX" ]; then diff --git a/Library/Homebrew/cleanup.rb b/Library/Homebrew/cleanup.rb index 6546eb2f76..ca0aaed41b 100644 --- a/Library/Homebrew/cleanup.rb +++ b/Library/Homebrew/cleanup.rb @@ -293,7 +293,6 @@ module Homebrew def rm_ds_store(dirs = nil) dirs ||= begin Keg::MUST_EXIST_DIRECTORIES + [ - HOMEBREW_CELLAR, HOMEBREW_PREFIX/"Caskroom", ] end diff --git a/Library/Homebrew/cmd/prune.rb b/Library/Homebrew/cmd/prune.rb index 55edc5b610..e26049e1c6 100644 --- a/Library/Homebrew/cmd/prune.rb +++ b/Library/Homebrew/cmd/prune.rb @@ -15,7 +15,7 @@ module Homebrew dirs = [] - Keg::PRUNEABLE_DIRECTORIES.each do |dir| + Keg::MUST_EXIST_SUBDIRECTORIES.each do |dir| next unless dir.directory? dir.find do |path| @@ -32,8 +32,7 @@ module Homebrew path.unlink end end - elsif path.directory? && !Keg::PRUNEABLE_DIRECTORIES.include?(path) && - !Keg::MUST_BE_WRITABLE_DIRECTORIES.include?(path) + elsif path.directory? && !Keg::MUST_EXIST_SUBDIRECTORIES.include?(path) dirs << path end end diff --git a/Library/Homebrew/diagnostic.rb b/Library/Homebrew/diagnostic.rb index ddd47d85f5..eca5c3cad0 100644 --- a/Library/Homebrew/diagnostic.rb +++ b/Library/Homebrew/diagnostic.rb @@ -276,7 +276,7 @@ module Homebrew def check_for_broken_symlinks broken_symlinks = [] - Keg::PRUNEABLE_DIRECTORIES.each do |d| + Keg::MUST_EXIST_SUBDIRECTORIES.each do |d| next unless d.directory? d.find do |path| diff --git a/Library/Homebrew/install.rb b/Library/Homebrew/install.rb index b2c9f8dde6..c451acd15e 100644 --- a/Library/Homebrew/install.rb +++ b/Library/Homebrew/install.rb @@ -18,7 +18,7 @@ module Homebrew end def attempt_directory_creation - Keg::MUST_BE_WRITABLE_DIRECTORIES.each do |dir| + Keg::MUST_EXIST_DIRECTORIES.each do |dir| begin FileUtils.mkdir_p(dir) unless dir.exist? rescue diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index 8e369fe53c..c8287b372e 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -70,27 +70,27 @@ class Keg ].freeze # TODO: remove when brew-test-bot no longer uses this TOP_LEVEL_DIRECTORIES = KEG_LINK_DIRECTORIES - PRUNEABLE_DIRECTORIES = ( - KEG_LINK_DIRECTORIES - %w[var] + %w[var/homebrew/linked] - ).map { |dir| HOMEBREW_PREFIX/dir } + MUST_EXIST_SUBDIRECTORIES = ( + KEG_LINK_DIRECTORIES - %w[var] + %w[ + opt + var/homebrew/linked + ] + ).map { |dir| HOMEBREW_PREFIX/dir }.uniq.sort.freeze # Keep relatively in sync with # https://github.com/Homebrew/install/blob/master/install - MUST_EXIST_DIRECTORIES = ( - (KEG_LINK_DIRECTORIES + %w[ - opt - ]).map { |dir| HOMEBREW_PREFIX/dir } - ).freeze + MUST_EXIST_DIRECTORIES = MUST_EXIST_SUBDIRECTORIES + [ + HOMEBREW_CELLAR, + ].uniq.sort.freeze MUST_BE_WRITABLE_DIRECTORIES = ( - (KEG_LINK_DIRECTORIES + %w[ - opt + %w[ etc/bash_completion.d lib/pkgconfig share/aclocal share/doc share/info share/locale share/man share/man/man1 share/man/man2 share/man/man3 share/man/man4 share/man/man5 share/man/man6 share/man/man7 share/man/man8 share/zsh share/zsh/site-functions var/log - ]).map { |dir| HOMEBREW_PREFIX/dir } + [ + ].map { |dir| HOMEBREW_PREFIX/dir } + MUST_EXIST_SUBDIRECTORIES + [ HOMEBREW_CACHE, HOMEBREW_CELLAR, HOMEBREW_LOCKS, @@ -98,7 +98,7 @@ class Keg HOMEBREW_REPOSITORY, Language::Python.homebrew_site_packages, ] - ).freeze + ).uniq.sort.freeze # These paths relative to the keg's share directory should always be real # directories in the prefix, never symlinks. diff --git a/Library/Homebrew/test/spec_helper.rb b/Library/Homebrew/test/spec_helper.rb index e34bc3a78f..95be09565c 100644 --- a/Library/Homebrew/test/spec_helper.rb +++ b/Library/Homebrew/test/spec_helper.rb @@ -142,9 +142,10 @@ RSpec.configure do |config| FileUtils.rm_rf [ TEST_DIRECTORIES.map(&:children), - *Keg::MUST_EXIST_DIRECTORIES, + *Keg::MUST_EXIST_SUBDIRECTORIES, HOMEBREW_LINKED_KEGS, HOMEBREW_PINNED_KEGS, + HOMEBREW_PREFIX/"var", HOMEBREW_PREFIX/"Caskroom", HOMEBREW_LIBRARY/"Taps/homebrew/homebrew-cask", HOMEBREW_LIBRARY/"Taps/homebrew/homebrew-bar", diff --git a/azure-pipelines.yml b/azure-pipelines.yml index eb3a05522b..26b6788e75 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -4,10 +4,10 @@ jobs: vmImage: xcode9-macos10.13 steps: - bash: | - HOMEBREW_REPOSITORY="$(brew --repo)"; - mv "$HOMEBREW_REPOSITORY/Library/Taps" "$PWD/Library"; - sudo rm -rf "$HOMEBREW_REPOSITORY"; - sudo ln -s "$PWD" "$HOMEBREW_REPOSITORY"; + HOMEBREW_REPOSITORY="$(brew --repo)" + mv "$HOMEBREW_REPOSITORY/Library/Taps" "$PWD/Library" + sudo rm -rf "$HOMEBREW_REPOSITORY" + sudo ln -s "$PWD" "$HOMEBREW_REPOSITORY" brew update-reset Library/Taps/homebrew/homebrew-core brew test-bot --coverage displayName: Run brew test-bot