-
Notifications
You must be signed in to change notification settings - Fork 30
Expand file tree
/
Copy pathrsync-post-xfer
More file actions
48 lines (38 loc) · 1.23 KB
/
rsync-post-xfer
File metadata and controls
48 lines (38 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/sh
set -e
TGT_BASE="/mirror/current"
process_repo() {
repo="$1"
if [ ! -d "$RSYNC_MODULE_PATH/$repo" ] || [ ! -d "$TGT_BASE/$TGT/$repo" ]; then
return
fi
# add to repodata
find "$RSYNC_MODULE_PATH"/"$repo" -maxdepth 1 -type f -printf "$TGT_BASE/$TGT/$repo/%f\0" | \
xargs -r0 xbps-rindex -a
# clean old packages from repodata
xbps-rindex -c "$TGT_BASE/$TGT/$repo"
# remove old packages
xbps-rindex -r "$TGT_BASE/$TGT/$repo"
# Remove signatures that don't have a corresponding package
find "$TGT_BASE/$TGT/$repo" -maxdepth 1 \( -name '*.xbps.sig' -o -name '*.xbps.sig2' \) \
-exec sh -c 'for x in "$@"; do [ -e "${x%.sig*}" ] || rm -- $x; done' _ {} +
}
export XBPS_TARGET_ARCH="${RSYNC_MODULE_NAME#*-}"
case "$XBPS_TARGET_ARCH" in
aarch64*) TGT="aarch64" ;;
*-musl) TGT="musl" ;;
*) TGT="" ;;
esac
# copy files to repo
rsync -va "${RSYNC_MODULE_PATH:?}"/ "$TGT_BASE/$TGT/"
for repo in / /bootstrap /debug /nonfree; do
process_repo "$repo"
done
if [ "$XBPS_TARGET_ARCH" = 'i686' ]; then
for repo in /multilib /multilib/bootstrap /multilib/nonfree; do
process_repo "$repo"
done
fi
# clean up incoming
rm -r "${RSYNC_MODULE_PATH:?}"/*
exit 0