From cff1367d0de90696d46a80db726ef5cbd7a1e1cc Mon Sep 17 00:00:00 2001 From: Arthur Bols Date: Tue, 5 Nov 2024 15:43:59 +0100 Subject: [PATCH] Add support for Fedora 41 and dnf5 --- Dockerfile.default | 26 +++++++++++++------------- build.sh | 2 +- run.sh | 20 +++++++++++--------- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/Dockerfile.default b/Dockerfile.default index 87b9402..da37201 100644 --- a/Dockerfile.default +++ b/Dockerfile.default @@ -1,31 +1,31 @@ FROM fedora:RELEASE -COPY repos/*.repo /etc/yum/repos.d/ +COPY repos/*.repo /etc/yum.repos.d/ RUN dnf --setopt=tsflags=nodocs -y install createrepo \ https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \ https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm \ - 'dnf-command(copr)' \ - 'dnf-command(config-manager)' \ - 'dnf-command(download)' \ + dnf5 \ + dnf5-plugins \ findutils \ rsync \ - && dnf config-manager --set-disabled fedora fedora-modular updates-modular updates \ - ; dnf copr -y enable principis/howdy \ - ; dnf copr -y enable principis/NoiseTorch \ - ; dnf copr -y enable principis/tldr-sharp \ + && dnf5 config-manager --set-disabled fedora fedora-modular updates-modular updates \ + ; dnf5 copr -y enable principis/howdy \ + ; dnf5 copr -y enable principis/NoiseTorch \ + ; dnf5 copr -y enable principis/tldr-sharp \ ; dnf clean all && rm -rf /var/log/dnf* ARG USER=mirror -ARG UID=1001 -ARG GID=1001 +ARG UID=978 +ARG GID=978 -RUN useradd -m ${USER} --uid=${UID} +RUN groupadd --gid=${GID} ${USER} +RUN useradd -m ${USER} --uid=${UID} --gid=${GID} + +USER ${UID}:${GID} VOLUME /data -VOLUME /rpmfusion -VOLUME /cache ENV PACKAGES="" COPY --chown=mirror:mirror run.sh /entrypoint.sh diff --git a/build.sh b/build.sh index c3ffec4..53009a0 100755 --- a/build.sh +++ b/build.sh @@ -13,7 +13,7 @@ for r in "${RELEASE[@]}"; do docker build -t customrepo-$r . - docker create --name claque-$r --privileged --user 978:978 -e PACKAGES="$(< packages)" -v /data/mirror/fedora/data/claque/releases/$r/x86_64:/data customrepo-$r + docker create --name claque-$r -e PACKAGES="$(< packages)" -v /data/mirror/fedora/data/claque/releases/$r/x86_64:/data customrepo-$r rm -f Dockerfile done diff --git a/run.sh b/run.sh index c7f1364..66ae41d 100755 --- a/run.sh +++ b/run.sh @@ -2,22 +2,24 @@ echo 'Cleaning up Claque...' cd /data/Packages -FILES="$(rpm -qp --queryformat '%{NAME}\n' *.rpm 2> /dev/null | uniq)" - ARCH=('x86_64' 'i686' 'noarch') -ARCHES=$(printf ",%s" "${ARCH[@]}") +ARCHES=$(printf -- " --arch=%s" "${ARCH[@]}") ARCHES="${ARCHES:1}" -for i in $FILES; do - for a in "${ARCH[@]}"; do - ls $i[-_][0-9]*$a.rpm -rv 2> /dev/null | awk 'NR>1' | xargs -d '\n' -r rm -v -- - done +declare -A DL_PKGS + +for file in *.rpm; do + pkg_info=$(rpm -qp --queryformat '%{NAME} %{ARCH}\n' "$file" 2>/dev/null) + DL_PKGS["$pkg_info"]+="$file " +done + +for na in "${!DL_PKGS[@]}"; do + echo ${DL_PKGS["$na"]} | tr ' ' '\n' | sort -V | head -n -2 | xargs -d '\n' -r rm -v -- done set -f - -dnf download -y --skip-broken --arch "$ARCHES" --refresh --best --destdir /data/Packages/ $PACKAGES +dnf5 download -y $ARCHES --refresh --best --destdir /data/Packages/ $PACKAGES set +f