Skip to content

Commit

Permalink
weechat: switch from cmake to configure
Browse files Browse the repository at this point in the history
* Switch to using `configure`
* Remove `head` because it requires gtk.
* Add a build time dep on gettext, otherwise link errors.
* Add `--disable-perl` to stop segfault on program exit.
* Add `--disable-aspell` which is still being reviewed.
* Add `--disable-static` to stop building duplicate plugins.
* Add `--disable-python` unless Python is a framework.
* Note that the one `inreplace` is fixed in HEAD.
* Delete the plugin symlinks to stop runtime warnings.

Weechat-0.3.7 can be built using cmake or configure, but their
cmake build scripts are prone to errors when building the ruby
bindings.  By switching to `configure` the formula is greatly
simplified, and all the plugins it creates get neatly installed
into lib+'weechat/plugins' automatically.

Weechat `head` builds require `gtk` even if the `gtk` gui is
not enabled, which it isn't because it's b0rked.  So remove head.

Weechat comes with an internal gettext and libintl that cause
errors when linking.  So add a dep on Homebrew's gettext.

As reported by another user and confirmed through gdb, the perl
plugin causes a segfault on exit.  So disable building that.

Aspell is still under construction in Homebrew, and weechat will
compile that plug by default.  So disable aspell for now.

Disable the static plugins and delete the plugin symlinks.  That
leaves only one `.so` for each plugin and stops a dozen warnings
when running weechat about _can't load duplicate plugins._

Disable building the Python plugin unless Python is a framework
because it will build but fail to load the plugin with an error
that it can't dlopen a module expected in flat namespace.

Even if we add a dep on Homebrew/dupes/ncurses to get the wide
variety of it, that formula doesn't actually create `-lnursesw`.
So that is not added, because it can't be found.

The gtk interface to weechat is not added as a user option because
it runs but doesn't make a useable gui.  It's blank & unresponsive.

Weechat compiles, runs, and connects to freenode without error
using clang and llvm on Lion, tested against system Ruby, system
Python, and Homebrew Python frameworks.

Fixes Homebrew#11289.
Fixes Homebrew#11835.
Fixes Homebrew#12066.
Closes Homebrew#12193.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
  • Loading branch information
nibbles 2bits authored and jacknagel committed May 19, 2012
1 parent 71456eb commit 0f2f2ae
Showing 1 changed file with 27 additions and 33 deletions.
60 changes: 27 additions & 33 deletions Library/Formula/weechat.rb
Expand Up @@ -5,56 +5,50 @@ class Weechat < Formula
url 'http://www.weechat.org/files/src/weechat-0.3.7.tar.bz2'
md5 '62bb5002b2ba9e5816dfeededc3fa276'

head 'git://git.sv.gnu.org/weechat.git'

depends_on 'cmake' => :build
depends_on 'gettext'
depends_on 'gnutls'

def options
[
["--enable-ruby", "Enable Ruby module"],
["--enable-perl", "Enable Perl module"],
["--enable-python", "Enable Python module"],
]
end

def install
# Remove all arch flags from the PERL_*FLAGS as we specify them ourselves.
# This messes up because the system perl is a fat binary with 32, 64 and PPC
# compiles, but our deps don't have that.
# compiles, but our deps don't have that. Remove at v0.3.8, fixed in HEAD.
archs = ['-arch ppc', '-arch i386', '-arch x86_64'].join('|')

inreplace "src/plugins/scripts/perl/CMakeLists.txt",
'IF(PERL_FOUND)',
'IF(PERL_FOUND)' +
%Q{\n STRING(REGEX REPLACE "#{archs}" "" PERL_CFLAGS "${PERL_CFLAGS}")} +
%Q{\n STRING(REGEX REPLACE "#{archs}" "" PERL_LFLAGS "${PERL_LFLAGS}")}

args = []
args = %W[
--prefix=#{prefix}
--disable-dependency-tracking
--disable-aspell
--disable-perl
--disable-static
--with-debug=0
]
args << '--disable-python' unless python_framework?
args << '--disable-guile' unless Formula.factory('guile').linked_keg.exist?

if ARGV.include? "--enable-ruby"
args << "-DENABLE_RUBY=ON"
else
args << "-DENABLE_RUBY=OFF"
end
system './configure', *args
system 'make install'

if ARGV.include? "--enable-perl"
args << "-DENABLE_PERL=ON"
else
args << "-DENABLE_PERL=OFF"
# Remove the duplicates to stop error messages when running weechat.
Dir["#{lib}/weechat/plugins/*"].each do |f|
rm f if File.symlink? f
end
end

if ARGV.include? "--enable-python"
args << "-DENABLE_PYTHON=ON"
else
args << "-DENABLE_PYTHON=OFF"
end
def python_framework?
# True if Python was compiled as a framework.
python_prefix = `python-config --prefix`.strip
File.exist? "#{python_prefix}/Python"
end

# -DPREFIX has to be specified because weechat devs enjoy being non-standard
system "cmake", "-DPREFIX=#{prefix}",
args.join(" "),
std_cmake_parameters,
"."
system "make install"
def caveats; <<-EOS.undent
Weechat will only build the Python plugin if Python is compiled as
a framework (system Python or 'brew install --framework python').
EOS
end
end

0 comments on commit 0f2f2ae

Please sign in to comment.