Many fixes for clojure and clojure-contrib formulae.

- clojure formula now works with HEAD installs.

- Use /bin/sh rather than /bin/bash in the clj script.

- Fix argument-passing in the clj script. (Fixes Homebrew/homebrew#867)

- Remove the Java -server flag in the clj script. This is the default
  option on 64-bit Macs running 10.5 and 10.6 anyway, unless the user
  has used Java Preferences to make the 32-bit VM the preferred VM, in
  which case the default is -client. Choosing the 32-bit VM happens to
  be the only way to use the client HotSpot VM, as the client VM is
  not currently supported on 64-bit architectures. Presumably, if the
  user prefers the 32-bit client VM, he has his reasons, and the clj
  script should respect them. (The client VM has a faster start-up
  time, for example, which may benefit command-line scripts written
  in Clojure and invoked using clj.)

  It would be nice to allow the user to be explicit about which VM to
  use when invoking the clj script, but this would almost certainly
  not be portable to other systems' implementations of the 'clj'
  script, and would be difficult to document due to the fact that
  clojure.main outputs its own usage message when supplied with a
  --help/-h/-? argument. Anyone with special needs can simply write
  his own wrapper script.

  In any case, users of 64-bit Macs who haven't explicitly chosen the
  32-bit Java VM in Java Preferences (i.e., probably most Homebrew
  users) are unaffected by this change.

- clojure-contrib formula now installs the latest stable release
  (1.1.0) by default (it used to install HEAD always). HEAD installs
  are still supported via the --HEAD flag but require the HEAD version
  of clojure; the build will break if the HEAD version of clojure is
  not installed.

- clojure-contrib installs the pre-packaged JAR file, supplied in the
  release ZIP file, if installing the release version.

- clojure-contrib only conditionally depends on maven, if installing
  HEAD.

- clojure-contrib HEAD builds explicitly use the installed clojure HEAD
  JAR file, per the clojure-contrib documentation. (HEAD builds prior
  to this change would often mysteriously create a nearly-empty
  clojure-contrib JAR file.)

- clojure-contrib always installs the JAR file as clojure-contrib.jar,
  rather than adding a version suffix. The Cellar path is sufficient to
  discriminate versions, and this way the JAR file name is consistent.

- Change the clojure-contrib homepage to point to the clojure-contrib
  documentation, rather than the project's GitHub homepage.

- Clojure does not find the clojure-contrib JAR file unless the
  CLASSPATH includes the JAR file name. Fix the clojure-contrib
  caveat to reflect this behavior.

- Fix "already initialized constant JAR" warnings in both formulae.

Signed-off-by: David Höppner <0xffea@gmail.com>
This commit is contained in:
Drew Hess 2010-03-20 01:37:57 -07:00 committed by David Höppner
parent 7e903b4281
commit 8df99bf4cb
2 changed files with 24 additions and 18 deletions

View file

@ -1,15 +1,24 @@
require 'formula'
class ClojureContrib <Formula
url 'http://clojure-contrib.googlecode.com/files/clojure-contrib-1.1.0.zip'
md5 'ffaa8d5ea72abd9547186ec38f37c198'
head 'git://github.com/richhickey/clojure-contrib.git'
homepage 'http://github.com/richhickey/clojure-contrib'
homepage 'http://richhickey.github.com/clojure-contrib/branch-1.1.x/index.html'
depends_on 'clojure'
depends_on 'maven'
depends_on 'maven' if ARGV.include? '--HEAD'
def jar
'clojure-contrib.jar'
end
def install
system "mvn package"
prefix.install Dir["target/clojure-contrib-*.jar"]
if ARGV.include? '--HEAD'
system "mvn package -Dclojure.jar=#{HOMEBREW_PREFIX}/Cellar/clojure/HEAD/clojure.jar"
system "mv target/clojure-contrib-*.jar #{jar}"
end
prefix.install jar
end
def caveats
@ -17,11 +26,11 @@ class ClojureContrib <Formula
For Clojure to detect the contrib libs, the following path must be in your
CLASSPATH ENV variable:
#{prefix}
#{prefix}/#{jar}
To do this with bash, add the following to your ~/.profile file:
export CLASSPATH=$CLASSPATH:#{prefix}
export CLASSPATH=$CLASSPATH:#{prefix}/#{jar}
END_CAVEATS
end
end

View file

@ -5,30 +5,27 @@ class Clojure <Formula
md5 '9c9e92f85351721b76f40578f5c1a94a'
head 'git://github.com/richhickey/clojure.git'
homepage 'http://clojure.org/'
JAR = "clojure.jar"
def jar
'clojure.jar'
end
def script
<<-EOS
#!/bin/bash
#!/bin/sh
# Runs clojure.
# With no arguments, runs Clojure's REPL.
# With one or more arguments, the first is treated as a script name, the rest
# passed as command-line arguments.
# resolve links - $0 may be a softlink
CLOJURE=$CLASSPATH:$(brew --cellar)/#{name}/#{version}/#{JAR}
CLOJURE=$CLASSPATH:$(brew --cellar)/#{name}/#{version}/#{jar}
if [ -z "$1" ]; then
java -server -cp $CLOJURE clojure.main
else
scriptname=$1
java -server -cp $CLOJURE clojure.main $scriptname $*
fi
java -cp $CLOJURE clojure.main "$@"
EOS
end
def install
prefix.install JAR
system "ant" if ARGV.include? '--HEAD'
prefix.install jar
(bin+'clj').write script
end
end