Created
December 2, 2012 01:20
-
-
Save kellyrob99/4186368 to your computer and use it in GitHub Desktop.
Scala install script for Mac OSX Mountain Lion. Created to automate tasks described in http://arifoctovian.wordpress.com/2012/08/18/installing-scala-in-os-x-mountain-lion/ since the Macport for scala-2.9 depends on the broken openjdk6 port
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
String version = '2.9.2' | |
String scalaDistributionURL = "http://www.scala-lang.org/downloads/distrib/files/scala-${version}.tgz" | |
String scalaDocDistributionURL = "http://www.scala-lang.org/downloads/distrib/files/scala-docs-${version}.zip" | |
String installDirName = '/opt/local/share/java' | |
final File installDir = new File(installDirName) | |
installDir.mkdir() | |
println "Installing scala version $version into ${installDir.absolutePath}" | |
//download if we already have not | |
final File scala = new File(installDir, 'scala.tgz') | |
final File scalaDoc = new File(installDir, 'scalaDoc.zip') | |
if (!scala.exists()) { | |
println "Downloading scala from $scalaDistributionURL" | |
scalaDistributionURL.toURL().withInputStream {InputStream is -> | |
scala.withOutputStream {OutputStream os -> | |
os << is | |
} | |
} | |
} | |
if (!scalaDoc.exists()) { | |
println "Downloading scala-docs from $scalaDistributionURL" | |
scalaDocDistributionURL.toURL().withInputStream {InputStream is -> | |
scalaDoc.withOutputStream {OutputStream os -> | |
os << is | |
} | |
} | |
} | |
//unzip and rename if we already have not | |
AntBuilder ant = new AntBuilder() | |
final File scalaDistributionTempDir = new File(installDir, 'scala-2.9.2') | |
final File scalaDistributionDir = new File(installDir, 'scala') | |
if (!scalaDistributionTempDir.exists()) { | |
ant.untar(src: scala.absolutePath, dest: installDir.absolutePath, compression: 'gzip') | |
} | |
if (scalaDistributionDir.exists()) { | |
scalaDistributionDir.deleteDir() | |
} | |
scalaDistributionTempDir.renameTo(scalaDistributionDir) | |
//nest the documentation into the scala directory | |
final File docSubDir = new File("${scalaDistributionDir.absolutePath}/doc/scala-devel-docs") | |
docSubDir.mkdirs() | |
final File scalaDocDistributionTempDir = new File(docSubDir, 'scala-docs-2.9.2') | |
final File scalaDocDistributionDir = new File(docSubDir, 'api') | |
if (!scalaDocDistributionTempDir.exists()) { | |
ant.unzip(src: scalaDoc.absolutePath, dest: docSubDir.absolutePath) | |
} | |
if (scalaDocDistributionDir.exists()) { | |
scalaDocDistributionDir.deleteDir() | |
} | |
scalaDocDistributionTempDir.renameTo(scalaDocDistributionDir) | |
ant.chmod(file: "${scalaDistributionDir.absolutePath}/**", perm: 775, type: 'both') | |
File usrLocalBin = new File('/usr/local/bin') | |
File scalaBinDir = new File(scalaDistributionDir, 'bin') | |
['scala', 'fsc', 'scalac', 'scaladoc'].each { command -> | |
final resource = "${scalaBinDir.absolutePath}/$command" | |
final link = "${usrLocalBin.absolutePath}/$command" | |
println "adding symlink from $link to $resource" | |
ant.symlink(link: link, resource: resource, overwrite: true) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
openjdk6 issue is tracked on https://trac.macports.org/ticket/34509