それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

screen 縦分割をbrewから入れる。(brew --HEADで最新版を入れる)

mac のScreenは縦分割できない。なので、自前コンパイルしてた。これは面倒。brewから入れ縦分割が出来るように工夫する。
(screen縦)

2012-12-21 追加 :brewでmac osx 同梱のコマンドを上書きできるおまじない

brew tap homebrew/dupes #重複を使えるようにする

brew で screen を入れる

export CC=gcc
brew install -f --use-llvm  screen 

これで、screenはインストールされる。オプションについては以下のとおり。

-f
force インストール、mac標準で提供されているパッケージでもbrewでインストールする。
--use-llvm
後述

が、縦分割が出来ない。

インストールできるが、最新版(開発版)でなく、4.03なので縦分割が出来ない。 そこで・・・

スクリーン縦分割が使える開発版(HEAD)を入れる。

export CC=gcc
brew install --HEAD -f --use-llvm screen 
--HEAD
最新版を取りに行くオプション。

この "--HEAD" オプションを指定したら、brew のformulaのhead指定科目が利用される。これで縦分割が出来るようになる。

縦分割ができたよ。

わーい。brew管理下で縦分割ソース動いたよ。
(screen)

オプションについての追記

  • 通常の clangだと上手くいかないので llvmを明示する。
  • llvmのgccやclangなどでもうまくいかない.
  • なぜかexport CC=gccをつけるとうまくいく。

この他にやったことがあって、brew doctorで消したほうがいいんじゃなね?ってレコメンドされたものをすべて、brew unlinkした状態でコンパイルしている

HEAD使うと、brew はどうなってるのん?

 今回のミソは --HEADのオプション。GNU SCREENbrewの設定はこんな感じになっている。このformulaを読んで、head項目に注目する。head 項目が --HEADオプションの時に有効になるソース配布元だ。通常はurlを使うが、--HEADのときは head の方を使う。

HEADに関しては、screen以外でもどんどん使われている。知っていて損はない。

require 'formula'

class Screen < Formula
  homepage 'http://www.gnu.org/software/screen'
  url 'http://ftpmirror.gnu.org/screen/screen-4.0.3.tar.gz'
  mirror 'http://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz'
  md5 '8506fd205028a96c741e4037de6e3c42'
  version '4.00.03'

  head 'git://git.savannah.gnu.org/screen.git', :branch => 'master'

  def patches
         "http://trac.macports.org/raw-attachment/ticket/20862/screen-4.0.3-snowleopard.patch"
  end unless ARGV.build_head?

  def install
    if ARGV.build_head?
      cd 'src'
      system "autoconf"
      system "autoheader"
    end

    system "./configure", "--prefix=#{prefix}",
                          "--mandir=#{man}",
                          "--infodir=#{info}",
                          "--enable-colors256"
    system "make"
    system "make install"
  end
end

コンパイラしてい --use-llvmについて

LionからMacはLLVMに移行していて、llvm提供のclangを使うことになっている。
brewも通常は このclang を使うの。だけど互換性が完璧じゃないのでエラーになる。

brew install --HEAD -f --use-clang screen 
brew install --HEAD -f  screen

は同じ事を示している。

実際やったらエラーだった。

takuya@air:~/screen/src$ brew install --HEAD -f --use-clang screen
==> Cloning git://git.savannah.gnu.org/screen.git
Updating /Library/Caches/Homebrew/screen--git
==> Checking out branch master
==> autoconf
==> autoheader
==> ./configure --prefix=/usr/local/Cellar/screen/HEAD --mandir=/usr/local/Cellar/screen/HEAD/share/man --infodir=/usr/local/Cellar/screen/HEAD/share/info --enable-colors256
this is screen version 4.1.0
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/private/tmp/homebrew-screen-HEAD-cq0Z/src':
configure: error: C compiler cannot create executables
See `config.log' for more details
config.log was copied to /Users/takuya/Library/Logs/Homebrew
==> Build Environment
CPU: quad-core 64-bit sandybridge
MacOS: 10.7.4-x86_64
Xcode: 4.3.2
"--use-clang" was specified
CC: gcc
CXX: /usr/bin/clang++ => /usr/bin/clang
LD: /usr/bin/clang
CFLAGS: -Os -w -pipe -march=native -Qunused-arguments
CXXFLAGS: -Os -w -pipe -march=native -Qunused-arguments
MAKEFLAGS: -j4
Error: Failed executing: ./configure --prefix=/usr/local/Cellar/screen/HEAD --mandir=/usr/local/Cellar/screen/HEAD/share/man --infodir=/usr/local/Cellar/screen/HEAD/share/info --enable-colors256 (screen.rb:24)
If `brew doctor' does not help diagnose the issue, please report the bug:
    https://github.com/homebrew/homebrew-dupes/issues/new
We saved the configure log, please gist it if you report the issue:
    ~/Library/Logs/Homebrew/config.log

参考

HomeBrewの使い方は、いつもの通り、ココを参考しにた。2012-04-21に全面的に書き換えられたので、もう一度読み直すべき。
mac-デ-homebrew-ノススメ