* Update docker file build to use new deb linux installers; move Dockefile to .github/workflows since its really only useable from the buildDocker.yml workflow * Fix typo in dockerfile location * remove extraneous " in >>GITHUB_ENV statements * Fix handling of TARGETPLATFORM in Dockerfile * Trying with just one platform * Fix issues with missing man-db in docker build workflow; added man-db to depends in deb builds for linux * Sicthed docker from tightvnc to tigervnc to match oio. This getting the apt package name right. * Going back to single platform to debug this thing * Trying with just arm64 * Removing arm/v7 from docker images. Takes too long to build and just wastes our github actions minutes. This is assuming its a never used feature since docker is not big on raspberry pis and their ilk. * Fix typo in control-linux; update build_deb so that files in /usr/local installed by deb are owned by root; add ubuntu user and nano in docker file for dbebugging; when in draft only create for x86_64 platform * Fix typo in buildDocker.yml * Add sudo to docker image; in docker image ensure that all /usr/local/interlisp files are owned by root * Add securityTypes none to docker entrypoint * Updated docker base to Ubuntu 22.10 to get fixed xrdp; add xrdp to the docker image; updated user permission in docker image; * In Dockerfile make xrdp install noninteractive * Update medley.sh scripts to handle docker case * Fix a couple of typos * BuildDcoker: added pulling latest draft release (if any) when this is a draft docker build; removed checkout of medley code cause its not used * BuildDocker: added medley checkout backin - turns pout its needed by a bunch of actions even though I dont really think they use it * BuildDocker: moved download assets to use gh instaed of a marketplace action becauase that action could not handle draft releases. * Tweaking medley.sh and associated tweaks to work Windows via wsl medley and docker * adding first pass at powershell script for windows docker and wsl * Tuning how Xvnc, medley, and vncviewer handle the various ways of exiting - eg logout vs closing viewer window. * Tuning vncviewer launch to make sure that tty works as expected when medley.sh runs in background * Minor typo fixes and added extra check to use of /run/shm in medley_vnc.sh * Added SSH_KEY secret to buildReleaseIncDocker workflow * Gertting the add SSH_KEY secret into orkflows right this time, hopefully * Adding TERM env variable and setting USER to medley in docker image * Debugging medley.ps1 and adding a couple of arguments * Typo in Dockerfile medley * Synchronizing flag processing and usage for medley.ps1 and medley.sh; refactored medley_args.sh and medley_usage.sh code. * Adding first pass at windows installer * Adding first pass an inno setup script for Windows installation * Update buildLoadup workflow and downloads page for windows installer * Fix typo in buildLoadup * BuildLoadup make sure windows runner uses powershell * Another typo in buildLoadup * Another typo in buildLoadup; damn those double quotes * Updating handling of windows installer in buildLoadup, added vncviewer to medley.iss install * Unknown syntax error in buildLoadup * Another damn typo from double quotes * buildLoadup: fixed loadup job outputs * buidLoadup: fixed bug with COMBINED_RELEASE_TAG; fixed Upload script in windows job to be compatible with actions.script v6. * buidLoadup: upload win installer adapted to find draft releases as well as full releases * BuildLoadup: fixing up javascript in actions in windows job to use / instead of \ in pathname * BuildLoadup: changing win installer update to same action used for other release assets * Fix windows installer file name; in BuildLoadup move update downl;oad page to the Windows runner because uploading the window-installer changes the release download url, so updating the downloads page must be done after the windows installer upload.; General buildLoadup cleanup * Run md2html to update downloads page * Fix typo in build_deb.sh * Removing some leftover crud in medley_usage.sh * Fixing up windows installer a bit, mostly cosmetic * Adding support for WSL1; mostly forcing --vnc and changing how to find open ports and displays since WSL1 networking is different tha WSL2 * Update manual page for new Windows Medley script * First pass done for man page that incorporates new Windows medley script. Add Xvnc wait before calling run-medley in case of docker to prevent occasonal missing X windows server error. * Change buildLoadup to update man page to a draft if this is a draft run.
143 lines
3.6 KiB
Bash
Executable File
143 lines
3.6 KiB
Bash
Executable File
#!/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
|
|
|
|
|