@@ -184,7 +184,7 @@ jobs:
184184 fi
185185
186186 - name : Sign
187- if : ${{ steps.changed.outputs.pkgs != '' }}
187+ if : ${{ steps.changed.outputs.pkgs != '' || steps.changed.outputs.removed != '' }}
188188 env :
189189 PRIV_KEY : ${{ secrets.PRIV_KEY }}
190190 XBPS_ARCH : ${{ matrix.config.arch }}
@@ -204,8 +204,9 @@ jobs:
204204 mkdir -p /tmp/oldrepo
205205 if git ls-remote --exit-code --heads "$REMOTE" "$BRANCH" >/dev/null 2>&1; then
206206 git clone --depth 1 --branch "$BRANCH" "$REMOTE" /tmp/oldrepo
207- # copy all existing packages + metadata into current binpkgs dir
208- cp -v /tmp/oldrepo/* . 2>/dev/null || true
207+ cp -v /tmp/oldrepo/*.xbps . 2>/dev/null || true
208+ cp -v /tmp/oldrepo/*.xbps.sig . 2>/dev/null || true
209+ cp -v /tmp/oldrepo/index* . 2>/dev/null || true
209210 else
210211 echo "No existing $BRANCH on remote, starting fresh."
211212 fi
@@ -219,10 +220,9 @@ jobs:
219220 fi
220221
221222 allow="${{ steps.repo_pkgs.outputs.all }}"
222- echo "==> pruning packages not from our repo..."
223+ echo "==> pruning packages not from this repo..."
223224 for f in *.xbps; do
224225 [ -e "$f" ] || continue
225- base="${f%%-*}"
226226 keep=0
227227 for pkg in $allow; do
228228 case "$f" in
@@ -238,6 +238,20 @@ jobs:
238238 fi
239239 done
240240
241+ echo "==> dropping older versions of packages..."
242+ for pkg in $allow; do
243+ # list all versions of this package, newest last
244+ matches=$(ls -1 ${pkg}-*.xbps 2>/dev/null | sort -V || true)
245+ [ -z "$matches" ] && continue
246+ newest=$(printf "%s\n" $matches | tail -n 1)
247+ for f in $matches; do
248+ if [ "$f" != "$newest" ]; then
249+ echo " - removing old $f"
250+ rm -f "$f" "$f".sig 2>/dev/null || true
251+ fi
252+ done
253+ done
254+
241255 echo "==> writing private key to file..."
242256 printf "%s\n" "$PRIV_KEY" > private.pem
243257 chmod 600 private.pem
0 commit comments