From f557e20cae94050c599982fef35d94e3fe12db18 Mon Sep 17 00:00:00 2001 From: zontreck Date: Wed, 4 Sep 2024 18:29:24 -0700 Subject: [PATCH] Add another version of wine --- Jenkinsfile | 2 + build.sh | 1 + wine/8.21/Dockerfile | 97 +++++++++++++++++++++++++++++++++++++++++ wine/8.21/entrypoint.sh | 90 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 190 insertions(+) create mode 100644 wine/8.21/Dockerfile create mode 100644 wine/8.21/entrypoint.sh diff --git a/Jenkinsfile b/Jenkinsfile index f2cf875..ef5090c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -135,6 +135,7 @@ pipeline { #!/bin/bash docker build -t git.zontreck.com/ariascreations/yolks:wine_8.0 wine/8.0 + docker build -t git.zontreck.com/ariascreations/yolks:wine_8.21 wine/8.21 docker build -t git.zontreck.com/ariascreations/yolks:wine_9.0 wine/9.0 docker build -t git.zontreck.com/ariascreations/yolks:wine_9.16 wine/9.16 ''' @@ -153,6 +154,7 @@ pipeline { #!/bin/bash docker push git.zontreck.com/ariascreations/yolks:wine_8.0 + docker push git.zontreck.com/ariascreations/yolks:wine_8.21 docker push git.zontreck.com/ariascreations/yolks:wine_9.0 docker push git.zontreck.com/ariascreations/yolks:wine_9.16 ''' diff --git a/build.sh b/build.sh index 37ba94b..ca52be5 100755 --- a/build.sh +++ b/build.sh @@ -21,5 +21,6 @@ docker build -t git.zontreck.com/ariascreations/yolks:jdk21 java/21 # Build wine docker build -t git.zontreck.com/ariascreations/yolks:wine_8.0 wine/8.0 +docker build -t git.zontreck.com/ariascreations/yolks:wine_8.21 wine/8.21 docker build -t git.zontreck.com/ariascreations/yolks:wine_9.0 wine/9.0 docker build -t git.zontreck.com/ariascreations/yolks:wine_9.16 wine/9.16 \ No newline at end of file diff --git a/wine/8.21/Dockerfile b/wine/8.21/Dockerfile new file mode 100644 index 0000000..fc43572 --- /dev/null +++ b/wine/8.21/Dockerfile @@ -0,0 +1,97 @@ +FROM debian:latest AS BUILDER64 + +RUN dpkg --add-architecture i386 +RUN apt-get update +RUN apt-get upgrade -y +ENV INSTALL_PREFIX /opt/wine + +RUN apt-get install -y --no-install-recommends\ + devscripts build-essential wget curl git build-essential \ + autotools-dev\ + autoconf\ + bison\ + bsdmainutils\ + flex\ + fontforge\ + gawk\ + gcc\ + gcc-mingw-w64-i686\ + gcc-mingw-w64-x86-64\ + gettext\ + libacl1-dev\ + libasound2-dev\ + libfontconfig-dev\ + libfreetype6-dev\ + libgl1-mesa-dev\ + libglu1-mesa-dev\ + libgnutls28-dev\ + libgtk-3-dev\ + libice-dev\ + libkrb5-dev\ + libncurses-dev\ + libopenal-dev\ + libosmesa6-dev\ + libpcap-dev\ + libpulse-dev\ + libsane-dev\ + libsdl2-dev\ + libssl-dev\ + libstdc++-11-dev\ + libudev-dev\ + libvulkan-dev\ + libx11-dev\ + libxcomposite-dev\ + libxcursor-dev\ + libxext-dev\ + libxi-dev\ + libxinerama-dev\ + libxrandr-dev\ + libxrender-dev\ + libxt-dev\ + libxxf86vm-dev\ + linux-libc-dev\ + ocl-icd-opencl-dev\ + patch\ + perl\ + sharutils\ + unixodbc-dev\ + x11proto-xinerama-dev\ + && apt clean -y + +WORKDIR /tmp +RUN git clone https://git.zontreck.com/zontreck/wine +RUN cd wine && git checkout wine-8.21 && cd .. +WORKDIR /tmp/wine + +RUN ./configure --without-tests --prefix=${INSTALL_PREFIX} --libdir=${INSTALL_PREFIX}/lib --enable-archs=x86_64,i386 +RUN make -j$(nproc) +RUN make install + + + + +FROM git.zontreck.com/ariascreations/yolks:debian + +RUN dpkg --add-architecture i386 + +RUN apt-get update +RUN apt-get install -y gnupg2 numactl tzdata software-properties-common libntlm0 winbind xvfb xauth python3 libncurses5:i386 libncurses6:i386 libsdl2-2.0-0 libsdl2-2.0-0:i386 + +COPY --from=BUILDER64 /opt/wine /opt/wine +RUN export PATH=$PATH:/opt/wine/bin:/opt/wine/sbin + +RUN wget -q -O /usr/sbin/winetricks https://raw.githubusercontent.com/winetricks/winetricks/master/src/winetricks +RUN chmod +x /usr/sbin/winetricks + +ENV HOME=/home/container +ENV WINEPREFIX=/home/container/.wine +ENV WINEDLLOVERRIDES="mscoree,mshtml=" +ENV DISPLAY=:0 +ENV DISPLAY_WIDTH=1024 +ENV DISPLAY_HEIGHT=768 +ENV DISPLAY_DEPTH=16 +ENV AUTO_UPDATE=1 +ENV XVFB=1 + +COPY ./entrypoint.sh /entrypoint.sh +CMD ["/bin/bash", "/entrypoint.sh"] \ No newline at end of file diff --git a/wine/8.21/entrypoint.sh b/wine/8.21/entrypoint.sh new file mode 100644 index 0000000..2435c16 --- /dev/null +++ b/wine/8.21/entrypoint.sh @@ -0,0 +1,90 @@ +#!/bin/bash +cd /home/container + +# Information output +echo "Running on Debian $(cat /etc/debian_version)" +echo "Current timezone: $(cat /etc/timezone)" +wine --version + +# Make internal Docker IP address available to processes. +INTERNAL_IP=$(ip route get 1 | awk '{print $(NF-2);exit}') +export INTERNAL_IP + +## just in case someone removed the defaults. +if [ "${STEAM_USER}" == "" ]; then + echo -e "steam user is not set.\n" + echo -e "Using anonymous user.\n" + STEAM_USER=anonymous + STEAM_PASS="" + STEAM_AUTH="" +else + echo -e "user set to ${STEAM_USER}" +fi + +## if auto_update is not set or to 1 update +if [ -z ${AUTO_UPDATE} ] || [ "${AUTO_UPDATE}" == "1" ]; then + # Update Source Server + if [ ! -z ${SRCDS_APPID} ]; then + if [ "${STEAM_USER}" == "anonymous" ]; then + ./steamcmd/steamcmd.sh +force_install_dir /home/container +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +app_update 1007 $( [[ -z ${SRCDS_BETAID} ]] || printf %s "-beta ${SRCDS_BETAID}" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s "-betapassword ${SRCDS_BETAPASS}" ) $( [[ -z ${HLDS_GAME} ]] || printf %s "+app_set_config 90 mod ${HLDS_GAME}" ) $( [[ -z ${VALIDATE} ]] || printf %s "validate" ) +quit + else + numactl --physcpubind=+0 ./steamcmd/steamcmd.sh +force_install_dir /home/container +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +app_update 1007 $( [[ -z ${SRCDS_BETAID} ]] || printf %s "-beta ${SRCDS_BETAID}" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s "-betapassword ${SRCDS_BETAPASS}" ) $( [[ -z ${HLDS_GAME} ]] || printf %s "+app_set_config 90 mod ${HLDS_GAME}" ) $( [[ -z ${VALIDATE} ]] || printf %s "validate" ) +quit + fi + else + echo -e "No appid set. Starting Server" + fi + +else + echo -e "Not updating game server as auto update was set to 0. Starting Server" +fi + +if [[ $XVFB == 1 ]]; then + Xvfb :0 -screen 0 ${DISPLAY_WIDTH}x${DISPLAY_HEIGHT}x${DISPLAY_DEPTH} & +fi + +# Install necessary to run packages +echo "First launch will throw some errors. Ignore them" + +mkdir -p $WINEPREFIX + +# Check if wine-gecko required and install it if so +if [[ $WINETRICKS_RUN =~ gecko ]]; then + echo "Installing Gecko" + WINETRICKS_RUN=${WINETRICKS_RUN/gecko} + + if [ ! -f "$WINEPREFIX/gecko_x86.msi" ]; then + wget -q -O $WINEPREFIX/gecko_x86.msi http://dl.winehq.org/wine/wine-gecko/2.47.4/wine_gecko-2.47.4-x86.msi + fi + + if [ ! -f "$WINEPREFIX/gecko_x86_64.msi" ]; then + wget -q -O $WINEPREFIX/gecko_x86_64.msi http://dl.winehq.org/wine/wine-gecko/2.47.4/wine_gecko-2.47.4-x86_64.msi + fi + + wine msiexec /i $WINEPREFIX/gecko_x86.msi /qn /quiet /norestart /log $WINEPREFIX/gecko_x86_install.log + wine msiexec /i $WINEPREFIX/gecko_x86_64.msi /qn /quiet /norestart /log $WINEPREFIX/gecko_x86_64_install.log +fi + +# Check if wine-mono required and install it if so +if [[ $WINETRICKS_RUN =~ mono ]]; then + echo "Installing mono" + WINETRICKS_RUN=${WINETRICKS_RUN/mono} + + if [ ! -f "$WINEPREFIX/mono.msi" ]; then + wget -q -O $WINEPREFIX/mono.msi https://dl.winehq.org/wine/wine-mono/9.1.0/wine-mono-9.1.0-x86.msi + fi + + wine msiexec /i $WINEPREFIX/mono.msi /qn /quiet /norestart /log $WINEPREFIX/mono_install.log +fi + +# List and install other packages +for trick in $WINETRICKS_RUN; do + echo "Installing $trick" + winetricks -q $trick +done + +# Replace Startup Variables +MODIFIED_STARTUP=$(echo ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g') +echo ":/home/container$ ${MODIFIED_STARTUP}" + +# Run the Server +eval ${MODIFIED_STARTUP} \ No newline at end of file