New Build VM configuration script added.
This commit is contained in:
parent
c60a5e5a55
commit
bd1b158a87
1 changed files with 517 additions and 0 deletions
517
scripts/buildVm.sh
Executable file
517
scripts/buildVm.sh
Executable file
|
@ -0,0 +1,517 @@
|
|||
#!/bin/bash -xe
|
||||
|
||||
#
|
||||
# JoeyLib
|
||||
# Copyright (C) 2018-2021 Scott Duensing <scott@kangaroopunch.com>
|
||||
#
|
||||
# This software is provided 'as-is', without any express or implied
|
||||
# warranty. In no event will the authors be held liable for any damages
|
||||
# arising from the use of this software.
|
||||
#
|
||||
# Permission is granted to anyone to use this software for any purpose,
|
||||
# including commercial applications, and to alter it and redistribute it
|
||||
# freely, subject to the following restrictions:
|
||||
#
|
||||
# 1. The origin of this software must not be misrepresented; you must not
|
||||
# claim that you wrote the original software. If you use this software
|
||||
# in a product, an acknowledgment in the product documentation would be
|
||||
# appreciated but is not required.
|
||||
# 2. Altered source versions must be plainly marked as such, and must not be
|
||||
# misrepresented as being the original software.
|
||||
# 3. This notice may not be removed or altered from any source distribution.
|
||||
#
|
||||
|
||||
|
||||
SRC=${HOME}/joeylib/joeylib/src
|
||||
IIGS=${HOME}/cross/gsos-wdc-orca
|
||||
SDL2_OLD=25f9ed87ff6947d9576fc9d79dee0784e638ac58
|
||||
SDL2_NEW=97a5e744497ff7cc93edc5119d67cad3ee86dd57
|
||||
OLD_PATH=${PATH}
|
||||
|
||||
export GOLDEN_GATE=${IIGS}/ORCA
|
||||
|
||||
|
||||
function buildIIgsSDK() {
|
||||
local GGATE=$1
|
||||
local ORCA=$2
|
||||
local PUBLIC=$3
|
||||
local PRIVATE=$4
|
||||
local GGUSER=$5
|
||||
local GGPASS=$6
|
||||
local RESULT=
|
||||
local O=
|
||||
|
||||
mkdir -p "${IIGS}/ORCA"
|
||||
chmod 777 "${IIGS}/ORCA"
|
||||
|
||||
mkdir -p ~/.ssh
|
||||
cp -f "${PUBLIC}" ~/.ssh/id_rsa.pub
|
||||
cp -f "${PRIVATE}" ~/.ssh/id_rsa
|
||||
touch ${HOME}/.ssh/authorized_keys
|
||||
touch ${HOME}/.ssh/config
|
||||
chmod go-w ${HOME}
|
||||
chmod 700 ${HOME}/.ssh
|
||||
chmod 600 ${HOME}/.ssh/*id_rsa
|
||||
chmod 644 ${HOME}/.ssh/*.pub
|
||||
chmod 644 ${HOME}/.ssh/authorized_keys
|
||||
chmod 644 ${HOME}/.ssh/config
|
||||
|
||||
if [[ ! -e "${IIGS}/jfsDrive.img" ]]; then
|
||||
O=${IIGS}/mountORCA.sh
|
||||
echo "#!/bin/bash" > "${O}"
|
||||
echo "IIGS=${IIGS}" >> "${O}"
|
||||
echo "if ! mount | grep \${IIGS}/ORCA | grep -q jfs; then" >> "${O}"
|
||||
echo -e "\tfsck.jfs -a \${IIGS}/jfsDrive.img" >> "${O}"
|
||||
echo -e "\tsudo mount -t jfs \${IIGS}/jfsDrive.img \${IIGS}/ORCA" >> "${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 "\trm \${IIGS}/lastMount.cfg" >> "${O}"
|
||||
echo "fi" >> "${O}"
|
||||
chmod +x "${O}"
|
||||
fallocate -l 32M "${IIGS}/jfsDrive.img"
|
||||
mkfs.jfs -O -q -L IIgs "${IIGS}/jfsDrive.img"
|
||||
fi
|
||||
|
||||
"${IIGS}/mountORCA.sh"
|
||||
sudo chown $(id -ru):$(id -rg) "${IIGS}/ORCA/."
|
||||
|
||||
if [[ ! -d GoldenGate ]]; then
|
||||
ssh-keygen -F gitlab.com || ssh-keyscan gitlab.com > ~/.ssh/known_hosts
|
||||
git config --global credential.helper cache
|
||||
git clone https://${GGUSER}:${GGPASS}@gitlab.com/GoldenGate/GoldenGate.git
|
||||
fi
|
||||
|
||||
pushd GoldenGate
|
||||
git submodule init
|
||||
git submodule update
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/installed ..
|
||||
make
|
||||
make install
|
||||
mkdir -p ${IIGS}
|
||||
cp -f bin/{iix,dumpobj,opus-extractor} "${IIGS}/."
|
||||
cd installed
|
||||
msiextract "${HOME}/${GGATE}"
|
||||
find -name ".*" -delete
|
||||
cp -rf GoldenGate/* "${IIGS}/ORCA/."
|
||||
popd
|
||||
|
||||
isoinfo -i "${ORCA}" -x /FOR_EMUL/BYTEWORK.S\;1 > BYTEWORKS
|
||||
"${IIGS}/opus-extractor" -v BYTEWORKS "${IIGS}/ORCA"
|
||||
rm BYTEWORKS
|
||||
|
||||
fetchGitHubRelease RESULT byteworksinc ORCA-C 2mg
|
||||
"${IIGS}/opus-extractor" -v -s / ${RESULT} "${IIGS}/ORCA"
|
||||
|
||||
export PATH=${OLD_PATH}:${IIGS}
|
||||
pushd ${GOLDEN_GATE}
|
||||
for O in etc/* ; do iix chtyp -t txt "${O}" ; done
|
||||
for O in lib/* ; do if [ -f "${O}" ] ; then iix chtyp -t lib "${O}" ; fi ; done
|
||||
for O in usr/lib/lib* ; do iix chtyp -t lib "${O}" ; done
|
||||
for O in usr/lib/tmac/* ; do iix chtyp -t txt "${O}" ; done
|
||||
for O in bin/* ; do iix chtyp -t exe "${O}" ; done
|
||||
for O in usr/bin/* ; do iix chtyp -t exe "${O}" ; done
|
||||
for O in usr/local/bin/* ; do iix chtyp -t exe "${O}" ; done
|
||||
for O in Languages/* ; do if [ -f "${O}" ] ; then iix chtyp -t exe "${O}" ; fi ; done ;
|
||||
for O in Utilities/Help/* ; do if [ -f "${O}" ] ; then iix chtyp -t txt "${O}" ; fi ; done ;
|
||||
for O in Utilities/* ; do if [ -f "${O}" ] ; then iix chtyp -t exe "${O}" ; fi ; done ;
|
||||
for O in Libraries/* ; do if [ -f "${O}" ] ; then iix chtyp -t lib "${O}" ; fi ; done ;
|
||||
for O in Libraries/AInclude/* ; do if [ -f "${O}" ] ; then iix chtyp -t txt "${O}" ; fi ; done ;
|
||||
for O in Libraries/APWCInclude/* ; do if [ -f "${O}" ] ; then iix chtyp -t txt "${O}" ; fi ; done ;
|
||||
for O in Libraries/AppleUtil/* ; do if [ -f "${O}" ] ; then iix chtyp -t txt "${O}" ; fi ; done ;
|
||||
for O in Libraries/ORCACDefs/* ; do if [ -f "${O}" ] ; then iix chtyp -l cc "${O}" ; fi ; done ;
|
||||
for O in Libraries/ORCAInclude/* ; do if [ -f "${O}" ] ; then iix chtyp -l asm "${O}" ; fi ; done ;
|
||||
for O in Libraries/RInclude/* ; do if [ -f "${O}" ] ; then iix chtyp -l rez "${O}" ; fi ; done ;
|
||||
for O in Libraries/Tool.Interface/* ; do if [ -f "${O}" ] ; then iix chtyp -l pascal "${O}" ; fi ; done ;
|
||||
for O in Libraries/GSoftDefs/* ; do if [ -f "${O}" ] ; then iix chtyp -t 0x5e -a 0x8007 "${O}" ; fi ; done ;
|
||||
for O in Libraries/ORCAPascalDefs/* ; do if [ -f "${O}" ] ; then iix chtyp -t 0x5e -a 0x8009 "${O}" ; fi ; done ;
|
||||
for O in Libraries/m2defs/* ; do if [ -f "${O}" ] ; then iix chtyp -t 0x5e -a 0x8006 "${O}" ; fi ; done ;
|
||||
popd
|
||||
export PATH=${OLD_PATH}
|
||||
|
||||
if [[ ! -d cadius ]]; then
|
||||
git clone https://skunkworks.kangaroopunch.com/mirrors/cadius.git
|
||||
pushd cadius
|
||||
make
|
||||
mkdir -p "${IIGS}/cadius"
|
||||
cp -f bin/release/cadius "${IIGS}/cadius/."
|
||||
popd
|
||||
fi
|
||||
|
||||
if [[ ! -e "${IIGS}/ntpconverter/ntpconverter.php" ]]; then
|
||||
download http://www.ninjaforce.com/downloads/ntconverter.zip
|
||||
unzip ntconverter.zip
|
||||
mkdir -p "${IIGS}/ntpconverter"
|
||||
cp -f ntconverter.php "${IIGS}/ntpconverter/ntpconverter.php"
|
||||
fi
|
||||
|
||||
if [[ ! -e "${IIGS}/Tool222#ba0000" ]]; then
|
||||
download http://www.ninjaforce.com/downloads/ninjatrackerplus_tool222_v1.4.2mg
|
||||
"${IIGS}/cadius/cadius" extractfile ninjatrackerplus_tool222_v1.4.2mg NTP.TOOL222V1.4/SYSTEM/TOOLS/TOOL222 .
|
||||
cp -f "TOOL222#BA0000" "${IIGS}/Tool222#ba0000"
|
||||
fi
|
||||
|
||||
"${IIGS}/unmountORCA.sh"
|
||||
|
||||
if [[ ! -e "${IIGS}/jfsDrive.img.backup.tar.bz2" ]]; then
|
||||
tar cjf "${IIGS}/jfsDrive.img.backup.tar.bz2" "${IIGS}/jfsDrive.img"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function buildJoeyLib() {
|
||||
OLD_CFLAGS=${CFLAGS}
|
||||
|
||||
if [[ ! -d joeylib ]]; then
|
||||
git clone https://skunkworks.kangaroopunch.com/skunkworks/joeylib.git
|
||||
fi
|
||||
|
||||
rm -rf dist/${NAME}-${ARCH} && true
|
||||
mkdir -p dist/${NAME}-${ARCH}
|
||||
|
||||
pushd dist/${NAME}-${ARCH}
|
||||
case ${BACKEND} in
|
||||
orca)
|
||||
local OUT=${GOLDEN_GATE}/out/joey
|
||||
rm -rf ${OUT} && true
|
||||
mkdir -p ${OUT}/out/joey
|
||||
pushd ${SRC}
|
||||
iix assemble jIIgs.asm keep=31:/out/joey/jIIgsasm
|
||||
iix compile jIIgs.c keep=31:/out/joey/jIIgsc
|
||||
iix compile joey.c keep=31:/out/joey/joey
|
||||
popd
|
||||
cp -f "${OUT}/jIIgsc.root" "jIIgsc.root#b10000"
|
||||
cp -f "${OUT}/jIIgsc.a" "jIIgsc.a#b10000"
|
||||
cp -f "${OUT}/jIIgsasm.root" "jIIgsasm.root#b10000"
|
||||
cp -f "${OUT}/jIIgsasm.a" "jIIgsasm.a#b10000"
|
||||
cp -f "${OUT}/joey.a" "joey.a#b10000"
|
||||
cp -f "${IIGS}/Tool222#ba0000" .
|
||||
;;
|
||||
|
||||
SDL2)
|
||||
export CFLAGS="${CFLAGS} -Wall -D_REENTRANT_ -I${SRC} -I${INSTALLED}/include -c"
|
||||
${CC} ${CFLAGS} -o jPixBuf.o ${SRC}/jPixBuf.c
|
||||
${CC} ${CFLAGS} -o jSDL2.o ${SRC}/jSDL2.c
|
||||
${CC} ${CFLAGS} -o joey.o ${SRC}/joey.c
|
||||
${AR} x ${INSTALLED}/lib/libSDL2.a
|
||||
${AR} x ${INSTALLED}/lib/libSDL2main.a
|
||||
${AR} rcs libjoeylib.a *.o
|
||||
rm *.o
|
||||
rm __.SYMDEF* && true
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
cp -f ${SRC}/joey.h ../.
|
||||
popd
|
||||
|
||||
export CFLAGS=${OLD_CFLAGS}
|
||||
}
|
||||
|
||||
|
||||
function buildMacOSSDK() {
|
||||
local SDK=$1
|
||||
local NAME=$2
|
||||
|
||||
if [[ ! -d osxcross ]]; then
|
||||
git clone https://skunkworks.kangaroopunch.com/mirrors/osxcross.git
|
||||
fi
|
||||
|
||||
pushd osxcross
|
||||
cp -f ../"${SDK}" tarballs/.
|
||||
UNATTENDED=1 ./build.sh
|
||||
sudo ENABLE_COMPILER_RT_INSTALL=1 ./build_compiler_rt.sh
|
||||
mkdir -p ../cross/${NAME}
|
||||
mv -f target/* ../cross/${NAME}
|
||||
sudo mv -f /usr/lib/llvm-10/lib/clang/10.0.0/lib/darwin ../cross/${NAME}/.
|
||||
./cleanup.sh
|
||||
popd
|
||||
}
|
||||
|
||||
|
||||
function buildSDL2() {
|
||||
local TAG=$1
|
||||
|
||||
if [[ ! -d SDL ]]; then
|
||||
git clone https://skunkworks.kangaroopunch.com/mirrors/SDL.git
|
||||
fi
|
||||
|
||||
pushd SDL
|
||||
git checkout ${TAG}
|
||||
popd
|
||||
|
||||
clearBuild
|
||||
|
||||
pushd build
|
||||
../SDL/configure \
|
||||
--target=${TRIPLE} \
|
||||
--host=${TRIPLE} \
|
||||
--build=x86_64-linux \
|
||||
--enable-static \
|
||||
--disable-shared \
|
||||
--disable-video-wayland \
|
||||
--disable-render-metal \
|
||||
--disable-video-metal \
|
||||
--prefix=${INSTALLED}
|
||||
make
|
||||
make install
|
||||
popd
|
||||
}
|
||||
|
||||
|
||||
function clearBuild() {
|
||||
rm -rf build && true
|
||||
mkdir -p build
|
||||
}
|
||||
|
||||
|
||||
function configureSFTP() {
|
||||
sudo addgroup sftponly && true
|
||||
echo "Match Group sftponly" | sudo tee /etc/ssh/sshd_config.d/sftponly.conf
|
||||
echo -e "\tChrootDirectory %h" | sudo tee -a /etc/ssh/sshd_config.d/sftponly.conf
|
||||
echo -e "\tForceCommand internal-sftp" | sudo tee -a /etc/ssh/sshd_config.d/sftponly.conf
|
||||
echo -e "\tAllowTcpForwarding no" | sudo tee -a /etc/ssh/sshd_config.d/sftponly.conf
|
||||
echo -e "\tX11Forwarding no" | sudo tee -a /etc/ssh/sshd_config.d/sftponly.conf
|
||||
sudo systemctl restart sshd
|
||||
# Read for user creation: https://askubuntu.com/questions/134425/how-can-i-chroot-sftp-only-ssh-users-into-their-homes
|
||||
}
|
||||
|
||||
|
||||
function download() {
|
||||
local URL=$1
|
||||
local FILE=
|
||||
|
||||
trim FILE "$2"
|
||||
|
||||
if [[ -z ${FILE} ]]; then
|
||||
FILE=${URL##*/}
|
||||
fi
|
||||
|
||||
if [[ -e "${FILE}" ]]; then
|
||||
rm -f "${FILE}"
|
||||
fi
|
||||
|
||||
wget -O "${FILE}" ${URL}
|
||||
}
|
||||
|
||||
|
||||
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##*/}
|
||||
download ${URL}
|
||||
eval $__RESULT=\${FILE}
|
||||
}
|
||||
|
||||
|
||||
function setCompiler() {
|
||||
local OS=$1
|
||||
local CPU=$2
|
||||
|
||||
case ${OS} in
|
||||
gsos)
|
||||
case ${CPU} in
|
||||
816)
|
||||
NAME="gsos-wdc"
|
||||
ARCH=816
|
||||
;;
|
||||
|
||||
esac
|
||||
BACKEND=orca
|
||||
export PATH=${OLD_PATH}:${IIGS}
|
||||
"${IIGS}/mountORCA.sh"
|
||||
;;
|
||||
|
||||
linux)
|
||||
case ${CPU} in
|
||||
i386)
|
||||
NAME="linux-intel"
|
||||
ARCH=i386
|
||||
TRIPLE="x86_64-linux-gnu"
|
||||
export CFLAGS="-m32"
|
||||
;;
|
||||
|
||||
x86_64)
|
||||
NAME="linux-intel"
|
||||
ARCH=x86_64
|
||||
TRIPLE="${ARCH}-linux-gnu"
|
||||
export CFLAGS=
|
||||
;;
|
||||
|
||||
esac
|
||||
BACKEND=SDL2
|
||||
export PATH=${OLD_PATH}
|
||||
export LD_LIBRARY_PATH=
|
||||
export CC=${TRIPLE}-gcc
|
||||
export AR=${TRIPLE}-ar
|
||||
;;
|
||||
|
||||
macos)
|
||||
case ${CPU} in
|
||||
i386)
|
||||
NAME="macos-intel"
|
||||
ARCH=i386
|
||||
TRIPLE="${ARCH}-apple-darwin17"
|
||||
;;
|
||||
|
||||
x86_64)
|
||||
NAME="macos-intel"
|
||||
ARCH=x86_64
|
||||
TRIPLE="${ARCH}-apple-darwin17"
|
||||
;;
|
||||
|
||||
arm)
|
||||
NAME="macos-apple"
|
||||
ARCH=aarch64
|
||||
TRIPLE="${ARCH}-apple-darwin20.4"
|
||||
;;
|
||||
|
||||
esac
|
||||
BACKEND=SDL2
|
||||
export CFLAGS=
|
||||
export PATH=${HOME}/cross/${NAME}/bin:${OLD_PATH}
|
||||
export LD_LIBRARY_PATH=${HOME}/cross/${NAME}/lib
|
||||
export CC=${TRIPLE}-clang
|
||||
export AR=${TRIPLE}-ar
|
||||
sudo rm -f /usr/lib/llvm-10/lib/clang/10.0.0/lib/darwin && true
|
||||
sudo ln -s ${HOME}/cross/${NAME}/darwin /usr/lib/llvm-10/lib/clang/10.0.0/lib/.
|
||||
;;
|
||||
|
||||
windows)
|
||||
case ${CPU} in
|
||||
i386)
|
||||
NAME="windows-intel"
|
||||
ARCH=i686
|
||||
TRIPLE="${ARCH}-w64-mingw32"
|
||||
;;
|
||||
|
||||
x86_64)
|
||||
NAME="windows-intel"
|
||||
ARCH=x86_64
|
||||
TRIPLE="${ARCH}-w64-mingw32"
|
||||
;;
|
||||
|
||||
esac
|
||||
BACKEND=SDL2
|
||||
export PATH=${OLD_PATH}
|
||||
export LD_LIBRARY_PATH=
|
||||
export CFLAGS="-static-libgcc"
|
||||
export CC=${TRIPLE}-gcc
|
||||
export AR=${TRIPLE}-ar
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
INSTALLED=${HOME}/installed/${NAME}-${ARCH}
|
||||
mkdir -p ${INSTALLED}
|
||||
}
|
||||
|
||||
|
||||
function scriptIsDownloaded() {
|
||||
local GGUSER=$1
|
||||
local GGPASS=$2
|
||||
|
||||
# updateSystem
|
||||
# configureSFTP
|
||||
|
||||
# buildIIgsSDK "Golden Gate.msi" "Opus ][ The Software.iso" id_rsa id_rsa.pub "${GGUSER}" "${GGPASS}"
|
||||
# buildMacOSSDK MacOSX10.13.sdk.tar.xz macos-intel
|
||||
# buildMacOSSDK MacOSX11.3.sdk.tar.xz macos-apple
|
||||
|
||||
setCompiler gsos 816
|
||||
buildJoeyLib
|
||||
|
||||
# setCompiler linux i386
|
||||
# buildSDL2 ${SDL2_NEW}
|
||||
# buildJoeyLib
|
||||
|
||||
# setCompiler linux x86_64
|
||||
# buildSDL2 ${SDL2_NEW}
|
||||
# buildJoeyLib
|
||||
|
||||
# setCompiler macos i386
|
||||
# buildSDL2 ${SDL2_OLD}
|
||||
# buildJoeyLib
|
||||
|
||||
# setCompiler macos x86_64
|
||||
# buildSDL2 ${SDL2_OLD}
|
||||
# buildJoeyLib
|
||||
|
||||
# setCompiler macos arm
|
||||
# buildSDL2 ${SDL2_NEW}
|
||||
# buildJoeyLib
|
||||
|
||||
# setCompiler windows i386
|
||||
# buildSDL2 ${SDL2_NEW}
|
||||
# buildJoeyLib
|
||||
|
||||
# setCompiler windows x86_64
|
||||
# buildSDL2 ${SDL2_NEW}
|
||||
# buildJoeyLib
|
||||
}
|
||||
|
||||
|
||||
function trim() {
|
||||
local __RESULT=$1
|
||||
local __VAR="${*:2}"
|
||||
|
||||
# remove leading whitespace characters
|
||||
__VAR="${__VAR#"${__VAR%%[![:space:]]*}"}"
|
||||
# remove trailing whitespace characters
|
||||
__VAR="${__VAR%"${__VAR##*[![:space:]]}"}"
|
||||
|
||||
eval $__RESULT=\${__VAR}
|
||||
}
|
||||
|
||||
|
||||
function updateSystem() {
|
||||
sudo apt update
|
||||
sudo apt -y upgrade
|
||||
sudo apt -y dist-upgrade
|
||||
sudo dpkg --add-architecture i386
|
||||
sudo apt -y install \
|
||||
autoconf \
|
||||
build-essential \
|
||||
bzip2 \
|
||||
clang \
|
||||
cmake \
|
||||
cpio \
|
||||
gcc-multilib \
|
||||
gzip \
|
||||
libbz2-dev \
|
||||
liblzma-dev \
|
||||
libssl-dev \
|
||||
libxml2-dev \
|
||||
llvm \
|
||||
mingw-w64 \
|
||||
patch \
|
||||
php-cli \
|
||||
sed \
|
||||
uuid-dev \
|
||||
xz-utils \
|
||||
zlib1g-dev
|
||||
# ORCA / GoldenGate Stuff
|
||||
sudo apt -y install \
|
||||
genisoimage \
|
||||
jfsutils \
|
||||
msitools \
|
||||
ragel
|
||||
}
|
||||
|
||||
|
||||
scriptIsDownloaded "$1" "$2"
|
Loading…
Add table
Reference in a new issue