From: skaller <sk...@us...> - 2006-03-15 06:30:55
|
I have just posted 1.1.2 Release Candidate 6. and of course you can get the HEAD from CVS. http://felix.sourceforge.net/flx_1.1.2_rc6_src.tgz [BTW: does anyone know how to tag CVS to identify the code in a particular tarball .. without switching to that tag, i.e. staying on the HEAD?] This tarball includes a further revamped build system. There are still known and unknown warts! The basic changes are: even more is now down with plugins. In fact all the package management code is now in a plugin. Plugins can now schedule operations with a priority which is an initial crude way of sequencing plugin actions. Package code is now built in phase order, and package suborder, rather than the other way around, and tests are now part of the default building process. The major new functionality is conditional building. The system keeps track of which phases of which packages have been built, and it inspects the interscript sources to determine which packages need rebuilding based on time stamps. So now, when you say 'mk', only things that have explicitly changed will be rebuilt. You can still use --pkg=blah to include blah in the list. Note that building pre-requisites is not done automatically: use the 'reqs' option to include them. Note that building dependent packages is ALSO not done automatically: use the 'deps' option to include them. Ocaml ONLY also skips building files that don't need compilation. The control is global (trans-package) which still compiles too much. It is also sequential: once one out of date file is found all subsequent files are recompiled. The equivalent fine grained building of C code isn't done yet -- it requires some script to search for #include lines and do dependency analysis. The options 'doc','demo' and 'test' can also be given, and are applied to all packages (no matter what is selected). The option 'force' should also force compilation of everything. Another way to do this is to delete the directory pkg-stamps and/or the directory manifests pkg-stamps keeps track of the latest build times for each package/phase combination. manifests keeps track of which ipk files a pak file depends on. Packages and paks are coupled by the field iscr_source = ["lpsrc/something.pak] in the spkgs/thing.py file. CAVEATS AND BUGS **************** * The speed language comparison documentation includes the results of a speed run. This shows up as a dependency in the manifest, even though it isn't actually in any interscript file. The linkage will fail if lpsrc is not in the current directory. (i.e. the --lparchive option won't work properly). This is a temporary hack -- I want to display the output in the document, but there is no interscript facility for typesetting an external file other than @include_file which requires a pathname relative to the current file. * the phasing of test runs is not correct. The 'target' phase should build the DLL or executable, but not run it. The 'run' phase should run the tests. Atm there is only one subroutine that both builds and executes the tests. -- John Skaller <skaller at users dot sourceforge dot net> Async PL, Realtime software consultants Checkout Felix: http://felix.sourceforge.net |