homebrew-core/Formula/flac.rb

86 lines
2.6 KiB
Ruby

require 'formula'
class Flac < Formula
homepage 'http://xiph.org/flac/'
url 'http://downloads.xiph.org/releases/flac/flac-1.3.0.tar.xz'
sha1 'a136e5748f8fb1e6c524c75000a765fc63bb7b1b'
option :universal
depends_on 'xz' => :build
depends_on 'lame'
depends_on 'libogg' => :optional
# Mavericks fix needs autoreconf. Drop these after upstream has
# incorporated the patch.
depends_on :autoconf => :build
depends_on :automake => :build
depends_on :libtool => :build
depends_on 'pkg-config' => :build
fails_with :llvm do
build 2326
cause "Undefined symbols when linking"
end
def patches
# Fixes compilation on mac os 10.9 maverick.
# https://sourceforge.net/p/flac/bugs/405/
{ :p0 => "https://sourceforge.net/p/flac/bugs/_discuss/thread/17c68b42/fc53/attachment/autoconf-not-gnu89-131010.patch" }
end
def install
ENV.universal_binary if build.universal?
# Mavericks fix needs autoreconf. Drop this line after upstream has
# incorporated the patch.
system "./autogen.sh"
# sadly the asm optimisations won't compile since Leopard
system "./configure", "--disable-dependency-tracking",
"--disable-debug",
"--disable-asm-optimizations",
"--enable-sse",
"--enable-static",
"--prefix=#{prefix}",
"--mandir=#{man}"
ENV['OBJ_FORMAT']='macho'
# adds universal flags to the generated libtool script
inreplace "libtool" do |s|
s.gsub! ":$verstring\"", ":$verstring -arch #{Hardware::CPU.arch_32_bit} -arch #{Hardware::CPU.arch_64_bit}\""
end
system "make install"
(bin/'flac2mp3').write DATA.read
end
end
__END__
#!/usr/bin/env ruby
# http://gist.github.com/gists/2998853/
# Forked from http://gist.github.com/gists/124242
filename, quality = ARGV[0], ARGV[1]
abort "Usage: flac2mp3 FLACFILE [V2|V1|V0|320]\nDefault (and recommended) quality is V0." if filename.nil?
qualarg = case quality
when "V0","V1","V2" then quality
when "320" then "b 320"
else "V0"
end
map = {"TITLE" => "--tt", "ARTIST" => "--ta", "ALBUM" => "--tl", "TRACKNUMBER" => "--tn", "GENRE" => "--tg", "DATE" => "--ty"}
args = ""
`metaflac --export-tags-to=- "#{filename}"`.each_line do |line|
key, value = line.strip.split('=', 2)
key.upcase!
args << %Q{#{map[key]} "#{value.gsub('"', '\"')}" } if map[key]
end
basename = File.basename(filename, File.extname(filename))
puts "Encoding #{basename}.mp3"
exec %Q[flac -sdc "#{filename}" | lame -#{qualarg} #{args} - "#{basename}.mp3"]