Skip to content

Commit

Permalink
clean up AIO templates; re-use squeak.sh for both Linux and AIO bundles
Browse files Browse the repository at this point in the history
  • Loading branch information
marceltaeumel committed Jan 5, 2022
1 parent 346e786 commit 0724852
Show file tree
Hide file tree
Showing 16 changed files with 104 additions and 165 deletions.
9 changes: 0 additions & 9 deletions helpers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -97,16 +97,7 @@ download_and_extract_vm() {
local volume=$(hdiutil attach "${filepath}" | tail -1 | awk '{print $3}')
mkdir -p "${target}"
cp -R "${volume}/"* "${target}/"
echo "Extracted into ${target}/ from ${volume}/"
pushd ${volume}
ls -lisa
popd
pushd ${target}
ls -lisa
popd

diskutil unmount "${volume}"

else
echo "Unknown archive format." && exit 77
fi
Expand Down
4 changes: 2 additions & 2 deletions helpers_bundles.sh
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ download_and_extract_all_vms_rc() {
readonly BUNDLE_NAME_LIN_ARM_SUFFIX="Linux-ARMv8"
readonly BUNDLE_NAME_MAC_X86_SUFFIX="macOS-x64"
readonly BUNDLE_NAME_MAC_ARM_SUFFIX="macOS-ARMv8"
readonly BUNDLE_NAME_WIN_X86_SUFFIX="Windows"
readonly BUNDLE_NAME_WIN_X86_SUFFIX="Windows-x64"
readonly BUNDLE_NAME_WIN_ARM_SUFFIX="" # n/a

else # 32-bit
Expand All @@ -75,7 +75,7 @@ download_and_extract_all_vms_rc() {
readonly BUNDLE_NAME_LIN_ARM_SUFFIX="Linux-ARMv6"
readonly BUNDLE_NAME_MAC_X86_SUFFIX="" # n/a for 32-bit
readonly BUNDLE_NAME_MAC_ARM_SUFFIX="" # n/a for 32-bit
readonly BUNDLE_NAME_WIN_X86_SUFFIX="Windows"
readonly BUNDLE_NAME_WIN_X86_SUFFIX="Windows-x86"
readonly BUNDLE_NAME_WIN_ARM_SUFFIX="" # n/a
fi

Expand Down
76 changes: 57 additions & 19 deletions prepare_bundle_aio.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,45 +17,83 @@ APP_PATH="${BUILD_PATH}/${APP_NAME}"
CONTENTS_PATH="${APP_PATH}/Contents"
RESOURCES_PATH="${CONTENTS_PATH}/Resources"

VM_ARM_TARGET="${CONTENTS_PATH}/Linux-ARM"
if [[ "${IMAGE_BITS}" == "64" ]]; then
VM_LIN_TARGET="${CONTENTS_PATH}/Linux-x86_64"
VM_MAC_TARGET_NAME="MacOS" # unified binary

VM_LIN_TARGET_NAME="Linux-x86_64"
VM_LIN_ARM_TARGET_NAME="Linux-arm64"

VM_WIN_TARGET_NAME="Windows-x86_64"
# VM_WIN_ARM_TARGET_NAME="Win32-arm64"
else
VM_LIN_TARGET="${CONTENTS_PATH}/Linux-i686"
VM_LIN_TARGET_NAME="Linux-i686"
VM_LIN_ARM_TARGET_NAME="Linux-arm"
VM_WIN_TARGET_NAME="Windows-x86"
# VM_WIN_ARM_TARGET_NAME="Win32-arm"
fi
VM_MAC_TARGET="${CONTENTS_PATH}/MacOS"
VM_WIN_TARGET="${CONTENTS_PATH}/Win32"

VM_MAC_TARGET="${CONTENTS_PATH}/${VM_MAC_TARGET_NAME}"
VM_LIN_TARGET="${CONTENTS_PATH}/${VM_LIN_TARGET_NAME}"
VM_LIN_ARM_TARGET="${CONTENTS_PATH}/${VM_LIN_ARM_TARGET_NAME}"
VM_WIN_TARGET="${CONTENTS_PATH}/${VM_WIN_TARGET_NAME}"
# VM_WIN_ARM_TARGET="${CONTENTS_PATH}/${VM_WIN_ARM_TARGET_NAME}"

echo "...copying VMs into bundle..."
cp -R "${TMP_PATH}/${VM_MAC}/Squeak.app" "${APP_PATH}"
if is_32bit; then
cp -R "${TMP_PATH}/${VM_ARM6}" "${VM_ARM_TARGET}"
if [[ "${IMAGE_BITS}" == "64" ]]; then
cp -R "${TMP_PATH}/${VM_MAC}/Squeak.app" "${APP_PATH}" # unified binary
cp -R "${TMP_PATH}/${VM_LIN_X86}" "${VM_LIN_TARGET}"
cp -R "${TMP_PATH}/${VM_LIN_ARM}" "${VM_LIN_ARM_TARGET}"
cp -R "${TMP_PATH}/${VM_WIN_X86}" "${VM_WIN_TARGET}"
# cp -R "${TMP_PATH}/${VM_WIN_ARM}" "${VM_WIN_ARM_TARGET}"
else # 32-bit
mkdir -p "${APP_PATH}" # no 32-bit macOS .app anymore
mkdir -p "${CONTENTS_PATH}" # no 32-bit macOS .app anymore
mkdir -p "${RESOURCES_PATH}" # no 32-bit macOS .app anymore
cp -R "${TMP_PATH}/${VM_LIN_X86}" "${VM_LIN_TARGET}"
cp -R "${TMP_PATH}/${VM_LIN_ARM}" "${VM_LIN_ARM_TARGET}"
cp -R "${TMP_PATH}/${VM_WIN_X86}" "${VM_WIN_TARGET}"
# cp -R "${TMP_PATH}/${VM_WIN_ARM}" "${VM_WIN_ARM_TARGET}"
fi
cp -R "${TMP_PATH}/${VM_LIN}" "${VM_LIN_TARGET}"
cp -R "${TMP_PATH}/${VM_WIN}" "${VM_WIN_TARGET}"

copy_resources "${RESOURCES_PATH}"

echo "...merging template..."
cp "${AIO_TEMPLATE_PATH}/squeak.bat" "${BUILD_PATH}/"
cp "${AIO_TEMPLATE_PATH}/squeak.sh" "${BUILD_PATH}/"
cp "${AIO_TEMPLATE_PATH}/Squeak.app/Contents/Info.plist" "${CONTENTS_PATH}/"
cp "${WIN_TEMPLATE_PATH}/squeak.bat" "${BUILD_PATH}/"
cp "${LIN_TEMPLATE_PATH}/squeak.sh" "${BUILD_PATH}/"
cp "${MAC_TEMPLATE_PATH}/Squeak.app/Contents/Info.plist" "${CONTENTS_PATH}/"
cp "${ICONS_PATH}/${SMALLTALK_NAME}"*.icns "${RESOURCES_PATH}/"
ENGLISH_PATH="${AIO_TEMPLATE_PATH}/Squeak.app/Contents/Resources/English.lproj"
ENGLISH_PATH="${MAC_TEMPLATE_PATH}/Squeak.app/Contents/Resources/English.lproj"
cp "${ENGLISH_PATH}/Credits.rtf" "${RESOURCES_PATH}/English.lproj/"
cp "${AIO_TEMPLATE_PATH}/Squeak.app/Contents/Win32/Squeak.ini" "${VM_WIN_TARGET}/"
cp "${WIN_TEMPLATE_PATH}/Squeak.ini" "${VM_WIN_TARGET}/"

echo "...setting permissions..."
chmod +x "${VM_LIN_TARGET}/squeak" "${VM_MAC_TARGET}/Squeak" "${VM_WIN_TARGET}/Squeak.exe" \
"${BUILD_PATH}/squeak.sh" "${BUILD_PATH}/squeak.bat"
chmod +x \
"${BUILD_PATH}/squeak.sh" \
"${BUILD_PATH}/squeak.bat"
if [[ "${IMAGE_BITS}" == "64" ]]; then
chmod +x \
"${VM_MAC_TARGET}/Squeak" \
"${VM_LIN_TARGET}/squeak" \
"${VM_LIN_ARM_TARGET}/squeak" \
"${VM_WIN_TARGET}/Squeak.exe"
# "${VM_WIN_ARM_TARGET}/Squeak.exe"
else # 32-bit
chmod +x \
"${VM_LIN_TARGET}/squeak" \
"${VM_LIN_ARM_TARGET}/squeak" \
"${VM_WIN_TARGET}/Squeak.exe"
# "${VM_WIN_ARM_TARGET}/Squeak.exe"
fi

echo "...applying various templates (squeak.sh, Info.plist, etc)..."
# squeak.bat launcher
sed -i".bak" "s/%APP_NAME%/${APP_NAME}/g" "${BUILD_PATH}/squeak.bat"
sed -i".bak" "s/%AIO_APP_NAME%/${APP_NAME}/g" "${BUILD_PATH}/squeak.bat"
sed -i".bak" "s/%AIO_VM_NAME%/${VM_WIN_TARGET_NAME}\\\\Squeak.exe/g" "${BUILD_PATH}/squeak.bat"
sed -i".bak" "s/%SqueakImageName%/${IMAGE_NAME}.image/g" "${BUILD_PATH}/squeak.bat"
rm -f "${BUILD_PATH}/squeak.bat.bak"
# squeak.sh launcher
sed -i".bak" "s/%APP_NAME%/${APP_NAME}/g" "${BUILD_PATH}/squeak.sh"
sed -i".bak" "s/%VM_NAME%/squeak/g" "${BUILD_PATH}/squeak.sh"
sed -i".bak" "s/%AIO_APP_NAME%/${APP_NAME}/g" "${BUILD_PATH}/squeak.sh"
sed -i".bak" "s/%SqueakImageName%/${IMAGE_NAME}.image/g" "${BUILD_PATH}/squeak.sh"
sed -i".bak" "s/%IMAGE_BITS%/${IMAGE_BITS}/g" "${BUILD_PATH}/squeak.sh"
rm -f "${BUILD_PATH}/squeak.sh.bak"
Expand Down
5 changes: 5 additions & 0 deletions prepare_bundle_linux_arm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ cp "${LIN_TEMPLATE_PATH}/squeak.sh" "${BUNDLE_PATH}/"
echo "...setting permissions..."
chmod +x "${VM_PATH}/squeak"

echo "...applying various templates (squeak.sh)..."
# squeak.sh launcher
sed -i".bak" "s/%VM_NAME%/squeak/g" "${BUNDLE_PATH}/squeak.sh"
rm -f "${BUNDLE_PATH}/squeak.sh.bak"

compress_into_product "${BUNDLE_NAME_LIN_ARM}"
reset_build_dir

Expand Down
5 changes: 5 additions & 0 deletions prepare_bundle_linux_x86.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ cp "${LIN_TEMPLATE_PATH}/squeak.sh" "${BUNDLE_PATH}/"
echo "...setting permissions..."
chmod +x "${VM_PATH}/squeak" "${BUNDLE_PATH}/squeak.sh"

echo "...applying various templates (squeak.sh)..."
# squeak.sh launcher
sed -i".bak" "s/%VM_NAME%/squeak/g" "${BUNDLE_PATH}/squeak.sh"
rm -f "${BUNDLE_PATH}/squeak.sh.bak"

compress_into_product "${BUNDLE_NAME_LIN_X86}"
reset_build_dir

Expand Down
4 changes: 2 additions & 2 deletions prepare_bundle_macos_arm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ fi
copy_resources "${RESOURCES_PATH}"

echo "...merging template..."
cp "${AIO_TEMPLATE_PATH}/Squeak.app/Contents/Info.plist" "${CONTENTS_PATH}/"
cp "${MAC_TEMPLATE_PATH}/Squeak.app/Contents/Info.plist" "${CONTENTS_PATH}/"
cp "${ICONS_PATH}/${SMALLTALK_NAME}"*.icns "${RESOURCES_PATH}/"
ENGLISH_PATH="${AIO_TEMPLATE_PATH}/Squeak.app/Contents/Resources/English.lproj"
ENGLISH_PATH="${MAC_TEMPLATE_PATH}/Squeak.app/Contents/Resources/English.lproj"
cp "${ENGLISH_PATH}/Credits.rtf" "${RESOURCES_PATH}/English.lproj/"

echo "...setting permissions..."
Expand Down
4 changes: 2 additions & 2 deletions prepare_bundle_macos_x86.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ fi
copy_resources "${RESOURCES_PATH}"

echo "...merging template..."
cp "${AIO_TEMPLATE_PATH}/Squeak.app/Contents/Info.plist" "${CONTENTS_PATH}/"
cp "${MAC_TEMPLATE_PATH}/Squeak.app/Contents/Info.plist" "${CONTENTS_PATH}/"
cp "${ICONS_PATH}/${SMALLTALK_NAME}"*.icns "${RESOURCES_PATH}/"
ENGLISH_PATH="${AIO_TEMPLATE_PATH}/Squeak.app/Contents/Resources/English.lproj"
ENGLISH_PATH="${MAC_TEMPLATE_PATH}/Squeak.app/Contents/Resources/English.lproj"
cp "${ENGLISH_PATH}/Credits.rtf" "${RESOURCES_PATH}/English.lproj/"

echo "...setting permissions..."
Expand Down
2 changes: 1 addition & 1 deletion prepare_bundle_windows_x86.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ cp -R "${TMP_PATH}/${VM_WIN_X86}/"* "${BUNDLE_PATH}"
copy_resources "${BUNDLE_PATH}"

echo "...merging template..."
cp "${AIO_TEMPLATE_PATH}/Squeak.app/Contents/Win32/Squeak.ini" "${BUNDLE_PATH}/"
cp "${WIN_TEMPLATE_PATH}/Squeak.ini" "${BUNDLE_PATH}/"

echo "...setting permissions..."
chmod +x "${BUNDLE_PATH}/Squeak.exe"
Expand Down
2 changes: 1 addition & 1 deletion prepare_bundles.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ readonly TEMPLATE_PATH="${HOME_PATH}/templates"
readonly AIO_TEMPLATE_PATH="${TEMPLATE_PATH}/all-in-one"
readonly LIN_TEMPLATE_PATH="${TEMPLATE_PATH}/linux"
readonly MAC_TEMPLATE_PATH="${TEMPLATE_PATH}/macos"
readonly WIN_TEMPLATE_PATH="${TEMPLATE_PATH}/win"
readonly WIN_TEMPLATE_PATH="${TEMPLATE_PATH}/windows"

readonly LOCALE_PATH="${HOME_PATH}/locale"

Expand Down
1 change: 0 additions & 1 deletion templates/all-in-one/squeak.bat

This file was deleted.

117 changes: 0 additions & 117 deletions templates/all-in-one/squeak.sh

This file was deleted.

39 changes: 28 additions & 11 deletions templates/linux/squeak.sh
Original file line number Diff line number Diff line change
@@ -1,33 +1,50 @@
#!/usr/bin/env bash
# File: squeak.sh
# Author: Fabio Niephaus, K K Subramaniam, Marcel Taeumel
# Version: 2.5.1
# Date: 2021/09/25
# Version: 2.6.0
# Date: 2022/01/05
# Description: Script to launch Squeak executable from a bundle
# usage:
# squeak [<vmargs>] [ *.image [ <stargs> ... ]]

# extract top directory and app name from command
ROOT=$(cd -P $(dirname "$0"); pwd)
APP=$(basename "$0" .sh)
readonly APP_NAME=${APP^} # first letter uppercase
APP="%VM_NAME%"

CONF_FILEPATH="/etc/security/limits.d/${APP}.conf"
OS=$(uname -s)
CPU=$(uname -m)
case "${CPU}" in
"x86_64") CPU="i686" ;;
"armv6l"|"armv7l") CPU="ARM" ;;
# "x86_64") ;;
# "i686") ;;
"i386") CPU="i686" ;;
"aarch64") ;; CPU="arm64" ;;
# "arm64") ;;
"armv6l"|"armv7l") CPU="arm" ;;
esac

if [[ -d ${ROOT}/bin ]]; then
BINDIR="${ROOT}/bin"
RESOURCES="${ROOT}/shared"
else
# all-in-one bundle
appdir=$(echo ${APP_NAME}*.app/)
BINDIR="${appdir}/Contents/${OS}-${CPU}/"
RESOURCES="${appdir}/Contents/Resources/"
else # all-in-one bundle
local aioAppPath="${ROOT}/%AIO_APP_NAME%"
BINDIR="${aioAppPath}/Contents/Linux-${CPU}/"
RESOURCES="${aioAppPath}/Contents/Resources/"
IMAGE="${RESOURCES}/%SqueakImageName%"
IMAGE_BITS="%IMAGE_BITS%"

if [[ "${IMAGE_BITS}" == "32" ]]; then
case "${CPU}" in
"x86_64")
CPU="i686"
echo "Running 32-bit Squeak on a 64-bit System. install-libs32 may install them."
;;
"arm64")
echo "You cannot run a 32-bit Squeak on a 64-bit ARM platform."
exit 1
;;
esac
fi
fi

VM="${BINDIR}/${APP}"
Expand Down
File renamed without changes.
1 change: 1 addition & 0 deletions templates/windows/squeak.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
START /B .\%AIO_APP_NAME%\Contents\%AIO_VM_NAME% "%AIO_APP_NAME%\Contents\Resources\%SqueakImageName%"

0 comments on commit 0724852

Please sign in to comment.