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
|
ARG CACHE_BUST=10
|
||||||
RUN apk add --no-cache git ca-certificates
|
RUN apk add --no-cache git ca-certificates
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
RUN echo "$CACHE_BUST" && git clone --depth 1 --branch retrodebian --single-branch https://gitea.chacha.ddns.net/chacha/glide.git
|
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
|
# building a modified Kernel + modules + libs
|
||||||
FROM lpenz/debian-etch-i386-minbase AS kernel-builder
|
FROM lpenz/debian-etch-i386-minbase AS kernel-builder
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
@@ -121,10 +116,15 @@ RUN /usr/src/buildglidepkg.sh sst1
|
|||||||
#WORKDIR /usr/src/
|
#WORKDIR /usr/src/
|
||||||
#RUN /usr/src/buildglidepkg.sh sst96
|
#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
|
# Package UT99
|
||||||
WORKDIR /root
|
WORKDIR /root
|
||||||
COPY --from=fetcher-cached /src/UT99-Official ./ut-game
|
RUN echo "$CACHE_BUST" && git clone --depth 1 --branch master --single-branch https://gitea.chacha.ddns.net/chacha/UT99-Official.git ut-game
|
||||||
COPY ut-install-436.run ./
|
COPY games/ut99/ut-install-436.run ./
|
||||||
RUN chmod +x ut-install-436.run && \
|
RUN chmod +x ut-install-436.run && \
|
||||||
./ut-install-436.run --target ./ut || true && \
|
./ut-install-436.run --target ./ut || true && \
|
||||||
tar xzf ./ut/data.tar.gz -C ut-game && \
|
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/*.dll && \
|
||||||
rm ut-game/System/*.url && \
|
rm ut-game/System/*.url && \
|
||||||
rm ut-game/System/*.bat && \
|
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/*est_uax && \
|
||||||
rm ut-game/Sounds/*frt_uax && \
|
rm ut-game/Sounds/*frt_uax && \
|
||||||
rm ut-game/Sounds/*itt_uax && \
|
rm ut-game/Sounds/*itt_uax && \
|
||||||
rm ut-game/DoConfig.py && \
|
rm ut-game/DoConfig.py && \
|
||||||
rm ut-game/DoConfig.sh && \
|
rm ut-game/DoConfig.sh && \
|
||||||
rm -Rf ut-game/Web && \
|
rm -Rf ut-game/Web && \
|
||||||
rm -Rf ut-game/Help/*
|
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 && \
|
||||||
#RUN rm *.gz *.bz2 && rm -Rf glide && rm -rf /var/lib/apt/lists/*
|
mv ut-game/System/UnrealTournament.ini ut-game/System/Default-opengl.ini
|
||||||
|
|
||||||
# Note: we need to use Lenny because of live-helper
|
# Note: we need to use Lenny because of live-helper
|
||||||
# it allows creating Etch live image though !
|
# it allows creating Etch live image though !
|
||||||
FROM lpenz/debian-lenny-i386-minbase
|
FROM lpenz/debian-lenny-i386-minbase
|
||||||
WORKDIR /root
|
WORKDIR /root
|
||||||
COPY --from=kernel-builder /usr/src/*.deb .
|
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 update-initramfs.sh .
|
||||||
COPY zzz-config-live.sh .
|
COPY zzz-config-live.sh .
|
||||||
COPY desktop .
|
COPY desktop .
|
||||||
COPY wallpaper.jpg .
|
COPY wallpaper.jpg .
|
||||||
|
COPY editions ./editions
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get -y --force-yes install live-helper genisoimage syslinux squashfs-tools aptitude && \
|
apt-get -y --force-yes install live-helper genisoimage syslinux squashfs-tools aptitude && \
|
||||||
apt-get clean
|
apt-get clean
|
||||||
|
|||||||
8
Jenkinsfile
vendored
8
Jenkinsfile
vendored
@@ -46,7 +46,10 @@ pipeline {
|
|||||||
--bootstrap debootstrap \
|
--bootstrap debootstrap \
|
||||||
--debconf-frontend noninteractive \
|
--debconf-frontend noninteractive \
|
||||||
--debian-installer live \
|
--debian-installer live \
|
||||||
|
--bootappend-live "elevator=deadline" \
|
||||||
--hostname RetroDebian \
|
--hostname RetroDebian \
|
||||||
|
--iso-application RetroDebian \
|
||||||
|
--syslinux-splash splash.png \
|
||||||
--union-filesystem unionfs \
|
--union-filesystem unionfs \
|
||||||
--username bob \
|
--username bob \
|
||||||
-k retrodebian1
|
-k retrodebian1
|
||||||
@@ -62,9 +65,14 @@ pipeline {
|
|||||||
cp /root/desktop config/chroot_local-packageslists/
|
cp /root/desktop config/chroot_local-packageslists/
|
||||||
mkdir -p config/chroot_local-includes/usr/share/wallpapers
|
mkdir -p config/chroot_local-includes/usr/share/wallpapers
|
||||||
cp /root/wallpaper.jpg config/chroot_local-includes/usr/share/wallpapers/retrodebian.jpg
|
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/
|
mkdir -p config/chroot_local-includes/usr/local/games/ut99/
|
||||||
cp -R /root/ut-game/* config/chroot_local-includes/usr/local/games/ut99/
|
cp -R /root/ut-game/* config/chroot_local-includes/usr/local/games/ut99/
|
||||||
'''
|
'''
|
||||||
|
|
||||||
sh 'lh_build'
|
sh 'lh_build'
|
||||||
}
|
}
|
||||||
dir('root')
|
dir('root')
|
||||||
|
|||||||
2
desktop
2
desktop
@@ -35,6 +35,8 @@ vim
|
|||||||
ntp
|
ntp
|
||||||
htop
|
htop
|
||||||
libsdl1.2debian
|
libsdl1.2debian
|
||||||
|
libsdl1.2debian-alsa
|
||||||
mesa-utils
|
mesa-utils
|
||||||
xmms2
|
xmms2
|
||||||
smbclient
|
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-*
|
for KERNEL in /boot/vmlinuz-*
|
||||||
do
|
do
|
||||||
VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')"
|
VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')"
|
||||||
|
|
||||||
update-initramfs -k ${VERSION} -t -u
|
update-initramfs -k ${VERSION} -t -u
|
||||||
done
|
done
|
||||||
@@ -1,9 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
USER_NAME="bob"
|
|
||||||
|
|
||||||
|
|
||||||
mkdir -p /etc/skel
|
mkdir -p /etc/skel
|
||||||
|
|
||||||
cat > /etc/skel/.xinitrc <<'EOF'
|
cat > /etc/skel/.xinitrc <<'EOF'
|
||||||
@@ -120,4 +117,19 @@ LANG=en_US.UTF-8
|
|||||||
LANGUAGE=en_US:en
|
LANGUAGE=en_US:en
|
||||||
EOF
|
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
|
update-rc.d ntp defaults || true
|
||||||
|
|||||||
Reference in New Issue
Block a user