Re: Problems porting from old Compilation Manager
Joe Wells <[email protected]> Fri, 27 Nov 2009 12:57:13 +0000
| Newsgroups | gmane.comp.lang.sml.smlnj |
|---|---|
| Message-ID | <[email protected]> |
Colin Fleming <[email protected]> writes: > Hi all, > > I'm trying to compile MLj, the SML to JVM compiler. The project is > pretty well abandoned, and they recommend compiling it with a very old > version of SML/NJ (110.0.7) which I couldn't get to compile on OSX. > That version uses the old CM, so when I try to compile with the most > recent version, it fails. The culprit seems to be the build.sml file: > > val path = > case OS.Process.getEnv "BOOTCLASSPATH" of > NONE => > (print > "\nSet BOOTCLASSPATH to the zip or jar file containing system classes\n"; > OS.Process.exit OS.Process.failure) > > | SOME path => path; > > val version_id = #version_id Compiler.version; > val newer = hd version_id > 110 orelse hd (tl version_id) > 0; > if newer then CM.set_root "sources2.cm" else (); > OS.FileSys.chDir "src"; > CM.make (); > Version.compileTime := Date.toString (Date.fromTimeLocal (Time.now ())); > SMLofNJ.Internals.GC.messages false; > > PackageManager.setBootClassPath (Path.pathToList path); > > if Make.makeAndFreezeBasis (true, "build.log") > then SMLofNJ.exportFn ("../bin/mlj-jdk1.1.1", TopLevel.main) > else (print "\nFailed to build basis\n"; OS.Process.exit OS.Process.failure); > > I managed to make some progress by commenting the CM.set_root line and > adjusting the CM.make command to 'CM.make "sources2.cm"', but then the > subsequent lines fail because it can't find Version or PackageManager. PackageManager is probably part of MLj. I don't know about Version. > Did something change with the visibility of compiled structures in the > switch to the new CM? Can I explicitly import those structures somehow > in the new one? If you can find them in one of the installed binary .cm files, then you can import them. For example, picking an internal function purely at random, here is how you would get access to PickleUtil.pickle: Standard ML of New Jersey v110.70 [built: Thu Aug 27 23:53:55 2009] - PickleUtil.pickle; stdIn:1.1-1.18 Error: unbound structure: PickleUtil in path PickleUtil.pickle - CM.autoload "$/pickle-lib.cm"; [autoloading] [library $smlnj/cm/cm.cm is stable] [library $smlnj/internal/cm-sig-lib.cm is stable] [library $/pgraph.cm is stable] [library $smlnj/internal/srcpath-lib.cm is stable] [library $SMLNJ-BASIS/basis.cm is stable] [autoloading done] [library $/pickle-lib.cm is stable] val it = true : bool - PickleUtil.pickle; [autoloading] [library $SMLNJ-LIB/Util/smlnj-lib.cm is stable] [autoloading done] val it = fn : 'a -> 'a PickleUtil.pickle -> string I hope this is helpful. -- With my best regards, Joe > Apologies if the question is very basic, I'm very new to SML. > > Thanks for any help, > Colin > -- Heriot-Watt University is a Scottish charity registered under charity number SC000278. ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july