Ignore:
Timestamp:
Sep 19, 2022, 5:02:28 PM (2 years ago)
Author:
joergs
Message:

Implement fallback from download.opensuse.org to ftp.gwdg.de/pub/opensuse

In some cases, this helps.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • dass-tools/usr/bin/reposync-mirror-update.sh

    r1228 r1267  
    4848ME=reposync-mirror-update
    4949TMPDIR=/tmp/reposync.cache/
     50mkdir -p $TMPDIR
    5051
    5152REPO_FILES=`find -name "*.repo" ! -name "vermkv-*" | sort`
     
    6667    else
    6768
    68     # reposync stores in a directory named identical as the name of the repo
    69     test -L $NAME && rm $NAME
    70     if test -x $NAME; then
    71         echo "FAILED: remove $NAME and try again"
    72         exit 1
     69        # reposync stores in a directory named identical as the name of the repo
     70        test -L $NAME && rm $NAME
     71        if test -x $NAME; then
     72            echo "FAILED: remove $NAME and try again"
     73            exit 1
     74        fi
     75
     76        ln -s $DIR $NAME
     77        CACHEDIR=`mktemp --directory --tmpdir=$TMPDIR`
     78       
     79        SYNCED=""
     80        # exit on errors
     81        if LOG=$(reposync --config $REPO_FILE --cachedir=$CACHEDIR --delete); then
     82            SYNCED="$NAME"
     83        else
     84            printf "FAILED: reposync of %s failed:\n%s\n\n" "$URL" "$LOG" >&2
     85            #printf "CACHEDIR=%s\n" "$CACHEDIR"
     86            #ls -la "$CACHEDIR"
     87            #find ${CACHEDIR}
     88           
     89            CACHEDIR=`mktemp --directory --tmpdir=$TMPDIR`
     90            REPO_FILE_FALLBACK="${REPO_FILE}-fallback"
     91            sed 's|download.opensuse.org|ftp.gwdg.de/pub/opensuse|' < $REPO_FILE > $REPO_FILE_FALLBACK
     92            #sed 's|download.opensuse.org|ftp1.nluug.nl/os/Linux/distr/opensuse|' < $REPO_FILE > $REPO_FILE_FALLBACK
     93            URL=`sed --quiet -r 's/^baseurl=(.*)/\1/ip' $REPO_FILE_FALLBACK`
     94            printf "Trying fallback %s ...\n" "$URL" >&2
     95            LOG=""
     96           
     97            if LOG=$(reposync --config "${REPO_FILE_FALLBACK}" --cachedir=$CACHEDIR); then
     98                SYNCED="$NAME"
     99                #printf "%s\n" "$LOG"
     100            else
     101                printf "FAILED: reposync of %s failed:\n%s\n\n" "$URL" "$LOG" >&2
     102                REPOSYNC_FAILED="${REPOSYNC_FAILED}${DIR} "
     103            fi
     104        fi
     105
     106        if [ "$SYNCED" ]; then
     107            if grep "Downloading\|Removing" <<< "$LOG"; then
     108
     109                test -L $NAME && rm $NAME
     110
     111                echo
     112                echo "$ME: $NAME: createrepo"
     113                createrepo --cachedir .repocache/ $DIR
     114
     115                echo
     116                echo "$ME: $NAME: signing"
     117                rm -f $DIR/repodata/repomd.xml.asc $DIR/repodata/repomd.xml.key
     118                if [ "$REPOSYNC_GPG_KEY" -a "$REPOSYNC_GPG_PASSPHRASE" ]; then
     119                    gpg --batch --passphrase "$REPOSYNC_GPG_PASSPHRASE" -a --detach-sign --default-key "$REPOSYNC_GPG_KEY" $DIR/repodata/repomd.xml
     120                    gpg --batch --passphrase "$REPOSYNC_GPG_KEY" -a --export "$REPOSYNC_GPG_KEY" > $DIR/repodata/repomd.xml.key
     121                fi
     122            fi
     123        fi
     124        test -L $NAME && rm $NAME
     125        sleep 1
    73126    fi
    74 
    75     ln -s $DIR $NAME
    76     CACHEDIR=`mktemp --directory --tmpdir=$TMPDIR`
    77    
    78     # exit on errors
    79     if ! LOG=$(reposync --config $REPO_FILE --cachedir=$CACHEDIR --delete); then
    80 
    81         printf "FAILED: reposync failed:\n%s" "$LOG" >&2
    82         REPOSYNC_FAILED="${REPOSYNC_FAILED}${DIR} "
    83 
    84     elif grep "Downloading\|Removing" <<< "$LOG"; then
    85 
    86       test -L $NAME && rm $NAME
    87 
    88       echo
    89       echo "$ME: $NAME: createrepo"
    90       createrepo --cachedir .repocache/ $DIR
    91 
    92       echo
    93       echo "$ME: $NAME: signing"
    94       rm -f $DIR/repodata/repomd.xml.asc $DIR/repodata/repomd.xml.key
    95       if [ "$REPOSYNC_GPG_KEY" -a "$REPOSYNC_GPG_PASSPHRASE" ]; then
    96          gpg --batch --passphrase "$REPOSYNC_GPG_PASSPHRASE" -a --detach-sign --default-key "$REPOSYNC_GPG_KEY" $DIR/repodata/repomd.xml
    97          gpg --batch --passphrase "$REPOSYNC_GPG_KEY" -a --export "$REPOSYNC_GPG_KEY" > $DIR/repodata/repomd.xml.key
    98       fi
    99     fi
    100     test -L $NAME && rm $NAME
    101     sleep 1
    102 
    103     fi
    104 
    105127done
    106128
Note: See TracChangeset for help on using the changeset viewer.