From ac5039fc7b70ab3486a08a2b20d256b8b768e19b Mon Sep 17 00:00:00 2001 From: Robert Haschke Date: Mon, 21 Oct 2024 20:10:37 +0200 Subject: [PATCH] Improve import.sh --- reprepro/import.sh | 32 +++++++++++++++++++++----------- reprepro/reinit.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 11 deletions(-) create mode 100755 reprepro/reinit.sh diff --git a/reprepro/import.sh b/reprepro/import.sh index 9b0972b3..5de5a6e1 100755 --- a/reprepro/import.sh +++ b/reprepro/import.sh @@ -32,30 +32,40 @@ function filter { } # Import sources -printf "\nImporting source packages" +printf "\nImporting source packages\n" if [ "$ARCH" == "amd64" ]; then for f in "$INCOMING_DIR"/*.dsc; do - echo "$f" + # skip python3-* files as they cause name conflicts + if [[ "${f#"$INCOMING_DIR/"}" == *python3-* ]]; then + continue + fi + echo "${f#"$INCOMING_DIR/"}" reprepro includedsc "$DISTRO" "$f" | filter done fi # Import packages -printf "\nImporting binary packages" -reprepro -A "$ARCH" includedeb "$DISTRO" "$INCOMING_DIR"/*.deb | filter +printf "\nImporting binary packages\n" +for f in "$INCOMING_DIR"/*.deb; do + echo "${f#"$INCOMING_DIR/"}" + reprepro -A "$ARCH" includedeb "$DISTRO" "$f" | filter +done # Cleanup files (cd "$INCOMING_DIR" || exit 1; rm -f ./*.log ./*.deb ./*.dsc ./*.tar.gz ./*.tar.xz ./*.changes ./*.buildinfo) # Rename, Import, and Cleanup ddeb files (if existing) -printf "\nImporting debug packages" -if [ -n "$(ls -A "$INCOMING_DIR"/*.ddeb 2>/dev/null)" ]; then - mmv "$INCOMING_DIR/*.ddeb" "$INCOMING_DIR/#1.deb" - reprepro -A "$ARCH" -C main-dbg includedeb "$DISTRO" "$INCOMING_DIR"/*.deb | filter - (cd "$INCOMING_DIR" || exit 1; rm ./*.deb) -fi +printf "\nImporting debug packages\n" +for f in "$INCOMING_DIR"/*.ddeb; do + echo "${f#"$INCOMING_DIR/"}" + # remove .ddeb suffix + f=${f%.ddeb} + mv "${f}.ddeb" "${f}.deb" + reprepro -A "$ARCH" -C main-dbg includedeb "$DISTRO" "${f}.deb" | filter +done +(cd "$INCOMING_DIR" || exit 1; rm ./*.deb) -printf "\nExporting" +printf "\nExporting\n" reprepro export "$DISTRO" # Merge local.yaml into ros-one.yaml diff --git a/reprepro/reinit.sh b/reprepro/reinit.sh new file mode 100755 index 00000000..72201115 --- /dev/null +++ b/reprepro/reinit.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +function process { + local f=$1 + echo "$f" + local args="" + local distros="" + + case "$f" in + *_arm64.deb) args="-A arm64" ;; + *_amd64.deb) args="-A amd64" ;; + *_all.deb) distros="jammy noble";; + *) + echo "Unknown arch" + exit 1 + ;; + esac + + if [[ $f == *-dbgsym_* ]]; then + args="$args -C main-dbg" + fi + + case $f in + *jammy.*) distros="jammy" ;; + *noble.*) distros="noble" ;; + *) + if [ -z "$distros" ]; then + echo "Unknown distro" + exit 1 + fi + ;; + esac + + # shellcheck disable=SC2086 + for distro in $distros; do + reprepro $args includedeb "$distro"-testing "$f" + done +} + +while IFS= read -r -d '' file +do + process "$file" +done < <(find /var/www/repos -iname "*.deb" -print0)