Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

makedist: update cvmfs package repo urls with fallback #105

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 61 additions & 32 deletions makedist
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,17 @@ distroname() {
fi
}

# return the distroname as encountered in yum package repo URLS,
# i.e https://cvmrepo.web.cern.ch/cvmrepo/yum/cvmfs/EL/9/
distroname_yum() {
case " $1 " in
*" rhel "*) echo EL;;
*" suse "*) echo suse;;
*) echo "Distro name $1 not supported" >&2
exit 2;;
esac
}

distroversion() {
if [ -n "$MACHTYPE" ]; then
echo "$MACHTYPE"|sed 's/^[^0-9]*\([0-9]*\)-.*/\1/'
Expand All @@ -100,6 +111,7 @@ distroarch() {
}

DISTRO="`distroname`"
DISTRO_YUM="`distroname_yum $DISTRO`"
VERS="`distroversion`"
ARCH="`distroarch`"

Expand All @@ -118,7 +130,7 @@ EL=$VERS
MACH=el$EL
if [ "$DISTRO" = "suse" ]; then
EL=7 # we get some suse stuff from rhel7
MACH=sle
MACH=sle$VERS
fi

HERE="$(cd `dirname $0` && pwd)"
Expand Down Expand Up @@ -185,17 +197,27 @@ case $1 in
EXT="/Packages/c"
fi
REPO=release
BASEURL="https://repo.opensciencegrid.org/osg/$REL/el$EL/$REPO/x86_64$EXT";;
BASEURL="https://repo.opensciencegrid.org/osg/$REL/el$EL/$REPO/x86_64$EXT"
BASELIST="`curl -Ls $BASEURL/|grep "cvmfs-"|sed 's/.*href="//;s/".*//'`";;
egi)
OS=centos$EL
BASEURL="https://repository.egi.eu/sw/production/umd/4/$OS/x86_64/updates";;
if [ $EL -gt 8 ]; then
BASEURL="https://repository.egi.eu/sw/production/umd/5/al9/release/x86_64/"
elif [ $EL -eq 7 ]; then
BASEURL="https://repository.egi.eu/sw/production/umd/4/centos7/x86_64/updates"
else
echo "ERROR: unsupported OS for egi! only centos7, almalinux9 supported." >&2
exit 1
fi
BASELIST="`curl -Ls $BASEURL/|grep "cvmfs-"|sed 's/.*href="//;s/".*//'`";;
default|none)
INCLUDEHELPER=false
BASEURL="https://cvmrepo.web.cern.ch/cvmrepo/yum/cvmfs/EL/$EL/x86_64";;
*) usage;;
esac
DISTTYPE=$1


if [ -d $DIST ]; then
echo "$DIST already exists" >&2
exit 1
Expand Down Expand Up @@ -234,58 +256,64 @@ if [ "$ARCH" != "x86_64" ]; then
# we're looking at x86_64 version repositories for the config rpm
INCLUDEHELPER=false
fi

URLS=""
BASELIST="`curl -Ls $BASEURL/|grep "cvmfs-"|sed 's/.*href="//;s/".*//'`"
CVMFSPKG="`echo "$BASELIST"|grep "^cvmfs-[0-9]"|tail -1`"
if [ -z "$CVMFSPKG" ]; then
if [ "$DISTTYPE" = egi ] && [ "$EL" = 8 ]; then
echo "egi's UMD does not yet support rhel8" 2>&1
else
echo "No cvmfs package found from $BASEURL" >&2
fi
if [ "$DISTTYPE" = egi ] && [ "$EL" = 8 ]; then
echo "egi's UMD does not yet support rhel8" 2>&1
exit 1
fi


URLS=""
CVMFSURL=""
CVMFSRPMURLS=""
CVMFS_BASEURL_MIRROR1="https://cvmrepo.s3.cern.ch/cvmrepo"
CVMFS_BASEURL_MIRROR2="https://cvmrepo.web.cern.ch/cvmrepo"
CVMFS_BASEURL=$CVMFS_BASEURL_MIRROR1
if [ "$ARCH" = "ppc64le" ]; then
# Grab cvmfs package from copr, using yumdownloader to calculate
# the URL
CVMFSRPMURL="$(getcoprurl cvmfs)"
if [ -z "$CVMFSRPMURL" ]; then
CVMFSRPMURLS="$(getcoprurl cvmfs)"
if [ -z "$CVMFSRPMURLS" ]; then
echo "Failed to get $ARCH cvmfs rpm from copr" >&2
exit 1
fi
CVMFSURL="$(dirname $CVMFSRPMURL)"
CVMFSRPMNAME="$(basename $CVMFSRPMURL)"
CVMFSURL="$(dirname $CVMFSRPMURLS)"
CVMFSRPMNAME="$(basename $CVMFSRPMURLS)"
CVMFSVERSION="`echo "$CVMFSRPMNAME" 's/.*cvmfs-\([^-]*\)-.*/\1/'`"
else
# Now that we can figure out the latest cvmfs version, download the
# corresponding cvmfs packages from CERN instead
CVMFSVERSION="`echo "$CVMFSPKG"|sed 's/.*cvmfs-\([^-]*\)-.*/\1/'`"
CVMFSURL="https://ecsft.cern.ch/dist/cvmfs/cvmfs-$CVMFSVERSION"
CVMFSRPMNAME="`curl -Ls $CVMFSURL/|grep "cvmfs-$CVMFSVERSION-.*$MACH.*\.$ARCH"|sed 's/.*href="//;s/".*//'|tail -1`"
if [ -z "$CVMFSRPMNAME" ]; then
echo "No matching cvmfs rpm found at $CVMFSURL" >&2
CVMFSVERSION="`curl -Ls $CVMFS_BASEURL/.latest_cvmfs_version_prod`"
if [ -z "CVMFSVERSION" ]; then
echo "WARN: Couldn't find .latest_cvmfs_version_prod in mirror $CVMFS_BASEURL, switching over.." >&2
CVMFS_BASEURL="$CVMFS_BASE_URL_MIRROR2"
CVMFSVERSION="`curl -Ls $CVMFS_BASEURL/.latest_cvmfs_version_prod`"
if [ -z "CVMFSVERSION" ]; then
echo "ERROR: Couldn't find .latest_cvmfs_version_prod in mirror $CVMFS_BASEURL, and no mirrors left! " >&2
exit 1
fi
fi
CVMFSRPMURL="$CVMFSURL/$CVMFSRPMNAME"
CVMFSURL="$CVMFS_BASEURL/yum/cvmfs/$DISTRO_YUM/$VERS/$ARCH"
CVMFSRPMNAME="cvmfs-$CVMFSVERSION-1.$MACH.$ARCH.rpm"
CVMFSRPMURLS="$CVMFSURL/$CVMFSRPMNAME"
fi
URLS="$CVMFSRPMURL"

MINORVERSION="`echo "$CVMFSVERSION"|cut -d. -f2`"
if [ "$MINORVERSION" -ge 10 ]; then
# include cvmfs-libs
URLS="$URLS $CVMFSURL/`echo $CVMFSRPMNAME|sed 's/cvmfs-/cvmfs-libs-/'`"
CVMFSRPMURLS="$CVMFSRPMURLS $CVMFSURL/`echo $CVMFSRPMNAME|sed 's/cvmfs-/cvmfs-libs-/'`"
fi

URLS="$URLS $CVMFSRPMURLS"

if [ "$DISTTYPE" != "none" ]; then
CONFIGREPO="`echo "$BASELIST"|grep "^cvmfs-config-$DISTTYPE-[0-9]"|tail -1`"
if [ -z "$CONFIGREPO" ]; then
echo "cvmfs-config not found at $BASEURL!" >&2
exit 1
if [ "$DISTTYPE" != "default" ]; then
CONFIGREPO="`echo "$BASELIST"|grep "^cvmfs-config-$DISTTYPE-[0-9]"|tail -1`"
if [ -z "$CONFIGREPO" ]; then
echo "cvmfs-config not found at $BASEURL!" >&2
exit 1
fi
URLS="$URLS $BASEURL/$CONFIGREPO"
else
URLS="$URLS $CVMFS_BASEURL/yum/cvmfs-config-default-latest.noarch.rpm"
fi
URLS="$URLS $BASEURL/$CONFIGREPO"
fi

# return the url of the latest version of a package given
Expand Down Expand Up @@ -327,6 +355,7 @@ fi

FUSESUBDIR=false
CVMFSFUSE3URL="$CVMFSURL/`echo $CVMFSRPMNAME|sed 's/cvmfs-/cvmfs-fuse3-/'`"
CVMFSRPMURLS="$CVMFSRPMURLS $CVMFSFUSE3URL"
if $SING; then
URLS="$URLS $CVMFSFUSE3URL"
if [ "$EL" -lt 8 ]; then
Expand Down