From 981dba1b35f5d570830644d64339080b24023aaa Mon Sep 17 00:00:00 2001 From: Adam Vandenberg Date: Tue, 8 Sep 2009 15:31:28 -0700 Subject: Function to return a binary's Mach-O architectures Added a utility method to get an array of architecture names for a given executable. This will be useful for, say, figuring out what Python was compiled for, to know what to compile a C-based module as. Signed Off By: Max Howell I added a test and made the function use `which` if the path provided is not absolute. I considered allowing relative paths, but then it is possible for the function to take eg. the svn binary from the current directory when you meant the one in the path, and that could be a confusing bug. --- Library/Homebrew/utils.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'Library/Homebrew/utils.rb') diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index 7beaba8ad..ff58aabfd 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -99,3 +99,24 @@ def exec_editor *args # we don't have to escape args, and escaping 100% is tricky exec *(editor.split+args) end + +# provide an absolute path to a command or this function will search the PATH +def arch_for_command cmd + archs = [] + cmd = `which #{cmd}` if not Pathname.new(cmd).absolute? + + IO.popen("file #{cmd}").readlines.each do |line| + case line + when /Mach-O executable ppc/ + archs << :ppc7400 + when /Mach-O 64-bit executable ppc64/ + archs << :ppc64 + when /Mach-O executable i386/ + archs << :i386 + when /Mach-O 64-bit executable x86_64/ + archs << :x86_64 + end + end + + return archs +end -- cgit v1.2.3