53473b6bf5
The MacOS.version? family of methods (other than "leopard?") are poorly defined and lead to confusing code. Replace them in formulae with more explicit comparisons. "MacOS.version" is a special version object that can be compared to numerics, symbols, and strings using the standard Ruby comparison methods. The old methods were moved to compat when the version comparison code was merged, and they must remain there "forever", but they should not be used in new code. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
260 lines
7.6 KiB
Ruby
260 lines
7.6 KiB
Ruby
require 'formula'
|
|
|
|
def build_java?; build.include? "java"; end
|
|
def build_perl?; build.include? "perl"; end
|
|
def build_python?; build.include? "python"; end
|
|
def build_ruby?; build.include? "ruby"; end
|
|
def with_unicode_path?; build.include? "unicode-path"; end
|
|
|
|
class UniversalNeon < Requirement
|
|
def message; <<-EOS.undent
|
|
A universal build was requested, but neon was already built for a single arch.
|
|
You will need to `brew rm neon` first.
|
|
EOS
|
|
end
|
|
|
|
def fatal?
|
|
true
|
|
end
|
|
|
|
def satisfied?
|
|
f = Formula.factory('neon')
|
|
!f.installed? || archs_for_command(f.lib+'libneon.dylib').universal?
|
|
end
|
|
end
|
|
|
|
class UniversalSqlite < Requirement
|
|
def message; <<-EOS.undent
|
|
A universal build was requested, but sqlite was already built for a single arch.
|
|
You will need to `brew rm sqlite` first.
|
|
EOS
|
|
end
|
|
|
|
def fatal?
|
|
true
|
|
end
|
|
|
|
def satisfied?
|
|
f = Formula.factory('sqlite')
|
|
!f.installed? || archs_for_command(f.lib+'libsqlite3.dylib').universal?
|
|
end
|
|
end
|
|
|
|
class UniversalSerf < Requirement
|
|
def message; <<-EOS.undent
|
|
A universal build was requested, but serf was already built for a single arch.
|
|
You will need to `brew rm serf` first.
|
|
EOS
|
|
end
|
|
|
|
def fatal?
|
|
true
|
|
end
|
|
|
|
def satisfied?
|
|
f = Formula.factory('serf')
|
|
!f.installed? || archs_for_command(f.lib+'libserf-1.0.0.0.dylib').universal?
|
|
end
|
|
end
|
|
|
|
class Subversion < Formula
|
|
homepage 'http://subversion.apache.org/'
|
|
url 'http://www.apache.org/dyn/closer.cgi?path=subversion/subversion-1.7.6.tar.bz2'
|
|
sha1 '5b76a9f49e2c4bf064041a7d6b1bfcc3aa4ed068'
|
|
|
|
option :universal
|
|
option 'java', 'Build Java bindings'
|
|
option 'perl', 'Build Perl bindings'
|
|
option 'python', 'Build Python bindings'
|
|
option 'ruby', 'Build Ruby bindings'
|
|
option 'unicode-path', 'Include support for OS X UTF-8-MAC filename'
|
|
|
|
depends_on 'pkg-config' => :build
|
|
|
|
# If Subversion can use the Lion versions of these, please
|
|
# open an issue with a patch. Build against Homebrewed versions
|
|
# for consistency. - @adamv
|
|
depends_on 'neon'
|
|
depends_on 'sqlite'
|
|
depends_on 'serf'
|
|
|
|
if build.universal?
|
|
depends_on UniversalNeon.new
|
|
depends_on UniversalSqlite.new
|
|
depends_on UniversalSerf.new
|
|
end
|
|
|
|
# Building Ruby bindings requires libtool
|
|
depends_on :libtool if build_ruby?
|
|
|
|
def patches
|
|
ps = []
|
|
|
|
# Patch for Subversion handling of OS X UTF-8-MAC filename.
|
|
if with_unicode_path?
|
|
ps << "https://raw.github.com/gist/3044094/1648c28f6133bcbb68b76b42669b0dc237c02dba/patch-path.c.diff"
|
|
end
|
|
|
|
# Patch to prevent '-arch ppc' from being pulled in from Perl's $Config{ccflags}
|
|
if build_perl?
|
|
ps << DATA
|
|
end
|
|
|
|
unless ps.empty?
|
|
{ :p0 => ps }
|
|
end
|
|
end
|
|
|
|
# When building Perl, Python or Ruby bindings, need to use a compiler that
|
|
# recognizes GCC-style switches, since that's what the system languages
|
|
# were compiled against.
|
|
fails_with :clang do
|
|
build 318
|
|
cause "core.c:1: error: bad value (native) for -march= switch"
|
|
end if build_perl? or build_python? or build_ruby?
|
|
|
|
def install
|
|
if build_java?
|
|
unless build.universal?
|
|
opoo "A non-Universal Java build was requested."
|
|
puts "To use Java bindings with various Java IDEs, you might need a universal build:"
|
|
puts " brew install subversion --universal --java"
|
|
end
|
|
|
|
unless (ENV["JAVA_HOME"] or "").empty?
|
|
opoo "JAVA_HOME is set. Try unsetting it if JNI headers cannot be found."
|
|
end
|
|
end
|
|
|
|
ENV.universal_binary if build.universal?
|
|
|
|
# Use existing system zlib
|
|
# Use dep-provided other libraries
|
|
# Don't mess with Apache modules (since we're not sudo)
|
|
args = ["--disable-debug",
|
|
"--prefix=#{prefix}",
|
|
"--with-ssl",
|
|
"--with-zlib=/usr",
|
|
"--with-sqlite=#{HOMEBREW_PREFIX}",
|
|
"--with-serf=#{HOMEBREW_PREFIX}",
|
|
# use our neon, not OS X's
|
|
"--disable-neon-version-check",
|
|
"--disable-mod-activation",
|
|
"--without-apache-libexecdir",
|
|
"--without-berkeley-db"]
|
|
|
|
args << "--enable-javahl" << "--without-jikes" if build_java?
|
|
args << "--with-ruby-sitedir=#{lib}/ruby" if build_ruby?
|
|
|
|
# The system Python is built with llvm-gcc, so we override this
|
|
# variable to prevent failures due to incompatible CFLAGS
|
|
ENV['ac_cv_python_compile'] = ENV.cc
|
|
|
|
system "./configure", *args
|
|
system "make"
|
|
system "make install"
|
|
(prefix+'etc/bash_completion.d').install 'tools/client-side/bash_completion' => 'subversion'
|
|
|
|
if build_python?
|
|
system "make swig-py"
|
|
system "make install-swig-py"
|
|
end
|
|
|
|
if build_perl?
|
|
ENV.j1 # This build isn't parallel safe
|
|
# Remove hard-coded ppc target, add appropriate ones
|
|
if build.universal?
|
|
arches = "-arch x86_64 -arch i386"
|
|
elsif MacOS.version == :leopard
|
|
arches = "-arch i386"
|
|
else
|
|
arches = "-arch x86_64"
|
|
end
|
|
|
|
perl_core = Pathname.new(`perl -MConfig -e 'print $Config{archlib}'`)+'CORE'
|
|
unless perl_core.exist?
|
|
onoe "perl CORE directory does not exist in '#{perl_core}'"
|
|
end
|
|
|
|
inreplace "Makefile" do |s|
|
|
s.change_make_var! "SWIG_PL_INCLUDES",
|
|
"$(SWIG_INCLUDES) #{arches} -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -I/usr/local/include -I#{perl_core}"
|
|
end
|
|
system "make swig-pl"
|
|
system "make install-swig-pl"
|
|
end
|
|
|
|
if build_java?
|
|
ENV.j1 # This build isn't parallel safe
|
|
system "make javahl"
|
|
system "make install-javahl"
|
|
end
|
|
|
|
if build_ruby?
|
|
ENV.j1 # This build isn't parallel safe
|
|
system "make swig-rb"
|
|
system "make install-swig-rb"
|
|
end
|
|
end
|
|
|
|
def caveats
|
|
s = ""
|
|
|
|
if build_python?
|
|
s += <<-EOS.undent
|
|
You may need to add the Python bindings to your PYTHONPATH from:
|
|
#{HOMEBREW_PREFIX}/lib/svn-python
|
|
|
|
EOS
|
|
end
|
|
|
|
if build_ruby?
|
|
s += <<-EOS.undent
|
|
You may need to add the Ruby bindings to your RUBYLIB from:
|
|
#{HOMEBREW_PREFIX}/lib/ruby
|
|
|
|
EOS
|
|
end
|
|
|
|
if build_java?
|
|
s += <<-EOS.undent
|
|
You may need to link the Java bindings into the Java Extensions folder:
|
|
sudo mkdir -p /Library/Java/Extensions
|
|
sudo ln -s #{HOMEBREW_PREFIX}/lib/libsvnjavahl-1.dylib /Library/Java/Extensions/libsvnjavahl-1.dylib
|
|
|
|
EOS
|
|
end
|
|
|
|
if with_unicode_path?
|
|
s += <<-EOS.undent
|
|
This unicode-path version implements a hack to deal with composed/decomposed
|
|
unicode handling on Mac OS X which is different from linux and windows.
|
|
It is an implementation of solution 1 from
|
|
http://svn.collab.net/repos/svn/trunk/notes/unicode-composition-for-filenames
|
|
which _WILL_ break some setups. Please be sure you understand what you
|
|
are asking for when you install this version.
|
|
|
|
EOS
|
|
end
|
|
|
|
return s.empty? ? nil : s
|
|
end
|
|
end
|
|
__END__
|
|
--- subversion/bindings/swig/perl/native/Makefile.PL.in~ 2011-07-16 04:47:59.000000000 -0700
|
|
+++ subversion/bindings/swig/perl/native/Makefile.PL.in 2012-06-27 17:45:57.000000000 -0700
|
|
@@ -57,10 +57,13 @@
|
|
|
|
chomp $apr_shlib_path_var;
|
|
|
|
+my $config_ccflags = $Config{ccflags};
|
|
+$config_ccflags =~ s/-arch\s+\S+//g; # remove any -arch arguments, since the ones we want will already be in $cflags
|
|
+
|
|
my %config = (
|
|
ABSTRACT => 'Perl bindings for Subversion',
|
|
DEFINE => $cppflags,
|
|
- CCFLAGS => join(' ', $cflags, $Config{ccflags}),
|
|
+ CCFLAGS => join(' ', $cflags, $config_ccflags),
|
|
INC => join(' ',$apr_cflags, $apu_cflags,
|
|
" -I$swig_srcdir/perl/libsvn_swig_perl",
|
|
" -I$svnlib_srcdir/include",
|