Used PKGMGR as Basis for infinito.nexus

This commit is contained in:
2025-12-16 22:53:30 +01:00
parent b5749415d1
commit f443300f70
2 changed files with 34 additions and 50 deletions

View File

@@ -1,60 +1,41 @@
FROM archlinux:latest # syntax=docker/dockerfile:1
# 1) Pakete inkl. docker (damit docker CLI im Container vorhanden ist) ARG DISTRO=arch
RUN pacman -Syu --noconfirm \
base-devel \
git \
python \
python-pip \
python-setuptools \
alsa-lib \
go \
rsync \
docker \
&& pacman -Scc --noconfirm
# 2) systemctl & yay stubben ARG PKGMGR_IMAGE_OWNER=kevinveenbirkenbach
RUN printf '#!/bin/sh\nexit 0\n' > /usr/bin/systemctl \ ARG PKGMGR_IMAGE_TAG=stable
&& chmod +x /usr/bin/systemctl \ ARG PKGMGR_IMAGE="ghcr.io/${PKGMGR_IMAGE_OWNER}/pkgmgr-${DISTRO}:${PKGMGR_IMAGE_TAG}"
&& printf '#!/bin/sh\nexit 0\n' > /usr/bin/yay \
&& chmod +x /usr/bin/yay
# 3) python-simpleaudio aus AUR FROM ${PKGMGR_IMAGE} AS infinito
RUN useradd -m aur_builder \ SHELL ["/bin/bash", "-lc"]
&& su aur_builder -c "git clone https://aur.archlinux.org/python-simpleaudio.git /home/aur_builder/psa && \
cd /home/aur_builder/psa && \
makepkg --noconfirm --skippgpcheck" \
&& pacman -U --noconfirm /home/aur_builder/psa/*.pkg.tar.zst \
&& rm -rf /home/aur_builder/psa
# 4) pkgmgr + venv RUN cat /etc/os-release || true
ENV PKGMGR_REPO=/opt/package-manager \
PKGMGR_VENV=/root/.venvs/pkgmgr
RUN git clone https://github.com/kevinveenbirkenbach/package-manager.git $PKGMGR_REPO \ # ------------------------------------------------------------
&& python -m venv $PKGMGR_VENV \ # Infinito.Nexus source in
&& $PKGMGR_VENV/bin/pip install --upgrade pip \ # ------------------------------------------------------------
&& $PKGMGR_VENV/bin/pip install --no-cache-dir -r $PKGMGR_REPO/requirements.txt ansible \
&& printf '#!/bin/sh\n. %s/bin/activate\nexec python %s/main.py "$@"\n' \
"$PKGMGR_VENV" "$PKGMGR_REPO" > /usr/local/bin/pkgmgr \
&& chmod +x /usr/local/bin/pkgmgr
ENV PATH="$PKGMGR_VENV/bin:/root/.local/bin:${PATH}"
# 6) Infinito.Nexus Quelle rein
COPY . /opt/infinito-src COPY . /opt/infinito-src
# 7) Infinito via pkgmgr (shallow) # ------------------------------------------------------------
RUN pkgmgr install infinito --clone-mode shallow # Install infinito via pkgmgr (shallow)
# ------------------------------------------------------------
RUN set -euo pipefail; \
pkgmgr install infinito --clone-mode shallow
# 8) Override mit lokaler Quelle # ------------------------------------------------------------
RUN INFINITO_PATH=$(pkgmgr path infinito) && \ # Override with local source
rm -rf "$INFINITO_PATH"/* && \ # ------------------------------------------------------------
rsync -a --delete --exclude='.git' /opt/infinito-src/ "$INFINITO_PATH"/ RUN set -euo pipefail; \
INFINITO_PATH="$(pkgmgr path infinito)"; \
rm -rf "${INFINITO_PATH:?}/"*; \
rsync -a --delete --exclude='.git' /opt/infinito-src/ "${INFINITO_PATH}/"
# 9) Symlink # ------------------------------------------------------------
RUN INFINITO_PATH=$(pkgmgr path infinito) && \ # Symlink entry
ln -sf "$INFINITO_PATH"/main.py /usr/local/bin/infinito && \ # ------------------------------------------------------------
chmod +x /usr/local/bin/infinito RUN set -euo pipefail; \
INFINITO_PATH="$(pkgmgr path infinito)"; \
ln -sf "${INFINITO_PATH}/main.py" /usr/local/bin/infinito; \
chmod +x /usr/local/bin/infinito
CMD sh -c "infinito --help && exec tail -f /dev/null" CMD ["bash", "-lc", "infinito --help && exec tail -f /dev/null"]

View File

@@ -55,6 +55,9 @@ tree:
mig: list tree mig: list tree
@echo "Creating meta data for meta infinity graph" @echo "Creating meta data for meta infinity graph"
make build:
docker build --network=host -t infinito:latest .
dockerignore: dockerignore:
@echo "Create dockerignore" @echo "Create dockerignore"
cat .gitignore > .dockerignore cat .gitignore > .dockerignore