#
aa69c94f |
|
12-Mar-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Holmake: boldify announcements of starting to work in directories
|
#
1bdfad7e |
|
05-Mar-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Reduce and prettify Holmake's recursive invocation verbiage
|
#
b9ac929e |
|
25-Feb-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add directory field to dep. graph nodes This is a first, easy, step towards having Holmake work over multiple directories at once.
|
#
4ba33079 |
|
16-Jan-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Holmake improvements (bug in caching of dep. analysis; diag change) Two intertwined patches (bad form I know): 1. Fix the bug in tests/indepchildren. 2. Revise the internal diag function to take a function generating a string rather than a string; then the work of generating the string only happens if diagnostics have been asked for.
|
#
151eb099 |
|
13-Jan-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move holmake-recursion code into Holmake.sml The move of this code into separate Holmake_tools.sml happened in order to try to share code between MoscowML and PolyML implementations. I imagined then that I would have to have the top-level functions trapped in language-specific implementations, but that various leaf-level things could be reused. I noticed that the recursion logic governing the way INCLUDES specs were followed could be stripped out of Holmake and so moved maybe_recurse into Holmake_tools. But now, the much more sensible scheme whereby only specific leaves in the code-tree are language specific is used, and so the quite high-level recursion stuff can come back into Holmake.sml.
|
#
3645d4f0 |
|
06-Jan-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Do "last made by" checks even when cleaning in Holmake This reverts 550b90aca, which doesn't come with enough justification for me to understand the problem that I thought I was solving in 2010. The problem with omitting the checks is that if the "wrong" Holmake is called, and if the Holmakefile contains references to things like $(HOLDIR), then the wrong cleaning action can occur. For example, if an INCLUDES line refers to $(HOLDIR), then a recursive clean will recurse into the wrong directory. Similarly, if an EXTRA_CLEANS line refers to $(HOLDIR), then the wrong file will get deleted.
|
#
7c949327 |
|
04-Jan-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix Holmake bug to do with --no_prereqs Bug is identified in previous commit (and in accompanying test-cases). It comes down to the fact that even with --no_prereqs specified, Holmake needs to scan ancestor directories in order to get dependencies correctly recorded in generated files, particularly Theory.uo files.
|
#
d56fd8b3 |
|
22-Aug-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Update Holmake to cope with Theory.dat files No tests specific to that feature yet. Still also need to update for Moscow ML.
|
#
a53703d8 |
|
24-Jul-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix a bug in generation of dependencies for Holmake "side products" Slightly extend test-cases
|
#
46ee3d3e |
|
13-Jul-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Allow an indication of side-products of theory builds Basically, write something like foo: *theorynameScript.sml to indicate that foo will be built when the theory theoryname is built. As part of the process, provide much better testing of the parallel execution of multiple target rules and completely change the way these are handled. In particular, the dependency graph that Holmake maintains now does not have multiple targets for a single node, but instead makes sure that when a command is executed for a single target, all nodes that would execute the same command are considered to be running at the same time, and get the same success/failure status when the command finishes. Needs documentation, but is progress with Github issue #429
|
#
236d8980 |
|
25-Jun-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix Holmake's -I flag so it is not applied recursively The -I flag to Holmake was being re-interpreted with each recursive entry of a fresh directory, so that when the included directory was entered, the Holmake process then attempted to again include that path in the newly entered directory. This is fine if the path is absolute (the loop detection will stop the recursion), but if it's relative, the path won't be present in that directory and a file-system IO error occurs. Closes #413
|
#
469e528e |
|
05-Jun-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove an unused binding in Holmake.sml
|
#
7323a63d |
|
13-Mar-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Allow c/line switches to appear after "real" arguments in Holmake Thanks to Magnus for the suggestion.
|
#
a870a911 |
|
23-Jan-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Rebuild .uo and .ui files without forcing unnecessary extra work This is by analogy with what has already been attempted for heaps, and is progress with github issue #105. Also fix a bug with the heap handling if the heap was in a directory with script-files (not the case with the heaps in HOL/src): the dependency graph built for the directory spotted that there was a dependency from the heap to the script files, and even though the heap's time-stamp was set appropriately, the existence of the link in the graph meant that the rest of the graph got executed. The fix for this (in both the case of the heap and the .uo/.ui file) is for execution of graph nodes to check at the time the node is made ready to execute if the target really does need to be redone (by examining time-stamps). Then, the rebuild can be skipped even though the initial analysis thought it was going to have to happen. Future work: - For the moment, both build and Holmake rely on having a particular environment variable set to enable this option. I will augment and/or replace this with command-line options. (The buildheap program needs to retain this use of the environment variable though because neither Holmake nor build control how that program is called; instead this program is called by the user via Holmakefiles.) - Build needs to take an option to clean a HOL installation of its heaps and ui/uo files. I don't know how to automatically identify the heaps, but could just purge those that are identified as such in Holmakefiles.
|
#
c529f767 |
|
12-Sep-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Get Holmake to build targets with no deps again Closes #348
|
#
5098a86c |
|
28-Jun-2016 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Patch glitch in Holmake output. The "usepfx" flag is no longer set when `CLINE_OPTIONS = -j1` appears in the Holmakefile. It will only be set when `-j1` is in the actual command line. This avoids lines that is too long (due to `Holmake: ` being printed) when recursing into a directory that doesn't have `CLINE_OPTIONS = -j1` in it's Holmakefile. I suspect `Holmake: ` is not printing when recursing into a directory that does have `CLINE_OPTIONS = -j1`, but this wouldn't result in lines that are too long.
|
#
7098f9c7 |
|
05-Jun-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Handle opentheory intermediate leftovers better In particular, the parallel process for building .art files creates an intermediate thyname.artScript.sml file that shouldn't be regarded as a normal script file. (Indeed, it can't work as a normal script file because of the presence of the full-stop in the theory name, so there's a warning emitted for other occurrences of this if seen.) These intermediates can be cleaned by Holmake as well if they're found. (Normal execution of Holmake will remove these files after they're used, but if the build is interrupted for some reason, they get left behind.)
|
#
419aceba |
|
03-May-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Ensure Holmakefiles' CLINE_OPTIONS are always read When a recursive Holmake call happens in another directory, that directory's Holmakefile's CLINE_OPTIONS need to get a chance to affect the behaviour of Holmake in that directory.
|
#
bd86c2f5 |
|
03-May-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Improve error-reporting in -j1 Holmake Includes more error messages when --dbg is set
|
#
a6f14e88 |
|
03-May-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove unused arg to Holmake introduced in b59cee6 I mistakenly thought it was going to be necessary to know if the Holmake function was being called for the first time or not.
|
#
b59cee6f |
|
02-May-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Provide CLINE_OPTIONS variable in Holmakefiles This variable is read for a set of default command-line switches which are treated as if they are being passed on the command-line. Things actually passed on the command-line are applied after what is in the Holmakefile, possibly overriding the file's switches. Of course, the command-line can also change the defaults with both of the --no_hmakefile and --holmakefile=file switches. Motivated by the desire to have Holmakefiles be able to contain good -j options for specific directories. This pretty well supercedes the OPTIONS variable, so the documentation in DESCRIPTION has been adjusted accordingly. Closes #86
|
#
aa7b7a9c |
|
26-Apr-2016 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Clean out .hollogs at the same time as .HOLMK.
|
#
b413a6a1 |
|
25-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix Holmake's recursive clean Includes a test-case. Closes #338
|
#
1c326356 |
|
20-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Make multibuild output prettier
|
#
18d1c2f7 |
|
20-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Enable multiplexed builds for Poly/ML Output is horrendous at the moment
|
#
50c4d56b |
|
18-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Make dep. graph store single commands per node This is something of a reversal of 8f7f1c9; but there I was worried about smashing multiple commands into a single string, which is clearly still a bad thing to have happen. The problem with having multiple commands in a single node is that a multiplexing implementation has to execute them as an atomic block, which I don't like.
|
#
97dcc7a0 |
|
16-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Get Holmake to check for circular dependency loops This check was briefly removed as I switched to the 'create dependency graph; perform builds' implementation. Now also with a regression test.
|
#
bf1164c0 |
|
15-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Make Holmake less chatty by default Enable old level of chattiness with -v or --verbose command line option.
|
#
e7c52075 |
|
15-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Replace 'print' with Holmake's output functions
|
#
443a1c20 |
|
15-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Re-enable rebuild_deps behaviour in Holmake
|
#
8c7d50da |
|
14-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix Holmake under Poly/ML Two significant changes required: * the dependency graph now records nodes for files that already exist and don't need rebuilding. The graph marks such nodes as Succeeded. This gives nodes that depend on these files extra things to point to, giving them a more complete picture. This change also simplifies the code for building the dependency graph in the first place, but is possibly redundant given the second change... * Before "compiling" a source-file, the Poly/ML implementation runs the Holdep analysis on that source file in order to get a better picture of its dependencies stored in the corresponding .uo or .ui file. This is necessary, because the preliminary dependency analysis may be done before the source file even exists. (E.g., fooTheory.sig may not exist when Holmake first starts work in a directory.)
|
#
b6dd58ef |
|
14-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Get "build from graph" Holmake to compile Poly/ML version fails miserably at boolScript hurdle however.
|
#
4121aab1 |
|
13-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Start to implement building from dependency graph This code is as yet unconnected to any execution, and is attempting to replicate the behaviour that we have at the moment (corresponding to what will eventually be -j 1). Slightly adjust some types along the way, including changing a bool*bool*string tuple into a record that identifies what the bools are.
|
#
6cde3a53 |
|
12-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Make dep graph record file-name in dependency link Nodes in the graph are commands that may build multiple targets at once. Nonetheless, other nodes may only depend on one of those targets, so we can record this on the arc from the target to the dependency.
|
#
8f7f1c9a |
|
12-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Make dep-graphs store commands as lists of strings This will make it easier to extract and act on leading indicators such as @ and - on each line. If a line is -command then it could be passed to the shell as command ; true. If the command has the leading @, then that line shouldn't be echoed to the shell. In a parallelised context, I'm not sure that anything much should be echoed to the user anyway. Previously, I had Holmake concatenate the lines from the Holmakefile with intervening semicolons, which would just make extracting the @ and - characters that much harder.
|
#
52682c25 |
|
12-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add unused API to build targets from dep. graph
|
#
f634cab0 |
|
12-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Tweak Holmake's usage message
|
#
d716a370 |
|
05-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix dep-graph's handling of rules with >1 target Now such rules (including the implicit/built-in rule that builds <n>Theory.sig and <n>Theory.sml from one invocation of a script file), only generate one node in the dependency graph. Actually, the code will treat foo: deps command bar: deps command as if they were written foo bar: deps command because the former is what the latter expands into.
|
#
dd5f56c5 |
|
04-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Implement a -n option for Holmake This uses the new dependency graph technology. It doesn't look particularly pretty at the moment, but Holmake -n -q should be useful. (The -q suppresses useless info about automatic dependency analysis.) Closes #283
|
#
aaece817 |
|
04-Apr-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Make KERNELID var get its proper value in Holmake Issue was that Poly/ML evaluates many things at compile time rather than run-time.
|
#
7b43df0a |
|
30-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove diffs between poly and mosml Holmake impls Next step is to actually remove as much as possible of the tools-poly/Holmake directory.
|
#
60a69fd8 |
|
30-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Pass more info to the impl-specific BuildCommand In particular, pass - the full Holmakefile-derived envlist function (which turns $(...) references into string lists); - output functions (warn, die, etc) - quit_on_failure, which is derived from the Holmakefile and core command-line options
|
#
4f0a476c |
|
28-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Delete bogus comments in both Holmake.sml files
|
#
6b4d23aa |
|
28-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move impl-specific exn stuff to separate files Interrupt is Interrupt in mosml, but SML90.Interrupt in Poly/ML code mentioning it should be factored out.
|
#
92873efe |
|
28-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Put a main around mosml's Holmake This makes the Moscow ML version look more like the Poly/ML version.
|
#
217de548 |
|
28-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Push poly and mosml Holmakes closer together
|
#
bb5d6c17 |
|
28-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move mosml Interrupt magic to mosml directory
|
#
85786bb6 |
|
28-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove very stale copyright notice on Holmake src
|
#
4aa9adb2 |
|
28-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Purge Holmake.sml of much Moscow ML specific code The Moscow ML stuff has moved into mosml/BuildCommand etc Progress with github issue #77
|
#
c0d1d17f |
|
28-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Cleanup more Holmake code This is in pursuit of more unification between Moscow ML and Poly/ML implementations (github issue #77).
|
#
ded6cefd |
|
28-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Purge some unused c/line options for Holmake Unused in the sense that I don't think anyone ever used them and supporting them was just making the code base unnecessarily complicated.
|
#
085fe168 |
|
28-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Switch Moscow ML Holmake to GetOpt cline options This is a precursor to merging more of the Poly/ML and Moscow ML implementations, as per github issue #77
|
#
6117e390 |
|
22-Sep-2015 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Systeml's mk_xable returns status, not string It previously used to return the string of the executable version of the file. On Windows, this makes sense because making things executable consists of adding the string ".exe", changing the filename. But we already have the xable_string function for doing this calculation.
|
#
9a5d6091 |
|
24-Feb-2015 |
Michael Norrish <michael.norrish@nicta.com.au> |
Make Holmake follow INCLUDES recursively, even when given PHONY target Closes #145
|
#
227f4708 |
|
22-Feb-2015 |
Michael Norrish <michael.norrish@nicta.com.au> |
More progress with Holmake and recursive dependencies Both depchain selftests pass now on both Poly and Moscow ML. The treatment of relative and absolute directories is more careful, for which see the hmdir structure within Holmake_tools. This stuff is really only as complicated as it is for cosmetic reasons: the various messages printed to the user try to avoid absolute paths for as long as possible. However, more/most/all internal uses will now be with absolute paths, which should help.
|
#
36e19d76 |
|
22-Feb-2015 |
Michael Norrish <michael.norrish@nicta.com.au> |
Remove unnecessary print_list function within Holmake.sml
|
#
826a0b01 |
|
17-Feb-2015 |
Michael Norrish <michael.norrish@nicta.com.au> |
Fix recursive dep problem under Moscow ML (re-enable regression test) Build commands within Holmake are now passed the correct include information.
|
#
a72d68fc |
|
16-Feb-2015 |
Michael Norrish <michael.norrish@nicta.com.au> |
Most of a fix for recursive holdep problem. See test-case in Holmake/tests/depchain1 Test-case still not re-enabled as I don't think this quite works for Moscow ML yet. Some incidental progress with sharing more code between Moscow ML and Poly/ML (github issue #77).
|
#
07480c25 |
|
12-Feb-2015 |
Michael Norrish <michael.norrish@nicta.com.au> |
Slightly adjust Holmake's internal interface. Just a refactoring to make the recursive calls return a record-option rather a straight set. Intention is to next make the return value a bigger record so that it can return a list of extra includes, thereby allowing a fix for issue illustrated by the holdep test-case under Holmake/tests.
|
#
4522c28a |
|
02-Feb-2015 |
Michael Norrish <michael.norrish@nicta.com.au> |
runholdep function moves to Holmake_tools (Poly/ML Holmake affected) In the latter module, it can be used in the Poly/ML implementation. This is progress with github issue #77 The Poly/ML implementation now fails the regression test in tools/Holmake/tests/depchain1/dir3 so comment out that test from the build sequence temporarily. I believe there will be a Holmake failure in machine-code until the behaviour is properly fixed. I hope selftest 2 will go through correctly. Holmake's output also changes slightly because I've been more consistent about using the built-in 'info' function instead of print.
|
#
b0bfd575 |
|
02-Feb-2015 |
Michael Norrish <michael.norrish@nicta.com.au> |
Do away with use of mosmllex and mosmlyac in Holdep. These tools are too Moscow ML specific, and unnecessary given that we have mllex available for all SML implementations.
|
#
1e80cac7 |
|
02-Feb-2015 |
Michael Norrish <michael.norrish@nicta.com.au> |
Isolate writing of Holdep info into file from calculation of info
|
#
5b4f0510 |
|
28-Jan-2015 |
Michael Norrish <michael.norrish@nicta.com.au> |
Start to rationalise Holdep's interface. There were some strange holdovers still in there from the ancient days when it was a separate command-line tool. Aim is to ultimately drop Lexer.lex and Parser.grm and replace those with the Holdep_tokens lexer. I'm also only doing this to the Moscow ML implementation for the moment with the ultimate aim being to have the Poly and mosml implementations using the same Holdep code.
|
#
91e46ef1 |
|
21-Oct-2014 |
Michael Norrish <michael.norrish@nicta.com.au> |
Move generate_all_plausible_targets into common Holmake_tools. Progress with #77
|
#
732be988 |
|
24-Feb-2014 |
Michael Norrish <michael.norrish@nicta.com.au> |
Share more code between mosml and poly Holmake. Work on github issue #77
|
#
e63d42fc |
|
17-Jul-2013 |
Michael Norrish <michael.norrish@nicta.com.au> |
Implement recursive cleaning for Holmake. Closes #125; not extensively tested.
|
#
b6a03eda |
|
10-Oct-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Fix a bug in mosml Holmake's handling of SIGOBJs including spaces. Problem was that the patsubst function was applied and would result in a command line that looked like -I first-part-of-path -I second-part-of-path
|
#
82bd3aea |
|
16-Sep-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Copy tweak made by fd4c62c8 to Poly/ML Holmake in Moscow ML version.
|
#
f5f11785 |
|
15-Aug-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Get recursive Holmake to handle absolute paths in INCLUDES. This was broken by 44cef4623, handling #64.
|
#
44cef462 |
|
14-Aug-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Improve Holmake's messages about recursive invocation. Closes #64. Also helps with #77 because the code controlling the recursive invocations is now in Holmake_tools rather than in both versions of Holmake.sml.
|
#
0238565b |
|
10-Sep-2011 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Get mosml Holmake to build with new Holmake_types.
|
#
239b7fad |
|
22-Mar-2011 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move more code (including directory cleaning) into common Holmake_tools.
|
#
cadb3c61 |
|
22-Mar-2011 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move Holmake's structured file type into shared Holmake_tools module.
|
#
ec1a0af6 |
|
22-Mar-2011 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Use Basis 2002's isSuffix function rather than write my own.
|
#
f101fb0e |
|
11-Oct-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Allow Moscow ML build to happen using (as yet unreleased) v2.10. Basic strategy is to make adoption of basis 2002 even more thorough. In particular, the Timer structure is now as per the 2002 Basis. It is possible to detect that one is working with Moscow ML 2.10 or later by checking the Holmakefile variable $(HAVE_BASIS2002), which is set (to value "1") when in 2.10 or later. It is unset elsewhere. See an example of its use in help/src-sml/Holmakefile.
|
#
550b90ac |
|
16-Aug-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Holmake shouldn't do 'last-made-by' check when cleaning.
|
#
b1d73171 |
|
09-Aug-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Make Holmake use a 'ignore failure' delete in another place. This seemed to be tripping up a recent Windows build of mine. Perhaps because it was trying to delete the Script executable while the file-system still thought it was being run. I couldn't get the same error on my virtual machine version of Windows though.
|
#
318aaf77 |
|
10-Jul-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Holmake warns about (and doesn't use) an INCLUDES dir that doesn't exist.
|
#
7417f76d |
|
02-Jun-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
More diagnostics when the debug flag is passed to Holmake.
|
#
d7631584 |
|
09-May-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
New Holmake feature: check to see if it should be being used as builder. If, as I do, you have multiple HOL installations on the same machine, it can be a pain to remember to build things with the correct Holmake. On the other hand, it's certainly convenient having a Holmake in one's PATH. So, this change gets Holmake to determine if it should be the Holmake being used, and if it thinks another Holmake should be being used instead, that other Holmake gets called out to instead. This "calling out" is done through Systeml.exec, so can even be across Poly/ML-mosml boundaries. There are two ways in which a Holmake can decide determine the correct Holmake to be used. If it sees a .HOLMK/lastmaker file containing a path, then this is used. This file is written to when a Holmake does decide it's the rightful make executable. Secondly, if Holmake determines (by jumping up through the file-system) that it is being called inside a HOL installation already containing a bin/Holmake, then that is taken to be correct. When a second Holmake is called as part of this process, it also gets passed the --nolmbc flag ("no last made by check") to stop it going through the whole process all over again.
|
#
45f15856 |
|
05-Apr-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Allow Holmakefiles to specify building of files outside the current directory.
|
#
cbd4505c |
|
30-Mar-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix error in definition of HOLMOSMLC-C makefile variable.
|
#
8a0ae7fd |
|
30-Mar-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Augment base Holmake environment with ML_SYSNAME, MLLEX and MLYACC. Also move code implementing this into shared Holmake_types module.
|
#
07b4229c |
|
23-Feb-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix Holmake's handling of 'remote' targets that don't exist. Old behaviour didn't complain about targets not in the current directory if they didn't exist.
|
#
04d7fdc0 |
|
05-Feb-2010 |
Thomas Tuerk <Thomas.Tuerk@cl.cam.ac.uk> |
Added a missing space that prevented the basis2002 being used for compilation, when an "INCLUDES= ???" statement was present in the Holmakefile.
|
#
2b3c955b |
|
14-Dec-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
New "portable" subdirs per ML implementations in src/portableML. Hope to do away with Poly/ML specific code in tools-poly eventually, moving it into src/portableML/poly. tools/build-sequence now records that the implementation-specific directories have to be included.
|
#
8aa92e98 |
|
02-Oct-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
The Moscow ML Holmake was not recording the dependency on basis2002.uo correctly. Now that it does, the attempt to do it explicitly in src/portableML/Holmakefile can be dropped.
|
#
7acf98f9 |
|
02-Aug-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Make the basis hack for Moscow ML correctly identify which version of the Basis Library we are trying to emulate.
|
#
29268290 |
|
31-Jul-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
More corrections required to our sources when I do the migration to Basis 97 properly.
|
#
7154aa49 |
|
31-Jul-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Start to implement the Basis 97 extensions that Moscow ML hasn't got in order to force our codebase to get up-to-date. It should also mean less bodging around for the Poly/ML code. I haven't checked that my changes to tools-poly/poly/poly-init2.ML have done all that is required yet. Feel free to fix problems arising there (I hope it will just be a matter of deleting things).
|
#
11562793 |
|
30-Jul-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add yet more diagnosis information for Holmake failures.
|
#
caf33918 |
|
29-Jul-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Attempt to get better diagnostics out of a failing make_up_to_date function. In particular, Poly/ML seems to occasionally cause this (now altered) handler to fire.
|
#
e9314543 |
|
07-Jun-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix a bug whereby the calculation of dependencies was ignoring PRE_INCLUDES.
|
#
5edb2585 |
|
08-Dec-2008 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Changes to the way Holmake attempts to call it recursively. It should no longer call itself more than once in the same directory.
|
#
bc7ec069 |
|
29-Jul-2008 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Document existence of polyml port in the release notes, and also in the process of documenting recursive Holmake and the --no_prereqs option, add a feature to Holmake allowing NO_PREREQS to be an OPTION as well. Document the latter in the Description (also add some \index entries there). (We are going to have to merge the Holmake implementations if at all possible; having to update two versions is a pain.)
|
#
f8189378 |
|
04-Apr-2008 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Implement an idea of Magnus's. Holmake will now recursively attempt to make directories that are indicated as dependencies via -I flags or INCLUDES variables. This behaviour can be prevented via the --no_prereqs toggle on the command-line. The core system seems to build OK, but there may be some horrific consequence I've overlooked, so please test.
|
#
a78cd306 |
|
26-Feb-2008 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
* Changed Systeml to make it more compatible with the Basis Library, in particular, by using OS.Process rather than just Process, which is a MoscowML invention dating back to the times when it couldn't do nested structures * This has knock-on effects in a surprising number of places because Moscow ML doesn't know that OS.Process.status is the same type as Process.status. * Also invent a PreProcess structure just to store isSuccess which is in the most recent Basis, but not Moscow ML.
|
#
cbadbc47 |
|
23-May-2007 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Rework lexing of Holmakefiles so that the system doesn't choke on Joe's monster example. The result is simpler code (which is a bit worrying in itself), and one less dependency on mosmllex. It successfully reads all of the distribution's makefiles, as well as Joe's.
|
#
018ce367 |
|
06-Apr-2006 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Attempt to fix occasional bad behaviour of Holmake when unquoting files (most recently observed by Thomas). I'm not sure even this solution is perfect. Dealing with Interrupt by pretending it is a synchronous exception is almost certainly dubious, for all that it works "most of the time".
|
#
77d5bb1f |
|
13-Mar-2006 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix a problem identified by Tom Ridge with the --rebuild_deps flag to Holmake. Now the behaviour of this flag is to just call Holmake cleanDeps before proceeding with the rest of its build.
|
#
dc6146ba |
|
24-Nov-2005 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Stop Holmake's default behaviour (i.e., what you get if you just type Holmake) from trying to make files that start with "." This can still be forced by actually putting such files in the command-line.
|
#
dbff0b41 |
|
08-Sep-2005 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Last change I want to make before releasing; change the MOSMLDIR value to be the directory containing the mosml binaries, rather than being the parent of this directory. This should make life easier on those installations where the mosml install doesn't look like mosml +----- bin +----- lib (Some do not have bin and lib as siblings. The code using MOSMLDIR never looks for anything except bin underneath it.)
|
#
ed6d5ae3 |
|
14-Oct-2004 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Mention the --logging option in the usage output.
|
#
923ecab1 |
|
14-Jul-2004 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Drop the colon from the time-stamps; this causes grief on Windows.
|
#
dee9d917 |
|
14-Jul-2004 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Make holmake actually pay attention to the --logging flag, rather than just logging invariably.
|
#
1b091600 |
|
14-Jul-2004 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Update build and Holmake to store theory-build time information in time- stamped files. Also modify export_theory to support this. This should help us get some numbers on the effectiveness or otherwise of changes to the kernel. Document the new option to Holmake in the DESCRIPTION.
|
#
f2630fbd |
|
03-Mar-2004 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix for the bug that saw file-names with spaces recorded in bogus fashion in .HOLMK .d files. Now, spaces there are escaped with back-slashes.
|
#
933e7264 |
|
29-Feb-2004 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Implement and document a new option flag for Holmakefiles, to make it easier to automatically apply the --qof flag.
|
#
c6abcd9c |
|
24-Sep-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix a very minor bug so that Holmake doesn't say "nothing to be done for foo" immediately after having done a slew of stuff to build foo.
|
#
de85d519 |
|
22-Sep-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Keith pointed out that we probably wanted binary copy under Windows, and that you got this with the /b flag.
|
#
22a6c527 |
|
19-Sep-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Provide a method for moving and copying files from within Holmake that is OS-independent. Will document in DESCRIPTION on Monday, but I'm going home.
|
#
af709bc9 |
|
02-Jul-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix for a problem Konrad identified with the way that Holmake was protecting its built-in variables (MOSMLCOMP etc). Now Holmake doesn't protect variables that may be used in situations where they are concatenated with others, but does protect those that will be used on their own (such as MOSMLC etc). This requires the provision of a protect function in make-files, so this is documented in the DESCRIPTION. I think things should be right, but please check that this works, particularly anyone on Windows!
|
#
83fca931 |
|
01-Jul-2003 |
Konrad Slind <konrad.slind@gmail.com> |
Change to winNT systeml so that "protect" isn't so protective. What works for Unix doesn't seem to usually work for Windows.
|
#
31751c53 |
|
25-Feb-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Tweak to automatic dependency analysis: when about to call Holdep, pass in not only those targets explicitly mentioned in any Holmakefile, but also those files that we know how to make from these using the standard implicit rules. These files are then allowed to appear as dependencies when Holdep calculates them.
|
#
963e896d |
|
02-Feb-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Failing a catastrophic bug, this should be my last Holmake check-in for a while. This fixes the behaviour when a Holmakefile contains multiple rules for the same target. If there is more than one rule with accompanying commands, then the later rule takes precedence and earlier command-accompanied rules are ignored. However, it is always OK to have rules that specify just dependencies. These dependencies are merged together and added to the last command-accompanied rule, if there is one, or are merged together and left as they are (without commands).
|
#
8ba070a4 |
|
29-Jan-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Edging ever closer to a complete re-implementation of GNU make with HOL-shaped knobs on. :-) Added subst and if built-in function. I actually need the former for my C stuff (believe it or not). Still to do: handle multiple instances of the same target correctly.
|
#
ded888f8 |
|
29-Jan-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Changes in diagnostics, and tidying up of this code. GNU make mimicry taken to ridiculous lengths.
|
#
99ba5d83 |
|
29-Jan-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
More GNU make mimicry: - and @ characters can be duplicated endlessly at the start of a makefile's command-line (multiple instances are idempotent).
|
#
c4a88e48 |
|
29-Jan-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Some code reorganisation, plus: * if there is a "clean" target in the Holmakefile, then this takes priority over the native "clean" functionality. * fixed a bug in the treatment of the initial - and @ characters on command-lines within a Makefile. (Caused in turn by the decision to support HOLMOSMLC and friends as variables, even in the absence of enclosing $(...) syntax.)
|
#
fd5a55a3 |
|
29-Jan-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
If no_sigobj is called for, either on the command-line or within a Holmakefile, then make this cause no_overlay as well.
|
#
8b73d6c5 |
|
28-Jan-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Previously, I had a slightly ugly hack in place to stop failing theories attempting to build twice: I claimed that Theory.sig files depended on Theory.sml files (i.e., that to build one of the former, you needed to just one of the latter). This was a bit of a perversion of the truth, and I now have a better way of dealing with things. So, my code needs to change. I thought I'd made the appropriate change, but it failed. Looking at my code, I couldn't see how it should work, nor how the even older, pre-hack, code worked. So, here's another fix.
|
#
5fa0057d |
|
28-Jan-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Close a directory stream.
|
#
b044ad34 |
|
28-Jan-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fairly drastic change to the way in which Holmake interprets Holmakefiles. These can now contain arbitrary variable definitions and references, just like in normal make-files. Rules can also use have multiple targets, and the special variables $< and $@ have the appropriate meaning. These are Feature Requests 597666 and 597668. I will attempt to document the changes more thoroughly in the DESCRIPTION.
|
#
455f2b6e |
|
08-Nov-2002 |
Konrad Slind <konrad.slind@gmail.com> |
Fixes so that Holmake looks at bin/quote-filter.exe on w2k, instead of bin/quote-filter.
|
#
7ec6cef3 |
|
08-Nov-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Can now use $(VARNAME) references anywhere inside a Holmakefile. At the moment, may only refer to two known variables HOLDIR and SIGOBJ, but the intention is to allow users to define their own variables. This is useful for constructing rules that depend on the mkword executable, which lives within the source tree, and for referring to theories that live in SIGOBJ.
|
#
84843bd7 |
|
30-Sep-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Removed long-standing silliness that saw Holmake blessed with its own version number.
|
#
55982dcb |
|
30-Sep-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Modified Holmake to support a -i (or --interactive) command-line flag. (This is feature request #611879.) Modified documentation to reflect this and slightly updated some other things in the Description that caught my eye.
|
#
947512f9 |
|
19-Sep-2002 |
Keith Wansbrough <keith@lochan.org> |
Fix bootstrapping bug: Holmake should use unquote on every file *only if unquote exists*. Otherwise, it should cross its fingers and hope. Oops!
|
#
db33f46b |
|
20-Aug-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Revisions to make the documentation and the behaviour conform. I think the behaviour is now clear.
|
#
56ddca6d |
|
20-Aug-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Slight functionality update, making the behaviour emulate what I see (GNU) make do when the user calls for a file to be made, that file is present, but there is nothing in the Makefile to say what to do with that file. Also wrote a comment to clarify something that was confusing me a great deal.
|
#
b878eadc |
|
23-Apr-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fixed a long-standing bug that would occasionally cause Holmake to try to build a failing theory twice. It didn't entirely realise that a failed attempt to build fooTheory.sig meant that an attempt to build fooTheory.sml would also fail. Now this is treated by encoding an explicit dependency of fooTheory.sig on fooTheory.sml. This makes the algorithm try to build fooTheory.sig by first building fooTheory.sml, and if this succeeds, it does nothing, because it's happy that having the latter means having the former. This scheme fixes the observed bug, but isn't quite right: if you delete a Theory.sig file but keep the Theory.sml file in place, Holmake won't rebuild them both. I'm thinking about how to fix this, but it doesn't seem a likely error. Nor is it hard to work around: simply delete the Theory.sml file.
|
#
bea501b3 |
|
21-Apr-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
When Holmake is run without any command-line arguments, it scans the directory to look for likely targets to build, and also checks the Holmakefile if any. This means that the order in which targets are attempted used to be done in a way that was dependent on the local file-system's internal directory structure. Now, the list is sorted, which should ensure reproducible behaviour.
|
#
9f3056cf |
|
16-Apr-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fairly radical change. Now all of the "build-time" constants (such as HOLDIR, MOSMLDIR and things like that) have been moved into the Systeml file that is built and compiled as practically the first thing that configure.sml does. This change means that we don't need to specially generate Holmake.sml, Globals.sml, makebase.sml or build.sml. All of these files can now just refer to Systeml. (In order to bring this about for build.sml, I've also shifted the SRCDIRs variable to build.sml. It had been in configure.sml just so that it could be copied into build.)
|