Jakiś tydzień temu ponownie potrzebny był DosBox ze wsparciem dla akceleracji 3Dfx i chociaż kiedyś już o tym pisałem, to na sieci panuje dość spory młyn bo a to jednemu nie działa taka łatka, innemu taka(bo też wersji tej łatki kilka po sieci krąży); trzeciemu z kolei to albo tamto nie działa z dosboksem z CVS lub stabilnym.
Cała sytuacja nie jest aż tak zakręcona jak napisałem, natomiast jak startujesz od zera bo "Fajnie byłoby to wypróbować" to mniej więcej taki obrazek Cię czeka. Łatwiej mają użytkownicy Gentoo którzy mają dobrze ten pakiet maintainowany w repo i trochę ich torem polecimy.
Ale do rzeczy, poniższy skrypt potrafi budować zarówno OpenGlide z CVS jak i DosBoksa z CVS(rewizja 4302) pod architektury x86 i x86_64. Z tym, że jeśli na maszynie 64 bitowej budujesz pod maszyny 32 bitowe może czekać cię trochę podmieniania pakietów - ale chcesz się bawić, to się baw - jeśli zapewnisz dobre środowisko do takich imprez ten skrypt Ci to zbuduje.
Polecam czytać README zawarte w komentarzach na początku skryptu i pamiętać, że używacie go na własną odpowiedzialność chociaż sam z niego korzystam i uważam, że jest bezpieczny - poza tym nie wymaga roota więc nie ma nawet jak czegoś bardzo popsuć. No ale, żeby nie było; używasz na własną odpowiedzialność. Dobrej zabawy.
ps. skrypt nakłada łatkę na OpenGlide pod Carmageddon w które właśnie gram więc jak tego nie chcecie wywalcie sobie linijki od 62 do 67. Jeśli chcecie nałożyć tą łatkę jest do pobrania tutaj. Wrzucacie ją do katalogu gdzie zapisaliście skrypt i zostanie nałożona na źródła.
#!/bin/sh
# OPENGLIDE CVS AND DOSBOX GLIDE PATCHED BUILDING SCRIPT
# by azn <aznlir88@gmail.com>
#
#
# VERSION: 0.1a / DATE: 23/04/2020
# - Added third option in the main menu
#
# VERSION: 0.1 / DATE: 16/04/2020
#
#
# As DosBox Glide patch is a wonderful addition to original DosBox, yet it caused
# many confusions on linux and vogons forums as most users have problems to fit
# the right version of the patch with dosbox version. You can find many versions
# of the Glide patch around the internet.
# This script allows you to build OpenGlide SVN version and create a convienient
# .deb package and of course to do local installation of Glide patched DosBox
# version. I decided to install patched DosBox in local folder instead of creating
# a .deb package for system-wide installation as for it to work properly dosbox
# needs glide2x.ovl file that should be where the dosbox executable is and it does
# not sound clean to me to put it into one of the system's bin folders.
#
# You can also choose to build x86 and x86_64 versions of both OpenGlide and Glide
# patched DosBox but I recommend building 64 bit version as most of you work
# on 64 bit systems anyway these days. Option to build 32 bit version is included
# only because some sources seem to prove huge speed boost while running 32 bit
# version on 64 bit systems.
#
# While choosing 32 bit build on 64 bit system be aware that many depencies that
# allow you to build dosbox will need to be replaced with 32 bit versions of
# these packages.
#
# In Linux Mint, as this is the distro I am using dosbox will not compile for
# x86 unless you replace libsdl1.2-dev package with libsdl1.2:i386 package.
# And when you later want to compile x86_64 version of dosbox you must once
# again replace libsdl1.2-dev:i386 with 64 bit version of package. So think
# what you want to get before you start playing with this script.
#
# I consider this script safe as it does not need root access, therefore it
# is not making any system-wide changes. Everything will start and end in
# location where the script is located.
#
# BUT AS I AM NOT A PROFESSIONAL PROGRAMMER, KEEP IN MIND THAT YOU ARE USING THAT
# SCRIPT AT YOUR OWN RISK AND I AM NOT RESPONSIBLE OF ANY DAMAGE IT MAY CAUSE TO
# YOUR COMPUTER ANYHOW.
dir=$(pwd)
openglide_package="openglide-cvs"
openglide_version="0.09rc9"
openglide_release="1"
openglide_maintainer_name="azn"
openglide_maintainer_mail="aznlir88@gmail.com"
dosbox_package="dosbox"
dosbox_version="4302"
funChooseArch()
{
clear
echo "-------\n\
- THIS SOFTWARE COMES WITH NO WARRANTY, YOU\n\
- ARE USING THIS SOFTWARE AT YOUR OWN RISK.\n\
-------\n\
OpenGlide, DosBox Glide patched build\n\
script by azn <aznlir88@gmail.com>\n\n\
\e[1;34mBuild packages for 32-bit or 64-bit systems?:\n\
1. 32-bit arch\n\
2. 64-bit arch\e[0m\n\
\e[1;30m3. Do not know what to do?\e[0m\n"
read -p ' Your choice: ' archvar
if [ $archvar = 1 ]
then
archvar1="-m32"
archvar2="i386-pc-linux-gnu"
archvar3="x86"
arch="i386"
elif [ $archvar = 2 ]
then
archvar1="-m64"
archvar2="x86_64-pc-linux-gnu"
archvar3="x86_64"
arch="amd64"
elif [ $archvar = 3 ]
then
clear
echo "\n\e[1m You must build and install OpenGlide\n\
first, so Glide patched DosBox\n can be built.\n\
\n
// You will return to main menu
// in 10 seconds\e[0m\n"
sleep 10
funChooseArch
else
echo " \e[1;30mNo such option. Try again.\n\e[0m"
exit
fi
}
funWhatToBuild()
{
echo "\e[1;34m\n What do you want to build?\n\n\
1. OpenGlide SVN\n\
2. DosBox SVN + Glide patch\n\
\e[0m\n \e[1;36m// Building for ${archvar3} systems\n\e[0m"
read -p ' Your choice: ' taskvar
if [ $taskvar = 1 ]
then
echo "\e[1;34m\nPreparing OpenGlide SVN version\n\e[0m"
funOpenGlide
elif [ $taskvar = 2 ]
then
echo "\e[1;34m\nPreparing DosBox SVN + Glide patch\n\e[0m"
funDosBox
else
echo " \e[1;30mNo such option. Try again.\n\e[0m"
exit
fi
}
funOpenGlide()
{
sleep 2
echo "\e[1;36m/------------\n\
| FETCHING OPENGLIDE SVN SOURCE\n\
\----------------------/\e[0m\n"
sleep 3
cvs -z3 -d:pserver:anonymous@openglide.cvs.sourceforge.net:/cvsroot/openglide co -P openglide
cd openglide
echo "\e[1;36m\n/------------\n\
| PATCHING WITH CARMAGEDDON PATCH\n\
\----------------------/\e[0m\n"
sleep 3
cat ../openglide-carma.diff | patch -p1
echo "\e[1;36m\n/------------\n\
| CONFIGURING OPENGLIDE SVN SOURCE\n\
\----------------------/\e[0m\n"
sleep 3
./bootstrap
./configure --target="${archvar2}" \
"CFLAGS="${archvar1}"" \
"CXXFLAGS="${archvar1}"" \
"LDFLAGS="${archvar1}""
echo "\e[1;36m\n/------------\n\
| COMPILING OPENGLIDE SVN SOURCE\n\
\----------------------/\e[0m\n"
sleep 3
make
echo "\e[1;36m\n/------------\n\
| MAKING OPENGLIDE SVN .DEB PACKAGE\n\
\----------------------/\e[0m\n"
sleep 3
fakeroot make \
DESTDIR=$PWD/../$openglide_package-$openglide_version-$openglide_release-$arch \
install
cd ..
mkdir $openglide_package-$openglide_version-$openglide_release-$arch/DEBIAN
touch $openglide_package-$openglide_version-$openglide_release-$arch/DEBIAN/control
cd $openglide_package-$openglide_version-$openglide_release-$arch/DEBIAN
echo "Package: $openglide_package" >> control
echo "Version: $openglide_version-$openglide_release" >> control
echo "Architecture: $arch" >> control
echo "Maintainer: $openglide_maintainer_name <$openglide_maintainer_mail>" >> control
echo "Description: OpenGlide CVS" >> control
cd ../..
dpkg-deb -b $openglide_package-$openglide_version-$openglide_release-$arch
echo "\e[1;36m\n/------------\n\
| CLEANING UP\n\
\----------------------/\e[0m\n"
sleep 2
rm -rf ./openglide
rm -rf ./$openglide_package-$openglide_version-$openglide_release-$arch
echo "\e[1;36m >>> Package name:\e[0m\n\n \
\e[0;36m$openglide_package-$openglide_version-$openglide_release-$arch.deb\e[0m\n\n \
\e[1;36mPackage location:\e[0m\n\n \
\e[0;36m$dir\e[0m\n"
}
funDosBox()
{
sleep 2
mkdir $dosbox_package
cd $dosbox_package
echo "\e[1;36m/------------\n\
| FETCHING DOSBOX SVN SOURCE\n\
\----------------------/\e[0m\n"
sleep 3
svn checkout -r $dosbox_version svn://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk dosbox-code-0
mv dosbox-code-0 $dosbox_package-$dosbox_version-$archvar3
echo "\e[1;36m\n/------------\n\
| FETCHING DOSBOX GLIDE PATCH\n\
\----------------------/\e[0m\n"
sleep 3
wget https://raw.githubusercontent.com/voyageur/openglide/841e1071597b64ead14dd08c25a03206b2d1d1b6/platform/dosbox/dosbox_glide.diff
cd $dosbox_package-$dosbox_version-$archvar3
echo "\e[1;36m/------------\n\
| PATCHING DOSBOX SOURCES\n\
\----------------------/\e[0m\n"
sleep 3
cat ../dosbox_glide.diff | patch -p1
echo "\e[1;36m\n/------------\n\
| CONFIGURING DOSBOX SVN SOURCE\n\
\----------------------/\e[0m\n"
sleep 3
sh autogen.sh
./configure --prefix=$dir/$dosbox_package \
--disable-screenshots \
# --disable-alsa-midi \
--disable-ddraw \
--target="${archvar2}" \
"CFLAGS="${archvar1}"" \
"CPPFLAGS="${archvar1}" -I /usr/local/include/openglide/" \
"LDFLAGS="${archvar1}" -L /usr/lib32"
echo "\e[1;36m\n/------------\n\
| COMPILING DOSBOX SVN SOURCE\n\
\----------------------/\e[0m\n"
sleep 3
make
echo "\e[1;36m\n/------------\n\
| INSTALLING DOSBOX INTO LOCAL DIRECTORY\n\
\----------------------/\e[0m\n"
sleep 3
make install
echo "\e[1;36m\n/------------\n\
| FETCHING AND MOVING glide2x.ovl
\----------------------/\e[0m\n"
sleep 2
wget https://raw.githubusercontent.com/voyageur/openglide/c300160d0a8292bc04e79dd59e6cc178aa648dec/platform/dosbox/glide2x.ovl
mv glide2x.ovl $dir/$dosbox_package/bin
echo "\e[1;36m\n/------------\n\
| CLEANING UP\n\
\----------------------/\e[0m\n"
sleep 2
cd ..
rm -rf $dosbox_package-$dosbox_version-$archvar3
rm dosbox_glide.diff
echo "\e[1;36m\n>>> Remember to execute:\e[0m\n\n \
\e[0;36mexport LD_LIBRARY_PATH=/usr/local/lib\e[0m\n\n \
\e[1;36mBefore running dosbox\e[0m\n"
}
funChooseArch
funWhatToBuild