Skip to content

Instantly share code, notes, and snippets.

@kellyrob99
Created December 2, 2012 01:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kellyrob99/4186368 to your computer and use it in GitHub Desktop.
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
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)
}
@kellyrob99
Copy link
Author

openjdk6 issue is tracked on https://trac.macports.org/ticket/34509

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment