This PR is an extensive revamp of the loadup scripts including the following changes:
New omnibus script scripts/loadup which is meant to be the single interface to the loadup system. The man page for this script can be found here: https://online.interlisp.org/downloads/man_loadup.html
The new loadup script allows you to restart the loadup process from any particular stage - init, mid, lisp, full, etc. For example, you can start the loadup from an existing init-mid.sysout and have it run thru creating the full.sysout. The call for this would be: ./scripts/loadup --target full --start mid. (See man page for all options to the loadup script as well as examples of their use.)
In order to facilitate this target/start feature, the loadup workdir has been moved to a single location per MEDLEYDIR, specifically to MEDLEDIR/loadups/build. (Previously, it was different for every invocation in /tmp/loadups-$$)
When restarting the loadup from, say, lisp.sysout, the script will look for the lisp.sysout to start from first in MEDLEYDIR/loadups and then in MEDLEYDIR/loadups/build. If the starting sysout is found in loadups, it will be copied (non-versioned) into the workdir before doing the loadup, overwriting whatever is already there.
There is now a lock (MEDLEYDIR/loadups/build/lock) that prevents concurrent loadups from running (and very occassionally needs to be manually removed).
At successful completion of a loadup run, the created .sysouts and other files are moved into the loadups directory as before (unless the --nocopy option is specified). BUT the build files - including the dribble files - are left in the working directory (i.e., in loadups/build)
The loadup script now supersedes the former loadup-all.sh, loadup-full.sh and loadup-db.sh scripts. But I have left in their place scripts that call the new loadup script with the right options. loadup-all.sh is now just a link to the single loadup script, who's options are (hopefully) a superset of loadup-all.sh.
All of the worker scripts (e.g., loadup-full-from-lisp.sh) have been updated to use better mechanisms to catch and report errors, including the new (LOGOUT T EXITCODE) feature. The main script has been updated to better catch errors in these worker scripts when they do happen.
You can now specify a MAIKODIR for the loadup, either using the MAIKODIR env variable or thru the --maikodir command line option.
All of the loadup scripts have been moved down one level into scripts/loadups. But there are links from the scripts/ directory into the scripts/loadups directory for all of the top-level legacy scripts - loadup-all.sh, loadup-db.sh, loadup-full.sh so that you do not have to change your own scripts unless you need to use some of the new features. More importantly, none of the github workflows need to change right now.
The SYSOUTCOMMITS mechanism had to be changed since there is no guarantee that e.g., lisp.sysout and full.sysout are built on the same commit. So (ASSOC 'MEDLEY SYSOUTCOMMITS) now returns an assoc list of sysouts, e.g., ((INIT "aaa")(LISP "bbb")(FULL "ccc")(APPS "ddd")), showing the commits for the various layers of the loadup.
The new loadup scheme allows different sysouts to be created from different commits, so there is an issue with RDSYS (and RDSYS.LCOM) being out of sync with one or more of the sysout in loadups. RDSYS(.LCOM) are copied into library when ever a loadup of the Init stage completes successfully (unless the -nocopy option is specified). The only way to solve this issue when it arises is to do a complete loadup from starter.sysout to full.sysout (or apps.sysout) to ensure evrything is built on the same commit.
* Make medley.sh and its associated scripts POSIX compliant - i.e., debashify them
* Added config file for medley script, medley now reads from config file and prepends arguemnts from file to the copmmand line arguments
* WIP. Updates to medley.sh scripts.
* WIP. More on medley.sh and friends update.
* WIP. Medley redo
* WIP. Debugging new medley scripts
* Renamed medley.sh/medley.command to be medley_main.sh. Added code to compile single medley.sh/medley.command script by inlining all of the source'd medley_*.sh files.
* Add temp fix for cygwin Issue #1685
* Minor fixup to medley_utils.sh; take debug code out out of run_medley
* Add README to medley directory to explain how to compile medley.sh (medley.command).
* Ooops. This time really adding the README file to the medley directory explaining how to compile medley.sh (medley.command)
* Update loadup- scripts to use updated medley scripts rather than run-medley
* Fix default setting of $config_file in medley_configfile.sh
* Redo medley compile to pick up last commikt
* Fixing how maiko exe is found and sysout argument error processing - both issues discovered testing on MAcOS
* In medley_configfile, replace echo with printf %s because echo - does not work in zsh
* Supress config file on loadups calls to Medley
* Add oldschool support (use original run-medley) to loadup scripts; improve FAILURE detection so loadup-all won't proceed once one of the components fails
* Add in medley_args.sh add -prog as synonym to --maikoprog to aid in loadup scripts; in medley_run.sh script try to get a good exit code for call to maiko, especially useful for loadup scripts
* Run loadup scripts thru shellcheck and update as necessary to make Posix compliant
* Get rid of -nt comparisons in loadup-setup.sh because they are not posix-complaint. They were not really needed anyway.
* Removing (for now) use of lde exit codes to decide FAILURE case in loadup-setup.sh since exit codes from lde apperar to be inverted on MacOS.
* Update medley man page. Add - functionality to more args is medley_args.sh
* Compile medley.sh with changes from last commit
* Ooops. Left medley_args.sh changes out of last commit. Rectifying here.
* Added support for LDEKEYBOARDTYPE to medley_run to match run-medley
* Add to medley.sh: auto numbered id's and titles with id's inserted
* Cleanup some shellcheck issues in medley_main.sh
* fix maiko args -nh-xxx. were -nethub-xxxx. In medley_run.sh
* Overhaul handling of pass-on args to manage the quoting issues prevelant in the previous implementation
* Cleanup minor shellcheck issues in medley_*.sh scripts
* Add underscore as character allowed in ids - makes things clearer when id used with +
* Add a self-numbering id to medley calls in loadup scripts
* Put workaround in medley_run.sh for Issue #1702 - issues with sysout arg processing in Maiko
* Oops. messed up LDESRCSYSOUT in last commit. should be LDESOURCESYSOUT
* compile medley.sh
Each step of the loadup now starts with a 'touch' to create a timestamp. At the end of the loadup, it makes sure the files needed by the next step are newer. This will catch some of the problems.