Skip to content

Instantly share code, notes, and snippets.

@dmalikov
Created February 4, 2013 21:43
Show Gist options
  • Save dmalikov/4709977 to your computer and use it in GitHub Desktop.
Save dmalikov/4709977 to your computer and use it in GitHub Desktop.
Primitive routine to install smackage with configured mlton and smlnj
#!/usr/bin/env ruby
require 'rubygems'
require 'git'
require 'fileutils'
# Directory that suppose to be in $PATH
bin_dir = File.join(Dir.home, 'bin')
smackage_dir = File.join(Dir.home, 'projects/smackage')
smlnj_config = File.join(Dir.home, '.smlnj-pathconfig')
mlton_bin = File.join(bin_dir, 'mlton')
smackage_bin = File.join(bin_dir, 'smackage')
unless File.directory? File.join(smackage_dir,'.git')
printf "Clone smackage git repo... "
Git.clone( 'git://github.com/standardml/smackage.git', smackage_dir )
printf "OK\n"
end
printf "Building smackage... "
Dir.chdir(smackage_dir) {
%x[make mlton]
%x[bin/smackage refresh]
%x[bin/smackage make smackage mlton]
%x[bin/smackage make smackage smlnj]
%x[bin/smackage make smackage install]
}
printf "OK\n"
unless File.exist? smlnj_config
puts "Create smlnj config"
File.open(smlnj_config, 'w') { |f|
f.write("SMACKAGE #{File.join(Dir.home,'.smackage/lib')}")
}
end
unless File.exist? mlton_bin
puts "Create mlton bin"
File.open(mlton_bin, 'w') { |f|
f << "#!/bin/bash\n"
f << "/usr/bin/mlton -mlb-path-var 'SMACKAGE #{File.join(Dir.home,'.smackage/lib')}' \"$@\"\n"
}
end
FileUtils.ln_sf File.join(Dir.home, '.smackage/bin/smackage'), smackage_bin
@supki
Copy link

supki commented Feb 5, 2013

Will you do lastfm bindings in sml occasionally?

@dmalikov
Copy link
Author

dmalikov commented Feb 6, 2013

Sure

@supki
Copy link

supki commented Feb 9, 2013

Cool.

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