Another challenge from tuxdev here... smlnj is an ML compiler and has it's own download and installation routine. To run the installer you only need to download the current config.tgz file. When unpacked it creates a directory 'config' with the install.sh and other files. The config/targets file can be edited to select features. So, to create an easily scriptable build, I download the config.tgz file and unpack into a new directory with the desired name and version. Then I repack the new directory as $NAME-$VERSION.tar.bz2 A copy of the original config.tgz for this version is in the 'unused' directory. In the src2pkg script we bypass the normal config, make and make install steps and just run the install.sh script which downloads, compiles and locally installs the programs. Then we manually copy to the PKG_DIR (in a directory outside the path) and add a wrapper (SMLNJ) to /usr/bin to set up the environment and path for using the comiler. Once installed, giving the command: SMLNJ sml (options) should enable the compiler (plus options). Links are created according to what targets you choose, so let src2pkg create a new doinst.sh if you change the targets.