aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorJack Nagel2013-09-17 13:09:28 -0500
committerJack Nagel2013-09-17 13:09:28 -0500
commit95e75c182b75d1326aad232a1f96f4af87a67264 (patch)
tree8fb00bf9ce837f86b1498c8bc43e099d89497529 /Library
parent9e80d57525783f0f9031455dce811601d01b9367 (diff)
downloadhomebrew-95e75c182b75d1326aad232a1f96f4af87a67264.tar.bz2
smlnj: use resources
Diffstat (limited to 'Library')
-rw-r--r--Library/Formula/smlnj.rb263
1 files changed, 119 insertions, 144 deletions
diff --git a/Library/Formula/smlnj.rb b/Library/Formula/smlnj.rb
index 3b414aebc..18b42bb7d 100644
--- a/Library/Formula/smlnj.rb
+++ b/Library/Formula/smlnj.rb
@@ -1,190 +1,166 @@
require 'formula'
-# SML/NJ consists of several source archives and we want to cache them instead
-# of config downloading then on demand.
-
-class SmlnjCm < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/cm.tgz'
+class Smlnj < Formula
+ homepage 'http://www.smlnj.org/'
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/config.tgz'
+ sha1 '527cb179b48abcf1463089d168b171fd05eb814d'
version '110.75'
- sha1 'a4310413102c5649ed43d92962ffa307ebec4a39'
-end
-class SmlnjCompiler < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/compiler.tgz'
- version '110.75'
- sha1 'efd03a1cc84104c22776f56dca67e0ae5e9145e8'
-end
+ resource 'cm' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/cm.tgz'
+ version '110.75'
+ sha1 'a4310413102c5649ed43d92962ffa307ebec4a39'
+ end
-class SmlnjRuntime < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/runtime.tgz'
- version '110.75'
- sha1 'dd81ce2963ca0ea4b1e92b22c7587d5ae64783f8'
-end
+ resource 'compiler' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/compiler.tgz'
+ version '110.75'
+ sha1 'efd03a1cc84104c22776f56dca67e0ae5e9145e8'
+ end
-class SmlnjSystem < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/system.tgz'
- version '110.75'
- sha1 '0f7536bbdcd6d1584f4dcbf3b30a553d98fb0cb1'
-end
+ resource 'runtime' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/runtime.tgz'
+ version '110.75'
+ sha1 'dd81ce2963ca0ea4b1e92b22c7587d5ae64783f8'
+ end
-class SmlnjBootstrap < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/boot.x86-unix.tgz'
- version '110.75'
- sha1 '0e459e33f54811750a42311a22bc4572ab16ebcb'
-end
+ resource 'system' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/system.tgz'
+ version '110.75'
+ sha1 '0f7536bbdcd6d1584f4dcbf3b30a553d98fb0cb1'
+ end
-class SmlnjMLRISC < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/MLRISC.tgz'
- version '110.75'
- sha1 '041b6463d98d0effa0afc457fc5b09e74f081b85'
-end
+ resource 'bootstrap' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/boot.x86-unix.tgz'
+ version '110.75'
+ sha1 '0e459e33f54811750a42311a22bc4572ab16ebcb'
+ end
-class SmlnjLib < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/smlnj-lib.tgz'
- version '110.75'
- sha1 '33f4d3a8dc653cd015ed15a27776dd0e3f2fbb04'
-end
+ resource 'mlrisc' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/MLRISC.tgz'
+ version '110.75'
+ sha1 '041b6463d98d0effa0afc457fc5b09e74f081b85'
+ end
-class SmlnjCkit < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/ckit.tgz'
- version '110.75'
- sha1 '0dbca80174f969a549d85ef3e15a4a8ecce7ed22'
-end
+ resource 'lib' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/smlnj-lib.tgz'
+ version '110.75'
+ sha1 '33f4d3a8dc653cd015ed15a27776dd0e3f2fbb04'
+ end
-class SmlnjNlffi < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/nlffi.tgz'
- version '110.75'
- sha1 'b881390f58df7bbc5d84c45eec20af7fcfbfa40c'
-end
+ resource 'ckit' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/ckit.tgz'
+ version '110.75'
+ sha1 '0dbca80174f969a549d85ef3e15a4a8ecce7ed22'
+ end
-class SmlnjCml < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/cml.tgz'
- version '110.75'
- sha1 '8938aa0685453c16f57bae23e96ed23b1409f419'
-end
+ resource 'nlffi' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/nlffi.tgz'
+ version '110.75'
+ sha1 'b881390f58df7bbc5d84c45eec20af7fcfbfa40c'
+ end
-class SmlnjExene < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/eXene.tgz'
- version '110.75'
- sha1 'f8608de797634faaad632fbdfd43838c4de85e42'
-end
+ resource 'cml' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/cml.tgz'
+ version '110.75'
+ sha1 '8938aa0685453c16f57bae23e96ed23b1409f419'
+ end
-class SmlnjMlLpt < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/ml-lpt.tgz'
- version '110.75'
- sha1 'd0b68f304a5e29173a9599a3959c12e84ea479ee'
-end
+ resource 'exene' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/eXene.tgz'
+ version '110.75'
+ sha1 'f8608de797634faaad632fbdfd43838c4de85e42'
+ end
-class SmlnjMlLex < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/ml-lex.tgz'
- version '110.75'
- sha1 '6557d928f85b28938d4c299925835a6d5eb1e68b'
-end
+ resource 'ml-lpt' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/ml-lpt.tgz'
+ version '110.75'
+ sha1 'd0b68f304a5e29173a9599a3959c12e84ea479ee'
+ end
-class SmlnjMlYacc < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/ml-yacc.tgz'
- version '110.75'
- sha1 '1bec52fbc6557dcd7d4363a1ae13be540bfc89a5'
-end
+ resource 'ml-lex' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/ml-lex.tgz'
+ version '110.75'
+ sha1 '6557d928f85b28938d4c299925835a6d5eb1e68b'
+ end
-class SmlnjMlBurg < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/ml-burg.tgz'
- version '110.75'
- sha1 '202f62c604e6d11b0ebed82ce78210a8e5224a9d'
-end
+ resource 'ml-yacc' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/ml-yacc.tgz'
+ version '110.75'
+ sha1 '1bec52fbc6557dcd7d4363a1ae13be540bfc89a5'
+ end
-class SmlnjPgraph < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/pgraph.tgz'
- version '110.75'
- sha1 '7b6425de5ca1648caf230dea5e8db34f90b481c9'
-end
+ resource 'ml-burg' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/ml-burg.tgz'
+ version '110.75'
+ sha1 '202f62c604e6d11b0ebed82ce78210a8e5224a9d'
+ end
-class SmlnjTracheDebugProfile < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/trace-debug-profile.tgz'
- version '110.75'
- sha1 'c828e9d2728171a5d087a41fcbb923ac460a9d50'
-end
+ resource 'pgraph' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/pgraph.tgz'
+ version '110.75'
+ sha1 '7b6425de5ca1648caf230dea5e8db34f90b481c9'
+ end
-class SmlnjHeap2asm < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/heap2asm.tgz'
- version '110.75'
- sha1 '49c81c4343db2095fe7c28ae5ef40086d225421c'
-end
+ resource 'trace-debug-profile' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/trace-debug-profile.tgz'
+ version '110.75'
+ sha1 'c828e9d2728171a5d087a41fcbb923ac460a9d50'
+ end
-class SmlnjC < Formula
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/smlnj-c.tgz'
- version '110.75'
- sha1 'adbc3874f8715d53bc1f032047c3289cff0af8e9'
-end
+ resource 'heap2asm' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/heap2asm.tgz'
+ version '110.75'
+ sha1 '49c81c4343db2095fe7c28ae5ef40086d225421c'
+ end
-class Smlnj < Formula
- homepage 'http://www.smlnj.org/'
- url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/config.tgz'
- sha1 '527cb179b48abcf1463089d168b171fd05eb814d'
- version '110.75'
+ resource 'c' do
+ url 'http://smlnj.cs.uchicago.edu/dist/working/110.75/smlnj-c.tgz'
+ version '110.75'
+ sha1 'adbc3874f8715d53bc1f032047c3289cff0af8e9'
+ end
def install
ENV.deparallelize
-
- # This software is not yet 64bit ready. Hello? It's almost 2013!
- ENV.m32
+ ENV.m32 # does not build 64-bit
# Build in place
- root = (prefix/"SMLNJ_HOME")
+ root = prefix/"SMLNJ_HOME"
cd '..'
root.install 'config'
cd root
# Rewrite targets list (default would be too minimalistic)
- rm('config/targets')
+ rm 'config/targets'
Pathname.new('config/targets').write targets
# Download and extract all the sources for the base system
- SmlnjCm.new.brew { cp_r(pwd, root+'base') }
- SmlnjCompiler.new.brew { cp_r(pwd, root+'base') }
- SmlnjRuntime.new.brew{ cp_r(pwd, root+'base') }
- SmlnjSystem.new.brew{ cp_r(pwd, root+'base') }
+ %w{cm compiler runtime system}.each do |name|
+ resource(name).stage { cp_r pwd, root/'base' }
+ end
# Download the remaining packages that go directly into the root
- SmlnjBootstrap.new.brew{ cp_r(pwd, root) }
- SmlnjMLRISC.new.brew{ cp_r(pwd, root) }
- SmlnjLib.new.brew{ cp_r(pwd, root) }
- SmlnjCkit.new.brew{ cp_r(pwd, root) }
- SmlnjNlffi.new.brew{ cp_r(pwd, root) }
- SmlnjCml.new.brew{ cp_r(pwd, root) }
- SmlnjExene.new.brew{ cp_r(pwd, root) }
- SmlnjMlLpt.new.brew{ cp_r(pwd, root) }
- SmlnjMlLex.new.brew{ cp_r(pwd, root) }
- SmlnjMlYacc.new.brew{ cp_r(pwd, root) }
- SmlnjMlBurg.new.brew{ cp_r(pwd, root) }
- SmlnjPgraph.new.brew{ cp_r(pwd, root) }
- SmlnjTracheDebugProfile.new.brew{ cp_r(pwd, root) }
- SmlnjHeap2asm.new.brew{ cp_r(pwd, root) }
- SmlnjC.new.brew{ cp_r(pwd, root) }
-
- ohai "Fix hard-coded path to `as`"
+ %w{
+ bootstrap mlrisc lib ckit nlffi
+ cml exene ml-lpt ml-lex ml-yacc ml-burg pgraph
+ trace-debug-profile heap2asm c
+ }.each do |name|
+ resource(name).stage { cp_r pwd, root }
+ end
+
inreplace root/'base/runtime/objs/mk.x86-darwin', '/usr/bin/as', 'as'
# Orrrr, don't mess with our PATH. Superenv carefully sets that up.
- inreplace root/'base/runtime/config/gen-posix-names.sh', 'PATH=/bin:/usr/bin', '# do not hardcode the path'
+ inreplace root/'base/runtime/config/gen-posix-names.sh','PATH=/bin:/usr/bin', '# do not hardcode the path'
inreplace root/'base/runtime/config/gen-posix-names.sh', '/usr/include', "#{MacOS.sdk_path}/usr/include" unless MacOS::CLT.installed?
system 'config/install.sh'
- # And these should be in the PATH, so we put then into bin
- bin.mkpath
- [ 'sml',
- 'heap2asm',
- 'heap2exec',
- 'ml-antlr',
- 'ml-build',
- 'ml-burg',
- 'ml-lex',
- 'ml-makedepend',
- 'ml-nlffigen',
- 'ml-ulex',
- 'ml-yacc'
- ].each{ |e| ln_s(root/"bin/#{e}", bin/e) }
+ %w{
+ sml heap2asm heap2exec ml-antlr
+ ml-build ml-burg ml-lex ml-makedepend
+ ml-nlffigen ml-ulex ml-yacc
+ }.each { |e| bin.install_symlink root/"bin/#{e}" }
end
def targets
@@ -212,5 +188,4 @@ class Smlnj < Formula
request heap2asm
EOS
end
-
end