diff --git a/Dockerfile b/Dockerfile index 272ba69..8411444 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM i386/alpine:latest AS glide-fetcher -ARG CACHE_BUST=10 +ARG CACHE_BUST=29 RUN apk add --no-cache git ca-certificates COPY .docker-cache/glide.ref /tmp/glide.ref WORKDIR /src @@ -38,9 +38,9 @@ RUN (echo "deb http://archive.debian.org/debian etch main non-free" > /etc/apt/s # Preparing Kernel + patchs + modules WORKDIR /usr/src -COPY --from=glide-fetcher /src/glide glide COPY unionfs-2.2.3_for_2.6.24.diff.gz ./ COPY nvidia.patch ./ +COPY --from=glide-fetcher /src/glide glide RUN tar xjf linux-source-2.6.24.tar.bz2 && \ tar xjf etchnhalf/squashfs.tar.bz2 && \ ln -s linux-headers-2.6.24-etchnhalf.1-686/ linux-headers && \ @@ -71,6 +71,7 @@ RUN apt-get build-dep -y rxvt-unicode && \ sed -i '1s/^\([^)]* (\)\([^)]*\)\(.*\)$/\1\2+retrodebian1\3/' debian/changelog && \ dpkg-buildpackage -us -uc -b +FROM packages-builder AS voodoo-builder # Building userspace libs # 3Dfx WORKDIR /usr/src @@ -79,56 +80,62 @@ RUN apt-get install -y nasm && \ chmod +x buildglidepkg.sh # cvg / voodoo2 WORKDIR /usr/src/glide +RUN find . -type f \( -name 'fxgasm.h' -o -name 'fxinline.h' -o -name 'fxgasm' \) -exec rm -f {} \; # glide2x RUN mv swlibs glide2x/ WORKDIR /usr/src/glide/glide2x/ -RUN make -f Makefile.linux clean -RUN make -f Makefile.linux FX_GLIDE_HW=cvg USE_X86=1 USE_MMX=1 +RUN make -f makefile.linux FX_GLIDE_HW=cvg clean +RUN make -f makefile.linux FX_GLIDE_HW=cvg USE_X86=1 USE_MMX=1 RUN mv swlibs ../glide3x/ -# glide3x +## glide3x WORKDIR /usr/src/glide/glide3x/ -RUN make -f Makefile.linux clean -RUN make -f Makefile.linux FX_GLIDE_HW=cvg USE_X86=1 USE_MMX=1 +RUN make -f makefile.linux FX_GLIDE_HW=cvg clean +RUN make -f makefile.linux FX_GLIDE_HW=cvg USE_X86=1 USE_MMX=1 RUN mv swlibs ../ WORKDIR /usr/src/ RUN /usr/src/buildglidepkg.sh cvg -# h3 / voodoo3 & Banshee -RUN apt-get install -y libx11-dev x11proto-xf86dga-dev libxxf86vm-dev libxxf86dga-dev -WORKDIR /usr/src/glide -# glide2x -RUN mv swlibs glide2x/ -WORKDIR /usr/src/glide/glide2x/ -RUN make -f Makefile.linux clean -RUN make -f Makefile.linux FX_GLIDE_HW=h3 USE_X86=1 USE_MMX=1 -# glide3x -RUN mv swlibs ../glide3x/ -WORKDIR /usr/src/glide/glide3x/ -RUN make -f Makefile.linux clean -RUN make -f Makefile.linux FX_GLIDE_HW=h3 USE_X86=1 USE_MMX=1 -RUN mv swlibs ../ -WORKDIR /usr/src/ -RUN /usr/src/buildglidepkg.sh h3 +## h3 / voodoo3 & Banshee +#WORKDIR /usr/src/glide +#RUN echo test3 && find . -type f -name 'fxgasm.h' +#RUN find . -type f \( -name 'fxgasm.h' -o -name 'fxinline.h' -o -name 'fxgasm' \) -exec rm -f {} \; +#RUN apt-get install -y libx11-dev x11proto-xf86dga-dev libxxf86vm-dev libxxf86dga-dev +### glide2x +#RUN mv swlibs glide2x/ +#WORKDIR /usr/src/glide/glide2x/ +#RUN make -f makefile.linux clean +#RUN make -f makefile.linux FX_GLIDE_HW=h3 USE_X86=1 USE_MMX=1 +## glide3x +#RUN mv swlibs ../glide3x/ +#WORKDIR /usr/src/glide/glide3x/ +#RUN make -f makefile.linux clean +#RUN make -f makefile.linux FX_GLIDE_HW=h3 USE_X86=1 USE_MMX=1 +#RUN mv swlibs ../ +#WORKDIR /usr/src/ +#RUN /usr/src/buildglidepkg.sh h3 -# sst1 / voodoo1 -WORKDIR /usr/src/glide -# glide2x -RUN mv swlibs glide2x/ -WORKDIR /usr/src/glide/glide2x/ -RUN make -f Makefile.linux clean -RUN make -f Makefile.linux FX_GLIDE_HW=sst1 USE_X86=1 USE_MMX=1 -# glide3x -RUN mv swlibs ../glide3x/ -WORKDIR /usr/src/glide/glide3x/ -RUN make -f Makefile.linux clean -RUN make -f Makefile.linux FX_GLIDE_HW=sst1 USE_X86=1 USE_MMX=1 -RUN mv swlibs ../ -WORKDIR /usr/src/ -RUN /usr/src/buildglidepkg.sh sst1 +## sst1 / voodoo1 +#WORKDIR /usr/src/glide +#RUN find . -type f \( -name 'fxgasm.h' -o -name 'fxinline.h' -o -name 'fxgasm' \) -exec rm -f {} \; +## glide2x +#RUN mv swlibs glide2x/ +#WORKDIR /usr/src/glide/glide2x/ +#RUN make -f makefile.linux clean +#RUN make -f makefile.linux FX_GLIDE_HW=sst1 USE_X86=1 USE_MMX=1 +## glide3x +#RUN mv swlibs ../glide3x/ +#WORKDIR /usr/src/glide/glide3x/ +#RUN make -f makefile.linux clean +#RUN make -f makefile.linux FX_GLIDE_HW=sst1 USE_X86=1 USE_MMX=1 +#RUN mv swlibs ../ +#WORKDIR /usr/src/ +#RUN /usr/src/buildglidepkg.sh sst1 # sst96 / voodoo Rush # cannot build driver because of missing xf86rush lib... +#WORKDIR /usr/src/ #WORKDIR /usr/src/glide +#RUN find . -type f \( -name 'fxgasm.h' -o -name 'fxinline.h' -o -name 'fxgasm' \) -exec rm -f {} \; # # glide2x # RUN mv swlibs glide2x/ # WORKDIR /usr/src/glide/glide2x/ @@ -193,6 +200,7 @@ RUN chmod a+x,o-w ./ut-game/ut FROM lpenz/debian-lenny-i386-minbase WORKDIR /root COPY --from=packages-builder /usr/src/*.deb . +COPY --from=voodoo-builder /usr/src/*.deb . COPY --from=ut99-builder /root/ut-game ./ut-game COPY --from=icons-fetcher /root/icons-collection ./icons-collection COPY /deps ./deps @@ -209,8 +217,8 @@ RUN apt-get update && \ # rm -rf /var/lib/apt/lists/* WORKDIR /root/live -FROM packages-builder -WORKDIR /usr/src +#FROM voodoo-builder +#WORKDIR /usr/src #RUN apt-get build-dep -y debian-edu-artwork-usplash && \ # apt-get source debian-edu-artwork-usplash &&\ # ls -al && \ diff --git a/buildglidepkg.sh b/buildglidepkg.sh index 0158386..1a2168f 100755 --- a/buildglidepkg.sh +++ b/buildglidepkg.sh @@ -1,18 +1,14 @@ #!/bin/bash -set -e +set -euo pipefail FLAVOUR="${1:-cvg}" -VERSION_GLIDE2="${2:-2.60-1}" -VERSION_GLIDE3="${3:-3.10.0-1}" ARCH="${ARCH:-i386}" OUTDIR="${OUTDIR:-$(pwd)}" -if [[ "$FLAVOUR" == "sst1" ]] -then +if [[ "$FLAVOUR" == "sst1" ]]; then GLIDE2_SRC="/usr/src/glide/glide2x/sst1/lib/sst1" GLIDE3_SRC="/usr/src/glide/glide3x/sst1/lib/sst1" -elif [[ "$FLAVOUR" == "sst96" ]] -then +elif [[ "$FLAVOUR" == "sst96" ]]; then GLIDE2_SRC="/usr/src/glide/glide2x/sst1/lib/sst96" GLIDE3_SRC="/usr/src/glide/glide3x/sst1/lib/sst96" else @@ -25,21 +21,66 @@ PKG3="libglide3-${FLAVOUR}" BUILDROOT="$(pwd)/pkg-glide" rm -rf "${BUILDROOT}" -mkdir -p "${BUILDROOT}" +mkdir -p "${BUILDROOT}" "${OUTDIR}" + +find_unique_regular_file() { + local dir="$1" + local pattern="$2" + local matches=() + + while IFS= read -r -d '' f; do + matches+=("$f") + done < <(find "$dir" -maxdepth 1 -type f -name "$pattern" -print0) + + if [[ ${#matches[@]} -eq 0 ]]; then + echo "ERROR: no regular file matching '${pattern}' found in '${dir}'" >&2 + exit 1 + fi + + if [[ ${#matches[@]} -ne 1 ]]; then + echo "ERROR: multiple regular files matching '${pattern}' found in '${dir}':" >&2 + printf ' %s\n' "${matches[@]}" >&2 + exit 1 + fi + + basename "${matches[0]}" +} + +extract_glide2_pkg_version() { + local real_so="$1" + local ver="${real_so#libglide.so.}" + echo "${ver}-1" +} + +extract_glide3_pkg_version() { + local real_so="$1" + local ver="${real_so#libglide3.so.}" + echo "${ver}-1" +} build_pkg_glide2() { - PKGDIR="${BUILDROOT}/${PKG2}" + local PKGDIR="${BUILDROOT}/${PKG2}" + local REAL_SO + local STATIC_A="libglide.a" + local PKG_VERSION + mkdir -p "${PKGDIR}/DEBIAN" "${PKGDIR}/usr/lib" - cp -a "${GLIDE2_SRC}/libglide.so.2.60" "${PKGDIR}/usr/lib/" - cp -a "${GLIDE2_SRC}/libglide.a" "${PKGDIR}/usr/lib/" - ln -s libglide.so.2.60 "${PKGDIR}/usr/lib/libglide.so.2" - ln -s libglide.so.2.60 "${PKGDIR}/usr/lib/libglide.so" - ln -s libglide.so.2.60 "${PKGDIR}/usr/lib/libglide2x.so" + REAL_SO="$(find_unique_regular_file "${GLIDE2_SRC}" 'libglide.so.2.*')" + PKG_VERSION="$(extract_glide2_pkg_version "${REAL_SO}")" + + ls -al "${GLIDE2_SRC}/" + + cp -a "${GLIDE2_SRC}/${REAL_SO}" "${PKGDIR}/usr/lib/" + cp -a "${GLIDE2_SRC}/${STATIC_A}" "${PKGDIR}/usr/lib/" + + ln -s "${REAL_SO}" "${PKGDIR}/usr/lib/libglide.so.2" + ln -s "${REAL_SO}" "${PKGDIR}/usr/lib/libglide.so" + ln -s "${REAL_SO}" "${PKGDIR}/usr/lib/libglide2x.so" cat > "${PKGDIR}/DEBIAN/control" < "${PKGDIR}/DEBIAN/control" <