Lots of work on the IIgs installer. Not quite ready yet.
This commit is contained in:
parent
090af4bbba
commit
37eb12b76a
1 changed files with 226 additions and 4 deletions
|
@ -27,6 +27,7 @@
|
||||||
#
|
#
|
||||||
G_TITLE="JoeyLib Installer"
|
G_TITLE="JoeyLib Installer"
|
||||||
G_PARENT=
|
G_PARENT=
|
||||||
|
G_HAS_IIGS=0
|
||||||
|
|
||||||
|
|
||||||
function buildPCDeps() {
|
function buildPCDeps() {
|
||||||
|
@ -156,6 +157,7 @@ function buildPCDeps() {
|
||||||
ar rcs ${DIST}/libjoeylib.a *.o
|
ar rcs ${DIST}/libjoeylib.a *.o
|
||||||
cp -f ${SRC}/joey.h ${DIST}/../..
|
cp -f ${SRC}/joey.h ${DIST}/../..
|
||||||
cp -f ${SRC}/../joey.pri ${DIST}/../..
|
cp -f ${SRC}/../joey.pri ${DIST}/../..
|
||||||
|
cp -f ${SRC}/../../scripts/build-PC.helper.sh ${DIST}/../..
|
||||||
popd >& /dev/null
|
popd >& /dev/null
|
||||||
|
|
||||||
popd >& /dev/null
|
popd >& /dev/null
|
||||||
|
@ -170,6 +172,223 @@ function clearPCDepsBuild() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function configRead() {
|
||||||
|
if [[ -e "${G_PARENT}/joeyDev.sh" ]]; then
|
||||||
|
source "${G_PARENT}/joeyDev.sh"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function configWrite() {
|
||||||
|
local O=${G_PARENT}/joeyDev.sh
|
||||||
|
echo "#!/bin/bash" > "${O}"
|
||||||
|
echo "if [[ -z \$JOEYPATH || \"\${JOEYPATH}\" == \"\" ]]; then" >> "${O}"
|
||||||
|
echo -e "\texport JOEYPATH=\"\${PATH}\"" >> "${O}"
|
||||||
|
echo "fi" >> "${O}"
|
||||||
|
echo "export PATH=\"\${JOEYPATH}\"" >> "${O}"
|
||||||
|
echo "export JOEY=\"${G_PARENT}\"" >> "${O}"
|
||||||
|
if [[ ${G_HAS_IIGS} == 1 ]]; then
|
||||||
|
# IIgs Runtime & ORCA Compilers
|
||||||
|
echo "export GOLDEN_GATE=\"\${JOEY}/sdks/IIgs/ORCA\"" >> "${O}"
|
||||||
|
echo "export PATH=\"\${JOEY}/sdks/IIgs:\${PATH}\"" >> "${O}"
|
||||||
|
fi
|
||||||
|
chmod +x "${O}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function fetchGitHubRelease() {
|
||||||
|
local __RESULT=$1
|
||||||
|
local DEVELOPER=$2
|
||||||
|
local COMPONENT=$3
|
||||||
|
local EXTENSION=$4
|
||||||
|
local URL=`curl -s https://api.github.com/repos/${DEVELOPER}/${COMPONENT}/releases \
|
||||||
|
| grep "browser_download_url.*${EXTENSION}" \
|
||||||
|
| cut -d : -f 2,3 \
|
||||||
|
| tr -d \" \
|
||||||
|
| head -n 1`
|
||||||
|
local FILE=${URL##*/}
|
||||||
|
if [[ -e "${FILE}" ]]; then
|
||||||
|
rm "${FILE}"
|
||||||
|
fi
|
||||||
|
wget ${URL}
|
||||||
|
eval $__RESULT=\${FILE}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function installIIgs() {
|
||||||
|
local RESULT=
|
||||||
|
local PREFIX=
|
||||||
|
local O=
|
||||||
|
local ORCA=
|
||||||
|
local IIGS="${G_PARENT}/sdks/IIgs"
|
||||||
|
|
||||||
|
mkdir -p "${IIGS}/ORCA"
|
||||||
|
|
||||||
|
if [[ ! -e "${IIGS}/hfsDrive.img" ]]; then
|
||||||
|
echo ""
|
||||||
|
tBoldBox tPURPLE "Creating HFS Volume"
|
||||||
|
echo ""
|
||||||
|
O=${IIGS}/mountORCA.sh
|
||||||
|
echo "#!/bin/bash" > "${O}"
|
||||||
|
echo "IIGS=${IIGS}" >> "${O}"
|
||||||
|
echo "if ! mount | grep \${IIGS}/ORCA | grep -q hfsplus; then" >> "${O}"
|
||||||
|
echo -e "\tfsck.hfsplus \${IIGS}/hfsDrive.img" >> "${O}"
|
||||||
|
echo -e "\tIIGSDISK=\$(sudo losetup --partscan --find --show \${IIGS}/hfsDrive.img)" >> "${O}"
|
||||||
|
echo -e "\tsudo mount \${IIGSDISK} \${IIGS}/ORCA" >> "${O}"
|
||||||
|
echo -e "\techo LOOP=\${IIGSDISK} > \${IIGS}/lastMount.cfg" >> "${O}"
|
||||||
|
echo -e "\techo MOUNT=\${IIGS}/ORCA >> \${IIGS}/lastMount.cfg" >> "${O}"
|
||||||
|
echo "fi" >> "${O}"
|
||||||
|
chmod +x "${O}"
|
||||||
|
O=${IIGS}/unmountORCA.sh
|
||||||
|
echo "#!/bin/bash" > "${O}"
|
||||||
|
echo "IIGS=${IIGS}" >> "${O}"
|
||||||
|
echo "if [[ -e \${IIGS}/lastMount.cfg ]]; then" >> "${O}"
|
||||||
|
echo -e "\tsource \${IIGS}/lastMount.cfg" >> "${O}"
|
||||||
|
echo -e "\tsudo umount \${MOUNT}" >> "${O}"
|
||||||
|
echo -e "\tsudo losetup -d \${LOOP}" >> "${O}"
|
||||||
|
echo -e "\tsudo rm \${IIGS}/lastMount.cfg" >> "${O}"
|
||||||
|
echo "fi" >> "${O}"
|
||||||
|
chmod +x "${O}"
|
||||||
|
fallocate -l 32M "${IIGS}/hfsDrive.img"
|
||||||
|
mkfs.hfs -v IIgs "${IIGS}/hfsDrive.img"
|
||||||
|
fi
|
||||||
|
|
||||||
|
"${IIGS}/mountORCA.sh"
|
||||||
|
|
||||||
|
if [[ ! -e "${IIGS}/ORCA/Languages/cc" ]]; then
|
||||||
|
tFileBrowser ORCA "Please locate your 'OPUS ][ The Software' ISO" .iso ..
|
||||||
|
if [[ -z ${ORCA} || "${ORCA}" == "" ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
tBoldBox tCYAN "NOTE: If an error is encountered, installer will exit!"
|
||||||
|
|
||||||
|
if [[ ! -d GoldenGate ]]; then
|
||||||
|
echo ""
|
||||||
|
tBoldBox tPURPLE "Building GoldenGate"
|
||||||
|
echo ""
|
||||||
|
git clone git@gitlab.com:GoldenGate/GoldenGate.git
|
||||||
|
if [ ! -d GoldenGate ]; then
|
||||||
|
tBoldBox tRED "Unable to clone the GoldenGate repository!"
|
||||||
|
echo "Must be a paying member of the GoldenGate project!"
|
||||||
|
echo "See: https://goldengate.gitlab.io/about/"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
pushd GoldenGate >& /dev/null
|
||||||
|
git submodule init
|
||||||
|
git submodule update
|
||||||
|
PREFIX=`pwd`/installed
|
||||||
|
mkdir -p build
|
||||||
|
cd build
|
||||||
|
cmake -DCMAKE_INSTALL_PREFIX=${PREFIX} .. | tee make.out
|
||||||
|
make | tee -a make.out
|
||||||
|
if [[ ! -e bin/iix ]]; then
|
||||||
|
tBoldBox tRED "Failed to build GoldenGate."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cp -f bin/{iix,dumpobj,opus-extractor} "${IIGS}/."
|
||||||
|
popd >& /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -e "${IIGS}/ORCA/Languages/cc" ]]; then
|
||||||
|
echo ""
|
||||||
|
tBoldBox tPURPLE "Installing ORCA/C"
|
||||||
|
echo ""
|
||||||
|
chown -R `id -ru`:`id -rg` "${IIGS}/ORCA"
|
||||||
|
isoinfo -i "${ORCA}" -x /FOR_EMUL/BYTEWORK.S\;1 > BYTEWORKS
|
||||||
|
"${IIGS}/opus-extractor" -v BYTEWORKS "${IIGS}/ORCA"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
tBoldBox tPURPLE "Upgrading ORCA/C"
|
||||||
|
echo ""
|
||||||
|
fetchGitHubRelease RESULT byteworksinc ORCA-C 2mg
|
||||||
|
"${IIGS}/opus-extractor" -v -s / ${RESULT} orcaUpdate
|
||||||
|
cp -rf orcaUpdate/* "${IIGS}/ORCA/."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d gsplus ]]; then
|
||||||
|
echo ""
|
||||||
|
tBoldBox tPURPLE "Building GSplus"
|
||||||
|
echo ""
|
||||||
|
git clone https://github.com/digarok/gsplus.git
|
||||||
|
mkdir gsplus/build
|
||||||
|
pushd gsplus/build >& /dev/null
|
||||||
|
cmake ..
|
||||||
|
make
|
||||||
|
if [[ ! -e bin/GSplus ]]; then
|
||||||
|
tBoldBox tRED "Failed to build GSplus."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
mkdir -p "${IIGS}/gsplus"
|
||||||
|
cp -f bin/{GSplus,partls,to_pro} "${IIGS}/gsplus/."
|
||||||
|
popd >& /dev/null
|
||||||
|
wget http://www.whatisthe2gs.apple2.org.za/files/rom3.zip
|
||||||
|
unzip rom3.zip
|
||||||
|
mv -f APPLE2GS.ROM2 "${IIGS}/gsplus/ROM.03"
|
||||||
|
wget http://www.whatisthe2gs.apple2.org.za/files/harddrive_image.zip
|
||||||
|
unzip harddrive_image.zip
|
||||||
|
mv -f "System 6 and Free Games.hdv" "${IIGS}/gsplus/System601.po"
|
||||||
|
echo -e "s7d1 = System601.po\n\ng_limit_speed = 0\n" > "${IIGS}/gsplus/config.txt"
|
||||||
|
echo -e "s7d1 = System601.po\ns7d2 = /tmp/IIgs/import.po\n" > "${IIGS}/gsplus/IIgsTest.cfg"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d cadius ]]; then
|
||||||
|
echo ""
|
||||||
|
tBoldBox tPURPLE "Building Cadius"
|
||||||
|
echo ""
|
||||||
|
git clone https://github.com/mach-kernel/cadius.git
|
||||||
|
pushd cadius >& /dev/null
|
||||||
|
make
|
||||||
|
if [[ ! -e bin/release/cadius ]]; then
|
||||||
|
tBoldBox tRED "Failed to build Cadius."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
mkdir -p "${IIGS}/cadius"
|
||||||
|
cp -f bin/release/cadius "${IIGS}/cadius/."
|
||||||
|
popd >& /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -e ntconverter.zip ]]; then
|
||||||
|
echo ""
|
||||||
|
tBoldBox tPURPLE "Installing NinjaTracker Converter"
|
||||||
|
echo ""
|
||||||
|
wget https://www.ninjaforce.com/downloads/ntconverter.zip
|
||||||
|
unzip ntconverter.zip
|
||||||
|
mkdir -p "${IIGS}/ntconverter"
|
||||||
|
cp -f ntconverter.php "${IIGS}/ntconverter/."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
tBoldBox tPURPLE "Building JoeyLib"
|
||||||
|
echo ""
|
||||||
|
set -x
|
||||||
|
O=${IIGS}/ORCA/out/joey
|
||||||
|
if [[ -d "${O}" ]]; then
|
||||||
|
rm -rf "${O}"
|
||||||
|
fi
|
||||||
|
mkdir -p "${O}"
|
||||||
|
G_HAS_IIGS=1
|
||||||
|
configWrite
|
||||||
|
configRead
|
||||||
|
pushd ${JOEY}/joeylib/joeylib/src >& /dev/null
|
||||||
|
iix assemble +L jIIgs.asm keep=31:/out/joey/jIIgsasm > jIIgs.asm.dis
|
||||||
|
iix compile jIIgs.c keep=31:/out/joey/jIIgsc
|
||||||
|
iix compile joey.c keep=31:/out/joey/joey
|
||||||
|
iix makelib 31:/out/joey/joeylib +31:/out/joey/jIIgsasm.A
|
||||||
|
iix makelib 31:/out/joey/joeylib +31:/out/joey/jIIgsasm.ROOT
|
||||||
|
iix makelib 31:/out/joey/joeylib +31:/out/joey/jIIgsc.a
|
||||||
|
iix makelib 31:/out/joey/joeylib +31:/out/joey/joey.a
|
||||||
|
popd >& /dev/null
|
||||||
|
mkdir -p ${JOEY}/dist/IIgs
|
||||||
|
cp -f ${JOEY}/joeylib/joeylib/lib/IIgs/Tool221#ba0000 ${JOEY}/dist/IIgs/.
|
||||||
|
cp -f ${O}/joeylib ${JOEY}/dist/IIgs/joeylib#b20000
|
||||||
|
cp -f ${JOEY}/joeylib/joeylib/src/joey.h ${JOEY}/dist/.
|
||||||
|
cp -f ${JOEY}/joeylib/scripts/build-IIgs.helper.sh ${JOEY}/dist/.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function installLinux32() {
|
function installLinux32() {
|
||||||
buildPCDeps \
|
buildPCDeps \
|
||||||
"$(pwd)/../dist/linux/i386" \
|
"$(pwd)/../dist/linux/i386" \
|
||||||
|
@ -212,14 +431,16 @@ function installWin64() {
|
||||||
|
|
||||||
function mainMenu() {
|
function mainMenu() {
|
||||||
local ITEMS=(
|
local ITEMS=(
|
||||||
# "IIgs" "Amiga" "ST"
|
"IIgs"
|
||||||
|
# "Amiga" "ST"
|
||||||
"Linux32" "Linux64"
|
"Linux32" "Linux64"
|
||||||
"Win32" "Win64"
|
"Win32" "Win64"
|
||||||
# "macOS32" "macOS64"
|
# "macOS32" "macOS64"
|
||||||
# "Android" "iOS"
|
# "Android" "iOS"
|
||||||
)
|
)
|
||||||
local DESC=(
|
local DESC=(
|
||||||
# "Apple IIgs 16" "Commodore Amiga 16" "Atari ST 16"
|
"Apple IIgs 16"
|
||||||
|
# "Commodore Amiga 16" "Atari ST 16"
|
||||||
"Linux 32" "Linux 64"
|
"Linux 32" "Linux 64"
|
||||||
"Windows 32" "Windows 64"
|
"Windows 32" "Windows 64"
|
||||||
# "macOS 32" "macOS 64"
|
# "macOS 32" "macOS 64"
|
||||||
|
@ -283,7 +504,7 @@ pushd installerWork >& /dev/null
|
||||||
echo ""
|
echo ""
|
||||||
tBoldBox tBLUE "Examining system..."
|
tBoldBox tBLUE "Examining system..."
|
||||||
tCheckPackages MISSING cmake ragel hfsplus hfsutils hfsprogs libreadline-dev libedit-dev \
|
tCheckPackages MISSING cmake ragel hfsplus hfsutils hfsprogs libreadline-dev libedit-dev \
|
||||||
build-essential git mercurial texinfo libtool autoconf automake \
|
build-essential git mercurial texinfo libtool autoconf automake re2c \
|
||||||
gcc-multilib g++-multilib mingw-w64 gdb-mingw-w64 clang llvm-dev libxml2-dev \
|
gcc-multilib g++-multilib mingw-w64 gdb-mingw-w64 clang llvm-dev libxml2-dev \
|
||||||
uuid-dev libssl-dev bash patch make tar xz-utils bzip2 gzip sed cpio \
|
uuid-dev libssl-dev bash patch make tar xz-utils bzip2 gzip sed cpio \
|
||||||
libpulse-dev{,:i386} libasound-dev{,:i386} \
|
libpulse-dev{,:i386} libasound-dev{,:i386} \
|
||||||
|
@ -322,10 +543,11 @@ if [[ ! -f ${G_PARENT}/joeylib/LICENSE ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mainMenu
|
mainMenu
|
||||||
|
configWrite
|
||||||
|
|
||||||
clear
|
clear
|
||||||
tBoldBox tBLUE "Goodbye!"
|
tBoldBox tBLUE "Goodbye!"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# --- EXIT
|
# --- EXIT
|
||||||
popd >& /dev/null
|
popd >& /dev/null
|
||||||
|
|
Loading…
Add table
Reference in a new issue