Merge pull request #3377 from maxim-belkin/extend-pathname
pathname: new methods and improvements
This commit is contained in:
commit
ee4172159b
19
Library/Homebrew/extend/os/linux/extend/pathname.rb
Normal file
19
Library/Homebrew/extend/os/linux/extend/pathname.rb
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
class Pathname
|
||||||
|
# @private
|
||||||
|
def elf?
|
||||||
|
# See: https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header
|
||||||
|
read(4) == "\x7fELF"
|
||||||
|
end
|
||||||
|
|
||||||
|
# @private
|
||||||
|
def dynamic_elf?
|
||||||
|
if which "readelf"
|
||||||
|
popen_read("readelf", "-l", to_path).include?(" DYNAMIC ")
|
||||||
|
elsif which "file"
|
||||||
|
!popen_read("file", "-L", "-b", to_path)[/dynamic|shared/].nil?
|
||||||
|
else
|
||||||
|
raise StandardError, "Neither `readelf` nor `file` is available "\
|
||||||
|
"to determine whether '#{self}' is dynamically or statically linked."
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -1,5 +1,3 @@
|
|||||||
require "os/mac/pathname"
|
|
||||||
|
|
||||||
module Hardware
|
module Hardware
|
||||||
class CPU
|
class CPU
|
||||||
class << self
|
class << self
|
||||||
|
5
Library/Homebrew/extend/os/pathname.rb
Normal file
5
Library/Homebrew/extend/os/pathname.rb
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
if OS.mac?
|
||||||
|
require "extend/os/mac/extend/pathname"
|
||||||
|
elsif OS.linux?
|
||||||
|
require "extend/os/linux/extend/pathname"
|
||||||
|
end
|
@ -189,6 +189,9 @@ class Pathname
|
|||||||
rescue Errno::EPERM # rubocop:disable Lint/HandleExceptions
|
rescue Errno::EPERM # rubocop:disable Lint/HandleExceptions
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Close the file before renaming to prevent the error: Device or resource busy
|
||||||
|
# Affects primarily NFS.
|
||||||
|
tf.close
|
||||||
File.rename(tf.path, self)
|
File.rename(tf.path, self)
|
||||||
ensure
|
ensure
|
||||||
tf.close!
|
tf.close!
|
||||||
@ -376,7 +379,7 @@ class Pathname
|
|||||||
saved_perms = nil
|
saved_perms = nil
|
||||||
unless writable_real?
|
unless writable_real?
|
||||||
saved_perms = stat.mode
|
saved_perms = stat.mode
|
||||||
chmod 0644
|
FileUtils.chmod "u+rw", to_path
|
||||||
end
|
end
|
||||||
yield
|
yield
|
||||||
ensure
|
ensure
|
||||||
@ -469,6 +472,8 @@ class Pathname
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
require "extend/os/pathname"
|
||||||
|
|
||||||
# @private
|
# @private
|
||||||
module ObserverPathnameExtension
|
module ObserverPathnameExtension
|
||||||
class << self
|
class << self
|
||||||
|
@ -3,7 +3,6 @@ require "development_tools"
|
|||||||
require "os/mac/version"
|
require "os/mac/version"
|
||||||
require "os/mac/xcode"
|
require "os/mac/xcode"
|
||||||
require "os/mac/xquartz"
|
require "os/mac/xquartz"
|
||||||
require "os/mac/pathname"
|
|
||||||
require "os/mac/sdk"
|
require "os/mac/sdk"
|
||||||
require "os/mac/keg"
|
require "os/mac/keg"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user