diff --git a/scripts/copy-all.sh b/scripts/copy-all.sh index aebec2b44..883ef3a53 100755 --- a/scripts/copy-all.sh +++ b/scripts/copy-all.sh @@ -1,4 +1,5 @@ #!/bin/sh +# shellcheck disable=SC2086 main() { # shellcheck source=./loadup-setup.sh @@ -6,41 +7,54 @@ main() { echo ">>>>> START ${script_name}" - /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/full.sysout "${LOADUP_OUTDIR}" \ - | sed -e "s#${MEDLEYDIR}/##g" - /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/lisp.sysout "${LOADUP_OUTDIR}" \ - | sed -e "s#${MEDLEYDIR}/##g" - - if [ "${1}" = "-apps" ]; then - /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/apps.sysout "${LOADUP_OUTDIR}" \ - | sed -e "s#${MEDLEYDIR}/##g" - fi - - /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/whereis.hash "${LOADUP_OUTDIR}" \ - | sed -e "s#${MEDLEYDIR}/##g" - /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/exports.all "${LOADUP_OUTDIR}" \ - | sed -e "s#${MEDLEYDIR}/##g" - - /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/init.dribble "${LOADUP_OUTDIR}" \ - | sed -e "s#${MEDLEYDIR}/##g" - /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/lisp.dribble "${LOADUP_OUTDIR}" \ - | sed -e "s#${MEDLEYDIR}/##g" - /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/full.dribble "${LOADUP_OUTDIR}" \ - | sed -e "s#${MEDLEYDIR}/##g" - /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/whereis.dribble "${LOADUP_OUTDIR}" \ - | sed -e "s#${MEDLEYDIR}/##g" - - if [ "${1}" = "-apps" ]; then - /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/apps.dribble "${LOADUP_OUTDIR}" \ - | sed -e "s#${MEDLEYDIR}/##g" - fi - - - /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/RDSYS library \ - | sed -e "s#${MEDLEYDIR}/##g" - /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/RDSYS.LCOM library \ - | sed -e "s#${MEDLEYDIR}/##g" - + start=$1 + end=$2 + noaux="$3" + + if [ $start -le 3 ] && [ $end -ge 3 ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/lisp.sysout "${LOADUP_OUTDIR}" \ + | sed -e "s#${MEDLEYDIR}/##g" + fi + + + if [ $start -le 4 ] && [ $end -ge 4 ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/full.sysout "${LOADUP_OUTDIR}" \ + | sed -e "s#${MEDLEYDIR}/##g" + fi + + if [ $end -eq 5 ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/apps.sysout "${LOADUP_OUTDIR}" \ + | sed -e "s#${MEDLEYDIR}/##g" + fi + + if [ $end -eq 6 ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/lfg.sysout "${LOADUP_OUTDIR}" \ + | sed -e "s#${MEDLEYDIR}/##g" + fi + + if [ -z "$noaux" ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/whereis.hash "${LOADUP_OUTDIR}" \ + | sed -e "s#${MEDLEYDIR}/##g" + /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/exports.all "${LOADUP_OUTDIR}" \ + | sed -e "s#${MEDLEYDIR}/##g" + fi + + if [ -f "${LOADUP_WORKDIR}"/RDSYS ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/RDSYS "${MEDLEYDIR}/library" \ + | sed -e "s#${MEDLEYDIR}/##g" + fi + + if [ -f "${LOADUP_WORKDIR}"/RDSYS ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/cpv" "${LOADUP_WORKDIR}"/RDSYS.LCOM "${MEDLEYDIR}/library" \ + | sed -e "s#${MEDLEYDIR}/##g" + fi echo "<<<<< END ${script_name}" echo "" diff --git a/scripts/loadup-all.sh b/scripts/loadup-all.sh index 77d1fa999..a9e2d74f4 100755 --- a/scripts/loadup-all.sh +++ b/scripts/loadup-all.sh @@ -6,42 +6,173 @@ main() { # shellcheck source=./loadup-setup.sh . "${LOADUP_SCRIPTDIR}/loadup-setup.sh" - # look thru args looking to see if -apps, --apps, or -a was specified in args - apps="" - j=1 - jmax=$# - while [ "$j" -le "$jmax" ] - do - if [ "$(eval "printf %s \${${j}}")" = "-a" ] || \ - [ "$(eval "printf %s \${${j}}")" = "-apps" ] || \ - [ "$(eval "printf %s \${${j}}")" = "--apps" ] - then - apps="-apps" - break - fi + # process args + noaux="" + start=0 + start_s=init + start_sysout="" + end=4 + end_s=full + while [ "$#" -ne 0 ]; + do + case "$1" in + -n | -noaux | --noaux) + noaux=true + ;; + -g | -lfg | --lfg) + end=6 + end_s=lfg + ;; + -a | -apps | --apps) + end=5 + end_s=apps + ;; + -f | -full | --full | -4) + end=4 + end_s=full + ;; + -l | -lisp | --lisp | -3) + end=3 + end_s=lisp + ;; + -m | -mid | --mid | -2) + end=2 + end_s=mid + ;; + -i | -init | --init | -1) + end=1 + end_s=init + ;; + -s | -start | --start) + case "$2" in + s | scratch | 0) + start=0 + start_s=scratch + start_sysout=starter.sysout + ;; + i | init | 1) + start=1 + start_s=init + start_sysout=init.dlinit + ;; + m | mid | 2) + start=2 + start_s=mid + start_sysout=init-mid.sysout + ;; + l | lisp | 3) + start=3 + start_s=lisp + start_sysout=lisp.sysout + ;; + f | full | 4) + start=4 + start_s=full + start_sysout=full.sysout + ;; + *) + echo "Error: unknown parameter to --start (-s) flag: $2" + echo "Exiting" + exit 1 + ;; + esac + shift + ;; + *) + echo "Error: unknown flag: $1" + echo "Exiting" + exit 1 + ;; + esac + shift done - # Do loadup components - /bin/sh "${LOADUP_SCRIPTDIR}/loadup-init.sh" \ - && /bin/sh "${LOADUP_SCRIPTDIR}/loadup-mid-from-init.sh" \ - && /bin/sh "${LOADUP_SCRIPTDIR}/loadup-lisp-from-mid.sh" \ - && /bin/sh "${LOADUP_SCRIPTDIR}/loadup-full-from-lisp.sh" \ - && { \ - if [ -n "${apps}" ]; \ - then \ - /bin/sh "${LOADUP_SCRIPTDIR}/loadup-apps-from-full.sh"; \ - fi; \ - } \ - && /bin/sh "${LOADUP_SCRIPTDIR}/loadup-aux.sh" \ - && /bin/sh "${LOADUP_SCRIPTDIR}/copy-all.sh" "${apps}" - - if [ $? -eq 0 ] - then - echo "+++++ loadup-all.sh: SUCCESS +++++" - else - echo "----- loadup-all.sh: FAILURE -----" + # check arguments + if [ $end -le $start ] + then + echo "Error: The final stage ($end_s) comes before or is the same as the start stage ($start_s)" + echo "Exiting" + exit 1 + fi + + # find and place starting sysout + if [ $start -gt 0 ] + then + if [ ! -f "${LOADUP_WORKDIR}"/"${start_sysout}" ] + then + if [ -f "${LOADUP_OUTDIR}"/"${start_sysout}" ] + then + cp -p "${LOADUP_OUTDIR}"/"${start_sysout}" "${LOADUP_WORKDIR}"/"${start_sysout}" + else + echo "Error: Cannot find starting sysout ($start_sysout) in either ${LOADUP_WORKDIR} or ${LOADUP_WORKDIR}" + echo "Exiting" + exit 1 + fi + fi + fi + + # Do individual loadups as requested + if [ $start -lt 1 ] && [ $end -ge 1 ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/loadup-init.sh" + exit_if_failure $? + fi + + if [ $start -lt 2 ] && [ $end -ge 2 ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/loadup-mid-from-init.sh" + exit_if_failure $? + fi + + if [ $start -lt 3 ] && [ $end -ge 3 ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/loadup-lisp-from-mid.sh" + exit_if_failure $? fi + aux_not_run=true + if [ $start -lt 4 ] && [ $end -ge 4 ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/loadup-full-from-lisp.sh" + exit_if_failure $? + if [ -z "$noaux" ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/loadup-aux.sh" + exit_if_failure $? + aux_not_run="" + fi + fi + + if [ $end -eq 5 ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/loadup-apps-from-full.sh" + exit_if_failure $? + fi + + if [ $end -eq 6 ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/loadup-lfg-from-full.sh" + exit_if_failure $? + fi + + # Nothing to copy to loadups until we've produced lisp.sysout + if [ $end -ge 3 ] + then + /bin/sh "${LOADUP_SCRIPTDIR}/copy-all.sh" $start $end "$aux_not_run" + exit_if_failure $? + fi + + echo "+++++ loadup-all.sh: SUCCESS +++++" + exit 0 + +} + +exit_if_failure() { + if [ "$1" -ne 0 ] + then + echo "----- loadup-all.sh: FAILURE -----" + exit 1 + fi } # shellcheck disable=SC2164,SC2034 diff --git a/scripts/loadup-apps-from-full.sh b/scripts/loadup-apps-from-full.sh index e698aa860..06476a056 100755 --- a/scripts/loadup-apps-from-full.sh +++ b/scripts/loadup-apps-from-full.sh @@ -32,38 +32,37 @@ main() { exit 1 fi - git_commit_ID "${NOTECARDSDIR}" - NOTECARDS_COMMIT_ID="${COMMIT_ID}" - export NOTECARDS_COMMIT_ID + git_commit_ID "${NOTECARDSDIR}" + NOTECARDS_COMMIT_ID="${COMMIT_ID}" + export NOTECARDS_COMMIT_ID cat >"${cmfile}" <<-"EOF" " (PROGN (IL:MEDLEY-INIT-VARS 'IL:GREET) - (IL:DRIBBLE (IL:CONCAT (QUOTE {DSK})(IL:UNIX-GETENV (QUOTE LOADUP_WORKDIR))(IL:L-CASE (QUOTE /apps.dribble)))) - (IL:LOAD (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV(QUOTE ROOMSDIR))(QUOTE /ROOMS)) 'IL:SYSLOAD) - (IL:LOAD (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV(QUOTE NOTECARDSDIR))(QUOTE |/system/NOTECARDS.LCOM|)) 'IL:SYSLOAD) - (IL:LOAD (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV(QUOTE CLOSDIR))(QUOTE /DEFSYS.DFASL)) 'IL:SYSLOAD) - (IL:LOAD (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV(QUOTE MEDLEYDIR))(QUOTE |lispusers/BUTTONS.LCOM|)) 'IL:SYSLOAD) - (IL:LOAD (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV (QUOTE LOADUP_SOURCEDIR)) (QUOTE /LOADUP-APPS.LCOM)) 'IL:SYSLOAD) - (IL:PRINT (IL:UNIX-GETENV (QUOTE NOTECARDS_COMMIT_ID))) - (IL:PUTASSOC (QUOTE IL:MEDLEY) (LIST (IL:UNIX-GETENV (QUOTE LOADUP_COMMIT_ID))) IL:SYSOUTCOMMITS) - (IL:PUTASSOC (QUOTE IL:NOTECARDS) (LIST (IL:UNIX-GETENV (QUOTE NOTECARDS_COMMIT_ID))) IL:SYSOUTCOMMITS) - (IL:PRINT IL:SYSOUTCOMMITS) - (IL:HARDRESET) + (IL:DRIBBLE (IL:CONCAT '{DSK} (IL:UNIX-GETENV 'LOADUP_WORKDIR) (IL:L-CASE '/apps.dribble))) + (IL:LOAD (IL:CONCAT '{DSK} (IL:UNIX-GETENV 'ROOMSDIR) '/ROOMS) 'IL:SYSLOAD) + (IL:LOAD (IL:CONCAT '{DSK} (IL:UNIX-GETENV 'NOTECARDSDIR) '/system/NOTECARDS.LCOM) 'IL:SYSLOAD) + (IL:LOAD (IL:CONCAT '{DSK} (IL:UNIX-GETENV 'CLOSDIR) '/DEFSYS.DFASL) 'IL:SYSLOAD) + (IL:LOAD (IL:CONCAT '{DSK} (IL:UNIX-GETENV 'MEDLEYDIR) 'lispusers/BUTTONS.LCOM) 'IL:SYSLOAD) + (IL:LOAD (IL:CONCAT '{DSK} (IL:UNIX-GETENV 'LOADUP_SOURCEDIR) '/LOADUP-APPS.LCOM) 'IL:SYSLOAD) ) - SHH (PROGN - (IL:ENDLOADUP) - (CLOS::LOAD-CLOS) (IL:|Apps.LOADUP|) + (CLOS::LOAD-CLOS) + ) + (PROGN + (IL:PUTASSOC 'IL:NOTECARDS + (LIST (IL:UNIX-GETENV 'LOADUP_COMMIT_ID)) + (CADR (ASSOC 'IL:MEDLEY IL:SYSOUTCOMMITS))) + (IL:PUTASSOC 'IL:NOTECARDS (LIST (IL:UNIX-GETENV 'NOTECARDS_COMMIT_ID)) IL:SYSOUTCOMMITS) (IL:DRIBBLE) + (IL:ENDLOADUP) (IL:MAKESYS - (IL:CONCAT (QUOTE {DSK})(IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR))(IL:L-CASE (QUOTE /apps.sysout))) + (IL:CONCAT '{DSK} (IL:UNIX-GETENV 'LOADUP_WORKDIR) (IL:L-CASE '/apps.sysout)) :APPS) ) - (IL:LOGOUT T) " EOF diff --git a/scripts/loadup-aux.sh b/scripts/loadup-aux.sh index 91c3b6ca0..48d1cb656 100755 --- a/scripts/loadup-aux.sh +++ b/scripts/loadup-aux.sh @@ -11,21 +11,20 @@ main() { cat >"${cmfile}" <<-"EOF" " (PROG - ((WORKDIR (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV (QUOTE LOADUP_WORKDIR)) (QUOTE /)))) + ((WORKDIR (IL:CONCAT '{DSK} (IL:UNIX-GETENV 'LOADUP_WORKDIR) '/))) (IL:MEDLEY-INIT-VARS) - (IL:LOAD(QUOTE MEDLEY-UTILS)) - (DRIBBLE (QUOTE {DSK}FOOBAR)) - (IL:MAKE-EXPORTS-ALL (IL:CONCAT WORKDIR (IL:L-CASE (QUOTE exports.all)))) + (IL:LOAD 'MEDLEY-UTILS) + (DRIBBLE (IL:CONCAT WORKDIR (IL:L-CASE 'exports-all.dribble))) + (IL:MAKE-EXPORTS-ALL (IL:CONCAT WORKDIR (IL:L-CASE 'exports.all))) (DRIBBLE) - (IL:PUTASSOC (QUOTE IL:MEDLEY) (LIST (IL:UNIX-GETENV (QUOTE LOADUP_COMMIT_ID))) IL:SYSOUTCOMMITS) (IL:MAKE-WHEREIS-HASH - (IL:CONCAT WORKDIR (IL:L-CASE (QUOTE whereis.dribble))) - (IL:CONCAT WORKDIR (IL:L-CASE (QUOTE whereis.hash-tmp))) - (IL:CONCAT WORKDIR (IL:L-CASE (QUOTE whereis.hash))) - NIL NIL + (IL:CONCAT WORKDIR (IL:L-CASE 'whereis.dribble)) + (IL:CONCAT WORKDIR (IL:L-CASE 'whereis.hash-tmp)) + (IL:CONCAT WORKDIR (IL:L-CASE 'whereis.hash)) ) - (IL:LOGOUT T) ) + (IL:LOGOUT T) + " EOF diff --git a/scripts/loadup-db-from-full.sh b/scripts/loadup-db-from-full.sh index 55ab287b0..74da61399 100755 --- a/scripts/loadup-db-from-full.sh +++ b/scripts/loadup-db-from-full.sh @@ -17,18 +17,21 @@ main() { " (PROG - ((WORKDIR (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV (QUOTE LOADUP_WORKDIR)) (QUOTE /)))) - (SETQ IL:SYSOUTCOMMITS (LIST (LIST (QUOTE IL:MEDLEY) (IL:UNIX-GETENV (QUOTE LOADUP_COMMIT_ID))))) + ((WORKDIR (IL:CONCAT \"{DSK}\" (IL:UNIX-GETENV \"LOADUP_WORKDIR\") \"/\"))) + (IL:PUTASSOC (QUOTE IL:FULLER) + (LIST (IL:UNIX-GETENV \"LOADUP_COMMIT_ID\")) + (ASSOC (QUOTE IL:MEDLEY) IL:SYSOUTCOMMITS)) (IL:MEDLEY-INIT-VARS) (IL:FILESLOAD MEDLEY-UTILS) - (SETQ IL:DIRECTORIES (CONS (IL:UNIX-GETENV (QUOTE LOADUP_SOURCEDIR)) IL:DIRECTORIES)) + (SETQ IL:DIRECTORIES (CONS (IL:UNIX-GETENV \"LOADUP_SOURCEDIR\") IL:DIRECTORIES)) (IL:MAKE-FULLER-DB - (IL:CONCAT WORKDIR (IL:L-CASE (QUOTE fuller.dribble))) - (IL:CONCAT WORKDIR (IL:L-CASE (QUOTE fuller.database))) - (IL:CONCAT WORKDIR (IL:L-CASE (QUOTE fuller.sysout))) + (IL:CONCAT WORKDIR \"fuller.dribble\") + (IL:CONCAT WORKDIR \"fuller.database\") + (IL:CONCAT WORKDIR \"fuller.sysout\") ) - (IL:LOGOUT T) ) + (IL:LOGOUT T) + " EOF diff --git a/scripts/loadup-full-from-lisp.sh b/scripts/loadup-full-from-lisp.sh index 34b3ae46e..b31f4a8b5 100755 --- a/scripts/loadup-full-from-lisp.sh +++ b/scripts/loadup-full-from-lisp.sh @@ -10,17 +10,17 @@ main() { " (PROGN - (IL:LOAD (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV (QUOTE LOADUP_SOURCEDIR))(QUOTE /LOADUP-FULL.LCOM))) - (IL:LOADUP-FULL (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR))(IL:L-CASE (QUOTE /full.dribble)))) - (IL:PUTASSOC (QUOTE IL:MEDLEY) (LIST (IL:UNIX-GETENV (QUOTE LOADUP_COMMIT_ID))) IL:SYSOUTCOMMITS) - (IL:HARDRESET) - ) - SHH - (PROGN + (IL:LOAD (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV (QUOTE LOADUP_SOURCEDIR)) (QUOTE /LOADUP-FULL.LCOM))) + (IL:LOADUP-FULL (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV (QUOTE LOADUP_WORKDIR)) + (IL:L-CASE (QUOTE /full.dribble))) + (IL:PUTASSOC (QUOTE IL:FULL) + (LIST (IL:UNIX-GETENV (QUOTE LOADUP_COMMIT_ID))) + (CADR (ASSOC (QUOTE IL:MEDLEY) IL:SYSOUTCOMMITS))) (IL:ENDLOADUP) - (IL:MAKESYS (IL:CONCAT (QUOTE {DSK})(IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR))(IL:L-CASE (QUOTE /full.sysout))) :FULL)) - (IL:LOGOUT T) + (IL:MAKESYS (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV (QUOTE LOADUP_WORKDIR)) (IL:L-CASE (QUOTE /full.sysout))) + :FULL)) ) + (IL:LOGOUT T) " EOF diff --git a/scripts/loadup-full.sh b/scripts/loadup-full.sh index 3df741711..587f62a72 100755 --- a/scripts/loadup-full.sh +++ b/scripts/loadup-full.sh @@ -4,11 +4,7 @@ main() { # shellcheck source=./loadup-setup.sh . "${LOADUP_SCRIPTDIR}/loadup-setup.sh" - /bin/sh "${LOADUP_SCRIPTDIR}/loadup-init.sh" \ - && /bin/sh "${LOADUP_SCRIPTDIR}/loadup-mid-from-init.sh" \ - && /bin/sh "${LOADUP_SCRIPTDIR}/loadup-lisp-from-mid.sh" \ - && /bin/sh "${LOADUP_SCRIPTDIR}/loadup-full-from-lisp.sh" \ - && /bin/sh "${LOADUP_SCRIPTDIR}/copy-full.sh" ; + /bin/sh "${LOADUP_SCRIPTDIR}/loadup-all.sh" --full --noaux # shellcheck disable=SC2181 if [ $? -eq 0 ]; diff --git a/scripts/loadup-init.sh b/scripts/loadup-init.sh index 737f32f90..9da00c150 100755 --- a/scripts/loadup-init.sh +++ b/scripts/loadup-init.sh @@ -12,7 +12,6 @@ main() { (SETQ MEDLEYDIR NIL) (LOAD (CONCAT (UNIX-GETENV "MEDLEYDIR") "/sources/MEDLEYDIR.LCOM")) (MEDLEY-INIT-VARS) - (PUTASSOC (QUOTE MEDLEY) (LIST (UNIX-GETENV (QUOTE LOADUP_COMMIT_ID))) SYSOUTCOMMITS) (CNDIR (UNIX-GETENV "LOADUP_WORKDIR")) (DRIBBLE "init.dribble") @@ -29,18 +28,17 @@ main() { (LOADUP-SOURCE-DIR (CONCAT "{DSK}" (UNIX-GETENV "LOADUP_SOURCEDIR") "/")) ) (SETQ DIRECTORIES (CONS LOADUP-SOURCE-DIR DIRECTORIES)) - (PRINT (DATE)) - (PRINT (SETQ SYSOUTCOMMITS (LIST (LIST (QUOTE MEDLEY) (UNIX-GETENV (QUOTE LOADUP_COMMIT_ID)))))) + (PRINT (DATE)) + (PRINT (SETQ SYSOUTCOMMITS (LIST (LIST 'MEDLEY (LIST (LIST 'INIT (UNIX-GETENV 'LOADUP_COMMIT_ID))))))) (RESETLST (RESETSAVE OK.TO.MODIFY.FNS T) (MAKEINITGREET (CONCAT WORKDIR "init.sysout") (CONCAT WORKDIR "init.dlinit")) ) ) - (DRIBBLE) (LOGOUT T) STOP EOF - + run_medley "${LOADUP_SOURCEDIR}/starter.sysout" loadup_finish "init.dlinit" "init.*" "RDSYS*" "I-NEW*" diff --git a/scripts/loadup-lfg-from-full.sh b/scripts/loadup-lfg-from-full.sh new file mode 100755 index 000000000..9ba3db282 --- /dev/null +++ b/scripts/loadup-lfg-from-full.sh @@ -0,0 +1,169 @@ +#!/bin/sh + +main() { + # shellcheck source=./loadup-setup.sh + . "${LOADUP_SCRIPTDIR}/loadup-setup.sh" + + loadup_start + + if [ -z "${LFGDIR}" ] + then + export LFGDIR="${MEDLEYDIR}/lfg" + if [ ! -e "${lfg}" ] + then + LFGDIR=$(cd "${MEDLEYDIR}/../" && pwd)/lfg + if [ ! -e "${LFGDIR}" ] + then + LFGDIR=$(cd "${MEDLEYDIR}/../../" && pwd)/lfg + if [ ! -e "${LFGDIR}" ] + then + LFGDIR="" + fi + fi + fi + fi + + if [ -z "${LFGDIR}" ] + then + echo "Error: Cannot find the LFG directory" + echo "It should be located at ${MEDLEYDIR}/lfg, ${MEDLEYDIR}/../lfg, or" + echo "${MEDLEYDIR}/../../lfg. But its not." + echo "Exiting" + exit 1 + fi + + git_commit_ID "${LFGDIR}" + LFG_COMMIT_ID="${COMMIT_ID}" + export LFG_COMMIT_ID + + cat >"${cmfile}" <<-"EOF" + " + + (PROGN + (IL:MEDLEY-INIT-VARS 'IL:GREET) + (IL:DRIBBLE (IL:CONCAT '{DSK} (IL:UNIX-GETENV 'LOADUP_WORKDIR) (IL:L-CASE '/lfg.dribble))) + (IL:LOAD (IL:CONCAT '{DSK} (IL:UNIX-GETENV 'LFGDIR) '/LFG-LOADUP.LCOM) 'IL:SYSLOAD) + (IL:LOADUP-LFG (IL:CONCAT '{DSK} (IL:UNIX-GETENV 'LFGDIR))) + (IL:PUTASSOC 'IL:LFG + (LIST (IL:UNIX-GETENV 'LOADUP_COMMIT_ID)) + (CADR (ASSOC 'IL:MEDLEY IL:SYSOUTCOMMITS))) + (IL:PUTASSOC 'IL:LFG (LIST (IL:UNIX-GETENV 'LFG_COMMIT_ID)) IL:SYSOUTCOMMITS) + (IL:PRINT IL:SYSOUTCOMMITS) + (IL:DRIBBLE) + (IL:ENDLOADUP) + (IL:MAKESYS + (IL:CONCAT '{DSK} (IL:UNIX-GETENV 'LOADUP_WORKDIR) (IL:L-CASE '/lfg.sysout)) + :LFG + ) + ) + (IL:LOGOUT T) + + " + EOF + + run_medley "${LOADUP_WORKDIR}/full.sysout" + + loadup_finish "lfg.sysout" "lfg.*" +} + + +# shellcheck disable=SC2164,SC2034 +if [ -z "${LOADUP_SCRIPTDIR}" ] +then + # + # + # Some functions to determine what directory this script is being executed from + # + # + get_abs_filename() { + # $1 : relative filename + echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")" + } + + # This function taken from + # https://stackoverflow.com/questions/29832037/how-to-get-script-directory-in-posix-sh + rreadlink() ( + + # Execute this function in a *subshell* to localize variables and the effect of `cd`. + + target=$1 + fname= + targetDir= + CDPATH= + + # Try to make the execution environment as predictable as possible: + # All commands below are invoked via `command`, so we must make sure that `command` + # itself is not redefined as an alias or shell function. + # (Note that command is too inconsistent across shells, so we don't use it.) + # `command` is a *builtin* in bash, dash, ksh, zsh, and some platforms do not even have + # an external utility version of it (e.g, Ubuntu). + # `command` bypasses aliases and shell functions and also finds builtins + # in bash, dash, and ksh. In zsh, option POSIX_BUILTINS must be turned on for that + # to happen. + { \unalias command; \unset -f command; } >/dev/null 2>&1 + [ -n "$ZSH_VERSION" ] && options[POSIX_BUILTINS]=on # make zsh find *builtins* with `command` too. + + while :; do # Resolve potential symlinks until the ultimate target is found. + [ -L "$target" ] || [ -e "$target" ] || { command printf '%s\n' "ERROR: '$target' does not exist." >&2; return 1; } + command cd "$(command dirname -- "$target")" # Change to target dir; necessary for correct resolution of target path. + fname=$(command basename -- "$target") # Extract filename. + [ "$fname" = '/' ] && fname='' # !! curiously, `basename /` returns '/' + if [ -L "$fname" ]; then + # Extract [next] target path, which may be defined + # *relative* to the symlink's own directory. + # Note: We parse `ls -l` output to find the symlink target + # which is the only POSIX-compliant, albeit somewhat fragile, way. + target=$(command ls -l "$fname") + target=${target#* -> } + continue # Resolve [next] symlink target. + fi + break # Ultimate target reached. + done + targetDir=$(command pwd -P) # Get canonical dir. path + # Output the ultimate target's canonical path. + # Note that we manually resolve paths ending in /. and /.. to make sure we have a normalized path. + if [ "$fname" = '.' ]; then + command printf '%s\n' "${targetDir%/}" + elif [ "$fname" = '..' ]; then + # Caveat: something like /var/.. will resolve to /private (assuming /var@ -> /private/var), i.e. the '..' is applied + # AFTER canonicalization. + command printf '%s\n' "$(command dirname -- "${targetDir}")" + else + command printf '%s\n' "${targetDir%/}/$fname" + fi + ) + + get_script_dir() { + + # call this with $0 (from main script) as its (only) parameter + # if you need to preserve cwd, run this is a subshell since + # it can change cwd + + # set -x + + local_SCRIPT_PATH="$( get_abs_filename "$1" )"; + + while [ -h "$local_SCRIPT_PATH" ]; + do + cd "$( dirname -- "$local_SCRIPT_PATH"; )"; + local_SCRIPT_PATH="$( rreadlink "$local_SCRIPT_PATH" )"; + done + + cd "$( dirname -- "$local_SCRIPT_PATH"; )" > '/dev/null'; + local_SCRIPT_PATH="$( pwd; )"; + + # set +x + + echo "${local_SCRIPT_PATH}" + } + + # end of script directory functions + ############################################################################### + + # figure out the script dir + LOADUP_SCRIPTDIR="$(get_script_dir "$0")" + export LOADUP_SCRIPTDIR + +fi + +main "$@" diff --git a/scripts/loadup-lisp-from-mid.sh b/scripts/loadup-lisp-from-mid.sh index f7b679b02..65950e010 100755 --- a/scripts/loadup-lisp-from-mid.sh +++ b/scripts/loadup-lisp-from-mid.sh @@ -5,24 +5,23 @@ main() { . "${LOADUP_SCRIPTDIR}/loadup-setup.sh" loadup_start - + cat >"${cmfile}" <<-"EOF" " (PROGN - (LOAD (CONCAT (QUOTE {DSK}) (UNIX-GETENV (QUOTE MEDLEYDIR)) (QUOTE /sources/MEDLEYDIR.LCOM))) + (LOAD (CONCAT %"{DSK}%" (UNIX-GETENV %"MEDLEYDIR%") %"/sources/MEDLEYDIR.LCOM%")) (MEDLEY-INIT-VARS) - (LOAD (CONCAT (QUOTE {DSK}) (UNIX-GETENV (QUOTE LOADUP_SOURCEDIR)) (QUOTE /LOADUP-LISP.LCOM))) - (LOADUP-LISP (CONCAT (QUOTE {DSK}) (UNIX-GETENV (QUOTE LOADUP_WORKDIR)) (QUOTE /lisp.dribble))) - (PUTASSOC (QUOTE MEDLEY) (LIST (UNIX-GETENV (QUOTE LOADUP_COMMIT_ID))) SYSOUTCOMMITS) - (HARDRESET) - ) - SHH - (PROGN + (LOAD (CONCAT %"{DSK}%" (UNIX-GETENV %"LOADUP_SOURCEDIR%") %"/LOADUP-LISP.LCOM%")) + (LOADUP-LISP (CONCAT %"{DSK}%" (UNIX-GETENV %"LOADUP_WORKDIR%") %"/lisp.dribble%")) + (SETQ SYSOUTCOMMITS (LIST (LIST 'MEDLEY (LIST (LIST 'INIT (UNIX-GETENV 'LOADUP_COMMIT_ID)))))) + (PUTASSOC (QUOTE LISP) + (LIST (UNIX-GETENV %"LOADUP_COMMIT_ID%")) + (CADR (ASSOC (QUOTE MEDLEY) SYSOUTCOMMITS))) (IL:ENDLOADUP) - (IL:MAKESYS (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR)) (IL:L-CASE (QUOTE /lisp.sysout))) :LISP) - (IL:LOGOUT T) - ) + (IL:MAKESYS (IL:CONCAT %"{DSK}%" (IL:UNIX-GETENV %"LOADUP_WORKDIR%") %"/lisp.sysout%") :LISP) + ) + (LOGOUT T) " EOF diff --git a/scripts/loadup-mid-from-init.sh b/scripts/loadup-mid-from-init.sh index ed7bc94d4..c7f0b06d6 100755 --- a/scripts/loadup-mid-from-init.sh +++ b/scripts/loadup-mid-from-init.sh @@ -11,7 +11,7 @@ main() { (MOVD? (QUOTE NILL) (QUOTE PROMPTPRINT)) (MOVD? (QUOTE NILL) (QUOTE CURSORP)) (MOVD? (QUOTE NILL) (QUOTE CHANGEBACKGROUNDBORDER)) - (LOGOUT) + (LOGOUT) " EOF diff --git a/scripts/loadup-setup.sh b/scripts/loadup-setup.sh index be7305b29..3d80d7ede 100644 --- a/scripts/loadup-setup.sh +++ b/scripts/loadup-setup.sh @@ -4,12 +4,6 @@ MEDLEYDIR=$(cd "${LOADUP_SCRIPTDIR}/.."; pwd) export MEDLEYDIR -if [ -z "${LOADUP_WORKDIR}" ] -then - LOADUP_WORKDIR=/tmp/loadups-$$ - export LOADUP_WORKDIR -fi - if [ -z "${LOADUP_SOURCEDIR}" ] then LOADUP_SOURCEDIR="${MEDLEYDIR}/internal/loadups" @@ -22,12 +16,6 @@ then export LOADUP_OUTDIR fi -if [ -z "${LOADUP_LOGINDIR}" ] -then - LOADUP_LOGINDIR="${LOADUP_WORKDIR}/logindir" - export LOADUP_LOGINDIR -fi - if [ ! -d "${LOADUP_OUTDIR}" ]; then if [ ! -e "${LOADUP_OUTDIR}" ]; @@ -39,6 +27,12 @@ then fi fi +if [ -z "${LOADUP_WORKDIR}" ] +then + LOADUP_WORKDIR="${LOADUP_OUTDIR}/build" + export LOADUP_WORKDIR +fi + if [ ! -d "${LOADUP_WORKDIR}" ]; then if [ ! -e "${LOADUP_WORKDIR}" ]; @@ -50,6 +44,23 @@ then fi fi +if [ -z "${LOADUP_LOGINDIR}" ] +then + LOADUP_LOGINDIR="${LOADUP_WORKDIR}/logindir" + export LOADUP_LOGINDIR +fi + +if [ ! -d "${LOADUP_LOGINDIR}" ]; +then + if [ ! -e "${LOADUP_LOGINDIR}" ]; + then + mkdir -p "${LOADUP_LOGINDIR}" + else + echo "Error: ${LOADUP_LOGINDIR} exists but is not a directory. Exiting." + exit 1 + fi +fi + HAS_GIT= [ -f $(which git) ] && [ -x $(which git) ] export HAS_GIT @@ -93,19 +104,6 @@ done loadup_start () { echo ">>>>> START ${script_name}" - if [ -d "${MEDLEYDIR}/tmp" ]; - then - TMP_PRE_EXISTS="true" - if [ -d "${MEDLEYDIR}/tmp/logindir" ]; - then - LOGINDIR_PRE_EXISTS="true" - else - LOGINDIR_PRE_EXISTS="false" - fi - else - LOGINDIR_PRE_EXISTS="false" - TMP_PRE_EXISTS="false" - fi } loadup_finish () { diff --git a/sources/MEDLEYDIR b/sources/MEDLEYDIR index 98775b394..f0c0901a6 100644 --- a/sources/MEDLEYDIR +++ b/sources/MEDLEYDIR @@ -1,13 +1,10 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "26-Aug-2024 22:11:48" {DSK}matt>Interlisp>medley>sources>MEDLEYDIR.;4 11113 +(FILECREATED " 6-Jan-2025 00:48:23" {DSK}frank>il>medley>sources>MEDLEYDIR.;3 10424 - :EDIT-BY "mth" + :CHANGES-TO (VARS MEDLEYDIRCOMS) - :CHANGES-TO (VARS MEDLEYDIRCOMS MEDLEY-INIT-VARS) - (FNS SET-SYSOUT-COMMIT) - - :PREVIOUS-DATE " 8-Jul-2024 22:49:43" {DSK}matt>Interlisp>medley>sources>MEDLEYDIR.;3) + :PREVIOUS-DATE "26-Aug-2024 22:11:48" {DSK}frank>il>medley>sources>MEDLEYDIR.;1) (PRETTYCOMPRINT MEDLEYDIRCOMS) @@ -16,19 +13,16 @@ [ (* ;; "set up initialization for file paths relative to where Medley is installed. This assumes that the environment variable MEDLEYDIR is set (usually by the ./run-medley script) to the (unix path) and all of the other directories variables are set relative to that (by MEDLEY-INIT-VARS)") - (FNS MEDLEY-INIT-VARS MEDLEYDIR MEDLEYSUBSTDIR SET-SYSOUT-COMMIT) - [INITVARS (MEDLEYDIR) - (\SAVE.MEDLEYDIR) - (SYSOUTCOMMITS (OR (AND (BOUNDP 'SYSOUTCOMMITS) - SYSOUTCOMMITS) - (LIST (LIST 'MEDLEY NIL] + (FNS MEDLEY-INIT-VARS MEDLEYDIR MEDLEYSUBSTDIR) + (INITVARS (MEDLEYDIR) + (\SAVE.MEDLEYDIR)) (ADDVARS (AROUNDEXITFNS MEDLEY-INIT-VARS)) (* ;; "**WARNING** The EVALed expressions get run early in the lodup.") (VARS MEDLEY-INIT-VARS) (DECLARE%: EVAL@COMPILE DOCOPY (ADDVARS (GLOBALVARS MEDLEYDIR MEDLEY-INIT-VARS - \SAVE.MEDLEYDIR DIRECTORIES SYSOUTCOMMITS]) + \SAVE.MEDLEYDIR DIRECTORIES]) @@ -162,21 +156,12 @@ (EQ 1 (STRPOS OLD (U-CASE (MKSTRING BODY] THEN [PACK* NEW (SUBSTRING BODY (ADD1 (NCHARS OLD] ELSE BODY]) - -(SET-SYSOUT-COMMIT - [LAMBDA (REPO COMMIT-ID-ENV-VAR) (* ; "Edited 8-Jul-2024 23:31 by mth") - (PUTASSOC REPO (LIST (UNIX-GETENV COMMIT-ID-ENV-VAR)) - SYSOUTCOMMITS]) ) (RPAQ? MEDLEYDIR ) (RPAQ? \SAVE.MEDLEYDIR ) -(RPAQ? SYSOUTCOMMITS (OR (AND (BOUNDP 'SYSOUTCOMMITS) - SYSOUTCOMMITS) - (LIST (LIST 'MEDLEY NIL)))) - (ADDTOVAR AROUNDEXITFNS MEDLEY-INIT-VARS) @@ -218,9 +203,9 @@ NIL NIL T)))) (DECLARE%: EVAL@COMPILE DOCOPY -(ADDTOVAR GLOBALVARS MEDLEYDIR MEDLEY-INIT-VARS \SAVE.MEDLEYDIR DIRECTORIES SYSOUTCOMMITS) +(ADDTOVAR GLOBALVARS MEDLEYDIR MEDLEY-INIT-VARS \SAVE.MEDLEYDIR DIRECTORIES) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (1749 8823 (MEDLEY-INIT-VARS 1759 . 5237) (MEDLEYDIR 5239 . 7623) (MEDLEYSUBSTDIR 7625 - . 8603) (SET-SYSOUT-COMMIT 8605 . 8821))))) + (FILEMAP (NIL (1449 8305 (MEDLEY-INIT-VARS 1459 . 4937) (MEDLEYDIR 4939 . 7323) (MEDLEYSUBSTDIR 7325 + . 8303))))) STOP diff --git a/sources/MEDLEYDIR.LCOM b/sources/MEDLEYDIR.LCOM index d0f8dd4d3..13427199c 100644 Binary files a/sources/MEDLEYDIR.LCOM and b/sources/MEDLEYDIR.LCOM differ