work !
This commit is contained in:
37
Dockerfile
37
Dockerfile
@@ -1,14 +1,9 @@
|
||||
FROM alpine:latest AS fetcher
|
||||
FROM i386/alpine:latest AS fetcher
|
||||
ARG CACHE_BUST=10
|
||||
RUN apk add --no-cache git ca-certificates
|
||||
WORKDIR /src
|
||||
RUN echo "$CACHE_BUST" && git clone --depth 1 --branch retrodebian --single-branch https://gitea.chacha.ddns.net/chacha/glide.git
|
||||
|
||||
FROM alpine:latest AS fetcher-cached
|
||||
RUN apk add --no-cache git ca-certificates
|
||||
WORKDIR /src
|
||||
RUN git clone --depth 1 --branch master --single-branch https://gitea.chacha.ddns.net/chacha/UT99-Official.git
|
||||
|
||||
# building a modified Kernel + modules + libs
|
||||
FROM lpenz/debian-etch-i386-minbase AS kernel-builder
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
@@ -121,10 +116,15 @@ RUN /usr/src/buildglidepkg.sh sst1
|
||||
#WORKDIR /usr/src/
|
||||
#RUN /usr/src/buildglidepkg.sh sst96
|
||||
|
||||
#RUN rm *.gz *.bz2 && rm -Rf glide && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
FROM i386/alpine:latest AS game-builder
|
||||
RUN apk add --no-cache git ca-certificates
|
||||
ARG CACHE_BUST=10
|
||||
# Package UT99
|
||||
WORKDIR /root
|
||||
COPY --from=fetcher-cached /src/UT99-Official ./ut-game
|
||||
COPY ut-install-436.run ./
|
||||
RUN echo "$CACHE_BUST" && git clone --depth 1 --branch master --single-branch https://gitea.chacha.ddns.net/chacha/UT99-Official.git ut-game
|
||||
COPY games/ut99/ut-install-436.run ./
|
||||
RUN chmod +x ut-install-436.run && \
|
||||
./ut-install-436.run --target ./ut || true && \
|
||||
tar xzf ./ut/data.tar.gz -C ut-game && \
|
||||
@@ -136,30 +136,35 @@ RUN chmod +x ut-install-436.run && \
|
||||
rm ut-game/System/*.dll && \
|
||||
rm ut-game/System/*.url && \
|
||||
rm ut-game/System/*.bat && \
|
||||
rm ut-game/System/de.* && \
|
||||
rm ut-game/System/UnrealTournament.ini && \
|
||||
rm ut-game/System/Default.ini && \
|
||||
rm ut-game/System/libSDL-1.1.so.0 && \
|
||||
rm ut-game/Sounds/*est_uax && \
|
||||
rm ut-game/Sounds/*frt_uax && \
|
||||
rm ut-game/Sounds/*itt_uax && \
|
||||
rm ut-game/DoConfig.py && \
|
||||
rm ut-game/DoConfig.sh && \
|
||||
rm -Rf ut-game/Web && \
|
||||
rm -Rf ut-game/Help/*
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#RUN rm *.gz *.bz2 && rm -Rf glide && rm -rf /var/lib/apt/lists/*
|
||||
rm -Rf ut-game/Help/* &&\
|
||||
tar xzf ./ut/Glide.ini.tar.gz -C ut-game && \
|
||||
mv ut-game/System/UnrealTournament.ini ut-game/System/Default-glide.ini && \
|
||||
ls -al ./ut/ && \
|
||||
tar xzf ./ut/OpenGL.ini.tar.gz -C ut-game && \
|
||||
cp ut-game/System/UnrealTournament.ini ut-game/System/Default.ini && \
|
||||
mv ut-game/System/UnrealTournament.ini ut-game/System/Default-opengl.ini
|
||||
|
||||
# Note: we need to use Lenny because of live-helper
|
||||
# it allows creating Etch live image though !
|
||||
FROM lpenz/debian-lenny-i386-minbase
|
||||
WORKDIR /root
|
||||
COPY --from=kernel-builder /usr/src/*.deb .
|
||||
COPY --from=kernel-builder /root/ut-game ./ut-game
|
||||
COPY --from=game-builder /root/ut-game ./ut-game
|
||||
COPY update-initramfs.sh .
|
||||
COPY zzz-config-live.sh .
|
||||
COPY desktop .
|
||||
COPY wallpaper.jpg .
|
||||
COPY editions ./editions
|
||||
RUN apt-get update && \
|
||||
apt-get -y --force-yes install live-helper genisoimage syslinux squashfs-tools aptitude && \
|
||||
apt-get clean
|
||||
|
||||
8
Jenkinsfile
vendored
8
Jenkinsfile
vendored
@@ -46,7 +46,10 @@ pipeline {
|
||||
--bootstrap debootstrap \
|
||||
--debconf-frontend noninteractive \
|
||||
--debian-installer live \
|
||||
--bootappend-live "elevator=deadline" \
|
||||
--hostname RetroDebian \
|
||||
--iso-application RetroDebian \
|
||||
--syslinux-splash splash.png \
|
||||
--union-filesystem unionfs \
|
||||
--username bob \
|
||||
-k retrodebian1
|
||||
@@ -62,9 +65,14 @@ pipeline {
|
||||
cp /root/desktop config/chroot_local-packageslists/
|
||||
mkdir -p config/chroot_local-includes/usr/share/wallpapers
|
||||
cp /root/wallpaper.jpg config/chroot_local-includes/usr/share/wallpapers/retrodebian.jpg
|
||||
cp /root/editions/voodoo2/splash.png config/binary_syslinux/
|
||||
'''
|
||||
|
||||
sh '''
|
||||
mkdir -p config/chroot_local-includes/usr/local/games/ut99/
|
||||
cp -R /root/ut-game/* config/chroot_local-includes/usr/local/games/ut99/
|
||||
'''
|
||||
|
||||
sh 'lh_build'
|
||||
}
|
||||
dir('root')
|
||||
|
||||
2
desktop
2
desktop
@@ -35,6 +35,8 @@ vim
|
||||
ntp
|
||||
htop
|
||||
libsdl1.2debian
|
||||
libsdl1.2debian-alsa
|
||||
mesa-utils
|
||||
xmms2
|
||||
smbclient
|
||||
libopenal1
|
||||
|
||||
BIN
editions/voodoo2/splash.png
Normal file
BIN
editions/voodoo2/splash.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 203 KiB |
181
games/ut99/ut
Normal file
181
games/ut99/ut
Normal file
@@ -0,0 +1,181 @@
|
||||
#!/bin/bash
|
||||
|
||||
GAME_BINARY="ut-bin"
|
||||
SYSTEM_DIR="System"
|
||||
|
||||
# Additional commandline options for mods etc.
|
||||
CMD_ARGS=""
|
||||
|
||||
# don't use US keyboard layout
|
||||
#NOUSLAYOUT="true"
|
||||
|
||||
resolve_link() {
|
||||
local path target dir
|
||||
path="$1"
|
||||
|
||||
[ -L "$path" ] || return 1
|
||||
|
||||
target="$(LC_ALL=C ls -l "$path" 2>/dev/null)"
|
||||
target="${target##* -> }"
|
||||
|
||||
case "$target" in
|
||||
/*) printf '%s\n' "$target" ;;
|
||||
*)
|
||||
dir="$(dirname "$path")"
|
||||
printf '%s\n' "$dir/$target"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
LANG=POSIX
|
||||
export LANG
|
||||
script="$0"
|
||||
count=0
|
||||
while [ -L "$script" ]
|
||||
do
|
||||
script="$(resolve_link "$script")"
|
||||
count=$((count + 1))
|
||||
if [ "$count" -gt 100 ]
|
||||
then
|
||||
echo "Too many symbolic links"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
GAME_DIR="$(cd "$(dirname "$script")" && pwd)"
|
||||
GAME_SYSTEM_DIR="${GAME_DIR}/${SYSTEM_DIR}"
|
||||
USER_UT_DIR="${HOME}/.loki/ut/${SYSTEM_DIR}"
|
||||
SYSTEM_DEFAULT_GLIDE="${GAME_SYSTEM_DIR}/Default-glide.ini"
|
||||
SYSTEM_DEFAULT_OPENGL="${GAME_SYSTEM_DIR}/Default-opengl.ini"
|
||||
SYSTEM_DEFAULT_USER="${GAME_SYSTEM_DIR}/DefUser.ini"
|
||||
USER_UT_INI="${USER_UT_DIR}/UnrealTournament.ini"
|
||||
USER_USER_INI="${USER_UT_DIR}/User.ini"
|
||||
|
||||
if [ ! -d "${USER_UT_DIR}" ]
|
||||
then
|
||||
mkdir -p "${USER_UT_DIR}"
|
||||
fi
|
||||
|
||||
detect_renderer() {
|
||||
if [ -e /usr/lib/libglide2x.so ] || [ -e /usr/local/lib/libglide2x.so ]; then
|
||||
echo "glide"
|
||||
else
|
||||
echo "opengl"
|
||||
fi
|
||||
}
|
||||
|
||||
install_ini_profile() {
|
||||
local renderer="$1"
|
||||
|
||||
case "$renderer" in
|
||||
glide)
|
||||
if [ -r "${SYSTEM_DEFAULT_GLIDE}" ]; then
|
||||
cp -f "${SYSTEM_DEFAULT_GLIDE}" "${USER_UT_INI}"
|
||||
return 0
|
||||
fi
|
||||
;;
|
||||
opengl)
|
||||
if [ -r "${SYSTEM_DEFAULT_OPENGL}" ]; then
|
||||
cp -f "${SYSTEM_DEFAULT_OPENGL}" "${USER_UT_INI}"
|
||||
return 0
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
if [ ! -f "${USER_UT_INI}" ]; then
|
||||
RENDERER="$(detect_renderer)"
|
||||
install_ini_profile "${RENDERER}" || {
|
||||
echo "Failed to install renderer profile: ${RENDERER}"
|
||||
exit 1
|
||||
}
|
||||
sed -i \
|
||||
-e 's/^AudioDevice=ALAudio.ALAudioSubsystem$/AudioDevice=Audio.GenericAudioSubsystem/' \
|
||||
-e 's/^CacheSizeMegs=4$/CacheSizeMegs=32/' \
|
||||
-e 's/^FullscreenViewportX=640$/FullscreenViewportX=800/' \
|
||||
-e 's/^FullscreenViewportY=480$/FullscreenViewportY=600/' \
|
||||
-e 's/^UseSpatial=False$/UseSpatial=True/' \
|
||||
-e 's/^UseReverb=False$/UseReverb=True/' \
|
||||
-e 's/^OutputRate=22050Hz$/OutputRate=44100Hz/' \
|
||||
-e 's/^ConfiguredInternetSpeed=20000$/ConfiguredInternetSpeed=25000/' \
|
||||
"${USER_UT_INI}"
|
||||
fi
|
||||
|
||||
# Remove passwords from UnrealTournament.ini
|
||||
if [ -r "${USER_UT_INI}" ]
|
||||
then
|
||||
sed -i \
|
||||
-e 's/^\(SavedPasswords\[[0-9]*\]=\).*/\1/' \
|
||||
-e 's/^\(PasswordHistory\[[0-9]*\]=\).*/\1/' \
|
||||
"${USER_UT_INI}"
|
||||
fi
|
||||
|
||||
|
||||
set_random_ut_name() {
|
||||
local target_file="$1"
|
||||
|
||||
[ -n "$target_file" ] || return 1
|
||||
[ -f "$target_file" ] || return 1
|
||||
|
||||
local names='
|
||||
Phobos
|
||||
Vortex
|
||||
Raptor
|
||||
Hexer
|
||||
Cobra
|
||||
Grendel
|
||||
Nyx
|
||||
Blitz
|
||||
Talon
|
||||
Havoc
|
||||
Stryker
|
||||
Wraith
|
||||
Nova
|
||||
Reaper
|
||||
Goliath
|
||||
Drift
|
||||
Razor
|
||||
Pixel
|
||||
Onyx
|
||||
Fury
|
||||
'
|
||||
|
||||
local count=$(printf '%s\n' "$names" | sed '/^$/d' | wc -l)
|
||||
local idx=$(( (RANDOM % count) + 1 ))
|
||||
local base_name=$(printf '%s\n' "$names" | sed '/^$/d' | sed -n "${idx}p")
|
||||
local suffix=$(printf '%02d' $((RANDOM % 100)))
|
||||
local new_name="${base_name}${suffix}"
|
||||
|
||||
sed -i "s/^Name=Player$/Name=${new_name}/" "$target_file"
|
||||
}
|
||||
|
||||
if [ ! -f "${USER_USER_INI}" ]; then
|
||||
if [ ! -r "${SYSTEM_DEFAULT_USER}" ]; then
|
||||
echo "Missing ${SYSTEM_DEFAULT_USER}"
|
||||
exit 1
|
||||
fi
|
||||
cp -f "${SYSTEM_DEFAULT_USER}" "${USER_USER_INI}"
|
||||
set_random_ut_name "${USER_USER_INI}"
|
||||
fi
|
||||
|
||||
trap "setxkbmap" EXIT
|
||||
|
||||
# games run better with US keyboard layout
|
||||
test "$NOUSLAYOUT" || setxkbmap -symbols 'us(pc101)'
|
||||
|
||||
LD_LIBRARY_PATH="${GAME_SYSTEM_DIR}:${LD_LIBRARY_PATH}"
|
||||
export LD_LIBRARY_PATH
|
||||
|
||||
# start the game
|
||||
if nice -n -5 true >/dev/null 2>&1; then
|
||||
echo "Launching UT99 with elevated priority"
|
||||
cd "${GAME_SYSTEM_DIR}" && exec nice -n -5 -- "./$GAME_BINARY" $CMD_ARGS "$@"
|
||||
else
|
||||
echo "Negative nice not permitted, launching normally"
|
||||
cd "${GAME_SYSTEM_DIR}" && exec "./$GAME_BINARY" $CMD_ARGS "$@"
|
||||
fi
|
||||
EXITCODE="$?"
|
||||
|
||||
exit $EXITCODE
|
||||
@@ -13,6 +13,5 @@ grep -q '^squashfs$' /etc/initramfs-tools/modules 2>/dev/null || \
|
||||
for KERNEL in /boot/vmlinuz-*
|
||||
do
|
||||
VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')"
|
||||
|
||||
update-initramfs -k ${VERSION} -t -u
|
||||
done
|
||||
@@ -1,9 +1,6 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
USER_NAME="bob"
|
||||
|
||||
|
||||
mkdir -p /etc/skel
|
||||
|
||||
cat > /etc/skel/.xinitrc <<'EOF'
|
||||
@@ -120,4 +117,19 @@ LANG=en_US.UTF-8
|
||||
LANGUAGE=en_US:en
|
||||
EOF
|
||||
|
||||
# Allow all (new) users to do nice -5
|
||||
sed -i \
|
||||
-e 's/^#\s*EXTRA_GROUPS=/EXTRA_GROUPS=/' \
|
||||
-e 's/^#\s*ADD_EXTRA_GROUPS=/ADD_EXTRA_GROUPS=/' \
|
||||
/etc/adduser.conf
|
||||
|
||||
grep -q '^@users[[:space:]]\+-[[:space:]]\+nice[[:space:]]\+-5$' /etc/security/limits.conf || \
|
||||
echo '@users - nice -5' >> /etc/security/limits.conf
|
||||
|
||||
grep -q '^session[[:space:]]\+required[[:space:]]\+pam_limits\.so$' /etc/pam.d/common-session || \
|
||||
echo 'session required pam_limits.so' >> /etc/pam.d/common-session
|
||||
|
||||
# compat link (ut99)
|
||||
ln -s /usr/lib/libSDL-1.2.so.0 /usr/lib/libSDL-1.1.so.0
|
||||
|
||||
update-rc.d ntp defaults || true
|
||||
|
||||
Reference in New Issue
Block a user