diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-06-01 07:13:38 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-06-01 07:13:38 +0000 |
commit | 6251615c122037f162a6d838496a9c771f3952f0 (patch) | |
tree | cd009f4f12fa2fe8cb6f6761e9d78c49677f68be | |
parent | ce2f4f852692a1583cbe15877f0c0f2384d53c0f (diff) |
Skip colliding filenames in LIBRUBY_ALIASES
This allows user to specify any name in `--with-so-name` that might
cause a name clash with LIBRUBY_ALIASES on the platform.
Without this, for example, configuring with `--with-soname=ruby
--enable-shared` on macOS would end up running `ln -sf libruby.dylib
libruby.dylib` only to fail with the following error in installation:
```
make[2]: stat: libruby.dylib: Too many levels of symbolic links
```
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | Makefile.in | 6 | ||||
-rwxr-xr-x | tool/rbinstall.rb | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/Makefile.in b/Makefile.in index ccfb2ded2b..259f1fba2e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -272,9 +272,9 @@ $(LIBRUBY_SO): -$(Q) $(OBJCOPY) -w -L '$(SYMBOL_PREFIX)Init_*' -L '$(SYMBOL_PREFIX)ruby_static_id_*' \ -L '$(SYMBOL_PREFIX)*_threadptr_*' -L '$(SYMBOL_PREFIX)*_ec_*' $@ $(Q) $(POSTLINK) - @-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link rescue nil; \ - File.symlink "$(LIBRUBY_SO)", link}' \ - $(LIBRUBY_ALIASES) || true + @-$(MINIRUBY) -e 'so, *aliases = ARGV; aliases.uniq!; aliases.delete(File.basename(so)); \ + aliases.each { |link| File.delete link rescue nil; File.symlink so, link }' \ + $(LIBRUBY_SO) $(LIBRUBY_ALIASES) || true LIBRUBY_WITH_EXT = @LIBRUBY_WITH_EXT@ $(LIBRUBY_$(LIBRUBY_WITH_EXT)): $(LIBRUBY_SO_UPDATE) diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb index 5a55b39add..194396321e 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb @@ -360,7 +360,7 @@ install?(:local, :arch, :lib, :'lib-arch') do install lib, libdir, :mode => $prog_mode, :strip => $strip unless lib == arc install arc, libdir, :mode => $data_mode unless CONFIG["INSTALL_STATIC_LIBRARY"] == "no" if dll == lib and dll != arc - for link in CONFIG["LIBRUBY_ALIASES"].split + for link in CONFIG["LIBRUBY_ALIASES"].split - [File.basename(dll)] ln_sf(dll, File.join(libdir, link)) end end |