From 013531bb6b11eb250cc897ef487532a34a1da836 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 26 Sep 2018 15:27:45 -0400 Subject: make_repo_torrents: Fix --- cron-jobs/make_repo_torrents | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/cron-jobs/make_repo_torrents b/cron-jobs/make_repo_torrents index d8613a4..1bf66af 100755 --- a/cron-jobs/make_repo_torrents +++ b/cron-jobs/make_repo_torrents @@ -31,13 +31,28 @@ mkdir -p -- "${FTP_BASE}/${TORRENTPOOL}" IFS=, # for ${TRACKERS[*]} and ${WEBSEEDS[*]} -ret=0 +pool_broken=0 +maintain_pool() { + local pkgfile="$1" + if (( pool_broken )); then + return 0 + fi + local link="${FTP_BASE}/${TORRENTPOOL}/${pkgfile##*/}.torrent" + if [[ -L $link && -f $link ]]; then + return 0 + fi + pkgfile=$(readlink -f -- "$pkgfile") + if ! ln -sfrT -- "${pkgfile}.torrent" "$link"; then + pool_broken=1 + fi +} make_torrent() { local pkgfile="$1" local target if [[ -f ${pkgfile}.torrent ]]; then + maintain_pool "$pkgfile" return 0 fi if ! [[ -f $pkgfile ]]; then @@ -53,7 +68,7 @@ make_torrent() { if [[ -f "${FTP_BASE}/${TORRENTPOOL}/${pkgfile##*/}.torrent" && ! -L "${FTP_BASE}/${TORRENTPOOL}/${pkgfile##*/}.torrent" ]]; then ln -T -- "${FTP_BASE}/${TORRENTPOOL}/${pkgfile##*/}.torrent" "${pkgfile}.torrent" - ln -sfrT -- "${pkgfile}.torrent" "${FTP_BASE}/${TORRENTPOOL}/${pkgfile##*/}.torrent" || ret=$? + maintain_pool "$pkgfile" else msg2 'Creating %s' "${pkgfile}.torrent" mktorrent \ @@ -61,7 +76,7 @@ make_torrent() { --web-seed="${WEBSEEDS[*]/%/"${pkgfile#"${FTP_BASE}"}"}" \ --output="${pkgfile}.torrent" \ -- "${pkgfile}" >/dev/null - ln -sfrT -- "${pkgfile}.torrent" "${FTP_BASE}/${TORRENTPOOL}/${pkgfile##*/}.torrent" || ret=$? + maintain_pool "$pkgfile" fi fi } @@ -71,4 +86,4 @@ for pkgfile in "$FTP_BASE"/*/os/*/*${PKGEXTS}; do make_torrent "$pkgfile" done msg 'Done' -exit $ret +exit $pool_broken -- cgit v1.2.2