1
0
mirror of synced 2026-02-27 09:28:48 +00:00

Merge branch 'master' into PDFSTREAM

This commit is contained in:
rmkaplan
2023-09-23 15:57:53 -07:00
86 changed files with 4720 additions and 1083 deletions

View File

@@ -7,7 +7,7 @@
#
# ******************************************************************************
FROM ubuntu:22.10
FROM ubuntu:22.04
ARG TARGETPLATFORM
# Handle ARGs, ENV variables, and LABELs
@@ -31,6 +31,12 @@ ENV LANG=C.UTF-8
# Copy over the release deb files
ADD ./*.deb /tmp
# Get tzdata setup ahead of time
RUN apt-get update; \
ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime; \
DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata; \
dpkg-reconfigure --frontend noninteractive tzdata
# Install Medley/Maiko and add tightvnc server and xclip to the image
RUN apt-get update \
&& apt-get install -y apt-utils \

View File

@@ -20,7 +20,7 @@ name: 'Build/Push Docker Image'
# Run this workflow on ...
on:
workflow_dispatch:
inputs:
inputs:
draft:
description: "Mark this as a draft release"
type: choice
@@ -33,7 +33,7 @@ on:
options:
- 'false'
- 'true'
workflow_call:
outputs:
successful:
@@ -59,7 +59,7 @@ on:
defaults:
run:
shell: bash
jobs:
@@ -86,7 +86,7 @@ jobs:
echo "draft=${{ inputs.draft }}" >> $GITHUB_OUTPUT;
echo "force=${{ inputs.force }}" >> $GITHUB_OUTPUT;
fi
######################################################################################
@@ -100,7 +100,7 @@ jobs:
outputs:
release_not_built: ${{ steps.check.outputs.release_not_built }}
steps:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
@@ -110,7 +110,7 @@ jobs:
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Check if build already run for this commit
- name: Build already completed?
- name: Build already completed?
id: check
continue-on-error: true
uses: ./../actions/check-sentry-action
@@ -131,12 +131,12 @@ jobs:
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Find latest release (draft or normal)
# and download its assets
- name: Download linux debs from latest (draft) release
@@ -176,10 +176,10 @@ jobs:
docker_namespace="$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')"
docker_image="${docker_namespace}/${repo_name}"
if [ "${{ needs.inputs.outputs.draft }}" = "false" ];
then
then
docker_tags="${docker_image}:latest,${docker_image}:${MEDLEY_RELEASE#*-}_${MAIKO_RELEASE#*-}"
platforms="linux/amd64,linux/arm64"
else
else
docker_tags="${docker_image}:draft"
platforms="linux/amd64"
fi
@@ -242,7 +242,7 @@ jobs:
needs: [inputs, sentry, build_and-push]
steps:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
@@ -257,10 +257,10 @@ jobs:
uses: ./../actions/set-sentry-action
with:
tag: "docker"
- name: Output
id: output
run: |
echo "build_successful='true'" >> ${GITHUB_OUTPUT}
######################################################################################

View File

@@ -60,7 +60,7 @@ defaults:
jobs:
######################################################################################
# JOB: inputs #######################################################################
# Regularize the inputs so they can be referenced the same way whether they are
# the result of a workflow_dispatch or a workflow_call
@@ -85,8 +85,7 @@ jobs:
fi
######################################################################################
# JOB: sentry #######################################################################
# Use sentry-action to determine if this release has already been built
# based on the latest commit to the repo
@@ -114,11 +113,11 @@ jobs:
with:
tag: "loadup"
######################################################################################
# JOB: loadup #######################################################################
#
# Do the loadup
# Do the loadup and push to release on github
#
loadup:
@@ -129,7 +128,8 @@ jobs:
combined_release_tag: ${{ steps.job_outputs.outputs.COMBINED_RELEASE_TAG }}
medley_release_tag: ${{ steps.job_outputs.outputs.MEDLEY_RELEASE_TAG }}
medley_short_release_tag: ${{ steps.job_outputs.outputs.MEDLEY_SHORT_RELEASE_TAG }}
debs_filename_base: ${{ steps.debs.outputs.DEBS_FILENAME_BASE }}
artifacts_filename_template: ${{ steps.job_outputs.outputs.ARTIFACTS_FILENAME_TEMPLATE }}
release_url: ${{ steps.push.outputs.html_url }}
needs: [inputs, sentry]
if: |
@@ -156,22 +156,35 @@ jobs:
# Get Maiko release information, retrieves the name of the latest
# release. Used to download the correct Maiko release
- name: Get Maiko Release Information
# Find latest release (draft or normal)
- name: Get maiko release information
id: maiko
uses: abatilo/release-info-action@v1.3.2
with:
owner: ${{ github.repository_owner }}
repo: maiko
run: |
tag=""
if [ "${{ needs.inputs.outputs.draft }}" = "true" ];
then
gh release list --repo ${{ github.repository_owner }}/maiko | grep Draft >/tmp/releases-$$
if [ $? -eq 0 ];
then
tag=$(head -n 1 /tmp/releases-$$ | awk '{ print $3 }')
fi
fi
if [ -z "${tag}" ];
then
tag=$(gh release list --repo ${{ github.repository_owner }}/maiko | grep Latest | head -n 1 | awk '{ print $3 }')
fi
echo "maiko_tag=${tag}" >> ${GITHUB_OUTPUT}
env:
GITHUB_TOKEN: ${{ secrets.MAIKO_TOKEN }}
# Setup environment variables & establish job outputs
- name: Setup Environment Variables
run: |
echo "build_time=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_OUTPUT}
echo "TARBALL_DIR=installers/deb/tmp/tarballs" >>${GITHUB_ENV}
echo "DEBS_DIR=installers/deb/debs" >>${GITHUB_ENV}
echo "TARS_DIR=installers/deb/tars" >>${GITHUB_ENV}
echo "TARBALL_DIR=/tmp/tarballs" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${RELEASE_TAG}" >>${GITHUB_ENV}
echo "MAIKO_RELEASE_TAG=${{ steps.maiko.outputs.latest_tag }}" >>${GITHUB_ENV}
echo "MAIKO_RELEASE_TAG=${{ steps.maiko.outputs.maiko_tag }}" >>${GITHUB_ENV}
echo "ARTIFACTS_FILENAME_TEMPLATE=medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@" >>${GITHUB_ENV}
- name: More Environment Variables
run: |
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_RELEASE_TAG#medley-}" >>${GITHUB_ENV}
@@ -182,27 +195,25 @@ jobs:
- name: Establish job outputs
id: job_outputs
run: |
echo "COMBINED_RELEASE_TAG=${COMBINED_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "MEDLEY_RELEASE_TAG=${MEDLEY_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "COMBINED_RELEASE_TAG=${COMBINED_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MEDLEY_RELEASE_TAG=${MEDLEY_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "ARTIFACTS_FILENAME_TEMPLATE=${ARTIFACTS_FILENAME_TEMPLATE}" >> ${GITHUB_OUTPUT}
# Setup some needed dirs in workspace
- name: Create work dirs
run: mkdir -p ${TARBALL_DIR}
# Download Maiko Release Assets
# Download Maiko Release Assets and untar it
- name: Download Release Assets
uses: robinraju/release-downloader@v1.6
with:
repository: ${{ github.repository_owner }}/maiko
token: ${{ secrets.GITHUB_TOKEN }}
latest: true
out-file-path: ${{ env.TARBALL_DIR }}
fileName: "${{ env.MAIKO_RELEASE_TAG }}-linux.*.tgz"
- name: Untar Maiko Release for use in loadup
run: |
tar -xzf "${TARBALL_DIR}/${{ env.MAIKO_RELEASE_TAG }}-linux.x86_64.tgz"
gh release download ${MAIKO_RELEASE_TAG} \
-D ${TARBALL_DIR} \
--repo ${{ github.repository_owner }}/maiko \
-p '*.tgz'
tar -xzf "${TARBALL_DIR}/${MAIKO_RELEASE_TAG}-linux.x86_64.tgz"
env:
GITHUB_TOKEN: ${{ secrets.MAIKO_TOKEN }}
# Checkout Notecards and tar it in the tarballsdir
- name: Checkout Notecards
@@ -210,11 +221,11 @@ jobs:
with:
repository: ${{ github.repository_owner }}/notecards
path: ./notecards
- run: mv ./notecards ../notecards
- name: Tar notecards into tarball dir
run: |
cd ..
tar cfz medley/${TARBALL_DIR}/notecards.tgz notecards
mv ./notecards ../notecards
cd ../notecards
git archive --format=tgz --output="${TARBALL_DIR}/notecards.tgz" --prefix=notecards/ main
# Install vnc
- name: Install vnc
@@ -224,57 +235,13 @@ jobs:
run: |
Xvnc -geometry 1280x720 :0 &
export DISPLAY=":0"
PATH="$PWD/maiko:$PATH"
scripts/loadup-all.sh -apps
scripts/loadup-db.sh
- name: Build loadups release tar
- name: Build release tars
run: |
cd ..
mkdir -p medley/${TARBALL_DIR}
tar cfz medley/${TARBALL_DIR}/${MEDLEY_RELEASE_TAG}-loadups.tgz \
medley/loadups/lisp.sysout \
medley/loadups/full.sysout \
medley/loadups/apps.sysout \
medley/loadups/whereis.hash \
medley/loadups/*.dribble \
medley/loadups/fuller.database \
medley/loadups/exports.all
- name: Build runtime release tar
run: |
cd ..
mkdir -p medley/${TARBALL_DIR}
tar cfz medley/${TARBALL_DIR}/${MEDLEY_RELEASE_TAG}-runtime.tgz \
--exclude "*~" --exclude "*#*" \
--exclude exports.all \
medley/clos \
medley/docs/dinfo \
medley/docs/man-page/medley.1.gz \
medley/doctools \
medley/greetfiles \
medley/rooms \
medley/medley \
medley/run-medley \
medley/scripts \
medley/fonts/displayfonts \
medley/fonts/altofonts \
medley/fonts/adobe \
medley/fonts/postscriptfonts \
medley/fonts/ipfonts \
medley/library \
medley/lispusers \
medley/sources \
medley/internal
# Build the deb files as well as the tgz files
- name: Build .deb files for 3 architectures
id: debs
run: |
cd installers/deb
debs_filename_base=$(./build_deb.sh)
echo "DEBS_FILENAME_BASE=${debs_filename_base}" >> $GITHUB_ENV;
echo "DEBS_FILENAME_BASE=${debs_filename_base}" >> $GITHUB_OUTPUT;
scripts/release-make-tars.sh "${MEDLEY_RELEASE_TAG}"
mv releases/"${MEDLEY_SHORT_RELEASE_TAG}"/*.tgz "${TARBALL_DIR}"
# Push the release up to github releases
- name: Delete existing release with same tag (if any)
@@ -284,21 +251,166 @@ jobs:
continue-on-error: true
- name: Push the release
id: push_release
id: push
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
# ${{ env.TARBALL_DIR }}/notecards.tgz,
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-loadups.tgz,
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-runtime.tgz,
${{ env.DEBS_DIR }}/*.deb,
${{ env.TARS_DIR }}/*.tgz
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-runtime.tgz
tag: ${{ env.MEDLEY_RELEASE_TAG }}
draft: ${{ needs.inputs.outputs.draft }}
prerelease: false
generateReleaseNotes: true
token: ${{ secrets.GITHUB_TOKEN }}
# Save the tarball directory for subsequent jobs
- name: Save tarballs
uses: actions/upload-artifact@v3
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
if-no-files-found: error
# JOB: linux_installer ##############################################################
#
# Create the linux installers (.deb and .tgz) and push to release on github
#
linux_installer:
runs-on: ubuntu-latest
needs: [inputs, sentry, loadup]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Environment variables
- name: Environment variables
run: |
echo "DEBS_DIR=installers/deb/debs" >>${GITHUB_ENV}
echo "TARS_DIR=installers/deb/tars" >>${GITHUB_ENV}
echo "TARBALL_DIR=installers/deb/tmp/tarballs" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${{ needs.loadup.outputs.medley_release_tag }}" \
>>${GITHUB_ENV}
echo "ARTIFACTS_FILENAME_TEMPLATE=${{ needs.loadup.outputs.artifacts_filename_template }}" >>${GITHUB_ENV}
# Create taball dir
- run: mkdir -p ${TARBALL_DIR}
# Get the tarballs
- name: Get tarballs
uses: actions/download-artifact@v3
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
# Build the deb files as well as the tgz files
- name: Build .deb files for 3 architectures
id: debs
run: |
cd installers/deb
./build_deb.sh
# Push the debs and tgz up to github releases
- name: Push the release
id: push_release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
${{ env.DEBS_DIR }}/*.deb,
${{ env.TARS_DIR }}/*.tgz
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# JOB: macos_installer ##############################################################
#
# Create the macos installers (.dmg and .zip) and push to release on github
#
macos_installer:
runs-on: macos-12
needs: [inputs, sentry, loadup]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
# if: false
defaults:
run:
shell: bash
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Environment variables
- name: Environment variables
run: |
MACOS_DIR=installers/macos
echo "MACOS_DIR=${MACOS_DIR}" >>${GITHUB_ENV}
echo "ARTIFACTS_DIR=${MACOS_DIR}/artifacts" >>${GITHUB_ENV}
echo "TARBALL_DIR=${MACOS_DIR}/tmp/tarballs" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${{ needs.loadup.outputs.medley_release_tag }}" \
>>${GITHUB_ENV}
echo "ARTIFACTS_FILENAME_TEMPLATE=${{ needs.loadup.outputs.artifacts_filename_template }}" >>${GITHUB_ENV}
# Create tarball dir
- run: mkdir -p ${TARBALL_DIR}
# Get the tarballs
- name: Get tarballs
uses: actions/download-artifact@v3
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
# Build the .dmg and .zip files
- name: Build .dmg & .zip files
id: dmg-zip
run: |
cd ${MACOS_DIR}
./build_artifacts.sh
# Push the .dmg and .zip up to github releases
- name: Push the release
id: push_release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
# 2023-07-20 not yet building dmg -- ${{ env.ARTIFACTS_DIR }}/*.dmg,
${{ env.ARTIFACTS_DIR }}/*.zip
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# JOB: windows_installer #############################################################
#
# Create the Windows installer, push it up to the release on github and
@@ -313,7 +425,11 @@ jobs:
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
outputs:
windows_installer_filename: ${{ steps.jobout.outputs.INSTALLER_FILENAME }}
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
@@ -328,14 +444,14 @@ jobs:
echo "MEDLEY_RELEASE_TAG=$mrt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$msrt="${{ needs.loadup.outputs.medley_short_release_tag }}"
echo "MEDLEY_SHORT_RELEASE_TAG=$msrt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$debs="${{ needs.loadup.outputs.debs_filename_base }}"
echo "DEBS_FILENAME_BASE=$debs" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$aft="${{ needs.loadup.outputs.artifacts_filename_template }}"
echo "ARTIFACTS_FILENAME_TEMPLATE=$aft" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
# Download vnc viewer
- name: Download vncviewer
shell: powershell
run: |
$url = "https://sourceforge.net/projects/tigervnc/files/stable/1.12.0/vncviewer64-1.12.0.exe"
$url = "https://online.interlisp.org/downloads/vncviewer64-1.12.0.exe"
$output = "installers\win\vncviewer64-1.12.0.exe"
(New-Object System.Net.WebClient).DownloadFile($url, $output)
@@ -344,8 +460,7 @@ jobs:
shell: powershell
run: |
iscc installers\win\medley.iss
$filename="medley-install_${env:COMBINED_RELEASE_TAG}_x64.exe"
echo "INSTALLER_FILENAME=$filename" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
# Upload windows installer to release
- name: Upload windows installer to release
@@ -353,7 +468,7 @@ jobs:
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: installers/win/${{ env.INSTALLER_FILENAME }}
artifacts: installers/win/medley-*.exe
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
@@ -361,18 +476,63 @@ jobs:
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# Install the OpenSSH Client
- name: Install the OpenSSH Client
shell: powershell
# JOB: downloads_page ################################################################
#
# Update the downloads page on OIO
#
downloads_page:
runs-on: ubuntu-latest
needs: [inputs, sentry, loadup, linux_installer, macos_installer, windows_installer]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
steps:
# Environment variables
- name: Environment Varibales (from other jobs)
run: |
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
crt="${{ needs.loadup.outputs.combined_release_tag }}"
echo "COMBINED_RELEASE_TAG=${crt}" >>${GITHUB_ENV}
mrt="${{ needs.loadup.outputs.medley_release_tag }}"
echo "MEDLEY_RELEASE_TAG=${mrt}" >>${GITHUB_ENV}
msrt="${{ needs.loadup.outputs.medley_short_release_tag }}"
echo "MEDLEY_SHORT_RELEASE_TAG=${msrt}" >>${GITHUB_ENV}
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Upload a dummy file to release
# Needed since download url of the release changes on every update
# So this will be the final update before creating downloads page
# and we can use its url for the page
- run: echo "placeholder" >placeholder.txt
- name: Upload windows installer to release
id: pushph
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: placeholder.txt
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# Update the downloads page and the man page on OIO
- name: Update the downloads page and the man page to the OIO static page host
shell: bash
run: |
# Figure out filenames
download_url="${{ steps.push.outputs.html_url }}"
download_url="${{ steps.pushph.outputs.html_url }}"
download_url="${download_url/\/tag\//\/download\/}"
local_template="installers/downloads_page/medley_downloads.html"
local_filename="medley_downloads.html"
@@ -390,9 +550,8 @@ jobs:
# Fill in downloads page template
sed \
-e "s/@@@MEDLEY.SHORT.RELEASE.TAG@@@/${MEDLEY_SHORT_RELEASE_TAG}/g" \
-e "s/@@@COMBINED.RELEASE.TAG@@@/${COMBINED_RELEASE_TAG}/g" \
-e "s~@@@DOWNLOAD_URL@@@~${download_url}~g" \
-e "s/@@@DEBS.FILENAME.BASE@@@/${DEBS_FILENAME_BASE}/g" \
-e "s/@@@WINDOWS.INSTALLER.FILENAME@@@/${INSTALLER_FILENAME}/g" \
< "${local_template}" > "${local_filename}"
# Create sftp instruction file
echo "-rm ${remote_filepath}.oldold" > batch
@@ -409,7 +568,7 @@ jobs:
######################################################################################
# JOB: complete #####################################################################
# Use set-sentry-action to determine set the sentry that says this release has
# been successfully built
@@ -421,9 +580,16 @@ jobs:
outputs:
build_successful: ${{ steps.output.outputs.build_successful }}
needs: [inputs, sentry, loadup, windows_installer]
needs: [inputs, sentry, loadup, downloads_page]
steps:
# Delete the tarballs artifact
- name: Delete tarballs artifact
uses: geekyeggo/delete-artifact@v2
with:
name: tarballs
failOnError: false
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
@@ -445,21 +611,4 @@ jobs:
echo "build_successful='true'" >> $GITHUB_OUTPUT
######################################################################################
# - name: Download the Windows installer created in windows job
# uses: actions/download-artifact@v3
# with:
# name: windows_installer
# path: installers/win
# - name: Rename the Windows installer w/ version tag
# run: |
# maiko_release_tag="${{ steps.maiko.outputs.latest_tag }}"
# combined_release_tag="${MEDLEY_RELEASE_TAG#medley-}_${maiko_release_tag#maiko-}"
# windows_installer_filename="medley_install_${combined_release_tag}_x64.exe"
# cd installers/win
# mv medley_install_vXXXVERSIONXXX_x64.exe "${windows_installer_filename}"
# echo "WINDOWS_INSTALLER_FILENAME=${windows_installer_filename}" >>${GITHUB_ENV}
######################################################################################

View File

@@ -84,6 +84,7 @@ jobs:
echo "force=false" >> $GITHUB_OUTPUT;
fi
######################################################################################

4
.gitignore vendored
View File

@@ -2,6 +2,10 @@
tmp/*
# releases directory
releases/*
# all loadup files
loadups/exports.all

View File

@@ -11,15 +11,6 @@
###############################################################################
# set -x
# mess with file desscriptors so we get only one line on stdout
# so we can communicate only what we want back to any githib runner
# stash fd 1 in fd 3
exec 3>&1
# make fd 1 (stdout) be the same as stdout
# so none of the std output from this file will be captured by
# $() but it will still be written out to the tty (via stderr)
exec 1>&2
tarball_dir=tmp/tarballs
# Make sure we are in the right directory
@@ -32,6 +23,13 @@ then
exit 1
fi
# template for artifacts file names should be passed down in the ENV variable: ARTIFACTS_FILENAME_TEMPLATE
if [ -z "${ARTIFACTS_FILENAME_TEMPLATE}" ];
then
ARTIFACTS_FILENAME_TEMPLATE="medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@"
fi
# If running as a github action or -t arg, then skip downloading the tarballs
if ! [[ -n "${GITHUB_WORKSPACE}" || "$1" = "-t" ]];
@@ -69,7 +67,6 @@ fi
pushd ${tarball_dir} >/dev/null 2>/dev/null
medley_release=$(echo medley-*-loadups.tgz | sed "s/medley-\(.*\)-loadups.tgz/\1/")
maiko_release=$(echo maiko-*-linux.x86_64.tgz | sed "s/maiko-\(.*\)-linux.x86_64.tgz/\1/")
debs_filename_base="medley-full-${medley_release}_${maiko_release}"
popd >/dev/null 2>/dev/null
@@ -136,7 +133,7 @@ do
#
# Create tar file for this arch
#
filename="${debs_filename_base}-${wslp}-${arch}"
filename="$(echo ${ARTIFACTS_FILENAME_TEMPLATE} | sed -e "s#@@PLATFORM@@#${wslp}#" -e "s#@@ARCH@@#${arch}#" -e "s#@@MEDLEY.RELEASE@@#${medley_release}#" -e "s#@@MAIKO.RELEASE@@#${maiko_release}#" )"
mkdir -p tars
echo "Creating tar file tars/${filename}.tgz"
tar -C ${il_dir} -czf tars/${filename}.tgz .
@@ -151,8 +148,5 @@ do
done
done
# send just one line back to github $() construct
# do this by restoring fd 1 to what it was orginally
exec 1>&3
echo "${debs_filename_base}"
################################################################################################################
################################################################################################################

View File

@@ -10,36 +10,46 @@
<ul>
<li><h4>Standard Linux</h4>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-x86_64.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-x86_64-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-aarch64.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-armv7l.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines</a></p></li>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines</a></p></li>
<li><h4>Windows System for Linux</h4>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-x86_64.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86.64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-wsl-x86_64-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86.64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-aarch64.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p></li>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p></li>
</ul></li>
<li><h3>Local Installations (for any Linux distro)</h3>
<ul>
<li><h4>Standard Linux</h4>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-x86_64.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-x86_64-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-aarch64.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-armv7l.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines</a></p></li>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines</a></p></li>
<li><h4>Windows System for Linux</h4>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-x86_64.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-wsl-x86_64-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-aarch64.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p></li>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p></li>
</ul></li>
</ul></li>
<li><h2>WINDOWS 10/11 (Medley runs in a Docker container)</h2>
<li><h2>macOS 11 (Big Sur) and later - for both Intel and Apple Silicon</h2>
<p><a href="@@@DOWNLOAD_URL@@@/@@@WINDOWS.INSTALLER.FILENAME@@@">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for Windows x64 machines</a></p></li>
<ul>
<li><h3>DMG Installer</h3>
<p>Not available</p></li>
<li><h3>ZIP Installer</h3>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-macos-universal-@@@COMBINED.RELEASE.TAG@@@.zip">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@</a></p></li>
</ul></li>
<li><h2>WINDOWS 10/11 (Medley running within Cygwin)</h2>
<p>Not available</p></li>
</ul></li>
</ul>

View File

@@ -6,38 +6,47 @@
* #### Standard Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-x86\_64.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-x86\_64-@@@COMBINED.RELEASE.TAG@@@.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-aarch64.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-armv7l.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.deb)
* #### Windows System for Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\.64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-x86\_64.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\.64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-x86\_64-@@@COMBINED.RELEASE.TAG@@@.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-aarch64.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb)
* ### Local Installations (for any Linux distro)
* #### Standard Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-x86\_64.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-x86\_64-@@@COMBINED.RELEASE.TAG@@@.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-aarch64.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-armv7l.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.tgz)
* #### Windows System for Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-x86\_64.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-x86\_64-@@@COMBINED.RELEASE.TAG@@@.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-aarch64.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz)
* ## WINDOWS 10/11 (Medley runs in a Docker container)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for Windows x64 machines](@@@DOWNLOAD_URL@@@/@@@WINDOWS.INSTALLER.FILENAME@@@)
* ## macOS 11 (Big Sur) and later - for both Intel and Apple Silicon
* ### DMG Installer
Not available
* ### ZIP Installer
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@](@@@DOWNLOAD_URL@@@/medley-full-macos-universal-@@@COMBINED.RELEASE.TAG@@@.zip)
* ## WINDOWS 10/11 (Medley running within Cygwin)
Not available

7
installers/macos/.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
tmp
devtmp
pkg/*.pkg
artifacts

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>medley/medley</string>
<key>CFBundleGetInfoString</key>
<string>Medley Interlisp, Copyright 2023 Interlisp.org</string>
<key>CFBundleIconFile</key>
<string>Medley.icns</string>
<key>CFBundleIdentifier</key>
<string>org.interlisp.Medley</string>
<key>CFBundleDocumentTypes</key>
<array>
</array>
<key>CFBundleInfoDictionaryVersion</key>
<string>3.51</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>--VERSION_TAG--</string>
<key>CFBundleSignature</key>
<string>Medley</string>
<key>CFBundleVersion</key>
<string>--VERSION_TAG--</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright 2023 Interlisp.org</string>
<key>LSMinimumSystemVersion</key>
<string>11.0</string>
</dict>
</plist>

View File

@@ -0,0 +1 @@
APPLMedley

170
installers/macos/build_app.sh Executable file
View File

@@ -0,0 +1,170 @@
#!/bin/bash
###############################################################################
#
# build_app.sh: build app bundle for installing Medley Interlisp on MacOS
#
# 2023-02-23 Frank Halasz
#
# Copyright 2023 by Interlisp.org
#
###############################################################################
APPNAME=Medley
# 2023-07-19 Temorary selector to allow us to create .zip asset before app/dmg work is finished
INCLUDE_APP="no" # "yes" or "no"
# Make sure we are in the right directory
if [ ! -f ./app/Info.plist ];
then
echo "Can't find ./app/Info.plist file."
echo "Incorrect cwd?"
echo "Should be in medley/installers/macos"
echo "Exiting"
exit 1
fi
# template for artifacts file names should be passed down in the ENV variable: ARTIFACTS_FILENAME_TEMPLATE
if [ -z "${ARTIFACTS_FILENAME_TEMPLATE}" ];
then
ARTIFACTS_FILENAME_TEMPLATE="medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@"
fi
#
# Setup directories
#
CWD=$(pwd)
RESULTS_DIR=${CWD}/artifacts
APPBUNDLE=${RESULTS_DIR}/${APPNAME}.app
APPBUNDLECONTENTS=${APPBUNDLE}/Contents
APPBUNDLEEXE=${APPBUNDLECONTENTS}/MacOS
APPBUNDLERESOURCES=${APPBUNDLECONTENTS}/Resources
APPBUNDLEICON=${APPBUNDLECONTENTS}/Resources
tmp_dir=${CWD}/tmp
tarball_dir=${tmp_dir}/tarballs
# If running as a github action or -t arg, then skip downloading the tarballs
if ! [[ -n "${GITHUB_WORKSPACE}" || "$1" = "-t" ]];
then
# First, make sure gh is available and we are logged in to github
if [ -z "$(which gh)" ];
then
echo "Can't find gh"
echo "Exiting."
exit 2
fi
gh auth status 2>&1 | grep --quiet --no-messages "Logged in to github.com"
if [ $? -ne 0 ];
then
echo "Not logged into github."
echo "Exiting."
exit 3
fi
# then clear out the ./tmp directory
rm -rf ${tmp_dir}
mkdir -p ${tmp_dir}
# then download the maiko and medley tarballs
mkdir -p ${tarball_dir}
echo "Fetching maiko and medley release tarballs"
TAG=$(gh release list --repo interlisp/maiko | head -n 1 | awk "{print \$1 }")
gh release download ${TAG} \
--repo interlisp/maiko \
--dir ${tarball_dir} \
--pattern "*darwin*.tgz"
TAG=$(gh release list --repo interlisp/medley | head -n 1 | awk "{print \$1 }")
gh release download ${TAG} \
--repo interlisp/medley \
--dir ${tarball_dir} \
--pattern "*-loadups.tgz" \
--pattern "*-runtime.tgz"
gh repo clone interlisp/notecards notecards -- --depth 1
(cd notecards; git archive --format=tgz --output=../notecards.tgz --prefix=notecards/ main)
mv notecards.tgz ${tarball_dir}
rm -rf notecards
fi
# Figure out release tags from tarball names
pushd ${tarball_dir} >/dev/null 2>/dev/null
medley_release=$(echo medley-*-loadups.tgz | sed "s/medley-\(.*\)-loadups.tgz/\1/")
maiko_release=$(echo maiko-*-darwin.x86_64.tgz | sed "s/maiko-\(.*\)-darwin.x86_64.tgz/\1/")
popd >/dev/null 2>/dev/null
if [ "${INCLUDE_APP}" = "yes" ]; then
#
# Create bundle dirs
#
rm -rf ${RESULTS_DIR}
mkdir -p ${RESULTS_DIR}
rm -rf ${APPBUNDLE}
mkdir -p ${APPBUNDLE}
mkdir ${APPBUNDLE}/Contents
mkdir ${APPBUNDLE}/Contents/MacOS
mkdir ${APPBUNDLE}/Contents/Resources
#
# Create icons and put in bundle
#
iconset_dir=${tmp_dir}/${APPNAME}.iconset
rm -rf ${iconset_dir}
mkdir -p ${iconset_dir}
image_dir=${CWD}/images
sips -z 16 16 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_16x16.png >/dev/null 2>&1
sips -z 32 32 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_16x16@2x.png >/dev/null 2>&1
sips -z 32 32 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_32x32.png >/dev/null 2>&1
sips -z 64 64 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_32x32@2x.png >/dev/null 2>&1
sips -z 128 128 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_128x128.png >/dev/null 2>&1
sips -z 256 256 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_128x128@2x.png >/dev/null 2>&1
sips -z 256 256 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_256x256.png >/dev/null 2>&1
sips -z 512 512 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_256x256@2x.png >/dev/null 2>&1
sips -z 512 512 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_512x512.png >/dev/null 2>&1
cp ${image_dir}/App_icon1024.png ${iconset_dir}/icon_512x512@2x.png
iconutil -c icns -o ${tmp_dir}/${APPNAME}.icns ${iconset_dir}
cp ${tmp_dir}/${APPNAME}.icns ${APPBUNDLEICON}/
rm -r ${iconset_dir}
rm ${tmp_dir}/${APPNAME}.icns
#
# Update and copy in "control" files
#
sed -e "s/--VERSION_TAG--/${medley_release}.${maiko_release}.0/g" \
< app/Info.plist \
> ${APPBUNDLECONTENTS}/Info.plist
cp app/PkgInfo ${APPBUNDLECONTENTS}/
fi #INCLUDE_APP
#
# Untar the maiko and medley releases into the bundle
#
il_dir=${APPBUNDLE}/Contents/MacOS
mkdir -p ${il_dir}
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/maiko-${maiko_release}-darwin.universal.tgz"
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/medley-${medley_release}-runtime.tgz"
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/medley-${medley_release}-loadups.tgz"
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/notecards.tgz"
#
# Handle run_medley needing separate directories for each arch
#
pushd ${il_dir}/maiko >/dev/null 2>&1
ln -s darwin.universal darwin.aarch64
ln -s darwin.universal darwin.x86_64
popd >/dev/null 2>&1
#
# Add file icon to medley.command
#
if [ -z "$(which fileicon)" ];
then
brew install fileicon
fi
fileicon set ${il_dir}/medley/scripts/medley/medley.command ${image_dir}/Command_icon128.png
#
# Also create the zip file of il_dir for distribution
#
pushd ${il_dir} >/dev/null 2>&1
filename="$(echo ${ARTIFACTS_FILENAME_TEMPLATE} | sed -e "s#@@PLATFORM@@#macos#" -e "s#@@ARCH@@#universal#" -e "s#@@MEDLEY.RELEASE@@#${medley_release}#" -e "s#@@MAIKO.RELEASE@@#${maiko_release}#" )"
zip -r -6 -y -q ${RESULTS_DIR}/${filename}.zip .
popd >/dev/null 2>&1
######################################################################################################
######################################################################################################

View File

@@ -0,0 +1,66 @@
#!/bin/bash
###############################################################################
#
# build_artifacts.sh: build the artifacts for installing Medley Interlisp on
# MacOS. Basically just calls build_app.sh and build_dmg.sh.
# based on Medley.app built by build_app.sh
#
# 2023-03-03 Frank Halasz
#
# Copyright 2023 by Interlisp.org
#
###############################################################################
#
# Figure out what directory this script is being executed from
#
get_abs_filename() {
# $1 : relative filename
echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
}
get_script_dir() {
# call this with ${BASH_SOURCE[0]:-$0} as its (only) parameter
# set -x
local SCRIPT_PATH="$( get_abs_filename "$1" )";
pushd . > '/dev/null';
while [ -h "$SCRIPT_PATH" ];
do
cd "$( dirname -- "$SCRIPT_PATH"; )";
SCRIPT_PATH="$( readlink -f -- "$SCRIPT_PATH"; )";
done
cd "$( dirname -- "$SCRIPT_PATH"; )" > '/dev/null';
SCRIPT_PATH="$( pwd; )";
popd > '/dev/null';
# set +x
echo "${SCRIPT_PATH}"
}
SCRIPTDIR=$(get_script_dir "${BASH_SOURCE[0]:-$0}")
#
# cd to the dir we are executing from and call
# build_app.sh and the build_dmg.sh
#
cd ${SCRIPTDIR}
t=""
c=""
if [[ "$1" = "-t" || "$2" = "-t" ]]; then t="-t"; fi
if [[ "$1" = "-c" || "$2" = "-c" ]]; then c="-c"; fi
./build_app.sh "${t}" 2>&1
# 2023-07-20 Not building dmg as yet, just using this to build zip file
# while we finish work around dmg
# ./build_dmg.sh "${c}"
###############################################################################

185
installers/macos/build_dmg.sh Executable file
View File

@@ -0,0 +1,185 @@
#!/bin/bash
###############################################################################
#
# build_dmg.sh: build dmg for installing Medley Interlisp on MacOS
# based on Medley.app built by build_app.sh
#
# 2023-03-03 Frank Halasz
#
# Copyright 2023 by Interlisp.org
#
# Based on code found at:
# http://stackoverflow.com/questions/96882/how-do-i-create-a-nice-looking-dmg-for-mac-os-x-using-command-line-tools
#
###############################################################################
#set -o verbose #echo onset +o verbose #echo off
# template for artifacts file names should be passed down in the ENV variable: ARTIFACTS_FILENAME_TEMPLATE
if [ -z "${ARTIFACTS_FILENAME_TEMPLATE}" ];
then
ARTIFACTS_FILENAME_TEMPLATE="medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@"
fi
#
# Set Parameters
#
APP_NAME="Medley.app"
VOL_NAME="Medley_Install"
BG_NAME=Install_Message.png
WIN_WIDTH=700
WIN_HEIGHT=850
#
# Set pathnames
#
CWD=$(pwd)
TMP_DIR=${CWD}/tmp
RESULTS_DIR=${CWD}/artifacts
APP_PATH=${RESULTS_DIR}/${APP_NAME}
DMG_PATH=${RESULTS_DIR}/${VOL_NAME}
SRC_DIR=${TMP_DIR}/dmg_src
IMAGES_DIR=${CWD}/images
SCRIPTS_DIR=${CWD}/scripts
#
# Make sure we are in the right directory
#
if [ ! -e ${APP_PATH} ];
then
echo "Can't find the app: ${APP_NAME}."
echo "Incorrect cwd? Should be in medley/installers/macos."
echo "Or build_app.sh not yet run?"
echo "Exiting"
exit 1
fi
#
# Copy over files from build app etc to dmg proto-directory
#
if [ ! "$1" = "-c" ]
then
#
# Cleanup anything leftover from last run
#
rm -rf ${SRC_DIR}
mkdir -p ${SRC_DIR}
#
# Assemble source directory for DMG
#
#ditto ${APP_PATH} ${SRC_DIR}/${APP_NAME}
mv ${APP_PATH} ${SRC_DIR}/${APP_NAME}
SetFile -a B ${SRC_DIR}/${APP_NAME}
ditto ${SCRIPTS_DIR}/medley_add2path ${SRC_DIR}/medley_add2path
ditto ${IMAGES_DIR}/${BG_NAME} ${SRC_DIR}/.background/${BG_NAME}
fi
#
# Create initial dmg image
#
if [ -e "/Volumes/${VOL_NAME}" ];
then
hdiutil detach /Volumes/${VOL_NAME}
fi
rm -f ${DMG_PATH}.temp.dmg
hdiutil create -srcfolder ${SRC_DIR} -volname ${VOL_NAME} -fs HFS+ \
-fsargs "-c c=64,a=16,e=16" -format UDRW ${DMG_PATH}.temp.dmg
device=$(\
hdiutil attach -readwrite -noverify -noautoopen "${DMG_PATH}".temp.dmg \
| egrep '^/dev/' | sed 1q | awk '{print $1}' \
)
#
# cd to the new dmg
#
pushd /Volumes/${VOL_NAME} >/dev/null 2>&1
#
# Add symbolic link for medley script and icon for addpath
#
ln -s Medley.app/Contents/MacOS/medley/scripts/medley/medley.command medley
if [ -z "$(which fileicon)" ];
then
brew install fileicon
fi
fileicon set medley_add2path ${IMAGES_DIR}/A2P_icon128.png
#
# Dress up the appearance using Applescript
#
ROW1=375
ROW2=650
COL1=139
COL2=350
COL3=561
osascript <<EOT
tell application "Finder"
tell disk "${VOL_NAME}"
open
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
set old_bounds to bounds of container window
set l to item 1 of old_bounds
set t to item 2 of old_bounds
set r to l + ${WIN_WIDTH}
set b to t + ${WIN_HEIGHT}
set the bounds of container window to {l, t, r, b}
set theViewOptions to the icon view options of container window
set arrangement of theViewOptions to snap to grid
set icon size of theViewOptions to 128
set background picture of theViewOptions to file ".background:${BG_NAME}"
set appHome to path to applications folder from system domain
make new alias file at container window to appHome with properties {name:"Applications"}
set appHome to path to applications folder from user domain
make new alias file at container window to appHome with properties {name:"My Applications"}
set appHome to path to home folder from user domain
make new alias file at container window to appHome with properties {name:"My Home Folder"}
delay 1
set position of item "${APP_NAME}" of container window to {${COL1}, ${ROW1}}
set position of item "medley" of container window to {${COL2}, ${ROW1}}
set position of item "medley_add2path" of container window to {${COL3}, ${ROW1}}
set position of item "Applications" of container window to {${COL1}, ${ROW2}}
set position of item "My Applications" of container window to {${COL2}, ${ROW2}}
set position of item "My Home Folder" of container window to {${COL3}, ${ROW2}}
close
end tell
end tell
EOT
#
# Add icon to dmg
#
fileicon set /Volumes/${VOL_NAME} ${IMAGES_DIR}/Install_icon128.png
#
# return to original dir
#
popd >/dev/null 2>&1
#
# Detach the tmp dmg and convert it to final (compressed, ro) dmg
#
hdiutil detach ${device}
sync
rm -f ${DMG_PATH}.dmg
hdiutil convert "${DMG_PATH}".temp.dmg -format UDZO -imagekey zlib-level=6 -o ${DMG_PATH}.dmg
rm -rf "${DMG_PATH}".temp.dmg
#
# Extract version info from app Info.plist & rename dmg using version
#
sed_script='{/CFBundleVersion/!d;N;s/^.*<string>\(.*\)<\/string>/\1/;s/.0$//;s/\./_/;p;}'
version=$(sed -ne "${sed_script}" ${SRC_DIR}/${APP_NAME}/Contents/Info.plist)
DMG_NAME="$(echo ${ARTIFACTS_FILENAME_TEMPLATE} | sed -e 's#@@PLATFORM@@#macos#' -e 's#@@ARCH@@#$universal#' -e 's#@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@#${version}#' )"
mv ${DMG_PATH}.dmg ${RESULTS_DIR}/${DMG_NAME}.dmg
#
# Done
#
echo "DMG build completed."
###############################################################################
###############################################################################

View File

@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
preserveAspectRatio="xMidYMid meet"
width="2000"
height="2000"
viewBox="0 0 2000 2000"
version="1.1"
id="svg2704"
sodipodi:docname="A2P_icon.svg"
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
inkscape:export-filename="A2P_icon128.png"
inkscape:export-xdpi="6.1440001"
inkscape:export-ydpi="6.1440001"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g1126"
transform="translate(-23.756927,163.29152)">
<text
x="597.27948"
y="997.78094"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text2702"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:420px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan25093">Medley</tspan></text>
<use
xlink:href="#window-icon"
x="1066.795"
y="218.396"
width="372"
height="300"
id="use2674"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="865.021"
y="89.851997"
width="372"
height="300"
id="use2676"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="629.06"
y="50.366001"
width="372"
height="300"
id="use2678"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="396.42899"
y="106.215"
width="372"
height="300"
id="use2680"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="204.11301"
y="248.522"
width="372"
height="300"
id="use2682"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="82.689003"
y="454.659"
width="372"
height="300"
id="use2684"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="51.462002"
y="691.854"
width="372"
height="300"
id="use2686"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="115.396"
y="922.39398"
width="372"
height="300"
id="use2688"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="264.327"
y="1109.627"
width="372"
height="300"
id="use2690"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="474.577"
y="1223.783"
width="372"
height="300"
id="use2692"
transform="translate(147.4565)" />
<text
xml:space="preserve"
style="font-style:italic;font-size:766.666px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:7.8"
x="1003.8107"
y="1163.4888"
id="text288"><tspan
sodipodi:role="line"
id="tspan286"
x="1003.8107"
y="1163.4888" /></text>
<text
x="946.01031"
y="1500.8351"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text292"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:233.333px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan290">add2path</tspan></text>
</g>
<defs
id="defs2708">
<rect
x="1144.3981"
y="797.67157"
width="915.91937"
height="555.16339"
id="rect44588" />
</defs>
<sodipodi:namedview
id="namedview2706"
pagecolor="#f5e6c4"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.49895222"
inkscape:cx="864.81227"
inkscape:cy="918.92566"
inkscape:window-width="1752"
inkscape:window-height="1205"
inkscape:window-x="1508"
inkscape:window-y="107"
inkscape:window-maximized="0"
inkscape:current-layer="svg2704"
fit-margin-top="100"
fit-margin-left="100"
fit-margin-right="100"
fit-margin-bottom="100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<symbol
id="window-icon"
viewBox="0 0 372 300"
transform="translate(-98.918502,49.633999)">
<rect
x="10"
y="10"
width="352"
height="280"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="rect2665" />
<line
x1="10"
y1="30"
x2="362"
y2="30"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="line2667" />
</symbol>
<circle
cx="551.08148"
cy="699.63397"
r="20"
style="display:none;fill:#ffffff;stroke:#ff0000;stroke-width:5"
id="circle2696" />
<circle
cx="551.08148"
cy="699.63397"
r="600"
style="display:none;fill:none;stroke:#0000ff;stroke-width:5"
id="circle2698" />
<rect
x="-98.918503"
y="49.633999"
width="2922"
height="1600"
style="display:none;fill:none;stroke:#00ff00;stroke-width:10"
id="rect2700" />
<text
xml:space="preserve"
id="text44586"
style="font-size:40px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';white-space:pre;shape-inside:url(#rect44588);display:inline"
transform="translate(-98.918502,49.633999)" />
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
preserveAspectRatio="xMidYMid meet"
width="2000"
height="2000"
viewBox="0 0 2000 2000"
version="1.1"
id="svg2704"
sodipodi:docname="App_icon.svg"
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
inkscape:export-filename="App_icon512.png"
inkscape:export-xdpi="24.576"
inkscape:export-ydpi="24.576"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g1126"
transform="translate(-23.756927,163.29152)">
<text
x="597.27948"
y="997.78094"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text2702"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:420px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan25093">Medley</tspan></text>
<use
xlink:href="#window-icon"
x="1066.795"
y="218.396"
width="372"
height="300"
id="use2674"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="865.021"
y="89.851997"
width="372"
height="300"
id="use2676"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="629.06"
y="50.366001"
width="372"
height="300"
id="use2678"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="396.42899"
y="106.215"
width="372"
height="300"
id="use2680"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="204.11301"
y="248.522"
width="372"
height="300"
id="use2682"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="82.689003"
y="454.659"
width="372"
height="300"
id="use2684"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="51.462002"
y="691.854"
width="372"
height="300"
id="use2686"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="115.396"
y="922.39398"
width="372"
height="300"
id="use2688"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="264.327"
y="1109.627"
width="372"
height="300"
id="use2690"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="474.577"
y="1223.783"
width="372"
height="300"
id="use2692"
transform="translate(147.4565)" />
<text
xml:space="preserve"
style="font-style:italic;font-size:766.666px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:7.8"
x="1003.8107"
y="1163.4888"
id="text288"><tspan
sodipodi:role="line"
id="tspan286"
x="1003.8107"
y="1163.4888" /></text>
<text
x="1263.5646"
y="1466.0958"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text292"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:233.333px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan290">app</tspan></text>
</g>
<defs
id="defs2708">
<rect
x="1144.3981"
y="797.67157"
width="915.91937"
height="555.16339"
id="rect44588" />
</defs>
<sodipodi:namedview
id="namedview2706"
pagecolor="#f5eddc"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.49895222"
inkscape:cx="760.59387"
inkscape:cy="1017.1315"
inkscape:window-width="2286"
inkscape:window-height="1205"
inkscape:window-x="45"
inkscape:window-y="53"
inkscape:window-maximized="0"
inkscape:current-layer="g1126"
fit-margin-top="100"
fit-margin-left="100"
fit-margin-right="100"
fit-margin-bottom="100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<symbol
id="window-icon"
viewBox="0 0 372 300"
transform="translate(-98.918502,49.633999)">
<rect
x="10"
y="10"
width="352"
height="280"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="rect2665" />
<line
x1="10"
y1="30"
x2="362"
y2="30"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="line2667" />
</symbol>
<circle
cx="551.08148"
cy="699.63397"
r="20"
style="display:none;fill:#ffffff;stroke:#ff0000;stroke-width:5"
id="circle2696" />
<circle
cx="551.08148"
cy="699.63397"
r="600"
style="display:none;fill:none;stroke:#0000ff;stroke-width:5"
id="circle2698" />
<rect
x="-98.918503"
y="49.633999"
width="2922"
height="1600"
style="display:none;fill:none;stroke:#00ff00;stroke-width:10"
id="rect2700" />
<text
xml:space="preserve"
id="text44586"
style="font-size:40px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';white-space:pre;shape-inside:url(#rect44588);display:inline"
transform="translate(-98.918502,49.633999)" />
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
preserveAspectRatio="xMidYMid meet"
width="2000"
height="2000"
viewBox="0 0 2000 2000"
version="1.1"
id="svg2704"
sodipodi:docname="Command_icon.svg"
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
inkscape:export-filename="Command_icon256.png"
inkscape:export-xdpi="12.288"
inkscape:export-ydpi="12.288"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g1126"
transform="translate(-23.756927,163.29152)">
<text
x="597.27948"
y="997.78094"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text2702"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:420px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan25093">Medley</tspan></text>
<use
xlink:href="#window-icon"
x="1066.795"
y="218.396"
width="372"
height="300"
id="use2674"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="865.021"
y="89.851997"
width="372"
height="300"
id="use2676"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="629.06"
y="50.366001"
width="372"
height="300"
id="use2678"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="396.42899"
y="106.215"
width="372"
height="300"
id="use2680"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="204.11301"
y="248.522"
width="372"
height="300"
id="use2682"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="82.689003"
y="454.659"
width="372"
height="300"
id="use2684"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="51.462002"
y="691.854"
width="372"
height="300"
id="use2686"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="115.396"
y="922.39398"
width="372"
height="300"
id="use2688"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="264.327"
y="1109.627"
width="372"
height="300"
id="use2690"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="474.577"
y="1223.783"
width="372"
height="300"
id="use2692"
transform="translate(147.4565)" />
<text
xml:space="preserve"
style="font-style:italic;font-size:766.666px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:7.8"
x="1003.8107"
y="1163.4888"
id="text288"><tspan
sodipodi:role="line"
id="tspan286"
x="1003.8107"
y="1163.4888" /></text>
<text
x="936.01031"
y="1500.8351"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text292"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:233.333px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan290">command</tspan></text>
</g>
<defs
id="defs2708">
<rect
x="1144.3981"
y="797.67157"
width="915.91937"
height="555.16339"
id="rect44588" />
</defs>
<sodipodi:namedview
id="namedview2706"
pagecolor="#f5ebd3"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.49895222"
inkscape:cx="1195.5053"
inkscape:cy="916.92146"
inkscape:window-width="1752"
inkscape:window-height="1205"
inkscape:window-x="1099"
inkscape:window-y="119"
inkscape:window-maximized="0"
inkscape:current-layer="g1126"
fit-margin-top="100"
fit-margin-left="100"
fit-margin-right="100"
fit-margin-bottom="100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<symbol
id="window-icon"
viewBox="0 0 372 300"
transform="translate(-98.918502,49.633999)">
<rect
x="10"
y="10"
width="352"
height="280"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="rect2665" />
<line
x1="10"
y1="30"
x2="362"
y2="30"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="line2667" />
</symbol>
<circle
cx="551.08148"
cy="699.63397"
r="20"
style="display:none;fill:#ffffff;stroke:#ff0000;stroke-width:5"
id="circle2696" />
<circle
cx="551.08148"
cy="699.63397"
r="600"
style="display:none;fill:none;stroke:#0000ff;stroke-width:5"
id="circle2698" />
<rect
x="-98.918503"
y="49.633999"
width="2922"
height="1600"
style="display:none;fill:none;stroke:#00ff00;stroke-width:10"
id="rect2700" />
<text
xml:space="preserve"
id="text44586"
style="font-size:40px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';white-space:pre;shape-inside:url(#rect44588);display:inline"
transform="translate(-98.918502,49.633999)" />
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 144 KiB

View File

@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
preserveAspectRatio="xMidYMid meet"
width="2000"
height="2000"
viewBox="0 0 2000 2000"
version="1.1"
id="svg2704"
sodipodi:docname="Install_icon.svg"
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
inkscape:export-filename="Install_icon256.png"
inkscape:export-xdpi="6.1440001"
inkscape:export-ydpi="6.1440001"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g1126"
transform="translate(-23.756927,163.29152)">
<text
x="597.27948"
y="997.78094"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text2702"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:420px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan25093">Medley</tspan></text>
<use
xlink:href="#window-icon"
x="1066.795"
y="218.396"
width="372"
height="300"
id="use2674"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="865.021"
y="89.851997"
width="372"
height="300"
id="use2676"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="629.06"
y="50.366001"
width="372"
height="300"
id="use2678"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="396.42899"
y="106.215"
width="372"
height="300"
id="use2680"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="204.11301"
y="248.522"
width="372"
height="300"
id="use2682"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="82.689003"
y="454.659"
width="372"
height="300"
id="use2684"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="51.462002"
y="691.854"
width="372"
height="300"
id="use2686"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="115.396"
y="922.39398"
width="372"
height="300"
id="use2688"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="264.327"
y="1109.627"
width="372"
height="300"
id="use2690"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="474.577"
y="1223.783"
width="372"
height="300"
id="use2692"
transform="translate(147.4565)" />
<text
xml:space="preserve"
style="font-style:italic;font-size:766.666px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:7.8"
x="1003.8107"
y="1163.4888"
id="text288"><tspan
sodipodi:role="line"
id="tspan286"
x="1003.8107"
y="1163.4888" /></text>
<text
x="970.08179"
y="1540.9191"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text292"
style="font-weight:bold;font-size:366.667px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:366.667px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan290">install</tspan></text>
</g>
<defs
id="defs2708">
<rect
x="1144.3981"
y="797.67157"
width="915.91937"
height="555.16339"
id="rect44588" />
</defs>
<sodipodi:namedview
id="namedview2706"
pagecolor="#f5ebd3"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.49895222"
inkscape:cx="1199.5137"
inkscape:cy="920.92986"
inkscape:window-width="1752"
inkscape:window-height="1205"
inkscape:window-x="1099"
inkscape:window-y="63"
inkscape:window-maximized="0"
inkscape:current-layer="g1126"
fit-margin-top="100"
fit-margin-left="100"
fit-margin-right="100"
fit-margin-bottom="100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<symbol
id="window-icon"
viewBox="0 0 372 300"
transform="translate(-98.918502,49.633999)">
<rect
x="10"
y="10"
width="352"
height="280"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="rect2665" />
<line
x1="10"
y1="30"
x2="362"
y2="30"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="line2667" />
</symbol>
<circle
cx="551.08148"
cy="699.63397"
r="20"
style="display:none;fill:#ffffff;stroke:#ff0000;stroke-width:5"
id="circle2696" />
<circle
cx="551.08148"
cy="699.63397"
r="600"
style="display:none;fill:none;stroke:#0000ff;stroke-width:5"
id="circle2698" />
<rect
x="-98.918503"
y="49.633999"
width="2922"
height="1600"
style="display:none;fill:none;stroke:#00ff00;stroke-width:10"
id="rect2700" />
<text
xml:space="preserve"
id="text44586"
style="font-size:40px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';white-space:pre;shape-inside:url(#rect44588);display:inline"
transform="translate(-98.918502,49.633999)" />
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -0,0 +1,199 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
preserveAspectRatio="xMidYMid meet"
width="2000"
height="2000"
viewBox="0 0 2000 2000"
version="1.1"
id="svg2704"
sodipodi:docname="MedleyIcon.svg"
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
inkscape:export-filename="C:\Users\Frank\Dev\il\logos\MedleyIcon256.png"
inkscape:export-xdpi="12.287999"
inkscape:export-ydpi="12.287999"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g1126"
transform="translate(-23.756927,163.29152)">
<text
x="597.27948"
y="997.78094"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text2702"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:420px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan25093">Medley</tspan></text>
<use
xlink:href="#window-icon"
x="1066.795"
y="218.396"
width="372"
height="300"
id="use2674"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="865.021"
y="89.851997"
width="372"
height="300"
id="use2676"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="629.06"
y="50.366001"
width="372"
height="300"
id="use2678"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="396.42899"
y="106.215"
width="372"
height="300"
id="use2680"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="204.11301"
y="248.522"
width="372"
height="300"
id="use2682"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="82.689003"
y="454.659"
width="372"
height="300"
id="use2684"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="51.462002"
y="691.854"
width="372"
height="300"
id="use2686"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="115.396"
y="922.39398"
width="372"
height="300"
id="use2688"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="264.327"
y="1109.627"
width="372"
height="300"
id="use2690"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="474.577"
y="1223.783"
width="372"
height="300"
id="use2692"
transform="translate(147.4565)" />
<text
xml:space="preserve"
style="font-style:italic;font-size:766.666px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:7.8"
x="1003.8107"
y="1163.4888"
id="text288"><tspan
sodipodi:role="line"
id="tspan286"
x="1003.8107"
y="1163.4888" /></text>
</g>
<defs
id="defs2708">
<rect
x="1144.3981"
y="797.67157"
width="915.91937"
height="555.16339"
id="rect44588" />
</defs>
<sodipodi:namedview
id="namedview2706"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.49895222"
inkscape:cx="1302.7299"
inkscape:cy="918.92566"
inkscape:window-width="1752"
inkscape:window-height="1205"
inkscape:window-x="172"
inkscape:window-y="96"
inkscape:window-maximized="0"
inkscape:current-layer="g1126"
fit-margin-top="100"
fit-margin-left="100"
fit-margin-right="100"
fit-margin-bottom="100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<symbol
id="window-icon"
viewBox="0 0 372 300"
transform="translate(-98.918502,49.633999)">
<rect
x="10"
y="10"
width="352"
height="280"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="rect2665" />
<line
x1="10"
y1="30"
x2="362"
y2="30"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="line2667" />
</symbol>
<circle
cx="551.08148"
cy="699.63397"
r="20"
style="display:none;fill:#ffffff;stroke:#ff0000;stroke-width:5"
id="circle2696" />
<circle
cx="551.08148"
cy="699.63397"
r="600"
style="display:none;fill:none;stroke:#0000ff;stroke-width:5"
id="circle2698" />
<rect
x="-98.918503"
y="49.633999"
width="2922"
height="1600"
style="display:none;fill:none;stroke:#00ff00;stroke-width:10"
id="rect2700" />
<text
xml:space="preserve"
id="text44586"
style="font-size:40px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';white-space:pre;shape-inside:url(#rect44588)"
transform="translate(-98.918502,49.633999)" />
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<installer-gui-script minSpecVersion="1">
<pkg-ref id="org.interlisp.Medley"/>
<options customize="always" require-scripts="false" hostArchitectures="x86_64,arm64" />
<domains enable_anywhere="false" enable_currentUserHome="true" enable_localSystem="false" />
<choices-outline>
<line choice="default">
<line choice="org.interlisp.Medley" />
</line>
<line choice="Location" />
</choices-outline>
<choice id="default" visible="false" />
<choice id="org.interlisp.Medley"
description="D Install for all Users?"
title="T Install for all users?"
customLocation="tests"
>
<pkg-ref id="org.interlisp.Medley"/>
</choice>
<choice id="Location"
description="D Install for all Users?"
title="T Install for all users?"
customLocation="tests"
>
<pkg-ref id="org.interlisp.Medley"/>
</choice>
<pkg-ref id="org.interlisp.Medley" version="01.01.01" onConclusion="none">Medley-base.pkg</pkg-ref>
</installer-gui-script>

View File

@@ -0,0 +1,43 @@
#!/bin/bash
# functions to discover what directory this script is being executed from
get_abs_filename() {
# $1 : relative filename
echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
}
get_script_dir() {
# call this with ${BASH_SOURCE[0]:-$0} as its (only) parameter
# set -x
local SCRIPT_PATH="$( get_abs_filename "$1" )";
pushd . > '/dev/null';
while [ -h "$SCRIPT_PATH" ];
do
cd "$( dirname -- "$SCRIPT_PATH"; )";
SCRIPT_PATH="$( readlink -f -- "$SCRIPT_PATH"; )";
done
cd "$( dirname -- "$SCRIPT_PATH"; )" > '/dev/null';
SCRIPT_PATH="$( pwd; )";
popd > '/dev/null';
# set +x
echo "${SCRIPT_PATH}"
}
SCRIPTDIR=$(get_script_dir "${BASH_SOURCE[0]:-$0}")
touch ~/.profile
cat >> ~/.profile <<EOF
PATH=\${PATH}:${SCRIPTDIR}
EOF
rm ${SCRIPTDIR}/medley_add2path.command

View File

@@ -34,7 +34,7 @@ SolidCompression=yes
; 64-bit Program Files directory and the 64-bit view of the registry.
ArchitecturesInstallIn64BitMode=x64
OutputDir="."
OutputBaseFilename="medley-install_{#version}_{#x86_or_x64}"
OutputBaseFilename="medley-full-{#version}-windows-{#x86_or_x64}"
SetupIconFile="Medley.ico"
DisableWelcomePage=no
MissingRunOnceIdsWarning=no

View File

@@ -1,12 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
(FILECREATED "23-May-2023 07:10:58" |{DSK}<home>larry>il>medley>internal>MEDLEY-UTILS.;12| 10354
(FILECREATED " 3-Aug-2023 18:40:12" |{DSK}<home>frank>il>medley>gmedley>internal>MEDLEY-UTILS.;6| 10695
:EDIT-BY "lmm"
:EDIT-BY "frank"
:CHANGES-TO (FNS GATHER-INFO)
:CHANGES-TO (FNS MAKE-FULLER-DB MAKE-EXPORTS-ALL MAKE-WHEREIS-HASH)
:PREVIOUS-DATE "22-May-2023 22:57:21" |{DSK}<home>larry>il>medley>internal>MEDLEY-UTILS.;11|)
:PREVIOUS-DATE " 1-Aug-2023 22:43:13"
|{DSK}<home>frank>il>medley>gmedley>internal>MEDLEY-UTILS.;5|)
(PRETTYCOMPRINT MEDLEY-UTILSCOMS)
@@ -102,18 +103,19 @@
(HELP))))
(MAKE-FULLER-DB
(LAMBDA NIL (* \; "Edited 16-Jul-2022 22:07 by larry")
(LAMBDA (DRIBBLEFILE DBFILE SYSOUTFILE) (* \; "Edited 3-Aug-2023 18:12 by frank")
(* \; "Edited 16-Jul-2022 22:07 by larry")
(* \; "Edited 20-Jun-2022 17:23 by larry")
(FILESLOAD (SOURCE)
FILESETS)
(DRIBBLE (MEDLEYDIR "tmp" "fuller.dribble" T T))
(DRIBBLE (OR DRIBBLEFILE "fuller.dribble"))
(DOFILESLOAD (SUBSET (APPEND OKSOURCES OKLIBRARY OKLISPUSERS OKINTERNAL)
'FINDFILE))
(GATHER-INFO 'ALL)
(MASTERSCOPE '(WHO CALLS XYZZY))
(DUMPDATABASE NIL (MKATOM (MEDLEYDIR "tmp" "fuller.database" T T)))
(DUMPDATABASE NIL (MKATOM (OR DBFILE "fuller.database")))
(DRIBBLE)
(MAKESYS (MEDLEYDIR "tmp" "fuller.sysout" T T)
(MAKESYS (OR SYSOUTFILE "fuller.sysout")
"Welcome to Fuller sysout")))
(MEDLEY-FIX-LINKS
@@ -146,7 +148,8 @@
(DEFINEQ
(MAKE-EXPORTS-ALL
(LAMBDA NIL (* \; "Edited 9-Mar-2021 16:11 by larry")
(LAMBDA (OUTFILE) (* \; "Edited 3-Aug-2023 18:34 by frank")
(* \; "Edited 9-Mar-2021 16:11 by larry")
(* "Edited May 3, 2018 by Ron Kaplan--relative to MEDLEYDIR/lispcore/. Don't know why it does the CORE/RENAME")
(*
 "Edited Aug 17 94 by Sybalsky -- point it to /king/export/lispcore as the truth directory.")
@@ -156,24 +159,25 @@
 "Edited September 29, 1986 by van Melle")
(CNDIR (MEDLEYDIR "sources"))
(LOAD 'FILESETS)
(GATHEREXPORTS EXPORTFILES (MEDLEYDIR "tmp" "exports.all" T))))
(GATHEREXPORTS EXPORTFILES (OR OUTFILE "exports.all"))))
(MAKE-WHEREIS-HASH
(LAMBDA NIL (* \; "Edited 12-Mar-2022 12:46 by rmk")
(LAMBDA (DRIBBLEFILE TMPFILE WHEREISFILE) (* \; "Edited 3-Aug-2023 18:37 by frank")
(* \; "Edited 12-Mar-2022 12:46 by rmk")
(* \; "Edited 24-Mar-2021 13:26 by larry")
(LET ((FILING.ENUMERATION.DEPTH 2)
HASHFILE)
(DRIBBLE (MEDLEYDIR "tmp" "whereis.dribble" T))
(SETQ HASHFILE (XCL::WHERE-IS-NOTICE (MEDLEYDIR "tmp" "whereis.hash-tmp" T)
(DRIBBLE (OR DRIBBLEFILE "whereis.dribble"))
(SETQ HASHFILE (XCL::WHERE-IS-NOTICE (OR TMPFILE "whereis.hash-tmp")
:FILES
(|for| X |in| MEDLEY-FIX-DIRS |collect| (CONCAT (MEDLEYDIR X)
"*.;"))
:HASH-FILE-SIZE 60000 :NEW T))
(RENAMEFILE HASHFILE (MEDLEYDIR "tmp" "whereis.hash" T))
(RENAMEFILE HASHFILE (OR WHEREISFILE "whereis.hash"))
(DRIBBLE))))
)
(DECLARE\: DONTCOPY
(FILEMAP (NIL (624 7499 (GATHER-INFO 634 . 6162) (MAKE-FULLER-DB 6164 . 6854) (MEDLEY-FIX-LINKS 6856
. 7253) (MEDLEY-FIX-DATES 7255 . 7497)) (8538 10331 (MAKE-EXPORTS-ALL 8548 . 9507) (MAKE-WHEREIS-HASH
9509 . 10329)))))
(FILEMAP (NIL (679 7642 (GATHER-INFO 689 . 6217) (MAKE-FULLER-DB 6219 . 6997) (MEDLEY-FIX-LINKS 6999
. 7396) (MEDLEY-FIX-DATES 7398 . 7640)) (8681 10672 (MAKE-EXPORTS-ALL 8691 . 9752) (MAKE-WHEREIS-HASH
9754 . 10670)))))
STOP

Binary file not shown.

View File

@@ -1,10 +1,10 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "18-Jan-2023 16:23:36" {DSK}<home>frank>il>medley>gmedley>sources>LOADUP-FULL.;2 4636
(FILECREATED "31-Jul-2023 18:28:53" {DSK}<home>frank>il>medley>gmedley>sources>LOADUP-FULL.;4 4521
:CHANGES-TO (FNS LOADUP-FULL)
:PREVIOUS-DATE "12-Aug-2022 12:30:09" {DSK}<home>frank>il>medley>gmedley>sources>LOADUP-FULL.;1
:PREVIOUS-DATE "18-Jan-2023 16:23:36" {DSK}<home>frank>il>medley>gmedley>sources>LOADUP-FULL.;3
)
@@ -39,7 +39,7 @@
(PRINTOUT T "FULL fonts loaded" T])
(LOADUP-FULL
[LAMBDA NIL (* ; "Edited 18-Jan-2023 16:22 by FGH")
[LAMBDA (DRIBBLEFILE) (* ; "Edited 18-Jan-2023 16:22 by FGH")
(* ; "Edited 12-Aug-2022 11:17 by lmm")
(* ; "Edited 14-Jul-2022 12:32 by rmk")
(* ; "Edited 12-Jul-2022 21:57 by rmk")
@@ -55,9 +55,7 @@
(PROGN (SETQ MEDLEYDIR)
(CNDIR (MEDLEYDIR)))
(MEDLEY-INIT-VARS)
(SETQ MAKESYSFILENAME (MEDLEYDIR "tmp" "full.sysout" T))
(SETQ MAKESYSNAME :MEDLEY)
(DRIBBLE (MEDLEYDIR "tmp" "full.dribble" T))
(DRIBBLE DRIBBLEFILE)
(* ;; "BKSYSBUF stops page holding ")
@@ -88,5 +86,5 @@
(FIXMETA)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (467 4598 (LOADFULLFONTS 477 . 1918) (LOADUP-FULL 1920 . 4348) (FIXMETA 4350 . 4596)))))
(FILEMAP (NIL (467 4483 (LOADFULLFONTS 477 . 1918) (LOADUP-FULL 1920 . 4233) (FIXMETA 4235 . 4481)))))
STOP

View File

@@ -1,12 +1,11 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
(FILECREATED "27-Feb-2023 17:15:53" |{DSK}<home>larry>il>medley>sources>LOADUP-LISP.;2| 5263
:EDIT-BY "lmm"
(FILECREATED "31-Jul-2023 18:22:53" |{DSK}<home>frank>il>medley>gmedley>sources>LOADUP-LISP.;2| 5235
:CHANGES-TO (FNS LOADUP-LISP)
:PREVIOUS-DATE "12-Aug-2022 12:29:57" |{DSK}<home>larry>il>medley>sources>LOADUP-LISP.;1|)
:PREVIOUS-DATE "27-Feb-2023 17:15:53"
|{DSK}<home>frank>il>medley>gmedley>sources>LOADUP-LISP.;1|)
(PRETTYCOMPRINT LOADUP-LISPCOMS)
@@ -19,13 +18,13 @@
(DEFINEQ
(LOADUP-LISP
(LAMBDA NIL (* \; "Edited 26-Feb-2023 12:17 by lmm")
(LAMBDA (DRIBBLEFILE) (* \; "Edited 26-Feb-2023 12:17 by lmm")
(* \; "Edited 13-Jul-2022 14:09 by rmk")
(* \; "Edited 4-Mar-2022 19:13 by larry")
(* \; "Edited 29-Apr-2021 22:30 by rmk:")
(SETQQ COMPILE.EXT LCOM)
(MEDLEY-INIT-VARS) (* \; "should be set earlier")
(DRIBBLE (MEDLEYDIR "tmp" "lisp.dribble" T))
(DRIBBLE DRIBBLEFILE)
(FOR X IN BOOTLOADEDFILES DO (CL:UNLESS (MEMB X SYSFILES)
(PRINTOUT T X " bootloaded" T)
(SETQ SYSFILES (CONS X SYSFILES))))
@@ -124,5 +123,5 @@
(GLOBALVARS MAKESYSFILENAME MEDLEY-INIT-VARS MEDLEYDIR SYSTEMINITVARS USERRECLST)
)
(DECLARE\: DONTCOPY
(FILEMAP (NIL (654 5057 (LOADUP-LISP 664 . 5055)))))
(FILEMAP (NIL (649 5029 (LOADUP-LISP 659 . 5027)))))
STOP

Binary file not shown.

View File

@@ -1,18 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "11-Jul-2022 20:00:23" 
{DSK}<users>kaplan>local>medley3.5>working-medley>sources>MAKEINIT.;3 54607
(FILECREATED " 7-Aug-2023 13:31:49" {DSK}<home>frank>il>medley>gmedley>internal>loadups>MAKEINIT.;4 54490
:CHANGES-TO (FNS I.FIXUPNUM I.FIXUPSYM)
:CHANGES-TO (FNS MAKEINITGREET)
:PREVIOUS-DATE "19-Jul-2021 23:50:29"
{DSK}<users>kaplan>local>medley3.5>working-medley>sources>MAKEINIT.;2)
:PREVIOUS-DATE " 3-Aug-2023 17:37:51"
{DSK}<home>frank>il>medley>gmedley>internal>loadups>MAKEINIT.;1)
(* ; "
Copyright (c) 1982-1988, 1990-1992, 1998, 2021 by Venue & Xerox Corporation.
")
(PRETTYCOMPRINT MAKEINITCOMS)
(RPAQQ MAKEINITCOMS
@@ -83,7 +78,8 @@ Copyright (c) 1982-1988, 1990-1992, 1998, 2021 by Venue & Xerox Corporation.
(DEFINEQ
(MAKEINITGREET
[LAMBDA NIL (* ; "Edited 11-Mar-2021 22:14 by larry")
[LAMBDA (SYSOUTFILE DLINITFILE) (* ; "Edited 3-Aug-2023 17:37 by frank")
(* ; "Edited 11-Mar-2021 22:14 by larry")
(* ; "Edited 5-Dec-2017 15:26 by rmk:")
(* ;; "")
@@ -93,12 +89,13 @@ Copyright (c) 1982-1988, 1990-1992, 1998, 2021 by Venue & Xerox Corporation.
(* ;; "")
(* Versions are Lisp Microcode Bcpl)
(MEDLEY-INIT-VARS)
(DORENAME 'I)
(DORENAME 'R)
(DLFIXINIT (MAKEINIT '(39424 5682 11008)
(MEDLEYDIR "tmp" "init.sysout" T)
NIL DIRECTORIES DISPLAYFONTDIRECTORIES)
(MEDLEYDIR "tmp" "init.dlinit" T])
(RESETLST
(RESETSAVE OK.TO.MODIFY.FNS T)
(DORENAME 'I)
(DORENAME 'R)
(DLFIXINIT (MAKEINIT '(39424 5682 11008)
SYSOUTFILE NIL DIRECTORIES DISPLAYFONTDIRECTORIES)
DLINITFILE))])
)
(FILESLOAD (SOURCE)
@@ -1053,28 +1050,26 @@ DONTCOPY
(GLOBALVARS DLPRIMARYMAP DLSECONDARYMAP DLLOCKBITS DLLASTDOMINOPAGE DLIFPAGE DLNEXTPM DLPAGEMAPFP
FPTOVP NEWFPFROMOLD VMEMFILE VMEMFILEX)
)
(PUTPROPS MAKEINIT COPYRIGHT ("Venue & Xerox Corporation" 1982 1983 1984 1985 1986 1987 1988 1990 1991
1992 1998 2021))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3971 4718 (MAKEINITGREET 3981 . 4716)) (4901 11286 (LOADMAKEINIT 4911 . 6114) (
LOADMKIFILES 6116 . 6431) (RELOAD 6433 . 6916) (MAKEINIT 6918 . 10578) (MKI.START 10580 . 11284)) (
11364 17082 (MKI.PASSFILE 11374 . 14984) (SCRATCHARRAY 14986 . 15635) (DOFORM 15637 . 16314) (
CONSTFORMP 16316 . 16550) (NOTICECOMS 16552 . 16860) (EVALFORMAKEINIT 16862 . 17080)) (17083 19203 (
I.ADDTOVAR 17093 . 17187) (I.DECLARE%: 17189 . 17465) (I.DEFINE-FILE-INFO 17467 . 17657) (
I.FILECREATED 17659 . 18033) (I.PUTPROPS 18035 . 18148) (I.RPAQ 18150 . 18371) (I.RPAQQ 18373 . 18569)
(I.RPAQ? 18571 . 18786) (I.SETTOPVAL 18788 . 19020) (I.NOUNDO 19022 . 19201)) (19839 26055 (
I.ATOMNUMBER 19849 . 20340) (I.\ATOMCELL 20342 . 22095) (I.FIXUPNUM 22097 . 23022) (I.FIXUPPTR 23024
. 23505) (I.FIXUPSYM 23507 . 24563) (I.WORDSPERNAMEENTRY 24565 . 25320) (I.SETSTKNTOFFSET 25322 .
26053)) (26087 27595 (MKI.ATOM 26097 . 26293) (MKI.IEEE 26295 . 27593)) (27692 28457 (MKI.DSET 27702
. 27985) (MKI.ADDTO 27987 . 28172) (MKI.PUTPROP 28174 . 28455)) (28631 29183 (DUMPVP 28641 . 28738) (
BOUTZEROS 28740 . 28819) (BIN16 28821 . 29002) (BOUT16 29004 . 29181)) (30074 52808 (DLFIXINIT 30084
. 31059) (DLSORTSYSOUTPAGES 31061 . 36187) (DLNEXTFP 36189 . 36526) (DLLOCKEDPAGEP 36528 . 36742) (
DLSETLOCKBIT 36744 . 37006) (DLCOPYPAGEMAP 37008 . 40059) (DLCOPYVMPAGE 40061 . 40451) (
DLADDPAGEMAPENTRIES 40453 . 41268) (ASSIGNFILEPAGE 41270 . 42503) (ASSIGNFILEPAGERANGE 42505 . 42912)
(DLDUMPSYSOUT 42914 . 44666) (DLDUMPFPTOVP 44668 . 45707) (DLDUMPPAGEMAPS 45709 . 46409) (
DLDUMPVMEMPAGES 46411 . 47067) (DLSETBOOTPTR 47069 . 47299) (DLDUMPARRAY 47301 . 47688) (
DLMARKASDUMPED 47690 . 48143) (DLDUMPVMEMPAGE 48145 . 48833) (INSTALLDOMINO 48835 . 49482) (
INSTALLDOMINO.DIRECT 49484 . 50636) (INSTALLNEWDOMINO 50638 . 52806)) (52830 54187 (DLPRINTFPTOVP
52840 . 53129) (PRINTPRIMARYMAP 53131 . 53845) (DLREADPAGEOFWORDS 53847 . 54014) (SETDIF 54016 . 54185
(FILEMAP (NIL (3862 4722 (MAKEINITGREET 3872 . 4720)) (4905 11290 (LOADMAKEINIT 4915 . 6118) (
LOADMKIFILES 6120 . 6435) (RELOAD 6437 . 6920) (MAKEINIT 6922 . 10582) (MKI.START 10584 . 11288)) (
11368 17086 (MKI.PASSFILE 11378 . 14988) (SCRATCHARRAY 14990 . 15639) (DOFORM 15641 . 16318) (
CONSTFORMP 16320 . 16554) (NOTICECOMS 16556 . 16864) (EVALFORMAKEINIT 16866 . 17084)) (17087 19207 (
I.ADDTOVAR 17097 . 17191) (I.DECLARE%: 17193 . 17469) (I.DEFINE-FILE-INFO 17471 . 17661) (
I.FILECREATED 17663 . 18037) (I.PUTPROPS 18039 . 18152) (I.RPAQ 18154 . 18375) (I.RPAQQ 18377 . 18573)
(I.RPAQ? 18575 . 18790) (I.SETTOPVAL 18792 . 19024) (I.NOUNDO 19026 . 19205)) (19843 26059 (
I.ATOMNUMBER 19853 . 20344) (I.\ATOMCELL 20346 . 22099) (I.FIXUPNUM 22101 . 23026) (I.FIXUPPTR 23028
. 23509) (I.FIXUPSYM 23511 . 24567) (I.WORDSPERNAMEENTRY 24569 . 25324) (I.SETSTKNTOFFSET 25326 .
26057)) (26091 27599 (MKI.ATOM 26101 . 26297) (MKI.IEEE 26299 . 27597)) (27696 28461 (MKI.DSET 27706
. 27989) (MKI.ADDTO 27991 . 28176) (MKI.PUTPROP 28178 . 28459)) (28635 29187 (DUMPVP 28645 . 28742) (
BOUTZEROS 28744 . 28823) (BIN16 28825 . 29006) (BOUT16 29008 . 29185)) (30078 52812 (DLFIXINIT 30088
. 31063) (DLSORTSYSOUTPAGES 31065 . 36191) (DLNEXTFP 36193 . 36530) (DLLOCKEDPAGEP 36532 . 36746) (
DLSETLOCKBIT 36748 . 37010) (DLCOPYPAGEMAP 37012 . 40063) (DLCOPYVMPAGE 40065 . 40455) (
DLADDPAGEMAPENTRIES 40457 . 41272) (ASSIGNFILEPAGE 41274 . 42507) (ASSIGNFILEPAGERANGE 42509 . 42916)
(DLDUMPSYSOUT 42918 . 44670) (DLDUMPFPTOVP 44672 . 45711) (DLDUMPPAGEMAPS 45713 . 46413) (
DLDUMPVMEMPAGES 46415 . 47071) (DLSETBOOTPTR 47073 . 47303) (DLDUMPARRAY 47305 . 47692) (
DLMARKASDUMPED 47694 . 48147) (DLDUMPVMEMPAGE 48149 . 48837) (INSTALLDOMINO 48839 . 49486) (
INSTALLDOMINO.DIRECT 49488 . 50640) (INSTALLNEWDOMINO 50642 . 52810)) (52834 54191 (DLPRINTFPTOVP
52844 . 53133) (PRINTPRIMARYMAP 53135 . 53849) (DLREADPAGEOFWORDS 53851 . 54018) (SETDIF 54020 . 54189
)))))
STOP

Binary file not shown.

View File

@@ -1,18 +1,15 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 4-Jan-2022 14:09:48" {DSK}<Users>kaplan>Local>medley3.5>my-medley>library>SPY.;2 63314
(FILECREATED "28-Jul-2023 20:13:45" {DSK}<home>larry>il>medley>library>SPY.;4 64149
:EDIT-BY "lmm"
:CHANGES-TO (VARS SPYCOMS)
(FNS SPY.MAKE.TREE)
(FNS \SPY.INTERRUPT SPY.BUFFER.ENTRY SPY.ADD.ENTRY)
:PREVIOUS-DATE "29-Apr-94 14:13:52" {DSK}<Users>kaplan>Local>medley3.5>my-medley>library>SPY.;1
)
:PREVIOUS-DATE " 4-Jan-2022 14:09:48" {DSK}<home>larry>il>medley>library>SPY.;1)
(* ; "
Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corporation.
")
(PRETTYCOMPRINT SPYCOMS)
(RPAQQ SPYCOMS
@@ -33,12 +30,13 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
SPY.UPDATE.TITLE SPY.DELETE SPY.DRAWBOX SPY.BUFFER.ENTRY SPY.BUTTON SPY.END.ENTRY
SPY.START SPY.INIT \SPY.INTERRUPT SPY.DUMP.BUFFER SPY.START.ENTRY SPY.ADD.ENTRY
SPY.ORIGINAL SPY.OVERFLOW SPY.MERGE.CALLEES SPY.PRINT)
(COMS (INITVARS (SPY.BUTTON))
(COMS (INITVARS (\BACKGROUND)
(SPY.BUTTON))
(VARS SPY.OPEN SPY.CLOSED))
(VARIABLES SPY.POINTERS)
(GLOBALVARS SPY.OVERFLOWED \PERIODIC.INTERRUPT SPY.TREE SPY.BUFFER.SIZE SPY.NEXT
SPY.BUFFER.THRESHOLD SPY.BUFFER SPY.FREQUENCY SPY.SHOW.THRESHOLD SPY.MAXLINES SPY.FONT
)
(SPECVARS \BACKGROUND)
(MACROS WITH-SPY WITH.SPY)
(DECLARE%: DONTCOPY (RECORDS SPYRECORD SPYDATA))
(INITRECORDS SPYRECORD)
@@ -836,8 +834,11 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
)
(SPY.BUFFER.ENTRY
(LAMBDA (N) (* ; "Edited 9-Sep-87 18:27 by Masinter") (COND (SPY.POINTERS (AND (ILEQ (SETQ N (LLSH N 1)) SPY.BUFFER.SIZE) (\GETBASEPTR SPY.BUFFER N))) ((ILEQ N SPY.BUFFER.SIZE) (\VAG2 0 (\GETBASE SPY.BUFFER N)))))
)
[LAMBDA (N) (* ; "Edited 28-Jul-2023 08:16 by lmm")
(* ; "Edited 9-Sep-87 18:27 by Masinter")
(AND (ILEQ (SETQ N (LLSH N 1))
SPY.BUFFER.SIZE)
(\GETBASEPTR SPY.BUFFER N])
(SPY.BUTTON
(LAMBDA (POS) (* gbn " 2-Jun-85 13:12") (PROG ((REG (if POS then (CREATEREGION (fetch XCOORD of POS) (fetch YCOORD of POS) (WIDTHIFWINDOW (BITMAPWIDTH SPY.CLOSED)) (HEIGHTIFWINDOW (BITMAPHEIGHT SPY.CLOSED))) else (GETBOXREGION (WIDTHIFWINDOW (BITMAPWIDTH SPY.CLOSED)) (HEIGHTIFWINDOW (BITMAPHEIGHT SPY.CLOSED)) NIL NIL NIL "Specify region for window %"Spy Control%"")))) (BITBLT SPY.CLOSED NIL NIL (SETQ SPY.BUTTON (CREATEW REG NIL NIL T))) (WINDOWPROP SPY.BUTTON (QUOTE BUTTONEVENTFN) (FUNCTION (LAMBDA (W) (AND (LASTMOUSESTATE UP) (SPY.TOGGLE)))))))
@@ -855,8 +856,34 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
)
(\SPY.INTERRUPT
(LAMBDA NIL (* ; "Edited 9-Sep-87 18:32 by Masinter") (SETQ \PERIODIC.INTERRUPT) (* ; "turn off sampling while gathering sample") (PROG ((FRAME (fetch (FX CLINK) (\MYALINK)))) (COND ((IGEQ (if SPY.POINTERS then (LLSH SPY.NEXT 1) else SPY.NEXT) SPY.BUFFER.THRESHOLD) (COND (\INTERRUPTABLE (SPY.DUMP.BUFFER)) (T (* ; "this sample might overflow; just don't do it") (RETURN))))) (SPY.START.ENTRY) SAMPLELOOP (SPY.ADD.ENTRY (fetch (FX FRAMENAME) FRAME)) (COND ((NOT (fetch (FX INVALIDP) (SETQ FRAME (fetch (FX CLINK) FRAME)))) (GO SAMPLELOOP)) (T (SPY.END.ENTRY)))) (SETQ \PERIODIC.INTERRUPT (QUOTE \SPY.INTERRUPT)))
)
[LAMBDA NIL (* ; "Edited 28-Jul-2023 08:59 by lmm")
(* ; "Edited 9-Sep-87 18:32 by Masinter")
(DECLARE (SPECVARS \BACKGROUND))
[PROG [(FRAME (fetch (FX CLINK)
(\MYALINK]
(IF \BACKGROUND
THEN (RETURN))
(SETQ \PERIODIC.INTERRUPT) (* ;
 "turn off sampling while gathering sample")
[COND
((IGEQ (LLSH SPY.NEXT 1)
SPY.BUFFER.THRESHOLD)
(COND
(\INTERRUPTABLE (SPY.DUMP.BUFFER))
(T (* ;
 "this sample might overflow; just don't do it")
(RETURN]
(SPY.START.ENTRY)
SAMPLELOOP
(SPY.ADD.ENTRY (fetch (FX FRAMENAME)
FRAME))
(COND
([NOT (fetch (FX INVALIDP)
(SETQ FRAME (fetch (FX CLINK)
FRAME]
(GO SAMPLELOOP))
(T (SPY.END.ENTRY]
(SETQ \PERIODIC.INTERRUPT '\SPY.INTERRUPT])
(SPY.DUMP.BUFFER
[LAMBDA NIL (* ; "Edited 28-Apr-94 14:00 by sybalsky")
@@ -885,8 +912,15 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
)
(SPY.ADD.ENTRY
(LAMBDA (NAME) (* ; "Edited 9-Sep-87 18:29 by Masinter") (COND (SPY.POINTERS (\PUTBASEPTR SPY.BUFFER (LLSH SPY.NEXT 1) NAME) (COND ((IGEQ (LLSH (add SPY.NEXT 1) 1) SPY.BUFFER.SIZE) (SPY.OVERFLOW)))) (T (OR (LITATOM NAME) (SETQ NAME (QUOTE *FORM*))) (\PUTBASE SPY.BUFFER SPY.NEXT (\LOLOC NAME)) (COND ((IGEQ (add SPY.NEXT 1) SPY.BUFFER.SIZE) (SPY.OVERFLOW))))))
)
[LAMBDA (NAME) (* ; "Edited 28-Jul-2023 08:17 by lmm")
(* ; "Edited 9-Sep-87 18:29 by Masinter")
(\PUTBASEPTR SPY.BUFFER (LLSH SPY.NEXT 1)
NAME)
(COND
((IGEQ (LLSH (add SPY.NEXT 1)
1)
SPY.BUFFER.SIZE)
(SPY.OVERFLOW])
(SPY.ORIGINAL
[LAMBDA (TREES) (* ; "Edited 28-Apr-94 14:00 by sybalsky")
@@ -951,6 +985,8 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
else (fetch (SPYRECORD NAME) of X])
)
(RPAQ? \BACKGROUND )
(RPAQ? SPY.BUTTON )
(RPAQQ SPY.OPEN #*(56 59)@@@@@@@@@@@@@@@@GLOLLC@@@@@@@@@@LFLFLC@@@@@@@@@@LFLFFF@@@@@@@@@@O@LFFF@@GLOL@@@@GLLFCL@@LFLF@@@@ANOLAH@@LFLF@@@@LFL@AH@@LFLF@@@@LFL@AH@@LFLF@@@@LFL@AH@@LFLF@@@@GLL@AH@@GLLF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IEGOOJ@@@@J@@HJ@@BOONHH@@BA@@@@HKOOOFNJHA@D@@HHBGOKNOEB@@@B@@@EDOMMBIGNJH@I@@@HBONJMEEKE@HA@@ECONMJB@KOOJCE@@@KOOJJHEAONHDJ@@KONJD@@@@AONIE@@GOMJH@@@BMOJEB@@FOB@@D@B@@AOEM@@GODDHA@@@AENMG@@KLH@@D@@@@BONM@@GM@HB@@@@BEFKG@@JJDBH@@@@@@INM@@ODA@DDD@@@BEOG@@@KJOMKB@@@AEEK@@JJEBNLIB@@DEOG@@DKNOKONHDDABFI@@BBKFOOMD@AAEFM@@IEIABEEOD@@@JJ@@EFLJKKGEB@EFEB@@J@@BOOHNHD@AEE@@EEEDONKEJ@EEBJ@@H@IOOOOOIEB@HD@@MDDOOOOMDHIEBJ@@BAOKOOOGONNJ@A@@HBKGOOOOOJKHBE@@DHLKMGMGOONJ@I@@@EMBOOJOOOKHBD@@BKDEOOJAOONJ@B@@BKIBOOHEOOOH@D@@HNDAONJBOJDDAA@@BO@DMGDEGOEB@A@@A@DBFJ@BL@@@@D@@@E@ICMAEOJDH@A@@B@@D@ADI@@@@BD@@HDA@JDBEFHH@@A@@@@@H@IDID@@B@D@@AA@A@@@B@A@@AA@@@@@D@@B@J@@A@A@@@@@H@@@D@@@@@J@@@A@@@D@AB@@@BA@@@@@@@@E@@@@@@D@@HH@@@B@@@@@@@B@@
@@ -958,13 +994,15 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
(RPAQQ SPY.CLOSED #*(56 59)@@@@@@@@@@@@@@@@GLOLLC@@@@CHND@@LFLFLC@@@@FAHA@@LFLFFF@@@@FAH@@@O@LFFF@@GLOKNA@@GLLFCL@@LFFAH@@@ANOLAH@@LFFAHA@@LFL@AH@@LFFAH@@@LFL@AH@@LFFAHJ@@LFL@AH@@LFFAH@@@GLL@AH@@GLFAHB@@@@@@@@@@@@@@@D@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@IEGOOJ@@@@J@@HJ@@BOONHH@@BA@@@@HKOOOFNJHA@D@@HHBGOKNOEB@@@B@@@EDOMMBIGNJH@I@@@HBONJMEEKE@HA@@ECONMJB@KOOBCE@@@KOOJJHEAOOHDJ@@KONJD@@@@AONIE@@GOMJH@@@BMOJEB@@FOB@@D@B@@AOEM@@GODDHA@@@AENMG@@KLH@@D@@@@BONM@@GM@HB@@@@BEFKG@@JJDBH@@@@@@INM@@ODA@DDD@@@BEOG@@@KJOMKB@@@AEEK@@JJEBNLIB@@DEOG@@DKNOKONHDDABFI@@BBKFOOOD@AAEFM@@IEIABEGND@@@JJ@@EFLLDGGGB@EFEB@@J@@@@@IOHD@AEE@@EEAAEA@FI@EEBJ@@H@HDL@EAME@@HD@@MDEB@NHDJHDABJ@@BAB@@ABICF@J@A@@HB@KDDI@BLI@BE@@DID@A@@JHKDJ@I@@@D@DDDE@EBKEBD@@BAD@@@@A@OED@B@@BHAAAAA@CGNH@D@@H@D@@@@@MOE@AA@@BK@DDDDDGOJJ@A@@B@DA@B@CODFBBD@@EE@HBIAENK@@@A@@BLHBDDDON@@@BD@@KGDHJJIGJHB@@A@@BOBBECGOLB@B@D@@AAMLMKGOH@@@AA@@@GGONNON@H@A@A@@@IKKKKOLJ@@@@J@@@DFOKOO@D@@@BA@@@AEGMMD@A@@@@D@@HHBJMBLA@@@@@B@@
)
(DEFGLOBALVAR SPY.POINTERS T)
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS SPY.OVERFLOWED \PERIODIC.INTERRUPT SPY.TREE SPY.BUFFER.SIZE SPY.NEXT SPY.BUFFER.THRESHOLD
SPY.BUFFER SPY.FREQUENCY SPY.SHOW.THRESHOLD SPY.MAXLINES SPY.FONT)
)
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(SPECVARS \BACKGROUND)
)
(DECLARE%: EVAL@COMPILE
(PUTPROPS WITH-SPY MACRO [(FORM)
@@ -1014,19 +1052,18 @@ Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corpor
)
(MOVD? 'NILL 'MODERNWINDOW)
(PUTPROPS SPY COPYRIGHT ("Venue & Xerox Corporation" 1984 1985 1987 1988 1990 1991 1993 1994))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (4753 7360 (SPYOBJ 4763 . 5052) (SPYOBJ.BUTTON 5054 . 5164) (SPYOBJ.SAVE 5166 . 5285) (
SPYOBJ.COPY 5287 . 5349) (SPYOBJ.GET 5351 . 5480) (SPYOBJ.IMAGEBOX 5482 . 6006) (SPYOBJ.DISPLAY 6008
. 6307) (SPYOBJ.LABEL 6309 . 6445) (SPYOBJ.HEIGHT 6447 . 6660) (SPYOBJ.COPYIN 6662 . 6705) (
SPY.COPYBUTTON 6707 . 6799) (SPY.MERGEINFO 6801 . 7358)) (18202 59509 (SPY.FIND.TREE 18212 . 18621) (
SPY.TOGGLE 18623 . 18813) (SPY.TREE 18815 . 19927) (SPY.LEGEND 19929 . 20279) (SPY.GRAPH.EDITOR 20281
. 29846) (SPY.END 29848 . 30090) (SPY.MAKEGRAPHNODES 30092 . 32192) (SPY.MAX 32194 . 33077) (
SPY.MERGE 33079 . 34510) (SPY.MERGE1 34512 . 40995) (SPY.MERGETREE 40997 . 43927) (SPY.NEXT.TREE 43929
. 44603) (SPY.SUM 44605 . 45294) (SPY.TITLE 45296 . 45513) (SPY.MAKE.TREE 45515 . 47540) (
SPY.UPDATE.TITLE 47542 . 50118) (SPY.DELETE 50120 . 50655) (SPY.DRAWBOX 50657 . 51182) (
SPY.BUFFER.ENTRY 51184 . 51422) (SPY.BUTTON 51424 . 51993) (SPY.END.ENTRY 51995 . 52075) (SPY.START
52077 . 52361) (SPY.INIT 52363 . 52598) (\SPY.INTERRUPT 52600 . 53236) (SPY.DUMP.BUFFER 53238 . 54698)
(SPY.START.ENTRY 54700 . 54828) (SPY.ADD.ENTRY 54830 . 55212) (SPY.ORIGINAL 55214 . 56041) (
SPY.OVERFLOW 56043 . 56144) (SPY.MERGE.CALLEES 56146 . 59182) (SPY.PRINT 59184 . 59507)))))
(FILEMAP (NIL (4707 7314 (SPYOBJ 4717 . 5006) (SPYOBJ.BUTTON 5008 . 5118) (SPYOBJ.SAVE 5120 . 5239) (
SPYOBJ.COPY 5241 . 5303) (SPYOBJ.GET 5305 . 5434) (SPYOBJ.IMAGEBOX 5436 . 5960) (SPYOBJ.DISPLAY 5962
. 6261) (SPYOBJ.LABEL 6263 . 6399) (SPYOBJ.HEIGHT 6401 . 6614) (SPYOBJ.COPYIN 6616 . 6659) (
SPY.COPYBUTTON 6661 . 6753) (SPY.MERGEINFO 6755 . 7312)) (18156 60387 (SPY.FIND.TREE 18166 . 18575) (
SPY.TOGGLE 18577 . 18767) (SPY.TREE 18769 . 19881) (SPY.LEGEND 19883 . 20233) (SPY.GRAPH.EDITOR 20235
. 29800) (SPY.END 29802 . 30044) (SPY.MAKEGRAPHNODES 30046 . 32146) (SPY.MAX 32148 . 33031) (
SPY.MERGE 33033 . 34464) (SPY.MERGE1 34466 . 40949) (SPY.MERGETREE 40951 . 43881) (SPY.NEXT.TREE 43883
. 44557) (SPY.SUM 44559 . 45248) (SPY.TITLE 45250 . 45467) (SPY.MAKE.TREE 45469 . 47494) (
SPY.UPDATE.TITLE 47496 . 50072) (SPY.DELETE 50074 . 50609) (SPY.DRAWBOX 50611 . 51136) (
SPY.BUFFER.ENTRY 51138 . 51481) (SPY.BUTTON 51483 . 52052) (SPY.END.ENTRY 52054 . 52134) (SPY.START
52136 . 52420) (SPY.INIT 52422 . 52657) (\SPY.INTERRUPT 52659 . 54064) (SPY.DUMP.BUFFER 54066 . 55526)
(SPY.START.ENTRY 55528 . 55656) (SPY.ADD.ENTRY 55658 . 56090) (SPY.ORIGINAL 56092 . 56919) (
SPY.OVERFLOW 56921 . 57022) (SPY.MERGE.CALLEES 57024 . 60060) (SPY.PRINT 60062 . 60385)))))
STOP

Binary file not shown.

View File

@@ -1,21 +1,23 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "14-Nov-2021 22:05:58" {DSK}<home>larry>medley>lispusers>BACKGROUND-YIELD.;2 1597
(FILECREATED "28-Jul-2023 09:49:24" {DSK}<home>larry>il>medley>lispusers>BACKGROUND-YIELD.;2 1770
changes to%: (VARS BACKGROUND-YIELD)
:EDIT-BY "lmm"
previous date%: "20-Sep-2021 11:37:28" {DSK}<home>larry>medley>lispusers>BACKGROUND-YIELD.;1)
:CHANGES-TO (FNS BACKGROUND-YIELD)
:PREVIOUS-DATE "14-Nov-2021 22:05:58" {DSK}<home>larry>il>medley>lispusers>BACKGROUND-YIELD.;1
)
(PRETTYCOMPRINT BACKGROUND-YIELDCOMS)
(RPAQQ BACKGROUND-YIELDCOMS (
(* ;;
 " Add a call to BACKGROUNDFNS to yield when not otherwise busy")
(* ;; " Add a call to BACKGROUNDFNS to yield when not otherwise busy")
(FNS BACKGROUND-YIELD INIT-YIELD)
(DECLARE%: DONTEVAL@LOAD DOCOPY (P (INIT-YIELD T)))
(VARS BACKGROUND-YIELD)))
(FNS BACKGROUND-YIELD INIT-YIELD)
(DECLARE%: DONTEVAL@LOAD DOCOPY (P (INIT-YIELD T)))
(VARS BACKGROUND-YIELD)))
@@ -24,10 +26,13 @@
(DEFINEQ
(BACKGROUND-YIELD
[LAMBDA NIL (* ; "Edited 20-Sep-2021 11:37 by larry")
(IF (FIXP BACKGROUND-YIELD)
THEN (SUBRCALL YIELD BACKGROUND-YIELD)
(SUBRCALL CAUSE-INTERRUPT])
[LAMBDA NIL (* ; "Edited 28-Jul-2023 09:11 by lmm")
(* ; "Edited 20-Sep-2021 11:37 by larry")
(LET ((\BACKGROUND T))
(DECLARE (SPECVARS \BACKGROUND))
(IF (FIXP BACKGROUND-YIELD)
THEN (SUBRCALL YIELD BACKGROUND-YIELD)
(SUBRCALL CAUSE-INTERRUPT])
(INIT-YIELD
[LAMBDA (ONP) (* ; "Edited 19-Sep-2021 13:32 by larry")
@@ -46,5 +51,5 @@
(RPAQQ BACKGROUND-YIELD 833333)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (833 1482 (BACKGROUND-YIELD 843 . 1098) (INIT-YIELD 1100 . 1480)))))
(FILEMAP (NIL (806 1655 (BACKGROUND-YIELD 816 . 1271) (INIT-YIELD 1273 . 1653)))))
STOP

Binary file not shown.

2
medley
View File

@@ -1 +1 @@
scripts/medley/medley.sh
scripts/medley/medley.command

View File

@@ -202,4 +202,3 @@ echo "greet: $LDEINIT"
export INMEDLEY=1
"$prog" $display $noscroll $geometry $screensize $mem -title "$title" $pass "$LDESRCESYSOUT"

View File

@@ -7,18 +7,38 @@ Loading from an old 'starter' sysout
* loadup-mid-from-init.sh -- phase 2 (creates init.sysout)
* loadup-lisp-from-mid.sh -- phase 3 (creates lisp.sysout)
* loadup-full-from-lisp.sh -- phase 4 (creates full.sysout)
* loadup-aux.sh -- phase 5,(creates exports.all whereis.hash
* loadup-apps-from-full.sh -- phase 5 (creates app.sysout, with notecards, rooms and clos; optional)
* loadup-aux.sh -- phase 6 (creates exports.all whereis.hash)
* loadup-db-from-full.sh -- phase 7 (makes unreleased 'fuller.sysout' and fuller.database)
* loadup-full.sh -- Phase 1-4 only
All of these scripts read from and write to a directory specified by the env variable LOADUP_WORKDIR.
LOADUP_WORKDIR defaults to /tmp/loadups-$$ (where $$ is the PID of the script). Note that all /tmp files
are cleared after 10 days or upon system reboot. You can replicate the old work directory scheme
where files were never deleted automatically by simply setting LOADUP_WORKDIR to "./tmp"
* loadup-db.sh -- phase 6 (makes unreleased 'fuller.sysout' and fuller.database
* copy-all.sh -- copy loadups from tmp/ to loadups/ and library/
* loadup-all.sh [-apps] -- Phases 1-4 & 6 (plus Phase 5 with -apps flag)
* loadup-db.sh -- phase 7 only based on full.syout in loadup directory
These two scripts call the 7 scripts above as specified and then (if successful) copy (ln) the results
to the loadups directory using a versioned copy. The files are hardlinked into loadups from the workdir
if workdir and loadups are on the same filesystem, otherwise they are copied.
* loadup-full.sh -- Phases 1-4 only, no copy into loadups at the end.
## releases
* release-medley.sh -- will create Medley release tars and upload as a release on github.
Arguments: -d to make a draft release. \<Tag> to use as a tag for this
release on github (defaults to meldey-\<date>-\<seconds since epoch>).
Both are optional.
* release-make-tars.sh -- will create the Medley release tars and store them in the releases directory.
## possibly handy scripts
* lsee <lispfile> -- show lisp file with font-control-characters rendered as linux color changes
* cpv file1 file2 -- copies file1 to file2 (or directory name) adding versions
* cpv file1 file2 -- hardlinks (or copies) file1 to file2 (or directory name) adding versions
choice of hardlink or copy depends on whether the files are on the same filesystem.
* restore-versions.sh -- pulls out old versions from git history and links in with medley versioning conventions
## Not useful anymore

View File

@@ -1,30 +1,31 @@
#!/bin/sh
export MEDLEYDIR=`pwd`
if [ ! -x run-medley ] ; then
echo run from MEDLEYDIR
exit 1
fi
# was
# cp -p tmp/full.sysout tmp/lisp.sysout tmp/*.dribble tmp/whereis.hash loadups/
# cp -p tmp/exports.all tmp/RDSYS tmp/RDSYS.LCOM library/
# just copy the files that are released
. scripts/loadup-setup.sh
./scripts/cpv tmp/init.dribble loadups
./scripts/cpv tmp/lisp.dribble loadups
./scripts/cpv tmp/full.dribble loadups
./scripts/cpv tmp/fuller.dribble loadups
./scripts/cpv tmp/whereis.dribble loadups
echo ">>>>> START ${script_name}"
./scripts/cpv tmp/fuller.database loadups
./scripts/cpv tmp/full.sysout loadups
./scripts/cpv tmp/lisp.sysout loadups
./scripts/cpv tmp/whereis.hash loadups
./scripts/cpv tmp/exports.all loadups
./scripts/cpv "${LOADUP_WORKDIR}"/full.sysout "${LOADUP_OUTDIR}" | sed -e "s#${MEDLEYDIR}/##g"
./scripts/cpv "${LOADUP_WORKDIR}"/lisp.sysout "${LOADUP_OUTDIR}" | sed -e "s#${MEDLEYDIR}/##g"
if [ "${1}" = "-apps" ]; then
./scripts/cpv tmp/apps.sysout loadups
./scripts/cpv "${LOADUP_WORKDIR}"/apps.sysout "${LOADUP_OUTDIR}" | sed -e "s#${MEDLEYDIR}/##g"
fi
./scripts/cpv "${LOADUP_WORKDIR}"/whereis.hash "${LOADUP_OUTDIR}" | sed -e "s#${MEDLEYDIR}/##g"
./scripts/cpv "${LOADUP_WORKDIR}"/exports.all "${LOADUP_OUTDIR}" | sed -e "s#${MEDLEYDIR}/##g"
./scripts/cpv "${LOADUP_WORKDIR}"/init.dribble "${LOADUP_OUTDIR}" | sed -e "s#${MEDLEYDIR}/##g"
./scripts/cpv "${LOADUP_WORKDIR}"/lisp.dribble "${LOADUP_OUTDIR}" | sed -e "s#${MEDLEYDIR}/##g"
./scripts/cpv "${LOADUP_WORKDIR}"/full.dribble "${LOADUP_OUTDIR}" | sed -e "s#${MEDLEYDIR}/##g"
./scripts/cpv "${LOADUP_WORKDIR}"/whereis.dribble "${LOADUP_OUTDIR}" | sed -e "s#${MEDLEYDIR}/##g"
./scripts/cpv "${LOADUP_WORKDIR}"/RDSYS library | sed -e "s#${MEDLEYDIR}/##g"
./scripts/cpv "${LOADUP_WORKDIR}"/RDSYS.LCOM library | sed -e "s#${MEDLEYDIR}/##g"
echo "<<<<< END ${script_name}"
echo ""
exit 0

17
scripts/copy-db.sh Executable file
View File

@@ -0,0 +1,17 @@
#!/bin/sh
if [ ! -x run-medley ] ; then
echo run from MEDLEYDIR
exit 1
fi
. scripts/loadup-setup.sh
echo ">>>>> START ${script_name}"
./scripts/cpv "${LOADUP_WORKDIR}"/fuller.database "${LOADUP_OUTDIR}"
./scripts/cpv "${LOADUP_WORKDIR}"/fuller.dribble "${LOADUP_OUTDIR}"
echo "<<<<< END ${script_name}"
echo ""
exit 0

View File

@@ -2,14 +2,19 @@
# cpv file dest
# could extend with -r or copying multiple files
# could change from cp to ln
ln_or_cp () {
f=$(df $(dirname $1) | tail -1 | awk '{ print $1 }')
d=$(df $(dirname $2) | tail -1 | awk '{ print $1 }')
if [ "$f" != "$d" ]; then cmd="cp -p"; else cmd="ln"; fi
echo $cmd
}
file="$1"
dest="$2"
if [ ! -f "$file" ]; then
echo no such file "$file"
echo "Error: no such file "$file". Exiting."
exit 1
fi
@@ -18,9 +23,16 @@ if [ -d "$dest" ]; then
dest=$dest/`basename $file`
fi
# if (the new) $dest is a directory, then just bail
if [ -d "$dest" ]; then
echo "Error: destination file ($dest) is a directory. Exiting."
exit 1
fi
# if no such file $dest then just copy
if [ ! -f "$dest" ]; then
ln $file $dest #WAS cp -p $file $dest
$(ln_or_cp $file $dest) $file $dest
echo "Added $(basename $dest) to $(dirname $dest)"
exit 0
fi
@@ -41,7 +53,7 @@ if [ $max -eq 0 ]; then # no current versions
new=2
else
if cmp -q $dest $dest.~$max~ >/dev/null 2>&1
then # they're different
then # they're different
max=`expr $max + 1` # make newer version
mv $dest $dest.~$max~
new=`expr $max + 1`
@@ -51,11 +63,10 @@ else
fi
fi
# make new version
# make new version and link it
ln $file $dest.~$new~ # cp -p $file $dest.~$new~
ln $dest.~$new~ $dest # and link it
$(ln_or_cp $file $dest.~new~) $file $dest.~$new~
echo "Added $(basename $dest.~$new~) to $(dirname $dest.~$new~)"
rm -f $dest
ln $dest.~$new~ $dest
echo "Linked $(basename $dest) to $(basename $dest.~$new~) in $(dirname $dest)"

View File

@@ -1,12 +1,12 @@
#!/bin/sh
export MEDLEYDIR=`pwd`
if [ ! -x run-medley ] ; then
echo run from MEDLEYDIR
exit 1
fi
. scripts/loadup-setup.sh
if [ "$1" = "-apps" ]; then
apps="./scripts/loadup-apps-from-full.sh"
else
@@ -21,7 +21,13 @@ fi
./scripts/loadup-aux.sh && \
./scripts/copy-all.sh $1
echo "**** DONE ****"
if [ $? -eq 0 ];
then
echo "+++++ loadup-all.sh: SUCCESS +++++"
else
echo "----- loadup-all.sh: FAILURE -----"
fi

View File

@@ -1,32 +1,14 @@
#!/bin/bash
#!/bin/sh
#set -x
if [ ! -x run-medley ] ; then
echo must run from MEDLEYDIR ;
exit 1 ;
fi
# function to discover what directory this script is being executed from
where_am_i() {
. scripts/loadup-setup.sh
# call this with ${BASH_SOURCE[0]:-$0} as its (only) parameter
loadup_start
local SCRIPT_PATH="$1";
pushd . > '/dev/null';
while [ -h "$SCRIPT_PATH" ];
do
cd "$( dirname -- "$SCRIPT_PATH"; )";
SCRIPT_PATH="$( readlink -f -- "$SCRIPT_PATH"; )";
done
cd "$( dirname -- "$SCRIPT_PATH"; )" > '/dev/null';
SCRIPT_PATH="$( pwd; )";
popd > '/dev/null';
echo "${SCRIPT_PATH}"
}
SCRIPTDIR=$(where_am_i "${BASH_SOURCE[0]:-$0}")
export MEDLEYDIR=$(cd ${SCRIPTDIR} && cd .. && pwd)
export ROOMSDIR=${MEDLEYDIR}/rooms
export CLOSDIR=${MEDLEYDIR}/clos
@@ -41,33 +23,35 @@ if [ ! -e ${NOTECARDSDIR} ]; then
fi
fi
if [ -z "${SYSOUTDIR}" ]; then
export SYSOUTDIR=${MEDLEYDIR}/tmp
fi
cat >"${cmfile}" <<"EOF"
"
if [ -z "${FULLSYSOUTPATH}" ]; then
FULLSYSOUTPATH=${SYSOUTDIR}/full.sysout
if [ ! -e ${FULLSYSOUTPATH} ]; then
FULLSYSOUTPATH=${MEDLEYDIR}/loadups/full.sysout
fi
fi
(PROGN
(IL:MEDLEY-INIT-VARS 'IL:GREET)
(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 ROOMSDIR))(QUOTE /ROOMS)) '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:HARDRESET)
)
SHH
(PROGN
(IL:ENDLOADUP)
(CLOS::LOAD-CLOS)
(IL:|Apps.LOADUP|)
(IL:MAKESYS
(IL:CONCAT (QUOTE {DSK})(IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR))(IL:L-CASE (QUOTE /apps.sysout)))
:APPS)
)
(IL:LOGOUT T)
cd ${MEDLEYDIR}
"
EOF
scr="-sc 1024x768 -g 1042x790"
mkdir -p ${SYSOUTDIR}
touch ${SYSOUTDIR}/loadup.timestamp
./run-medley $scr -loadup "${MEDLEYDIR}/sources/LOADUP-APPS.CM" "${FULLSYSOUTPATH}"
if [ ${SYSOUTDIR}/apps.sysout -nt ${SYSOUTDIR}/loadup.timestamp ]; then
echo ---- made ----
ls -l ${SYSOUTDIR}/apps.*
echo --------------
else
echo XXXXX FAILURE XXXXX
ls -l ${SYSOUTDIR}/apps.*
exit 1
fi
./run-medley ${scr} -loadup "${cmfile}" "${LOADUP_WORKDIR}/full.sysout"
loadup_finish "apps.sysout" "apps.*"

View File

@@ -1,28 +1,31 @@
#!/bin/sh
export MEDLEYDIR=`pwd`
if [ ! -f run-medley ] ; then
echo run from MEDLEYDIR
exit 1
fi
mkdir -p tmp
touch tmp/loadup.timestamp
. scripts/loadup-setup.sh
scr="-sc 1024x768 -g 1042x790"
loadup_start
echo '" (IL:MEDLEY-INIT-VARS)(IL:LOAD(QUOTE MEDLEY-UTILS))(IL:MAKE-EXPORTS-ALL)(IL:MAKE-WHEREIS-HASH)(IL:LOGOUT T)"' > tmp/loadup-aux.cm
./run-medley $scr -loadup "$MEDLEYDIR"/tmp/loadup-aux.cm tmp/full.sysout
cat >"${cmfile}" <<"EOF"
"
(PROG
((WORKDIR (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV (QUOTE LOADUP_WORKDIR)) (QUOTE /))))
(IL:MEDLEY-INIT-VARS)
(IL:LOAD(QUOTE MEDLEY-UTILS))
(IL:MAKE-EXPORTS-ALL (IL:CONCAT WORKDIR (IL:L-CASE (QUOTE exports.all))))
(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)))
)
(IL:LOGOUT T)
)
"
EOF
if [ tmp/whereis.hash -nt tmp/loadup.timestamp ]; then
echo ---- made ----
ls -l tmp/whereis.hash tmp/exports.all
echo --------------
./run-medley ${scr} -loadup "${cmfile}" "${LOADUP_WORKDIR}"/full.sysout
else
echo XXXXX FAILURE XXXXX
ls -l tmp/whereis.hash tmp/exports.all
exit 1
fi
loadup_finish "whereis.hash" "whereis.hash" "exports.all"

41
scripts/loadup-db-from-full.sh Executable file
View File

@@ -0,0 +1,41 @@
#!/bin/sh
if [ ! -x run-medley ] ; then
echo run from MEDLEYDIR
exit 1
fi
. scripts/loadup-setup.sh
loadup_start
SYSOUT="${MEDLEYDIR}/loadups/full.sysout"
if [ ! -f "${SYSOUT}" ];
then
echo "Error: cannot find ${SYSOUT}. Exiting."
exit 1
fi
cat >"${cmfile}" <<"EOF"
"
(PROG
((WORKDIR (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV (QUOTE LOADUP_WORKDIR)) (QUOTE /))))
(IL:MEDLEY-INIT-VARS)
(IL:FILESLOAD MEDLEY-UTILS)
(SETQ IL:DIRECTORIES (CONS (IL:UNIX-GETENV (QUOTE 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:LOGOUT T)
)
"
EOF
./run-medley ${scr} -loadup "${cmfile}" "${SYSOUT}"
loadup_finish "fuller.database" "fuller*"

View File

@@ -1,26 +1,22 @@
#!/bin/sh
export MEDLEYDIR=`pwd`
if [ ! -f run-medley ] ; then
if [ ! -x run-medley ] ; then
echo run from MEDLEYDIR
exit 1
fi
touch tmp/db.timestamp
. scripts/loadup-setup.sh
scr="-sc 1024x768 -g 1042x790"
echo '" (IL:MEDLEY-INIT-VARS)(IL:FILESLOAD MEDLEY-UTILS)(IL:MAKE-FULLER-DB)(IL:LOGOUT T)"' > tmp/db.cm
./run-medley $scr -loadup "$MEDLEYDIR"/tmp/db.cm -n
if [ tmp/fuller.database -nt tmp/db.timestamp ]; then
echo ---- made ----
ls -l tmp/fuller*
echo --------------
./scripts/loadup-db-from-full.sh && ./scripts/copy-db.sh
if [ $? -eq 0 ];
then
echo "+++++ loadup-db.sh: SUCCESS +++++"
else
echo XXXXX FAILURE XXXXX
ls -l tmp/fuller*
exit 1
echo "----- loadup-db.sh: FAILURE -----"
fi

View File

@@ -1,25 +1,33 @@
#!/bin/sh
export MEDLEYDIR=`pwd`
if [ ! -x run-medley ] ; then
echo must run from MEDLEYDIR ;
exit 1 ;
fi
scr="-sc 1024x768 -g 1042x790"
touch tmp/loadup.timestamp
. scripts/loadup-setup.sh
./run-medley $scr -loadup "$MEDLEYDIR/sources/LOADUP-FULL.CM" "$MEDLEYDIR/tmp/lisp.sysout"
loadup_start
if [ tmp/full.sysout -nt tmp/loadup.timestamp ]; then
echo ---- made ----
ls -l tmp/full.*
echo --------------
cat >"${cmfile}" <<"EOF"
"
(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:HARDRESET)
)
SHH
(PROGN
(IL:ENDLOADUP)
(IL:MAKESYS (IL:CONCAT (QUOTE {DSK})(IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR))(IL:L-CASE (QUOTE /full.sysout))) :FULL))
(IL:LOGOUT T)
)
"
EOF
./run-medley ${scr} -loadup "${cmfile}" "${LOADUP_WORKDIR}/lisp.sysout"
loadup_finish "full.sysout" "full.*"
else
echo XXXXX FAILURE XXXXX
ls -l tmp/full.*
exit 1
fi

View File

@@ -1,15 +1,14 @@
#!/bin/sh
export MEDLEYDIR=`pwd`
if [ ! -x run-medley ] ; then
echo must run from MEDLEYDIR ;
exit 1 ;
fi
. ./scripts/loadup-setup.sh
./scripts/loadup-init.sh && \
./scripts/loadup-mid-from-init.sh && \
./scripts/loadup-lisp-from-mid.sh && \
./scripts/loadup-full-from-lisp.sh
./scripts/loadup-init.sh && \
./scripts/loadup-mid-from-init.sh && \
./scripts/loadup-lisp-from-mid.sh && \
./scripts/loadup-full-from-lisp.sh

View File

@@ -1,26 +1,45 @@
#!/bin/sh
export MEDLEYDIR=`pwd`
if [ ! -f run-medley ] ; then
echo run from MEDLEYDIR
exit 1
fi
scr="-sc 1024x768 -g 1042x790"
. scripts/loadup-setup.sh
mkdir -p tmp
touch tmp/loadup.timestamp
loadup_start
./run-medley $scr -loadup "$MEDLEYDIR"/sources/LOADUP-INIT.LISP loadups/starter.sysout
cat >"${cmfile}" <<"EOF"
(* "make init files; this file is loaded as a 'greet' file by scripts/loadup-init.sh")
if [ tmp/init.dlinit -nt tmp/loadup.timestamp ]; then
echo ---- made ----
ls -l tmp/init.* tmp/RDSYS* tmp/I-NEW*
echo --------------
(SETQ MEDLEYDIR NIL)
(LOAD (CONCAT (UNIX-GETENV "MEDLEYDIR") "/sources/MEDLEYDIR.LCOM"))
(MEDLEY-INIT-VARS)
(CNDIR (UNIX-GETENV "LOADUP_WORKDIR"))
(DRIBBLE "init.dribble")
else
echo XXXXX FAILURE XXXXX
exit 1
fi
(UNADVISE)
(ADVISE 'PAGEFULLFN '(RETURN))
(ADVISE '(ERROR IN \DO-DEFINE-FILE-INFO) '(RETURN))
(MOVD? 'NILL 'SETTEMPLATE)
(DEFINEQ (RRE (LAMBDA (X Y) Y)))
(MOVD? 'RRE 'READ-READER-ENVIRONMENT)
(LOAD (CONCAT "{DSK}" (UNIX-GETENV "LOADUP_SOURCEDIR") "/" "MAKEINIT.LCOM"))
(PROG
((WORKDIR (CONCAT "{DSK}" (UNIX-GETENV "LOADUP_WORKDIR") "/"))
(LOADUP-SOURCE-DIR (CONCAT "{DSK}" (UNIX-GETENV "LOADUP_SOURCEDIR") "/"))
)
(SETQ DIRECTORIES (CONS LOADUP-SOURCE-DIR DIRECTORIES))
(RESETLST (RESETSAVE OK.TO.MODIFY.FNS T)
(MAKEINITGREET (CONCAT WORKDIR "init.sysout") (CONCAT WORKDIR "init.dlinit"))
)
)
(DRIBBLE)
(LOGOUT T)
STOP
EOF
./run-medley $scr -loadup "${cmfile}" "${LOADUP_SOURCEDIR}"/starter.sysout
loadup_finish "init.dlinit" "init.*" "RDSYS*" "I-NEW*"

View File

@@ -1,25 +1,34 @@
#!/bin/sh
export MEDLEYDIR=`pwd`
if [ ! -f run-medley ] ; then
echo run from MEDLEYDIR
exit 1
fi
touch tmp/loadup.timestamp
. scripts/loadup-setup.sh
scr="-sc 1024x768 -g 1042x790"
loadup_start
cat >"${cmfile}" <<"EOF"
"
./run-medley $scr -loadup "$MEDLEYDIR/sources/LOADUP-LISP.CM" tmp/init-mid.sysout
(PROGN
(LOAD (CONCAT (QUOTE {DSK}) (UNIX-GETENV (QUOTE MEDLEYDIR)) (QUOTE /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)))
(HARDRESET)
)
SHH
(PROGN
(IL:ENDLOADUP)
(IL:MAKESYS (IL:CONCAT (QUOTE {DSK}) (IL:UNIX-GETENV(QUOTE LOADUP_WORKDIR)) (IL:L-CASE (QUOTE /lisp.sysout))) :LISP)
(IL:LOGOUT T)
)
if [ tmp/lisp.sysout -nt tmp/loadup.timestamp ]; then
echo ---- made ----
ls -l tmp/lisp.*
echo --------------
else
echo XXXXX FAILURE XXXXX
exit 1
fi
"
EOF
./run-medley ${scr} -loadup "${cmfile}" "${LOADUP_WORKDIR}/init-mid.sysout"
loadup_finish "lisp.sysout" "lisp.*"

View File

@@ -1,26 +1,26 @@
#!/bin/sh
export MEDLEYDIR=`pwd`
if [ ! -x run-medley ] ; then
echo run from MEDLEYDIR
exit 1
fi
mkdir -p "$MEDLEYDIR/tmp"
touch tmp/loadup.timestamp
. scripts/loadup-setup.sh
scr="-sc 1024x768 -g 1042x790"
loadup_start
./run-medley -prog "ldeinit" -NF -loadup $MEDLEYDIR/sources/XREM.CM $scr -vmem tmp/init-mid.sysout tmp/init.dlinit
cat >"${cmfile}" <<"EOF"
"
(MOVD? (QUOTE NILL) (QUOTE PROMPTPRINT))
(MOVD? (QUOTE NILL) (QUOTE CURSORP))
(MOVD? (QUOTE NILL) (QUOTE CHANGEBACKGROUNDBORDER))
(LOGOUT)
"
EOF
./run-medley -prog "ldeinit" \
-NF \
-loadup "${cmfile}" ${scr} -vmem "${LOADUP_WORKDIR}/init-mid.sysout" \
"${LOADUP_WORKDIR}/init.dlinit"
echo
if [ tmp/loadup.timestamp -nt tmp/init-mid.sysout ]; then
echo XXXXX FAILURE XXXXX
exit 1
else
echo ---- made ----
ls -l tmp/init-mid.sysout
echo --------------
fi
loadup_finish "init-mid.sysout" "init-mid.sysout"

106
scripts/loadup-setup.sh Normal file
View File

@@ -0,0 +1,106 @@
export MEDLEYDIR=`pwd`
if [ -z "${LOADUP_WORKDIR}" ];
then
export LOADUP_WORKDIR=/tmp/loadups-$$
fi
if [ -z "${LOADUP_SOURCEDIR}" ];
then
export LOADUP_SOURCEDIR="${MEDLEYDIR}"/internal/loadups
fi
if [ -z "${LOADUP_OUTDIR}" ];
then
export LOADUP_OUTDIR="${MEDLEYDIR}"/loadups
fi
if [ ! -d "${LOADUP_OUTDIR}" ];
then
if [ ! -e "${LOADUP_OUTDIR}" ];
then
mkdir -p "${LOADUP_OUTDIR}"
else
"Error: ${LOADUP_OUTDIR} exists but is not a directory. Exiting."
fi
fi
if [ ! -d "${LOADUP_WORKDIR}" ];
then
if [ ! -e "${LOADUP_WORKDIR}" ];
then
mkdir -p "${LOADUP_WORKDIR}"
else
"Error: ${LOADUP_WORKDIR} exists but is not a directory. Exiting."
fi
fi
scr="-sc 1024x768 -g 1042x790"
touch "${LOADUP_WORKDIR}"/loadup.timestamp
script_name=$(basename "$0" ".sh")
cmfile="${LOADUP_WORKDIR}/${script_name}.cm"
######################################################################
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 () {
local exit_code
rm -f "${cmfile}"
if [ "${LOADUP_WORKDIR}"/loadup.timestamp -nt "${LOADUP_WORKDIR}/${1}" ];
then
echo "----- FAILURE -----"
exit_code=1
else
echo "+++++ SUCCESS +++++"
exit_code=0
fi
echo "..... files created ....."
shift;
for f in ${*};
do
for ff in $(ls -1 "${LOADUP_WORKDIR}"/$f);
do
if [ "${ff}" -nt "${LOADUP_WORKDIR}"/loadup.timestamp ];
then
ls -l ${ff} 2>/dev/null | grep -v "^.*~[0-9]\+~$"
fi
done
done
if [ "${TMP_PRE_EXISTS}" = "false" ];
then
rm -rf "${MEDLEYDIR}/tmp"
else
if [ "${LOGINDIR_PRE_EXISTS}" = "false" ];
then
rm -rf "${MEDLEYDIR}/tmp/logindir"
fi
fi
echo "<<<<< END ${script_name}"
echo ""
exit ${exit_code}
}
######################################################################

151
scripts/medley/medley.command Executable file
View File

@@ -0,0 +1,151 @@
#!/bin/bash
###############################################################################
#
# medley.sh - script for running Medley Interlisp on Linux/WSL.
# On Linux and WSL when using X Windows it just sets
# up directories and environment variables and then calls
# run-medley. On WSL, there is an option to run without
# or around X Windows by using the XVnc and a VNC viewer
# on the Windows side. This script will start this VNC viewer
# on the Windows side.
#
# 2023-01-12 Frank Halasz
#
# Copyright 2023 Interlisp.org
#
###############################################################################
#set -x
# functions to discover what directory this script is being executed from
get_abs_filename() {
# $1 : relative filename
echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
}
get_script_dir() {
# call this with ${BASH_SOURCE[0]:-$0} as its (only) parameter
# set -x
local SCRIPT_PATH="$( get_abs_filename "$1" )";
pushd . > '/dev/null';
while [ -h "$SCRIPT_PATH" ];
do
cd "$( dirname -- "$SCRIPT_PATH"; )";
SCRIPT_PATH="$( readlink -f -- "$SCRIPT_PATH"; )";
done
cd "$( dirname -- "$SCRIPT_PATH"; )" > '/dev/null';
SCRIPT_PATH="$( pwd; )";
popd > '/dev/null';
# set +x
echo "${SCRIPT_PATH}"
}
SCRIPTDIR=$(get_script_dir "${BASH_SOURCE[0]:-$0}")
# Define some generally useful functions
source ${SCRIPTDIR}/medley_utils.sh
export MEDLEYDIR=$(cd ${SCRIPTDIR}; cd ../..; pwd)
IL_DIR=$(cd ${MEDLEYDIR}; cd ..; pwd)
export LOGINDIR=${HOME}/il
# Are we running under Docker or if not under WSL
# or under Darwin?
#
docker=false
wsl=false
darwin=false
if [ "$(uname)" = "Darwin" ];
then
darwin=true
elif [ -n "${MEDLEY_DOCKER_BUILD_DATE}" ];
then
docker='true'
else
wsl_ver=0
# WSL2
grep --ignore-case --quiet wsl /proc/sys/kernel/osrelease
if [ $? -eq 0 ];
then
wsl='true'
wsl_ver=2
else
# WSL1
grep --ignore-case --quiet microsoft /proc/sys/kernel/osrelease
if [ $? -eq 0 ];
then
if [ $(uname -m) = x86_64 ];
then
wsl='true'
wsl_ver=1
else
echo "ERROR: Running Medley on WSL1 requires an x86_64-based PC."
echo "This is not an x86_64-based PC."
echo "Exiting"
exit 23
fi
else
wsl='false'
fi
fi
fi
# process args
source ${SCRIPTDIR}/medley_args.sh
# Make sure that there is not another instance currently running with this same id
ps ax | grep ldex | grep --quiet "\-id ${run_id}"
if [ $? -eq 0 ];
then
echo "Another instance of Medley Interlisp is already running with the id \"${run_id}\"."
echo "Only a single instance with a given id can be run at the same time."
echo "Please retry using the \"--id <name>\" argument to give this new instance a different id."
echo "Exiting"
exit 3
fi
# Set LDEDESTSYSOUT env variable based on id
if [ -z ${LDEDESTSYSOUT} ];
then
if [ "${run_id}" = "default" ];
then
export LDEDESTSYSOUT=${LOGINDIR}/vmem/lisp.virtualmem
else
export LDEDESTSYSOUT=${LOGINDIR}/vmem/lisp_${run_id}.virtualmem
fi
fi
# Create LOGINDIR if necessary
if [ ! -e ${LOGINDIR} ];
then
mkdir -p ${LOGINDIR}
elif [ ! -d ${LOGINDIR} ];
then
echo "ERROR: Medley requires a directory named ${LOGINDIR}."
echo "But ${LOGINDIR} exists appears not be a directory."
echo "Exiting"
exit 2
fi
mkdir -p ${LOGINDIR}/vmem
# Call run-medley with or without vnc
if [[ ( ${darwin} = true ) || (( ${wsl} = false || ${use_vnc} = false ) && ${docker} = false) ]];
then
# If not using vnc, just call run-medley
${MEDLEYDIR}/run-medley -id "${run_id}" ${geometry} ${screensize} ${run_args[@]}
else
# do the vnc thing on wsl or docker
source ${SCRIPTDIR}/medley_vnc.sh
fi

View File

@@ -1,142 +0,0 @@
#!/bin/bash
###############################################################################
#
# medley.sh - script for running Medley Interlisp on Linux/WSL.
# On Linux and WSL when using X Windows it just sets
# up directories and environment variables and then calls
# run-medley. On WSL, there is an option to run without
# or around X Windows by using the XVnc and a VNC viewer
# on the Windows side. This script will start this VNC viewer
# on the Windows side.
#
# 2023-01-12 Frank Halasz
#
# Copyright 2023 Interlisp.org
#
###############################################################################
#set -x
# functions to discover what directory this script is being executed from
get_abs_filename() {
# $1 : relative filename
echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
}
get_script_dir() {
# call this with ${BASH_SOURCE[0]:-$0} as its (only) parameter
# set -x
local SCRIPT_PATH="$( get_abs_filename "$1" )";
pushd . > '/dev/null';
while [ -h "$SCRIPT_PATH" ];
do
cd "$( dirname -- "$SCRIPT_PATH"; )";
SCRIPT_PATH="$( readlink -f -- "$SCRIPT_PATH"; )";
done
cd "$( dirname -- "$SCRIPT_PATH"; )" > '/dev/null';
SCRIPT_PATH="$( pwd; )";
popd > '/dev/null';
# set +x
echo "${SCRIPT_PATH}"
}
SCRIPTDIR=$(get_script_dir "${BASH_SOURCE[0]:-$0}")
# Define some generally useful functions
source ${SCRIPTDIR}/medley_utils.sh
export MEDLEYDIR=$(cd ${SCRIPTDIR}; cd ../..; pwd)
IL_DIR=$(cd ${MEDLEYDIR}; cd ..; pwd)
export LOGINDIR=${HOME}/il
# Are we running under Docker or if not under WSL?
if [ -n "${MEDLEY_DOCKER_BUILD_DATE}" ];
then
docker='true'
wsl='false'
else
docker='false'
wsl_ver=0
# WSL2
grep --ignore-case --quiet wsl /proc/sys/kernel/osrelease
if [ $? -eq 0 ];
then
wsl='true'
wsl_ver=2
else
# WSL1
grep --ignore-case --quiet microsoft /proc/sys/kernel/osrelease
if [ $? -eq 0 ];
then
if [ $(uname -m) = x86_64 ];
then
wsl='true'
wsl_ver=1
else
echo "ERROR: Running Medley on WSL1 requires an x86_64-based PC."
echo "This is not an x86_64-based PC."
echo "Exiting"
exit 23
fi
else
wsl='false'
fi
fi
fi
# process args
source ${SCRIPTDIR}/medley_args.sh
# Make sure that there is not another instance currently running with this same id
ps ax | grep ldex | grep --quiet "\-id ${run_id}"
if [ $? -eq 0 ];
then
echo "Another instance of Medley Interlisp is already running with the id \"${run_id}\"."
echo "Only a single instance with a given id can be run at the same time."
echo "Please retry using the \"--id <name>\" argument to give this new instance a different id."
echo "Exiting"
exit 3
fi
# Set LDEDESTSYSOUT env variable based on id
if [ -z ${LDEDESTSYSOUT} ];
then
if [ "${run_id}" = "default" ];
then
export LDEDESTSYSOUT=${LOGINDIR}/vmem/lisp.virtualmem
else
export LDEDESTSYSOUT=${LOGINDIR}/vmem/lisp_${run_id}.virtualmem
fi
fi
# Create LOGINDIR if necessary
if [ ! -e ${LOGINDIR} ];
then
mkdir -p ${LOGINDIR}
elif [ ! -d ${LOGINDIR} ];
then
echo "ERROR: Medley requires a directory named ${LOGINDIR}."
echo "But ${LOGINDIR} exists appears not be a directory."
echo "Exiting"
exit 2
fi
mkdir -p ${LOGINDIR}/vmem
# Call run-medley with or without vnc
if [[ ( ${wsl} = false || ${use_vnc} = false ) && ${docker} = false ]];
then
# If not using vnc, just call run-medley
${MEDLEYDIR}/run-medley -id "${run_id}" ${geometry} ${screensize} ${run_args[@]}
else
# do the vnc thing on wsl or docker
source ${SCRIPTDIR}/medley_vnc.sh
fi

1
scripts/medley/medley.sh Symbolic link
View File

@@ -0,0 +1 @@
medley.command

View File

@@ -140,7 +140,12 @@ do
shift
;;
-z | --man)
/usr/bin/man -l "${MEDLEYDIR}/docs/man-page/medley.1.gz"
if [ ${darwin} = true ];
then
/usr/bin/man "${MEDLEYDIR}/docs/man-page/medley.1.gz"
else
/usr/bin/man -l "${MEDLEYDIR}/docs/man-page/medley.1.gz"
fi
exit 0
;;
--windows)
@@ -155,16 +160,20 @@ do
usage "${err_msg[@]}"
;;
*)
if [[ $# -eq 1 || "$2" = "--" ]];
# if matched the empty string, just ignore
if [ -n "$1" ];
then
sysout_flag=true
sysout_arg="$2"
else
err_msg=(
"ERROR: sysout argument must be last argument"
"or last argument before the \"--\" flag"
)
usage "${err_msg[@]}"
if [[ $# -eq 1 || "$2" = "--" ]];
then
sysout_flag=true
sysout_arg="$1"
else
err_msg=(
"ERROR: sysout argument must be last argument"
"or last argument before the \"--\" flag"
)
usage "${err_msg[@]}"
fi
fi
;;
esac

90
scripts/release-make-tars.sh Executable file
View File

@@ -0,0 +1,90 @@
#!/bin/sh
######### Functions ########
check_exists () {
f="$1"
if [ -e "${f}" ]
then
echo "${f}"
else
echo "Warning: $f does not exist. $(basename ${f}) will not be included in release tars" 1>&2
echo " "
fi
}
######## End Functions #######
if [ ! -x run-medley ] ; then
echo run from MEDLEYDIR
exit 1
fi
export MEDLEYDIR=`pwd`
if [ -z "$1" ] ; then
tag=medley-$(date +%y%m%d)-$(date +%s)
else
tag="$1"
fi
short_tag="${tag#medley-}"
dirname=$(basename "${MEDLEYDIR}")
if [ "${dirname}" = "medley" ]
then
name_xform=" "
else
uname | grep -q -i Linux
if [ $? -eq 0 ]
then
name_xform="--xform s/^${dirname}/medley/"
else
name_xform="-s /^${dirname}/medley/"
fi
fi
cd ..
release_dir="${dirname}"/releases/"${short_tag}"
mkdir -p "${release_dir}"
echo making releases/${short_tag}/$tag-loadups.tgz
tar -c -z -f "${release_dir}"/$tag-loadups.tgz \
${name_xform} \
"${dirname}"/loadups/lisp.sysout \
"${dirname}"/loadups/full.sysout \
$(check_exists "${dirname}/loadups/apps.sysout") \
"${dirname}"/loadups/*.dribble \
"${dirname}"/loadups/whereis.hash \
"${dirname}"/loadups/exports.all \
$(check_exists "${dirname}/loadups/fuller.database") ;
echo making releases/${short_tag}/$tag-runtime.tgz
tar -c -z -f "${release_dir}"/$tag-runtime.tgz \
--exclude "*~" \
--exclude "*#*" \
--exclude exports.all \
--exclude "venuesysouts" \
${name_xform} \
"${dirname}"/clos \
"${dirname}"/docs/dinfo \
"${dirname}"/docs/man-page/medley.1.gz \
"${dirname}"/doctools \
"${dirname}"/greetfiles \
"${dirname}"/rooms \
"${dirname}"/medley \
"${dirname}"/run-medley \
"${dirname}"/scripts \
"${dirname}"/fonts/displayfonts \
"${dirname}"/fonts/altofonts \
"${dirname}"/fonts/adobe \
"${dirname}"/fonts/postscriptfonts \
"${dirname}"/fonts/ipfonts \
"${dirname}"/library \
"${dirname}"/lispusers \
"${dirname}"/sources \
"${dirname}"/internal \
"${dirname}"/unicode ;
echo "Done with release tars"

View File

@@ -6,48 +6,39 @@ if [ ! -x run-medley ] ; then
exit 1
fi
tag=$1
if [ -z "$tag" ] ; then
tag=medley-`date +%y%m%d`
if [ -z "$(which gh)" ]; then
echo "Error: this script requires gh (github cli) to be installed. Exiting."
exit 1
fi
cd ..
gh auth status 2>&1 | grep -i -q "Logged in to github.com"
if [ $? -ne 0 ]; then
echo 'Error: this script requires you to be logged into github. Use "gh auth login" to do so. Exiting.'
exit 1
fi
echo making $tag-loadups.tgz
if [ "$1" = "-d" ]; then
draft="-d"
shift
else
draft=""
fi
tar cfz medley/tmp/$tag-loadups.tgz \
medley/loadups/lisp.sysout \
medley/loadups/full.sysout \
medley/loadups/fuller.database \
medley/loadups/*.dribble \
medley/loadups/whereis.hash \
medley/loadups//exports.all
echo making $tag-runtime.tgz
if [ -z "$1" ] ; then
tag=medley-$(date +%y%m%d)-$(date +%s)
else
tag="$1"
fi
short_tag="${tag#medley-}"
tar cfz medley/tmp/$tag-runtime.tgz \
--exclude "*~" --exclude "*#*" \
medley/docs/dinfo \
medley/doctools \
medley/greetfiles \
medley/rooms \
medley/run-medley \
medley/scripts \
medley/fonts/displayfonts medley/fonts/altofonts \
medley/fonts/adobe \
medley/fonts/postscriptfonts \
medley/library \
medley/lispusers \
medley/sources \
medley/internal
cd medley
scripts/release-make-tars.sh "${tag}"
echo making release
sed s/'$tag'/$tag/g < release-notes.md > tmp/release-notes.md
gh release create $tag -F tmp/release-notes.md -p -t $tag
sed s/'$tag'/$tag/g < release-notes.md > releases/${short_tag}/release-notes.md
gh release create $tag -F releases/${short_tag}/release-notes.md -p -t $tag ${draft}
echo uploading
gh release upload $tag tmp/$tag-loadups.tgz tmp/$tag-runtime.tgz --clobber
gh release upload $tag releases/${short_tag}/$tag-loadups.tgz releases/${short_tag}/$tag-runtime.tgz --clobber
echo "Done with release ${tag}"

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "17-Jun-2023 13:12:06" {WMEDLEY}<sources>LLREAD.;104 90176
(FILECREATED "30-Jul-2023 17:42:27" {WMEDLEY}<sources>LLREAD.;105 90277
:EDIT-BY rmk
:CHANGES-TO (VARS LLREADCOMS CHARACTERNAMES)
:CHANGES-TO (FNS \SUBREAD)
:PREVIOUS-DATE "19-Jul-2022 23:36:54" {WMEDLEY}<sources>LLREAD.;102)
:PREVIOUS-DATE "17-Jun-2023 13:12:06" {WMEDLEY}<sources>LLREAD.;104)
(* ; "
@@ -629,6 +629,7 @@ Copyright (c) 1981-1988, 1990-1991, 1993, 2021 by Venue & Xerox Corporation.
(\SUBREAD
[LAMBDA (STRM SA READTYPE PNSTR CASEBASE EOF-SUPPRESS EOF-VALUE CHAR PRESERVE-WHITESPACE)
(* ; "Edited 30-Jul-2023 17:42 by rmk")
(* ; "Edited 19-Jul-2022 23:36 by rmk")
(* ; "Edited 6-Aug-2021 21:40 by rmk:")
@@ -674,7 +675,7 @@ Copyright (c) 1981-1988, 1990-1991, 1993, 2021 by Venue & Xerox Corporation.
then (* ;
 "caller specified eof-error-p of NIL. Happens only on top-level calls")
(RETURN EOF-VALUE)) (* ; "By Skipping Separator Characters,Happens CHARSET-Mode Exchanging. (Solution of AR#114 in FX, edited by tt [Jan-22-'90])")
(repeatwhile (EQ [SETQ SNX (\SYNCODE SA (SETQ CH (\INCCODE STRM]
(repeatwhile (EQ [SETQ SNX (\SYNCODE SA (SETQ CH (\INCCODE.EOLC STRM]
SEPRCHAR.RC))
(COND
((EQ CH CHAR) (* ;
@@ -782,7 +783,7 @@ Copyright (c) 1981-1988, 1990-1991, 1993, 2021 by Venue & Xerox Corporation.
(if (AND EOF-POSSIBILITY (SETQ AT-EOF (\EOFP STRM)))
then (* ; "EOF terminates atoms at top level")
(GO FINISHATOM)
elseif (EQ [SETQ SNX (\SYNCODE SA (SETQ CH (\INCCODE STRM]
elseif (EQ [SETQ SNX (\SYNCODE SA (SETQ CH (\INCCODE.EOLC STRM]
OTHER.RC)
then (* ;
 "normal case tested first--another vanilla constituent char, so keep accumulating atom chars")
@@ -1663,17 +1664,17 @@ Copyright (c) 1981-1988, 1990-1991, 1993, 2021 by Venue & Xerox Corporation.
(PUTPROPS LLREAD COPYRIGHT ("Venue & Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1990
1991 1993 2021))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3460 11904 (LASTC 3470 . 3776) (PEEKC 3778 . 4166) (PEEKCCODE 4168 . 4579) (RATOM 4581
. 5662) (READ 5664 . 6224) (READC 6226 . 6867) (READCCODE 6869 . 7628) (READP 7630 . 8182) (
SETREADMACROFLG 8184 . 8483) (SKIPSEPRCODES 8485 . 9565) (SKIPSEPRS 9567 . 9953) (SKREAD 9955 . 11902)
) (11950 20559 (CL:READ 11960 . 12509) (CL:READ-PRESERVING-WHITESPACE 12511 . 13233) (
CL:READ-DELIMITED-LIST 13235 . 14150) (CL:PARSE-INTEGER 14152 . 20557)) (20652 33129 (RSTRING 20662 .
21394) (READ-EXTENDED-TOKEN 21396 . 25268) (\RSTRING2 25270 . 33127)) (33165 63779 (\TOP-LEVEL-READ
33175 . 35158) (\SUBREAD 35160 . 60195) (\SUBREADCONCAT 60197 . 60820) (\ORIG-READ.SYMBOL 60822 .
61890) (\ORIG-INVALID.SYMBOL 61892 . 62791) (\APPLYREADMACRO 62793 . 63209) (INREADMACROP 63211 .
63777)) (63938 64113 (READQUOTE 63948 . 64111)) (64138 76042 (READVBAR 64148 . 65479) (READHASHMACRO
65481 . 71291) (DEFMACRO-LAMBDA-LIST-KEYWORD-P 71293 . 71513) (DIGITBASEP 71515 . 72249) (
READNUMBERINBASE 72251 . 74137) (ESTIMATE-DIMENSIONALITY 74139 . 74464) (SKIP.HASH.COMMENT 74466 .
75434) (CMLREAD.FEATURE.PARSER 75436 . 76040)) (76086 82430 (CHARACTER.READ 76096 . 77350) (
CHARCODE.DECODE 77352 . 82428)) (82431 85601 (HEXNUM? 82441 . 84784) (OCTALNUM? 84786 . 85599)))))
(FILEMAP (NIL (3442 11886 (LASTC 3452 . 3758) (PEEKC 3760 . 4148) (PEEKCCODE 4150 . 4561) (RATOM 4563
. 5644) (READ 5646 . 6206) (READC 6208 . 6849) (READCCODE 6851 . 7610) (READP 7612 . 8164) (
SETREADMACROFLG 8166 . 8465) (SKIPSEPRCODES 8467 . 9547) (SKIPSEPRS 9549 . 9935) (SKREAD 9937 . 11884)
) (11932 20541 (CL:READ 11942 . 12491) (CL:READ-PRESERVING-WHITESPACE 12493 . 13215) (
CL:READ-DELIMITED-LIST 13217 . 14132) (CL:PARSE-INTEGER 14134 . 20539)) (20634 33111 (RSTRING 20644 .
21376) (READ-EXTENDED-TOKEN 21378 . 25250) (\RSTRING2 25252 . 33109)) (33147 63880 (\TOP-LEVEL-READ
33157 . 35140) (\SUBREAD 35142 . 60296) (\SUBREADCONCAT 60298 . 60921) (\ORIG-READ.SYMBOL 60923 .
61991) (\ORIG-INVALID.SYMBOL 61993 . 62892) (\APPLYREADMACRO 62894 . 63310) (INREADMACROP 63312 .
63878)) (64039 64214 (READQUOTE 64049 . 64212)) (64239 76143 (READVBAR 64249 . 65580) (READHASHMACRO
65582 . 71392) (DEFMACRO-LAMBDA-LIST-KEYWORD-P 71394 . 71614) (DIGITBASEP 71616 . 72350) (
READNUMBERINBASE 72352 . 74238) (ESTIMATE-DIMENSIONALITY 74240 . 74565) (SKIP.HASH.COMMENT 74567 .
75535) (CMLREAD.FEATURE.PARSER 75537 . 76141)) (76187 82531 (CHARACTER.READ 76197 . 77451) (
CHARCODE.DECODE 77453 . 82529)) (82532 85702 (HEXNUM? 82542 . 84885) (OCTALNUM? 84887 . 85700)))))
STOP

Binary file not shown.

View File

@@ -1 +0,0 @@
"

View File

@@ -1 +0,0 @@
"

View File

@@ -1,19 +0,0 @@
(* "make init files; this file is loaded as a 'greet' file by scripts/loadup-init.sh")
(LOAD (CONCAT (UNIX-GETENV "MEDLEYDIR") "/sources/MEDLEYDIR.LCOM"))
(CNDIR (MEDLEYDIR "tmp"))
(DRIBBLE "init.dribble")
(UNADVISE)
(ADVISE 'PAGEFULLFN '(RETURN))
(ADVISE '(ERROR IN \DO-DEFINE-FILE-INFO) '(RETURN))
(MOVD? 'NILL 'SETTEMPLATE)
(DEFINEQ (RRE (LAMBDA (X Y) Y)))
(MOVD? 'RRE 'READ-READER-ENVIRONMENT)
(LOAD (MEDLEYDIR "sources" "MAKEINIT.LCOM"))
(MAKEINITGREET)
(DRIBBLE)
(LOGOUT T)
STOP

View File

@@ -1 +0,0 @@
"

Binary file not shown.

Binary file not shown.

View File

@@ -1,18 +1,14 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "17-Jun-99 21:58:52" {DSK}<project>medley3.5>sources>PROC.;2 173526
changes to%: (RECORDS MONITORLOCK)
(FILECREATED "29-Jul-2023 11:47:41" {DSK}<home>larry>il>medley>sources>PROC.;7 176222
previous date%: "31-Jan-98 18:03:02" {DSK}<project>medley3.5>sources>PROC.;1)
:EDIT-BY "lmm"
:CHANGES-TO (VARS PROCCOMS)
(FNS \BACKGROUND.PROCESS)
:PREVIOUS-DATE "28-Jul-2023 21:06:03" {DSK}<home>larry>il>medley>sources>PROC.;6)
(* ; "
Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1990, 1991, 1992, 1993, 1998, 1999 by Venue & Xerox Corporation. All rights reserved.
The following program was created in 1982 but has not been published
within the meaning of the copyright law, is furnished under license,
and may not be used, copied and/or disclosed except in accordance
with the terms of said license.
")
(PRETTYCOMPRINT PROCCOMS)
@@ -22,7 +18,7 @@ with the terms of said license.
(CONSTANTS \PSTAT.WAITING \PSTAT.RUNNING \PSTAT.DELETED))
(INITRECORDS PROCESS PROCESSQUEUE)
(SYSRECORDS PROCESS PROCESSQUEUE))
[COMS (* ; "User entries")
[COMS (* ; "User entries")
(FNS PROCESSWORLD ADD.PROCESS DEL.PROCESS PROCESS.RETURN FIND.PROCESS MAP.PROCESSES
PROCESSP RELPROCESSP RESTART.PROCESS WAKE.PROCESS SUSPEND.PROCESS PROCESS.RESULT
PROCESS-STATUS PROCESS.FINISHEDP)
@@ -37,27 +33,27 @@ with the terms of said license.
(GLOBALVARS TTY.PROCESS.DEFAULT \TTY.PROCESS.EVENT \PROCESS.NAME.TABLE)
(FNS PROCESSPROP PROCESS.NAME PROCESS.WINDOW)
(PROP ARGNAMES PROCESSPROP ADD.PROCESS)
(COMS (* ; "Temporary")
(COMS (* ; "Temporary")
(P (MOVD? 'PROCESS.RETURN 'KILL.ME NIL T]
(COMS (FNS DISMISS BLOCK WAITFORINPUT \WAITFORSYSBUFP)
(* ; "Used to be a GLOBALRESOURCES")
(* ; "Used to be a GLOBALRESOURCES")
(DECLARE%: DONTCOPY (RESOURCES \DISMISSTIMER))
(INITRESOURCES \DISMISSTIMER))
(COMS (FNS EVAL.AS.PROCESS EVAL.IN.TTY.PROCESS)
(* ;; "The PROCESS.WAIT macro is an augmentation to BLOCK, waiting for a condition to come true, or a timeout, or a wakeup")
(* ;; "The PROCESS.WAIT macro is an augmentation to BLOCK, waiting for a condition to come true, or a timeout, or a wakeup")
(MACROS PROCESS.WAIT)
(FNS PROCESS.READ PROCESS.EVALV PROCESS.EVAL \PROCESS.EVAL1 PROCESS.APPLY
\PROCESS.APPLY1)
(* ;
 "Standard values for WAKEREASON -- PSTAT.TIMEDOUT is the only public one")
(* ;
 "Standard values for WAKEREASON -- PSTAT.TIMEDOUT is the only public one")
(VARS (PSTAT.WAKEUP "default WakeUp")
(PSTAT.TIMEDOUT "{time interval expired}")
(PSTAT.QUIT "Quit")
(\PSTAT.NORESULT "{no result yet}"))
(GLOBALVARS PSTAT.WAKEUP PSTAT.TIMEDOUT PSTAT.QUIT \PSTAT.NORESULT))
(COMS (* ; "Event stuff")
(COMS (* ; "Event stuff")
(DECLARE%: DONTCOPY (RECORDS EVENT))
(INITRECORDS EVENT)
(SYSRECORDS EVENT)
@@ -66,7 +62,7 @@ with the terms of said license.
(MACROS AWAIT.CONDITION)
(INITVARS (\PROCESS.AFTEREXIT.EVENT))
(GLOBALVARS \PROCESS.AFTEREXIT.EVENT))
(COMS (* ; "Monitor stuff")
(COMS (* ; "Monitor stuff")
(DECLARE%: DONTCOPY (RECORDS MONITORLOCK)
(MACROS .RELEASE.LOCK.))
(INITRECORDS MONITORLOCK)
@@ -74,7 +70,11 @@ with the terms of said license.
(FNS OBTAIN.MONITORLOCK CREATE.MONITORLOCK RELEASE.MONITORLOCK SI::MONITOR-UNWIND
MONITOR.AWAIT.EVENT \MONITORLOCK.DEFPRINT)
(MACROS WITH.MONITOR WITH.FAST.MONITOR))
(COMS (FNS \MAKE.PROCESS0 \MAKE.PROCESS1 \PROCESS.MOVEFRAME \RELEASE.PROCESS \UNWIND.PROCESS
(COMS (EXPORT (SPECVARS \BACKGROUND)
(GLOBALVARS \IGNORE.BACKGROUND))
(INITVARS (\BACKGROUND NIL)
(\IGNORE.BACKGROUND T))
(FNS \MAKE.PROCESS0 \MAKE.PROCESS1 \PROCESS.MOVEFRAME \RELEASE.PROCESS \UNWIND.PROCESS
\MAYBEBLOCK \BACKGROUND.PROCESS \MOUSE.PROCESS \TIMER.PROCESS
\PROCESS.RELEASE.LOCKS \SET.PROCESS.NAME \PROCESS.DEFPRINT)
(FNS \START.PROCESSES \PROCESS.GO.TO.SLEEP \PROC.RESUME \RUN.PROCESS \SUSPEND.PROCESS
@@ -82,9 +82,9 @@ with the terms of said license.
(DECLARE%: DONTCOPY (MACROS \RESCHEDULE)))
(COMS (FNS \PROCESS.INIT \PROCESS.EVENTFN \PROCESS.BEFORE.LOGOUT \PROCESS.AFTER.EXIT
\PROCESS.RESET.TIMERS \PROC.AFTER.WINDOWWORLD \TURN.ON.PROCESSES)
(* ; "Redefinitions")
(* ; "Redefinitions")
(FNS \PROC.CODEFORTFRAME \PROC.REPEATEDLYEVALQT))
(COMS (* ; "switching stacks")
(COMS (* ; "switching stacks")
(FNS BREAK.PROCESS \SELECTPROCESS \PROCESS.MAKEFRAME \PROCESS.MAKEFRAME0))
(INITVARS (%#MYHANDLE#)
(%#SCHEDULER#)
@@ -117,7 +117,7 @@ with the terms of said license.
PROC.DEFAULT.PRIORITY \PROC.RUN.NEXT.FLG \SYSTEMTIMERVARS)
(MACROS ALIVEPROCP DEADPROCP \COERCE.TO.PROCESS)
(LOCALVARS . T)))
(COMS (* ; "Debugging")
(COMS (* ; "Debugging")
(FNS \CHECK.PQUEUE)
(FNS PPROC PPROCWINDOW PPROCREPAINTFN PPROCRESHAPEFN PPROCEXTENT PPROC1
PROCESS.STATUS.WINDOW \PSW.SELECTED \PSWOP.SELECTED PROCESS.BACKTRACE
@@ -139,8 +139,8 @@ with the terms of said license.
(P (DEFPRINT 'PROCESS (FUNCTION \PROCESS.DEFPRINT))
(DEFPRINT 'EVENT (FUNCTION \EVENT.DEFPRINT))
(DEFPRINT 'MONITORLOCK (FUNCTION \MONITORLOCK.DEFPRINT))
(* ;
 "\process.init must come last, since it does a HARDRESET")
(* ;
 "\process.init must come last, since it does a HARDRESET")
(\PROCESS.INIT)))
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
(NLAML)
@@ -149,80 +149,80 @@ with the terms of said license.
(DECLARE%: DONTCOPY
(* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE
(DATATYPE PROCESS ((PROCFX0 WORD) (* ;
 "= \STACKHI to make this look like a STACKP")
(PROCFX WORD) (* ;
 "Stack pointer to this context when it is asleep")
(PROCSTATUS BYTE) (* ; "Running or waiting")
(PROCNAME POINTER) (* ;
 "Name for convenience in type-in reference")
(PROCPRIORITY BYTE) (* ;
 "Priority level, 0-4. Not currently used.")
(PROCQUEUE POINTER) (* ;
 "Queue of processes at the same priority")
(NIL BYTE)
(NEXTPROCHANDLE POINTER) (* ; "Pointer to next one")
(PROCTIMERSET FLAG) (* ;
 "True if PROCWAKEUPTIMER has an interesting value")
(PROCBEINGDELETED FLAG) (* ;
 "True if proc was deleted, but hasn't been removed from \PROCESSES yet")
(PROCDELETED FLAG)
(PROCSYSTEMP FLAG)
(PROCNEVERSTARTED FLAG)
(NIL FLAG)
(NIL FLAG)
(NIL FLAG)
(PROCWAKEUPTIMER POINTER) (* ;
 "a largep recording the time this proc last went to sleep")
(PROCTIMERLINK POINTER) (* ; "For linking proc in timer queue")
(PROCTIMERBOX POINTER) (* ;
 "Scratch box to use for PROCWAKEUPTIMER when user does not give one explicitly")
(WAKEREASON POINTER) (* ;
 "Reason process is being run. From WAKE.PROCESS or timer or event wakeup; T from simple BLOCK")
(PROCEVENTORLOCK POINTER) (* ;
 "EVENT or MONITOR lock that this proc is waiting for")
(PROCFORM POINTER) (* ; "Form to EVAL to start it going")
(RESTARTABLE POINTER) (* ;
 "T = autorestart on error, HARDRESET = restart only on hard reset, NIL = never restart")
(PROCWINDOW POINTER) (* ;
 "Window this process lives in, if any")
(PROCFINISHED POINTER) (* ;
 "True if proc finished. Value is indication of how: NORMAL, DELETED, ERROR")
(PROCRESULT POINTER) (* ;
 "Value it returned if it finished normally")
(PROCFINISHEVENT POINTER) (* ;
 "Optional EVENT to be notified when proc finishes")
(PROCMAILBOX POINTER) (* ; "Message queue")
(PROCDRIBBLEOUTPUT POINTER) (* ;
 "Binding for *DRIBBLE-OUTPUT* in this process")
(PROCINFOHOOK POINTER) (* ;
 "Optional user fn that displays info about process")
(PROCTYPEAHEAD POINTER) (* ;
 "Buffer of typeahead destined for this proc")
(PROCREMOTEINFO POINTER) (* ; "For Enterprise")
(PROCUSERDATA POINTER) (* ; "For PROCESSPROP")
(PROCEVENTLINK POINTER) (* ; "Used to maintain EVENT queues")
(PROCAFTEREXIT POINTER) (* ;
 "What to do with this process when coming back from a LOGOUT, etc")
(PROCBEFOREEXIT POINTER) (* ; "If DON'T, can't logout")
(PROCOWNEDLOCKS POINTER) (* ;
 "Pointer to first lock I currently own")
(PROCEVAPPLYRESULT POINTER) (* ;
 "For PROCESS.EVAL and PROCESS.APPLY when WAITFORRESULT is true")
(PROCTTYENTRYFN POINTER) (* ;
 "Is applied to a process when it becomes the tty process")
(PROCTTYEXITFN POINTER) (* ;
 "Is applied to a process when it ceases to be the tty process")
(PROCHARDRESETINFO POINTER) (* ;
 "HARDRESET stores info about unwind-protect cleanups here")
(PROCRESTARTFORM POINTER) (* ;
 "use this instead of PROCFORM when restarting")
(PROCOLDTTYPROC POINTER) (* ;
 "Process that had the tty when we got it")
(NIL POINTER) (* ; "For expansion")
)
PROCTIMERBOX _ (CREATECELL \FIXP)
PROCFX0 _ \STACKHI)
(DATATYPE PROCESS ((PROCFX0 WORD) (* ;
 "= \STACKHI to make this look like a STACKP")
(PROCFX WORD) (* ;
 "Stack pointer to this context when it is asleep")
(PROCSTATUS BYTE) (* ; "Running or waiting")
(PROCNAME POINTER) (* ;
 "Name for convenience in type-in reference")
(PROCPRIORITY BYTE) (* ;
 "Priority level, 0-4. Not currently used.")
(PROCQUEUE POINTER) (* ;
 "Queue of processes at the same priority")
(NIL BYTE)
(NEXTPROCHANDLE POINTER) (* ; "Pointer to next one")
(PROCTIMERSET FLAG) (* ;
 "True if PROCWAKEUPTIMER has an interesting value")
(PROCBEINGDELETED FLAG) (* ;
 "True if proc was deleted, but hasn't been removed from \PROCESSES yet")
(PROCDELETED FLAG)
(PROCSYSTEMP FLAG)
(PROCNEVERSTARTED FLAG)
(NIL FLAG)
(NIL FLAG)
(NIL FLAG)
(PROCWAKEUPTIMER POINTER) (* ;
 "a largep recording the time this proc last went to sleep")
(PROCTIMERLINK POINTER) (* ; "For linking proc in timer queue")
(PROCTIMERBOX POINTER) (* ;
 "Scratch box to use for PROCWAKEUPTIMER when user does not give one explicitly")
(WAKEREASON POINTER) (* ;
 "Reason process is being run. From WAKE.PROCESS or timer or event wakeup; T from simple BLOCK")
(PROCEVENTORLOCK POINTER) (* ;
 "EVENT or MONITOR lock that this proc is waiting for")
(PROCFORM POINTER) (* ; "Form to EVAL to start it going")
(RESTARTABLE POINTER) (* ;
 "T = autorestart on error, HARDRESET = restart only on hard reset, NIL = never restart")
(PROCWINDOW POINTER) (* ;
 "Window this process lives in, if any")
(PROCFINISHED POINTER) (* ;
 "True if proc finished. Value is indication of how: NORMAL, DELETED, ERROR")
(PROCRESULT POINTER) (* ;
 "Value it returned if it finished normally")
(PROCFINISHEVENT POINTER) (* ;
 "Optional EVENT to be notified when proc finishes")
(PROCMAILBOX POINTER) (* ; "Message queue")
(PROCDRIBBLEOUTPUT POINTER) (* ;
 "Binding for *DRIBBLE-OUTPUT* in this process")
(PROCINFOHOOK POINTER) (* ;
 "Optional user fn that displays info about process")
(PROCTYPEAHEAD POINTER) (* ;
 "Buffer of typeahead destined for this proc")
(PROCREMOTEINFO POINTER) (* ; "For Enterprise")
(PROCUSERDATA POINTER) (* ; "For PROCESSPROP")
(PROCEVENTLINK POINTER) (* ; "Used to maintain EVENT queues")
(PROCAFTEREXIT POINTER) (* ;
 "What to do with this process when coming back from a LOGOUT, etc")
(PROCBEFOREEXIT POINTER) (* ; "If DON'T, can't logout")
(PROCOWNEDLOCKS POINTER) (* ;
 "Pointer to first lock I currently own")
(PROCEVAPPLYRESULT POINTER) (* ;
 "For PROCESS.EVAL and PROCESS.APPLY when WAITFORRESULT is true")
(PROCTTYENTRYFN POINTER) (* ;
 "Is applied to a process when it becomes the tty process")
(PROCTTYEXITFN POINTER) (* ;
 "Is applied to a process when it ceases to be the tty process")
(PROCHARDRESETINFO POINTER) (* ;
 "HARDRESET stores info about unwind-protect cleanups here")
(PROCRESTARTFORM POINTER) (* ;
 "use this instead of PROCFORM when restarting")
(PROCOLDTTYPROC POINTER) (* ;
 "Process that had the tty when we got it")
(NIL POINTER) (* ; "For expansion")
)
PROCTIMERBOX _ (CREATECELL \FIXP)
PROCFX0 _ \STACKHI)
)
(/DECLAREDATATYPE 'PROCESS
@@ -281,15 +281,15 @@ with the terms of said license.
(DECLARE%: EVAL@COMPILE
(DATATYPE PROCESSQUEUE ((PQPRIORITY BYTE) (* ;
 "Priority for the processes in thie queue.")
(PQHIGHER POINTER) (* ; "Next higher-prioirty queue")
(PQLOWER POINTER) (* ; "Next lower")
(PQNEXT POINTER) (* ;
 "The process currently running or runnable at this priority")
(PQLAST POINTER) (* ;
 "The proc previous to it. PQNEXT might be redundant")
))
(DATATYPE PROCESSQUEUE ((PQPRIORITY BYTE) (* ;
 "Priority for the processes in thie queue.")
(PQHIGHER POINTER) (* ; "Next higher-prioirty queue")
(PQLOWER POINTER) (* ; "Next lower")
(PQNEXT POINTER) (* ;
 "The process currently running or runnable at this priority")
(PQLAST POINTER) (* ;
 "The proc previous to it. PQNEXT might be redundant")
))
)
(/DECLAREDATATYPE 'PROCESSQUEUE '(BYTE POINTER POINTER POINTER POINTER)
@@ -374,55 +374,55 @@ with the terms of said license.
(ADDTOVAR SYSTEMRECLST
(DATATYPE PROCESS ((PROCFX0 WORD)
(PROCFX WORD)
(PROCSTATUS BYTE)
(PROCNAME POINTER)
(PROCPRIORITY BYTE)
(PROCQUEUE POINTER)
(NIL BYTE)
(NEXTPROCHANDLE POINTER)
(PROCTIMERSET FLAG)
(PROCBEINGDELETED FLAG)
(PROCDELETED FLAG)
(PROCSYSTEMP FLAG)
(PROCNEVERSTARTED FLAG)
(NIL FLAG)
(NIL FLAG)
(NIL FLAG)
(PROCWAKEUPTIMER POINTER)
(PROCTIMERLINK POINTER)
(PROCTIMERBOX POINTER)
(WAKEREASON POINTER)
(PROCEVENTORLOCK POINTER)
(PROCFORM POINTER)
(RESTARTABLE POINTER)
(PROCWINDOW POINTER)
(PROCFINISHED POINTER)
(PROCRESULT POINTER)
(PROCFINISHEVENT POINTER)
(PROCMAILBOX POINTER)
(PROCDRIBBLEOUTPUT POINTER)
(PROCINFOHOOK POINTER)
(PROCTYPEAHEAD POINTER)
(PROCREMOTEINFO POINTER)
(PROCUSERDATA POINTER)
(PROCEVENTLINK POINTER)
(PROCAFTEREXIT POINTER)
(PROCBEFOREEXIT POINTER)
(PROCOWNEDLOCKS POINTER)
(PROCEVAPPLYRESULT POINTER)
(PROCTTYENTRYFN POINTER)
(PROCTTYEXITFN POINTER)
(PROCHARDRESETINFO POINTER)
(PROCRESTARTFORM POINTER)
(PROCOLDTTYPROC POINTER)
(NIL POINTER)))
(PROCFX WORD)
(PROCSTATUS BYTE)
(PROCNAME POINTER)
(PROCPRIORITY BYTE)
(PROCQUEUE POINTER)
(NIL BYTE)
(NEXTPROCHANDLE POINTER)
(PROCTIMERSET FLAG)
(PROCBEINGDELETED FLAG)
(PROCDELETED FLAG)
(PROCSYSTEMP FLAG)
(PROCNEVERSTARTED FLAG)
(NIL FLAG)
(NIL FLAG)
(NIL FLAG)
(PROCWAKEUPTIMER POINTER)
(PROCTIMERLINK POINTER)
(PROCTIMERBOX POINTER)
(WAKEREASON POINTER)
(PROCEVENTORLOCK POINTER)
(PROCFORM POINTER)
(RESTARTABLE POINTER)
(PROCWINDOW POINTER)
(PROCFINISHED POINTER)
(PROCRESULT POINTER)
(PROCFINISHEVENT POINTER)
(PROCMAILBOX POINTER)
(PROCDRIBBLEOUTPUT POINTER)
(PROCINFOHOOK POINTER)
(PROCTYPEAHEAD POINTER)
(PROCREMOTEINFO POINTER)
(PROCUSERDATA POINTER)
(PROCEVENTLINK POINTER)
(PROCAFTEREXIT POINTER)
(PROCBEFOREEXIT POINTER)
(PROCOWNEDLOCKS POINTER)
(PROCEVAPPLYRESULT POINTER)
(PROCTTYENTRYFN POINTER)
(PROCTTYEXITFN POINTER)
(PROCHARDRESETINFO POINTER)
(PROCRESTARTFORM POINTER)
(PROCOLDTTYPROC POINTER)
(NIL POINTER)))
(DATATYPE PROCESSQUEUE ((PQPRIORITY BYTE)
(PQHIGHER POINTER)
(PQLOWER POINTER)
(PQNEXT POINTER)
(PQLAST POINTER)))
(PQHIGHER POINTER)
(PQLOWER POINTER)
(PQNEXT POINTER)
(PQLAST POINTER)))
)
@@ -1064,7 +1064,7 @@ with the terms of said license.
(RPAQ? \TTY.PROCESS )
(RPAQ? \PROCESS.NAME.TABLE (HASHARRAY 30 NIL (FUNCTION STRING-EQUAL-HASHBITS)
(FUNCTION STRING-EQUAL)))
(FUNCTION STRING-EQUAL)))
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS TTY.PROCESS.DEFAULT \TTY.PROCESS.EVENT \PROCESS.NAME.TABLE)
@@ -1302,14 +1302,12 @@ with the terms of said license.
(DECLARE%: EVAL@COMPILE
(PUTPROPS PROCESS.WAIT MACRO
[(WAITCOND TIMEOUT)
(bind ($$TIMEOUT _ (AND TIMEOUT (SETUPTIMER TIMEOUT))) until (AND $$TIMEOUT (
TIMEREXPIRED?
$$TIMEOUT))
do (if (SETQ $$VAL WAITCOND)
then (RETURN $$VAL)
else (BLOCK])
(PUTPROPS PROCESS.WAIT MACRO [(WAITCOND TIMEOUT)
(bind ($$TIMEOUT _ (AND TIMEOUT (SETUPTIMER TIMEOUT)))
until (AND $$TIMEOUT (TIMEREXPIRED? $$TIMEOUT))
do (if (SETQ $$VAL WAITCOND)
then (RETURN $$VAL)
else (BLOCK])
)
(DEFINEQ
@@ -1452,20 +1450,19 @@ with the terms of said license.
(DECLARE%: DONTCOPY
(DECLARE%: EVAL@COMPILE
(DATATYPE EVENT ((EVENTWAKEUPPENDING FLAG) (* ;
 "True if this event was signaled with nobody waiting on it")
(NIL BITS 3)
(EVENTQUEUETAIL POINTER) (* ;
 "Pointer to last process waiting on this event")
(EVENTNAME POINTER) (* ;
 "Optional name of EVENT for status window, debugging, etc")
)
(ACCESSFNS EVENT ((EVLOCKQUEUETAIL (ffetch EVENTQUEUETAIL of DATUM)
(freplace EVENTQUEUETAIL of DATUM with
NEWVALUE)))
(* ;
 "Used by both EVENT and MONITORLOCK data")
))
(DATATYPE EVENT ((EVENTWAKEUPPENDING FLAG) (* ;
 "True if this event was signaled with nobody waiting on it")
(NIL BITS 3)
(EVENTQUEUETAIL POINTER) (* ;
 "Pointer to last process waiting on this event")
(EVENTNAME POINTER) (* ;
 "Optional name of EVENT for status window, debugging, etc")
)
(ACCESSFNS EVENT ((EVLOCKQUEUETAIL (ffetch EVENTQUEUETAIL of DATUM)
(freplace EVENTQUEUETAIL of DATUM with NEWVALUE)))
(* ;
 "Used by both EVENT and MONITORLOCK data")
))
)
(/DECLAREDATATYPE 'EVENT '(FLAG (BITS 3)
@@ -1487,9 +1484,9 @@ with the terms of said license.
(ADDTOVAR SYSTEMRECLST
(DATATYPE EVENT ((EVENTWAKEUPPENDING FLAG)
(NIL BITS 3)
(EVENTQUEUETAIL POINTER)
(EVENTNAME POINTER)))
(NIL BITS 3)
(EVENTQUEUETAIL POINTER)
(EVENTNAME POINTER)))
)
(DEFINEQ
@@ -1593,17 +1590,17 @@ with the terms of said license.
)
(DECLARE%: EVAL@COMPILE
(PUTPROPS AWAIT.CONDITION MACRO
[(CONDITION EVNT TIMEOUT TIMERP)
(PROG [($$TIMER TIMEOUT)
($$EV (\DTEST EVNT 'EVENT]
(DECLARE (LOCALVARS $$TIMER $$EV))
LP (RETURN (OR CONDITION (COND
((NEQ (\PROCESS.GO.TO.SLEEP $$EV $$TIMER TIMERP)
$$EV)
NIL)
(T (AND $$TIMER (SETQ $$TIMER T))
(GO LP])
(PUTPROPS AWAIT.CONDITION MACRO [(CONDITION EVNT TIMEOUT TIMERP)
(PROG [($$TIMER TIMEOUT)
($$EV (\DTEST EVNT 'EVENT]
(DECLARE (LOCALVARS $$TIMER $$EV))
LP (RETURN (OR CONDITION (COND
((NEQ (\PROCESS.GO.TO.SLEEP $$EV
$$TIMER TIMERP)
$$EV)
NIL)
(T (AND $$TIMER (SETQ $$TIMER T))
(GO LP])
)
(RPAQ? \PROCESS.AFTEREXIT.EVENT )
@@ -1620,17 +1617,16 @@ with the terms of said license.
(DECLARE%: EVAL@COMPILE
(DATATYPE MONITORLOCK ((NIL FLAG)
(MLOCKPERPROCESS FLAG) (* ;
 "Monitor's use by anybody in process lets everyone in that proc use it, the normal case")
(NIL BITS 2)
(MLOCKQUEUETAIL POINTER) (* ;
 "Last process waiting for monitor to become available")
(MLOCKOWNER POINTER) (* ; "Process owning it")
(MLOCKNAME POINTER) (* ;
 "optional name, for debugging, etc")
(MLOCKLINK POINTER) (* ;
 "Link to next lock owned by my owner")
))
(MLOCKPERPROCESS FLAG) (* ;
 "Monitor's use by anybody in process lets everyone in that proc use it, the normal case")
(NIL BITS 2)
(MLOCKQUEUETAIL POINTER) (* ;
 "Last process waiting for monitor to become available")
(MLOCKOWNER POINTER) (* ; "Process owning it")
(MLOCKNAME POINTER) (* ; "optional name, for debugging, etc")
(MLOCKLINK POINTER) (* ;
 "Link to next lock owned by my owner")
))
)
(/DECLAREDATATYPE 'MONITORLOCK '(FLAG FLAG (BITS 2)
@@ -1646,46 +1642,48 @@ with the terms of said license.
(DECLARE%: EVAL@COMPILE
(PUTPROPS .RELEASE.LOCK. MACRO
[(LOCK EVENIFNOTMINE)
(UNINTERRUPTABLY
[PROG ((OWNER (ffetch MLOCKOWNER of LOCK))
TAIL PREV NEXTPROC)
(COND
((OR (NULL OWNER)
(AND (NEQ OWNER (THIS.PROCESS))
(NOT EVENIFNOTMINE)))
(RETURN)))
(freplace MLOCKOWNER of LOCK with NIL)
(* ;
 "Now remove LOCK from my list of owned locks")
[COND
((EQ (SETQ PREV (fetch PROCOWNEDLOCKS of OWNER))
LOCK)
(replace PROCOWNEDLOCKS of OWNER with (ffetch MLOCKLINK
of LOCK)))
(T (do (COND
((NULL PREV)
(RETURN (\MP.ERROR \MP.PROCERROR
"Lock not found among owner's owned locks" LOCK)))
[(EQ (fetch MLOCKLINK of PREV)
LOCK)
(RETURN (replace MLOCKLINK of PREV
with (ffetch MLOCKLINK of LOCK]
(T (SETQ PREV (fetch MLOCKLINK of PREV]
(freplace MLOCKLINK of LOCK with NIL)
(COND
((SETQ TAIL (ffetch MLOCKQUEUETAIL of LOCK))
(SETQ NEXTPROC (fetch PROCEVENTLINK of TAIL))
[COND
((EQ NEXTPROC TAIL) (* ; "Only one process in queue")
(freplace MLOCKQUEUETAIL of LOCK with NIL))
(T (replace PROCEVENTLINK of TAIL with (fetch PROCEVENTLINK
of NEXTPROC]
(replace PROCEVENTLINK of NEXTPROC with (replace PROCEVENTORLOCK
of NEXTPROC with
NIL))
(\RUN.PROCESS NEXTPROC LOCK])])
(PUTPROPS .RELEASE.LOCK. MACRO [(LOCK EVENIFNOTMINE)
(UNINTERRUPTABLY
[PROG ((OWNER (ffetch MLOCKOWNER of LOCK))
TAIL PREV NEXTPROC)
(COND
((OR (NULL OWNER)
(AND (NEQ OWNER (THIS.PROCESS))
(NOT EVENIFNOTMINE)))
(RETURN)))
(freplace MLOCKOWNER of LOCK with NIL)
(* ;
 "Now remove LOCK from my list of owned locks")
[COND
((EQ (SETQ PREV (fetch PROCOWNEDLOCKS of OWNER))
LOCK)
(replace PROCOWNEDLOCKS of OWNER
with (ffetch MLOCKLINK of LOCK)))
(T (do (COND
((NULL PREV)
(RETURN (\MP.ERROR \MP.PROCERROR
"Lock not found among owner's owned locks"
LOCK)))
[(EQ (fetch MLOCKLINK of PREV)
LOCK)
(RETURN (replace MLOCKLINK of PREV
with (ffetch MLOCKLINK
of LOCK]
(T (SETQ PREV (fetch MLOCKLINK of PREV]
(freplace MLOCKLINK of LOCK with NIL)
(COND
((SETQ TAIL (ffetch MLOCKQUEUETAIL of LOCK))
(SETQ NEXTPROC (fetch PROCEVENTLINK of TAIL))
[COND
((EQ NEXTPROC TAIL)
(* ; "Only one process in queue")
(freplace MLOCKQUEUETAIL of LOCK with NIL))
(T (replace PROCEVENTLINK of TAIL
with (fetch PROCEVENTLINK of NEXTPROC]
(replace PROCEVENTLINK of NEXTPROC
with (replace PROCEVENTORLOCK of NEXTPROC
with NIL))
(\RUN.PROCESS NEXTPROC LOCK])])
)
)
@@ -1702,12 +1700,12 @@ with the terms of said license.
(ADDTOVAR SYSTEMRECLST
(DATATYPE MONITORLOCK ((NIL FLAG)
(MLOCKPERPROCESS FLAG)
(NIL BITS 2)
(MLOCKQUEUETAIL POINTER)
(MLOCKOWNER POINTER)
(MLOCKNAME POINTER)
(MLOCKLINK POINTER)))
(MLOCKPERPROCESS FLAG)
(NIL BITS 2)
(MLOCKQUEUETAIL POINTER)
(MLOCKOWNER POINTER)
(MLOCKNAME POINTER)
(MLOCKLINK POINTER)))
)
(DEFINEQ
@@ -1804,23 +1802,36 @@ with the terms of said license.
)
(DECLARE%: EVAL@COMPILE
(PUTPROPS WITH.MONITOR MACRO
[(LOCK . FORMS)
(LET (SI::*LOCKED-MONITOR* SI::*RESETFORMS*)
(DECLARE (CL:SPECIAL SI::*LOCKED-MONITOR* SI::*RESETFORMS*))
(CL:UNWIND-PROTECT
(PROGN (OBTAIN.MONITORLOCK LOCK NIL 'WITH.MONITOR) . FORMS)
(SI::MONITOR-UNWIND))])
(PUTPROPS WITH.MONITOR MACRO [(LOCK . FORMS)
(LET (SI::*LOCKED-MONITOR* SI::*RESETFORMS*)
(DECLARE (CL:SPECIAL SI::*LOCKED-MONITOR* SI::*RESETFORMS*))
(CL:UNWIND-PROTECT
(PROGN (OBTAIN.MONITORLOCK LOCK NIL 'WITH.MONITOR) . FORMS)
(SI::MONITOR-UNWIND))])
(PUTPROPS WITH.FAST.MONITOR MACRO
[(LOCK . FORMS)
(UNINTERRUPTABLY
([LAMBDA (UNLOCK)
(PROG1 (PROGN . FORMS)
(AND (NEQ UNLOCK T)
(RELEASE.MONITORLOCK UNLOCK)))]
(OBTAIN.MONITORLOCK LOCK)))])
(PUTPROPS WITH.FAST.MONITOR MACRO [(LOCK . FORMS)
(UNINTERRUPTABLY
([LAMBDA (UNLOCK)
(PROG1 (PROGN . FORMS)
(AND (NEQ UNLOCK T)
(RELEASE.MONITORLOCK UNLOCK)))]
(OBTAIN.MONITORLOCK LOCK)))])
)
(* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: DOEVAL@COMPILE DONTCOPY
(SPECVARS \BACKGROUND)
)
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS \IGNORE.BACKGROUND)
)
(* "END EXPORTED DEFINITIONS")
(RPAQ? \BACKGROUND NIL)
(RPAQ? \IGNORE.BACKGROUND T)
(DEFINEQ
(\MAKE.PROCESS0
@@ -2096,9 +2107,13 @@ with the terms of said license.
(\INTERRUPTABLE (BLOCK])
(\BACKGROUND.PROCESS
[LAMBDA NIL (* bvm%: "24-JUL-83 15:35")
(PROG NIL
LP (for FN in BACKGROUNDFNS do (SPREADAPPLY* FN))
[LAMBDA NIL (* ; "Edited 28-Jul-2023 21:01 by lmm")
(* bvm%: "24-JUL-83 15:35")
(PROG ((\BACKGROUND \IGNORE.BACKGROUND))
(DECLARE (SPECVARS \BACKGROUND)
(GLOBALVARS \IGNORE.BACKGROUND))
LP (SETQ \BACKGROUND \IGNORE.BACKGROUND)
(for FN in BACKGROUNDFNS do (SPREADAPPLY* FN))
(BLOCK)
(GO LP])
@@ -2460,51 +2475,53 @@ with the terms of said license.
(DECLARE%: DONTCOPY
(DECLARE%: EVAL@COMPILE
(PUTPROPS \RESCHEDULE MACRO
[LAMBDA (OLDPROC)
(PUTPROPS \RESCHEDULE MACRO [LAMBDA (OLDPROC)
(* ;; "Causes process switch, saving current context in OLDPROC's handle, or nowhere if OLDPROC is NIL. Must be called uninterruptably!")
(* ;; "Causes process switch, saving current context in OLDPROC's handle, or nowhere if OLDPROC is NIL. Must be called uninterruptably!")
(PROG (PQUEUE PROC)
TOP
(PROG (PQUEUE PROC)
TOP
(* ;; "Maybe check for events here?")
(* ;; "Maybe check for events here?")
(SETQ PQUEUE \HIGHEST.PRIORITY.QUEUE)
LP (COND
((SETQ PROC (fetch PQNEXT of PQUEUE))
[COND
((NEQ PROC OLDPROC) (* ;
 "Yes, there is a process switch required here. Below is roughly the body of RESUME")
(LET ((TOFX (fetch PROCFX of PROC))
FROMFX)
(COND
((fetch (FX INVALIDP) of TOFX)
(\MP.ERROR \MP.STACKRELEASED "Process's stack has been released!" PROC)))
(SETQ \RUNNING.PROCESS PROC)
(replace PROCFX of PROC with 0)
(\PROC.RESUME TOFX (COND
(OLDPROC (SETQ FROMFX (fetch PROCFX of OLDPROC)
)
(COND
((NOT (fetch (FX INVALIDP) of FROMFX)
)
(* ;
 "Release stack pointer of OLDPROC if it hasn't been yet. should never happen")
(\DECUSECOUNT FROMFX)))
(replace PROCFX of OLDPROC with
(\MYALINK))
NIL)
(T (* ;
 "no OLDPROC to resume later, so jettison caller")
(\MYALINK]
(RETURN (fetch WAKEREASON of PROC)))
((SETQ PQUEUE (fetch PQLOWER of PQUEUE))
(GO LP))
(T (* ;
 "nobody runnable, wait for events")
(\MP.ERROR \MP.PROCERROR "No runnable process!!" OLDPROC)
(GO TOP])
(SETQ PQUEUE \HIGHEST.PRIORITY.QUEUE)
LP (COND
((SETQ PROC (fetch PQNEXT of PQUEUE))
[COND
((NEQ PROC OLDPROC)
(* ;
 "Yes, there is a process switch required here. Below is roughly the body of RESUME")
(LET ((TOFX (fetch PROCFX of PROC))
FROMFX)
(COND
((fetch (FX INVALIDP) of TOFX)
(\MP.ERROR \MP.STACKRELEASED
"Process's stack has been released!" PROC
)))
(SETQ \RUNNING.PROCESS PROC)
(replace PROCFX of PROC with 0)
(\PROC.RESUME
TOFX
(COND
(OLDPROC (SETQ FROMFX (fetch PROCFX of OLDPROC))
(COND
((NOT (fetch (FX INVALIDP)
of FROMFX))
(* ;
 "Release stack pointer of OLDPROC if it hasn't been yet. should never happen")
(\DECUSECOUNT FROMFX)))
(replace PROCFX of OLDPROC with (\MYALINK
))
NIL)
(T (* ;
 "no OLDPROC to resume later, so jettison caller")
(\MYALINK]
(RETURN (fetch WAKEREASON of PROC)))
((SETQ PQUEUE (fetch PQLOWER of PQUEUE))
(GO LP))
(T (* ; "nobody runnable, wait for events")
(\MP.ERROR \MP.PROCERROR "No runnable process!!" OLDPROC)
(GO TOP])
)
)
(DEFINEQ
@@ -2848,22 +2865,19 @@ with the terms of said license.
(DECLARE%: DONTCOPY
(* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE
(PUTPROPS THIS.PROCESS MACRO
(NIL \RUNNING.PROCESS))
(PUTPROPS THIS.PROCESS MACRO (NIL \RUNNING.PROCESS))
(PUTPROPS TTY.PROCESS MACRO
[X (COND
((CAR X)
'IGNOREMACRO)
(T '\TTY.PROCESS])
(PUTPROPS TTY.PROCESS MACRO [X (COND
((CAR X)
'IGNOREMACRO)
(T '\TTY.PROCESS])
(PUTPROPS TTY.PROCESSP MACRO
[X (COND
((CAR X)
'IGNOREMACRO)
(T '(OR (NULL (THIS.PROCESS))
(EQ (THIS.PROCESS)
(TTY.PROCESS])
(PUTPROPS TTY.PROCESSP MACRO [X (COND
((CAR X)
'IGNOREMACRO)
(T '(OR (NULL (THIS.PROCESS))
(EQ (THIS.PROCESS)
(TTY.PROCESS])
)
(DECLARE%: DOEVAL@COMPILE DONTCOPY
@@ -2887,21 +2901,18 @@ with the terms of said license.
(DECLARE%: EVAL@COMPILE
(PUTPROPS ALIVEPROCP MACRO
((p)
(NOT (DEADPROCP p))))
(PUTPROPS ALIVEPROCP MACRO ((p)
(NOT (DEADPROCP p))))
(PUTPROPS DEADPROCP MACRO
((p)
(fetch PROCDELETED of p)))
(PUTPROPS DEADPROCP MACRO ((p)
(fetch PROCDELETED of p)))
(PUTPROPS \COERCE.TO.PROCESS MACRO
[OPENLAMBDA (P ERRORFLG)
(COND
((AND (type? PROCESS P)
(NOT (fetch PROCDELETED of P)))
P)
(T (FIND.PROCESS P ERRORFLG])
(PUTPROPS \COERCE.TO.PROCESS MACRO [OPENLAMBDA (P ERRORFLG)
(COND
((AND (type? PROCESS P)
(NOT (fetch PROCDELETED of P)))
P)
(T (FIND.PROCESS P ERRORFLG])
)
(DECLARE%: DOEVAL@COMPILE DONTCOPY
@@ -3319,7 +3330,7 @@ with the terms of said license.
(RPAQ? PROCBACKTRACEHEIGHT 320)
(ADDTOVAR BackgroundMenuCommands ("PSW" '(PROCESS.STATUS.WINDOW)
"Puts up a Process Status Window"))
"Puts up a Process Status Window"))
(SETQQ BackgroundMenu)
(DECLARE%: EVAL@COMPILE DONTCOPY
@@ -3350,8 +3361,8 @@ with the terms of said license.
(DEFPRINT 'MONITORLOCK (FUNCTION \MONITORLOCK.DEFPRINT))
(* ;
 "\process.init must come last, since it does a HARDRESET")
(* ;
 "\process.init must come last, since it does a HARDRESET")
(\PROCESS.INIT)
)
@@ -3363,42 +3374,40 @@ with the terms of said license.
(ADDTOVAR LAMA PROCESSPROP ADD.PROCESS)
)
(PUTPROPS PROC COPYRIGHT ("Venue & Xerox Corporation" T 1982 1983 1984 1985 1986 1987 1988 1990 1991
1992 1993 1998 1999))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (22392 42659 (PROCESSWORLD 22402 . 31747) (ADD.PROCESS 31749 . 35906) (DEL.PROCESS 35908
. 36855) (PROCESS.RETURN 36857 . 37004) (FIND.PROCESS 37006 . 37640) (MAP.PROCESSES 37642 . 37968) (
PROCESSP 37970 . 38138) (RELPROCESSP 38140 . 38322) (RESTART.PROCESS 38324 . 38893) (WAKE.PROCESS
38895 . 39625) (SUSPEND.PROCESS 39627 . 40014) (PROCESS.RESULT 40016 . 40994) (PROCESS-STATUS 40996 .
42391) (PROCESS.FINISHEDP 42393 . 42657)) (42660 55867 (THIS.PROCESS 42670 . 42803) (TTY.PROCESS 42805
. 49632) (TTY.PROCESSP 49634 . 49850) (PROCESS.TTY 49852 . 50202) (GIVE.TTY.PROCESS 50204 . 51014) (
ALLOW.BUTTON.EVENTS 51016 . 51260) (SPAWN.MOUSE 51262 . 53475) (\WAIT.FOR.TTY 53477 . 53667) (
WAIT.FOR.TTY 53669 . 55865)) (55868 58486 (RESET 55878 . 56710) (ERROR! 56712 . 58484)) (58851 64199 (
PROCESSPROP 58861 . 63313) (PROCESS.NAME 63315 . 63620) (PROCESS.WINDOW 63622 . 64197)) (64401 69436 (
DISMISS 64411 . 65226) (BLOCK 65228 . 67452) (WAITFORINPUT 67454 . 68683) (\WAITFORSYSBUFP 68685 .
69434)) (69637 70134 (EVAL.AS.PROCESS 69647 . 69870) (EVAL.IN.TTY.PROCESS 69872 . 70132)) (70768 76552
(PROCESS.READ 70778 . 71616) (PROCESS.EVALV 71618 . 72196) (PROCESS.EVAL 72198 . 73175) (
\PROCESS.EVAL1 73177 . 74280) (PROCESS.APPLY 74282 . 75266) (\PROCESS.APPLY1 75268 . 76550)) (78718
84023 (CREATE.EVENT 78728 . 78890) (NOTIFY.EVENT 78892 . 80400) (AWAIT.EVENT 80402 . 81024) (
\UNQUEUE.EVENT 81026 . 82501) (\ENQUEUE.EVENT/LOCK 82503 . 83796) (\EVENT.DEFPRINT 83798 . 84021)) (
89263 94254 (OBTAIN.MONITORLOCK 89273 . 92137) (CREATE.MONITORLOCK 92139 . 92358) (RELEASE.MONITORLOCK
92360 . 92694) (SI::MONITOR-UNWIND 92696 . 93282) (MONITOR.AWAIT.EVENT 93284 . 94018) (
\MONITORLOCK.DEFPRINT 94020 . 94252)) (94863 117339 (\MAKE.PROCESS0 94873 . 102072) (\MAKE.PROCESS1
102074 . 103638) (\PROCESS.MOVEFRAME 103640 . 108189) (\RELEASE.PROCESS 108191 . 111241) (
\UNWIND.PROCESS 111243 . 111569) (\MAYBEBLOCK 111571 . 111726) (\BACKGROUND.PROCESS 111728 . 111969) (
\MOUSE.PROCESS 111971 . 114520) (\TIMER.PROCESS 114522 . 115078) (\PROCESS.RELEASE.LOCKS 115080 .
115494) (\SET.PROCESS.NAME 115496 . 117032) (\PROCESS.DEFPRINT 117034 . 117337)) (117340 131695 (
\START.PROCESSES 117350 . 117523) (\PROCESS.GO.TO.SLEEP 117525 . 121279) (\PROC.RESUME 121281 . 121655
) (\RUN.PROCESS 121657 . 124993) (\SUSPEND.PROCESS 124995 . 128056) (\UNQUEUE.TIMER 128058 . 128757) (
\ENQUEUE.TIMER 128759 . 130666) (\GET.PRIORITY.QUEUE 130668 . 131693)) (134377 141599 (\PROCESS.INIT
134387 . 135013) (\PROCESS.EVENTFN 135015 . 136751) (\PROCESS.BEFORE.LOGOUT 136753 . 138272) (
\PROCESS.AFTER.EXIT 138274 . 138582) (\PROCESS.RESET.TIMERS 138584 . 140113) (\PROC.AFTER.WINDOWWORLD
140115 . 140800) (\TURN.ON.PROCESSES 140802 . 141597)) (141630 142859 (\PROC.CODEFORTFRAME 141640 .
142461) (\PROC.REPEATEDLYEVALQT 142463 . 142857)) (142893 149625 (BREAK.PROCESS 142903 . 143219) (
\SELECTPROCESS 143221 . 145661) (\PROCESS.MAKEFRAME 145663 . 147714) (\PROCESS.MAKEFRAME0 147716 .
149623)) (151838 153761 (\CHECK.PQUEUE 151848 . 153759)) (153762 172091 (PPROC 153772 . 155053) (
PPROCWINDOW 155055 . 155546) (PPROCREPAINTFN 155548 . 156262) (PPROCRESHAPEFN 156264 . 156527) (
PPROCEXTENT 156529 . 157013) (PPROC1 157015 . 159033) (PROCESS.STATUS.WINDOW 159035 . 163117) (
\PSW.SELECTED 163119 . 163413) (\PSWOP.SELECTED 163415 . 167315) (PROCESS.BACKTRACE 167317 . 170508) (
\INVALIDATE.PROCESS.WINDOW 170510 . 171244) (\UPDATE.PROCESS.WINDOW 171246 . 172089)))))
(FILEMAP (NIL (22096 42363 (PROCESSWORLD 22106 . 31451) (ADD.PROCESS 31453 . 35610) (DEL.PROCESS 35612
. 36559) (PROCESS.RETURN 36561 . 36708) (FIND.PROCESS 36710 . 37344) (MAP.PROCESSES 37346 . 37672) (
PROCESSP 37674 . 37842) (RELPROCESSP 37844 . 38026) (RESTART.PROCESS 38028 . 38597) (WAKE.PROCESS
38599 . 39329) (SUSPEND.PROCESS 39331 . 39718) (PROCESS.RESULT 39720 . 40698) (PROCESS-STATUS 40700 .
42095) (PROCESS.FINISHEDP 42097 . 42361)) (42364 55571 (THIS.PROCESS 42374 . 42507) (TTY.PROCESS 42509
. 49336) (TTY.PROCESSP 49338 . 49554) (PROCESS.TTY 49556 . 49906) (GIVE.TTY.PROCESS 49908 . 50718) (
ALLOW.BUTTON.EVENTS 50720 . 50964) (SPAWN.MOUSE 50966 . 53179) (\WAIT.FOR.TTY 53181 . 53371) (
WAIT.FOR.TTY 53373 . 55569)) (55572 58190 (RESET 55582 . 56414) (ERROR! 56416 . 58188)) (58551 63899 (
PROCESSPROP 58561 . 63013) (PROCESS.NAME 63015 . 63320) (PROCESS.WINDOW 63322 . 63897)) (64101 69136 (
DISMISS 64111 . 64926) (BLOCK 64928 . 67152) (WAITFORINPUT 67154 . 68383) (\WAITFORSYSBUFP 68385 .
69134)) (69337 69834 (EVAL.AS.PROCESS 69347 . 69570) (EVAL.IN.TTY.PROCESS 69572 . 69832)) (70423 76207
(PROCESS.READ 70433 . 71271) (PROCESS.EVALV 71273 . 71851) (PROCESS.EVAL 71853 . 72830) (
\PROCESS.EVAL1 72832 . 73935) (PROCESS.APPLY 73937 . 74921) (\PROCESS.APPLY1 74923 . 76205)) (78266
83571 (CREATE.EVENT 78276 . 78438) (NOTIFY.EVENT 78440 . 79948) (AWAIT.EVENT 79950 . 80572) (
\UNQUEUE.EVENT 80574 . 82049) (\ENQUEUE.EVENT/LOCK 82051 . 83344) (\EVENT.DEFPRINT 83346 . 83569)) (
90015 95006 (OBTAIN.MONITORLOCK 90025 . 92889) (CREATE.MONITORLOCK 92891 . 93110) (RELEASE.MONITORLOCK
93112 . 93446) (SI::MONITOR-UNWIND 93448 . 94034) (MONITOR.AWAIT.EVENT 94036 . 94770) (
\MONITORLOCK.DEFPRINT 94772 . 95004)) (96210 118970 (\MAKE.PROCESS0 96220 . 103419) (\MAKE.PROCESS1
103421 . 104985) (\PROCESS.MOVEFRAME 104987 . 109536) (\RELEASE.PROCESS 109538 . 112588) (
\UNWIND.PROCESS 112590 . 112916) (\MAYBEBLOCK 112918 . 113073) (\BACKGROUND.PROCESS 113075 . 113600) (
\MOUSE.PROCESS 113602 . 116151) (\TIMER.PROCESS 116153 . 116709) (\PROCESS.RELEASE.LOCKS 116711 .
117125) (\SET.PROCESS.NAME 117127 . 118663) (\PROCESS.DEFPRINT 118665 . 118968)) (118971 133326 (
\START.PROCESSES 118981 . 119154) (\PROCESS.GO.TO.SLEEP 119156 . 122910) (\PROC.RESUME 122912 . 123286
) (\RUN.PROCESS 123288 . 126624) (\SUSPEND.PROCESS 126626 . 129687) (\UNQUEUE.TIMER 129689 . 130388) (
\ENQUEUE.TIMER 130390 . 132297) (\GET.PRIORITY.QUEUE 132299 . 133324)) (136771 143993 (\PROCESS.INIT
136781 . 137407) (\PROCESS.EVENTFN 137409 . 139145) (\PROCESS.BEFORE.LOGOUT 139147 . 140666) (
\PROCESS.AFTER.EXIT 140668 . 140976) (\PROCESS.RESET.TIMERS 140978 . 142507) (\PROC.AFTER.WINDOWWORLD
142509 . 143194) (\TURN.ON.PROCESSES 143196 . 143991)) (144024 145253 (\PROC.CODEFORTFRAME 144034 .
144855) (\PROC.REPEATEDLYEVALQT 144857 . 145251)) (145287 152019 (BREAK.PROCESS 145297 . 145613) (
\SELECTPROCESS 145615 . 148055) (\PROCESS.MAKEFRAME 148057 . 150108) (\PROCESS.MAKEFRAME0 150110 .
152017)) (154660 156583 (\CHECK.PQUEUE 154670 . 156581)) (156584 174913 (PPROC 156594 . 157875) (
PPROCWINDOW 157877 . 158368) (PPROCREPAINTFN 158370 . 159084) (PPROCRESHAPEFN 159086 . 159349) (
PPROCEXTENT 159351 . 159835) (PPROC1 159837 . 161855) (PROCESS.STATUS.WINDOW 161857 . 165939) (
\PSW.SELECTED 165941 . 166235) (\PSWOP.SELECTED 166237 . 170137) (PROCESS.BACKTRACE 170139 . 173330) (
\INVALIDATE.PROCESS.WINDOW 173332 . 174066) (\UPDATE.PROCESS.WINDOW 174068 . 174911)))))
STOP

Binary file not shown.

View File

@@ -1,6 +0,0 @@
"
(MOVD? (QUOTE NILL) (QUOTE PROMPTPRINT))
(MOVD? (QUOTE NILL) (QUOTE CURSORP))
(MOVD? (QUOTE NILL) (QUOTE CHANGEBACKGROUNDBORDER))
(LOGOUT)
"