diff --git a/.travis.yml b/.travis.yml index 241ac12bcc..822af4a22f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,10 @@ -language: ruby -rvm: system +language: c cache: directories: - $HOME/.gem/ruby - $HOME/Library/Caches/Homebrew/style - $HOME/Library/Caches/Homebrew/tests + - $HOME/Library/Homebrew/vendor/bundle branches: only: - master @@ -12,33 +12,47 @@ matrix: fast_finish: true include: - os: osx - osx_image: xcode9 + compiler: clang + osx_image: xcode9.2 - os: linux + compiler: gcc sudo: false before_install: - - export HOMEBREW_NO_AUTO_UPDATE=1 - - export HOMEBREW_DEVELOPER=1 - - export HOMEBREW_FORCE_VENDOR_RUBY=1 - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then + MACOS="1"; HOMEBREW_REPOSITORY="$(brew --repo)"; - sudo chown -R "$USER" "$HOMEBREW_REPOSITORY/Library/Taps"; + sudo chown -R "$USER" "$HOMEBREW_REPOSITORY"; + else + LINUX="1"; + export PATH="$PWD/bin:$PATH"; + fi + # umask 022 fixes Linux `brew tests` failures; + - if [ "$LINUX" ]; then + umask 022; + fi + # trigger vendored ruby installation + - brew help + - if [ "$MACOS" ]; then mv "$HOMEBREW_REPOSITORY/Library/Taps" "$PWD/Library"; - git -C Library/Taps/homebrew/homebrew-core fetch --force origin; - git -C Library/Taps/homebrew/homebrew-core checkout --force -B master origin/master; sudo rm -rf "$HOMEBREW_REPOSITORY"; sudo ln -s "$PWD" "$HOMEBREW_REPOSITORY"; - git clone --depth=1 https://github.com/Homebrew/homebrew-test-bot Library/Taps/homebrew/homebrew-test-bot; else - umask 022; - git fetch --unshallow; - export PATH="$PWD/bin:$PATH"; HOMEBREW_CORE_TAP_DIR="$(brew --repo "homebrew/core")"; mkdir -p "$HOMEBREW_CORE_TAP_DIR"; - git clone --depth=1 https://github.com/Homebrew/homebrew-test-bot Library/Taps/homebrew/homebrew-test-bot; + fi + - if [ "$MACOS" ]; then + travis_retry git -C Library/Taps/homebrew/homebrew-core fetch --depth=1 origin; + fi + - travis_retry git clone --depth=1 https://github.com/Homebrew/homebrew-test-bot Library/Taps/homebrew/homebrew-test-bot + - if [ "$LINUX" ]; then HOMEBREW_TEST_BOT_TAP_DIR="$(brew --repo "homebrew/test-bot")"; ln -s "$HOMEBREW_TEST_BOT_TAP_DIR/.git" "$HOMEBREW_TEST_BOT_TAP_DIR/Formula" "$HOMEBREW_CORE_TAP_DIR"; fi + # can be removed after 1.5.3 is tagged + - if [ "$LINUX" ]; then + export HOMEBREW_FORCE_VENDOR_RUBY=1; + fi script: - brew test-bot diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 643952a4a1..60952c7fed 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -69,16 +69,6 @@ then odie "Cowardly refusing to continue at this prefix: $HOMEBREW_PREFIX" fi -# Save values to use for installing gems -if [[ -n "$GEM_HOME" ]] -then - export HOMEBREW_GEM_HOME="$GEM_HOME" -fi -if [[ -n "$GEM_PATH" ]] -then - export HOMEBREW_GEM_PATH="$GEM_PATH" -fi - HOMEBREW_SYSTEM="$(uname -s)" case "$HOMEBREW_SYSTEM" in Darwin) HOMEBREW_MACOS="1" ;; diff --git a/Library/Homebrew/dev-cmd/tap-new.rb b/Library/Homebrew/dev-cmd/tap-new.rb index 1c3bf20ebc..38cdb1c2e7 100644 --- a/Library/Homebrew/dev-cmd/tap-new.rb +++ b/Library/Homebrew/dev-cmd/tap-new.rb @@ -44,39 +44,28 @@ module Homebrew write_path(tap, "README.md", readme) travis = <<~EOS - language: ruby + language: c os: osx - env: OSX=10.12 - osx_image: xcode8.3 - rvm: system + compiler: clang + osx_image: xcode9.2 cache: directories: - $HOME/.gem/ruby - Library/Homebrew/vendor/bundle + branches: + only: + - master before_install: - - export TRAVIS_COMMIT="$(git rev-parse --verify -q HEAD)" - - if [ -f ".git/shallow" ]; then - travis_retry git fetch --unshallow; - fi - - HOMEBREW_REPOSITORY="$(brew --repo)" - - sudo chown -R "$USER" "$HOMEBREW_REPOSITORY" - - git -C "$HOMEBREW_REPOSITORY" reset --hard origin/master - - brew update || brew update + - sudo chown -R "$USER" "$(brew --repo)" + - travis_retry brew update - HOMEBREW_TAP_DIR="$(brew --repo "$TRAVIS_REPO_SLUG")" - mkdir -p "$HOMEBREW_TAP_DIR" - rm -rf "$HOMEBREW_TAP_DIR" - ln -s "$PWD" "$HOMEBREW_TAP_DIR" - - export HOMEBREW_DEVELOPER="1" - - ulimit -n 1024 script: - brew test-bot - - notifications: - email: - on_success: never - on_failure: always EOS write_path(tap, ".travis.yml", travis) end diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index 773efd2f41..77eae6f695 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -196,15 +196,8 @@ module Homebrew end def install_gem_setup_path!(name, version = nil, executable = name) - # Respect user's preferences for where gems should be installed. - ENV["GEM_HOME"] = if ENV["HOMEBREW_GEM_HOME"].to_s.empty? - Gem.user_dir - else - ENV["HOMEBREW_GEM_HOME"] - end - unless ENV["HOMEBREW_GEM_PATH"].to_s.empty? - ENV["GEM_PATH"] = ENV["HOMEBREW_GEM_PATH"] - end + # Match where our bundler gems are. + ENV["GEM_HOME"] = "#{ENV["HOMEBREW_LIBRARY"]}/Homebrew/vendor/bundle/ruby/#{RbConfig::CONFIG["ruby_version"]}" # Make rubygems notice env changes. Gem.clear_paths diff --git a/Library/Homebrew/utils/ruby.sh b/Library/Homebrew/utils/ruby.sh index b16531e9f0..2fb780c65a 100644 --- a/Library/Homebrew/utils/ruby.sh +++ b/Library/Homebrew/utils/ruby.sh @@ -2,7 +2,7 @@ setup-ruby-path() { local vendor_dir local vendor_ruby_current_version local vendor_ruby_path - local ruby_old_version + local ruby_version_new_enough local minimum_ruby_version="2.3.3" vendor_dir="$HOMEBREW_LIBRARY/Homebrew/vendor" @@ -35,12 +35,12 @@ setup-ruby-path() { HOMEBREW_RUBY_PATH="$(which ruby)" fi - if [[ -n "$HOMEBREW_RUBY_PATH" ]] + if [[ -n "$HOMEBREW_RUBY_PATH" && -z "$HOMEBREW_FORCE_VENDOR_RUBY" ]] then - ruby_old_version="$("$HOMEBREW_RUBY_PATH" -rrubygems -e "puts Gem::Version.new('$minimum_ruby_version') > Gem::Version.new(RUBY_VERSION)")" + ruby_version_new_enough="$("$HOMEBREW_RUBY_PATH" -rrubygems -e "puts Gem::Version.new(RUBY_VERSION.to_s.dup) >= Gem::Version.new('$minimum_ruby_version')")" fi - if [[ -z "$HOMEBREW_RUBY_PATH" || "$ruby_old_version" == "true" || -n "$HOMEBREW_FORCE_VENDOR_RUBY" ]] + if [[ -z "$HOMEBREW_RUBY_PATH" || -n "$HOMEBREW_FORCE_VENDOR_RUBY" || "$ruby_version_new_enough" != "true" ]] then brew vendor-install ruby if [[ ! -x "$vendor_ruby_path" ]]