From d15ccaf92f937a53affac00e1aac61822679afbd Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Mon, 13 Nov 2023 14:39:47 +0800 Subject: [PATCH] dev-cmd/vendor-gems: fix creation of broken symlinks When the target symlink already points to an existing directory, the `#ln_sf` call creates the symlink inside the intended target directory (which is not what we intend to do here). Let's fix that. Closes #16205 --- Library/Homebrew/dev-cmd/vendor-gems.rb | 12 ++++++++---- .../vendor/gems/mechanize-2.9.1/mechanize-2.9.1 | 1 - 2 files changed, 8 insertions(+), 5 deletions(-) delete mode 120000 Library/Homebrew/vendor/gems/mechanize-2.9.1/mechanize-2.9.1 diff --git a/Library/Homebrew/dev-cmd/vendor-gems.rb b/Library/Homebrew/dev-cmd/vendor-gems.rb index da03d58f11..e11cc54e3e 100644 --- a/Library/Homebrew/dev-cmd/vendor-gems.rb +++ b/Library/Homebrew/dev-cmd/vendor-gems.rb @@ -59,12 +59,16 @@ module Homebrew mechanize ].each do |gem| ohai "gem install #{gem}" - safe_system "gem", "install", "mechanize", "--install-dir", "vendor", + safe_system "gem", "install", gem, "--install-dir", "vendor", "--no-document", "--no-wrappers", "--ignore-dependencies", "--force" (HOMEBREW_LIBRARY_PATH/"vendor/gems").cd do - if (source = Pathname.glob("#{gem}-*/").first) - FileUtils.ln_sf source, gem - end + source = Pathname.glob("#{gem}-*/").first + next if source.blank? + + # We cannot use `#ln_sf` here because that has unintended consequences when + # the symlink we want to create exists and points to an existing directory. + FileUtils.rm_f gem + FileUtils.ln_s source, gem end end end diff --git a/Library/Homebrew/vendor/gems/mechanize-2.9.1/mechanize-2.9.1 b/Library/Homebrew/vendor/gems/mechanize-2.9.1/mechanize-2.9.1 deleted file mode 120000 index 5bcf45c9e8..0000000000 --- a/Library/Homebrew/vendor/gems/mechanize-2.9.1/mechanize-2.9.1 +++ /dev/null @@ -1 +0,0 @@ -mechanize-2.9.1/ \ No newline at end of file