| |
@@ -77,7 +77,7 @@
|
| |
shift
|
| |
;;
|
| |
-b )
|
| |
- # Check this particular branch
|
| |
+ # Check this particular branch
|
| |
BRANCH=$2
|
| |
shift
|
| |
shift
|
| |
@@ -146,43 +146,59 @@
|
| |
done <<< "$(git branch -r --contains HEAD | sed 's#origin/##g')"
|
| |
fi
|
| |
|
| |
- if [[ -s sources ]]; then
|
| |
- # This section is for the "flat" dist-git layout, where the spec file and
|
| |
- # patches are all present at the top level directory and the sha of the tarball
|
| |
- # present in a 'sources' file.
|
| |
- # This code was re-used from the fedpkg-pkg minimal project which is licensed
|
| |
- # under GPLv3 or any later version.
|
| |
+ if [[ -f sources ]]; then
|
| |
+ echo "Flat layout style"
|
| |
+ if [[ ! -s sources ]]; then
|
| |
+ echo "Empty sources file -- nothing to check"
|
| |
+ else
|
| |
+ # This section is for the "flat" dist-git layout, where the spec file and
|
| |
+ # patches are all present at the top level directory and the sha of the tarball
|
| |
+ # present in a 'sources' file.
|
| |
+ # This code was re-used from the fedpkg-pkg minimal project which is licensed
|
| |
+ # under GPLv3 or any later version.
|
| |
|
| |
- pkgname=$(basename "$PWD")
|
| |
- # Read first word of first line. For old MD5 format it's the 32 character
|
| |
- # hash. Otherwise let's assume the sources have the BSD format where lines
|
| |
- # start with hash type.
|
| |
- hashtype="$(head -n1 sources | cut -d' ' -f1 | tr '[:upper:]' '[:lower:]')"
|
| |
- # The format is
|
| |
- # SHA512 (filename) = ABCDEF
|
| |
- # We don't care about the equals sign. We also assume all hashes are
|
| |
- # the same type, so we don't need to read it again for each line.
|
| |
- while read -r _ filename _ hash || [[ -n "$filename" && -n "$hash" ]]; do
|
| |
- if [ -z "$filename" ] || [ -z "$hash" ]; then
|
| |
- continue
|
| |
- fi
|
| |
- # Remove parenthesis around tarball name
|
| |
- filename=${filename#(}
|
| |
- tarball=${filename%)}
|
| |
- if [ ! -e "$tarball" ]; then
|
| |
- for br in "${branches[@]}"
|
| |
- do
|
| |
- br=$(echo ${br}| sed -e s'|remotes/origin/||')
|
| |
- url="${SURL}/$pkgname/${br}/$hash"
|
| |
- echo "Retrieving ${url}"
|
| |
- curl -L ${QUIET} -f "${url}" -o "$tarball" && break
|
| |
- done
|
| |
- else
|
| |
- echo "$filename exists. skipping"
|
| |
- fi
|
| |
- done < sources
|
| |
- "${hashtype}sum" -c sources
|
| |
+ pkgname=$(basename "$PWD")
|
| |
+ # Read first word of first line. For old MD5 format it's the 32 character
|
| |
+ # hash. Otherwise let's assume the sources have the BSD format where lines
|
| |
+ # start with hash type.
|
| |
+ hashtype="$(head -n1 sources | cut -d' ' -f1 | tr '[:upper:]' '[:lower:]')"
|
| |
+ # The format is
|
| |
+ # SHA512 (filename) = ABCDEF
|
| |
+ # We don't care about the equals sign. We also assume all hashes are
|
| |
+ # the same type, so we don't need to read it again for each line.
|
| |
+ while read -r _ filename _ hash || [[ -n "$filename" && -n "$hash" ]]; do
|
| |
+ if [ -z "$filename" ] || [ -z "$hash" ]; then
|
| |
+ continue
|
| |
+ fi
|
| |
+ # Remove parenthesis around tarball name
|
| |
+ filename=${filename#(}
|
| |
+ tarball=${filename%)}
|
| |
+ if [ ! -e "$tarball" ]; then
|
| |
+ for br in "${branches[@]}"
|
| |
+ do
|
| |
+ br=$(echo ${br}| sed -e s'|remotes/origin/||')
|
| |
+ # Try the branch-specific lookaside structure
|
| |
+ url="${SURL}/$pkgname/${br}/$hash"
|
| |
+ echo "Retrieving ${url}"
|
| |
+ HTTP_CODE=$(curl -L ${QUIET} -H Pragma: -o "./$tarball" -R -S --fail --retry 5 "${url}" --write-out "%{http_code}" || true)
|
| |
+ echo "Returned ${HTTP_CODE}"
|
| |
+ if [[ ${HTTP_CODE} -gt 199 && ${HTTP_CODE} -lt 300 ]] ; then
|
| |
+ echo "bailing"
|
| |
+ break
|
| |
+ fi
|
| |
+ # Try the hash-specific lookaside structure
|
| |
+ url="${SURL}/$pkgname/$tarball/$hashtype/$hash/$tarball"
|
| |
+ echo "Retrieving ${url}"
|
| |
+ curl -L ${QUIET} -H Pragma: -o "./$tarball" -R -S --fail --retry 5 "${url}" && break
|
| |
+ done
|
| |
+ else
|
| |
+ echo "$filename exists. skipping"
|
| |
+ fi
|
| |
+ done < sources
|
| |
+ "${hashtype}sum" -c sources
|
| |
+ fi
|
| |
else
|
| |
+ echo "Exploded SRPM layout style"
|
| |
# This section is for the "non-flat" dist-git layout, where the spec file
|
| |
# is stored in a SPECS folder, the patches in a SOURCES folder and the sha
|
| |
# of the tarball of the project is present in a '.<pkg_name>.metadata' file.
|
| |
@@ -231,21 +247,22 @@
|
| |
# zero byte file
|
| |
touch ${fname}
|
| |
else
|
| |
+ hashType=$(weakHashDetection ${fsha})
|
| |
+ if [ "${hashType}" == "unknown" ]; then
|
| |
+ echo 'Failure: Hash type unknown.' >&2
|
| |
+ exit 1;
|
| |
+ fi
|
| |
+ hashName=$(echo ${hashType}| sed -e s'|sum||')
|
| |
+
|
| |
if [ ${CHECK} -eq 1 ]; then
|
| |
- hashType=$(weakHashDetection ${fsha})
|
| |
- if [ "${hashType}" == "unknown" ]; then
|
| |
- echo 'Failure: Hash type unknown.' >&2
|
| |
+ which ${hashType} >/dev/null 2>&1
|
| |
+ if [[ $? -ne 0 ]]; then
|
| |
+ echo "Failure: You need ${hashType} in PATH." >&2
|
| |
exit 1;
|
| |
- else
|
| |
- which ${hashType} >/dev/null 2>&1
|
| |
- if [[ $? -ne 0 ]]; then
|
| |
- echo "Failure: You need ${hashType} in PATH." >&2
|
| |
- exit 1;
|
| |
- fi
|
| |
fi
|
| |
fi
|
| |
if [ -e ${fname} -a ${CHECK} -eq 1 ]; then
|
| |
- # check hash sum and force download if wrong
|
| |
+ # check hash sum and force download if wrong
|
| |
downsum=$(${hashType} ${fname} | awk '{print $1}')
|
| |
if [ "${fsha}" != "${downsum}" ]; then
|
| |
rm -f ${fname}
|
| |
@@ -255,9 +272,19 @@
|
| |
for br in "${branches[@]}"
|
| |
do
|
| |
br=$(echo ${br}| sed -e s'|remotes/origin/||')
|
| |
+ # Try the branch-specific lookaside structure
|
| |
url="${SURL}/${pn}/${br}/${fsha}"
|
| |
echo "Retrieving ${url}"
|
| |
- curl -L ${QUIET} -f "${url}" -o "${fname}" && break
|
| |
+ HTTP_CODE=$(curl -L ${QUIET} -H Pragma: -o "${fname}" -R -S --fail --retry 5 "${url}" --write-out "%{http_code}" || true)
|
| |
+ echo "Returned ${HTTP_CODE}"
|
| |
+ if [[ ${HTTP_CODE} -gt 199 && ${HTTP_CODE} -lt 300 ]] ; then
|
| |
+ echo "bailing"
|
| |
+ break
|
| |
+ fi
|
| |
+ # Try the hash-specific lookaside structure
|
| |
+ url="${SURL}/$pn/$fname/${hashName}/$fsha/$fname"
|
| |
+ echo "Retrieving ${url}"
|
| |
+ curl -L ${QUIET} -H Pragma: -o "${fname}" -R -S --fail --retry 5 "${url}" && break
|
| |
done
|
| |
else
|
| |
echo "${fname} exists. skipping"
|
| |
Do we need to be asking
which ${hashType}sum
here instead?