|
Pat Riehecky |
4d96e5 |
#!/bin/bash -u
|
|
Pat Riehecky |
4d96e5 |
#
|
|
Pat Riehecky |
4d96e5 |
# Extracts what appears to be the value of %{dist} from the commit message
|
|
Pat Riehecky |
4d96e5 |
#
|
|
Pat Riehecky |
4d96e5 |
# Might want to drop this in ~/bin/ and chmod u+x it
|
|
Pat Riehecky |
4d96e5 |
|
|
Pat Riehecky |
4d96e5 |
#####################################################################
|
|
Pat Riehecky |
4d96e5 |
usage() {
|
|
Pat Riehecky |
4d96e5 |
echo '' >&2
|
|
Pat Riehecky |
4d96e5 |
echo "$0 [-hr]" >&2
|
|
Pat Riehecky |
4d96e5 |
echo '' >&2
|
|
Pat Riehecky |
4d96e5 |
echo ' -h: This help message' >&2
|
|
Pat Riehecky |
4d96e5 |
echo ' -r: Use the Redhat tag rather than centos tag' >&2
|
|
Mike McLean |
e5597e |
echo ' -q: Suppress warnings' >&2
|
|
Pat Riehecky |
4d96e5 |
echo '' >&2
|
|
Pat Riehecky |
4d96e5 |
echo ' Attempt to extract what appears to be the value of %{dist}' >&2
|
|
Pat Riehecky |
4d96e5 |
echo ' from the git.centos.org commit message' >&2
|
|
Pat Riehecky |
4d96e5 |
exit 1
|
|
Pat Riehecky |
4d96e5 |
}
|
|
Pat Riehecky |
4d96e5 |
|
|
From: Pat Riehecky |
01a821 |
#####################################################################
|
|
From: Pat Riehecky |
01a821 |
build_with_dist_scl() {
|
|
From: Pat Riehecky |
01a821 |
SPECFILE=$1
|
|
From: Pat Riehecky |
01a821 |
DIST=$2
|
|
From: Pat Riehecky |
01a821 |
SCL=${3:-}
|
|
From: Pat Riehecky |
01a821 |
|
|
From: Pat Riehecky |
01a821 |
if [[ "x${SCL}" == 'x' ]]; then
|
|
Pat Riehecky |
4a0580 |
result=$(rpm --define "%_topdir `pwd`" --define "dist ${DIST}" -q --specfile "${SPECFILE}" --qf '%{n}-%{v}-%{r}\n' 2>/dev/null | head -n 1)
|
|
From: Pat Riehecky |
01a821 |
else
|
|
Pat Riehecky |
4a0580 |
result=$(rpm --define "%_topdir `pwd`" --define "dist ${DIST}" --define "scl ${SCL}" -q --specfile "${SPECFILE}" --qf '%{n}-%{v}-%{r}\n' 2>/dev/null | head -n 1)
|
|
From: Pat Riehecky |
01a821 |
fi
|
|
From: Pat Riehecky |
01a821 |
|
|
Pat Riehecky |
4a0580 |
echo ${result}
|
|
From: Pat Riehecky |
01a821 |
}
|
|
Pat Riehecky |
4d96e5 |
|
|
Pat Riehecky |
4d96e5 |
#####################################################################
|
|
Pat Riehecky |
4d96e5 |
# setup args in the right order for making getopt evaluation
|
|
Pat Riehecky |
4d96e5 |
# nice and easy. You'll need to read the manpages for more info
|
|
Mike McLean |
e5597e |
args=$(getopt -o hrq -- "$@")
|
|
Pat Riehecky |
4d96e5 |
if [[ $? -ne 0 ]]; then
|
|
Pat Riehecky |
4d96e5 |
usage
|
|
Pat Riehecky |
4d96e5 |
fi
|
|
Pat Riehecky |
4d96e5 |
eval set -- "$args"
|
|
Pat Riehecky |
4d96e5 |
|
|
Pat Riehecky |
4d96e5 |
RHELTAG=0
|
|
Mike McLean |
e5597e |
QUIET=0
|
|
Mike McLean |
e5597e |
for arg in "$@"; do
|
|
Pat Riehecky |
4d96e5 |
case $1 in
|
|
Pat Riehecky |
4d96e5 |
-- )
|
|
Pat Riehecky |
4d96e5 |
# end of getopt args, shift off the -- and get out of the loop
|
|
Pat Riehecky |
4d96e5 |
shift
|
|
Pat Riehecky |
4d96e5 |
break 2
|
|
Pat Riehecky |
4d96e5 |
;;
|
|
Pat Riehecky |
4d96e5 |
-r )
|
|
Pat Riehecky |
4d96e5 |
# skip any package with 'centos' in the dist area
|
|
Pat Riehecky |
4d96e5 |
RHELTAG=1
|
|
Pat Riehecky |
4d96e5 |
;;
|
|
Mike McLean |
e5597e |
-q )
|
|
Mike McLean |
e5597e |
# suppress warnings
|
|
Mike McLean |
e5597e |
QUIET=1
|
|
Mike McLean |
e5597e |
;;
|
|
Pat Riehecky |
4d96e5 |
-h )
|
|
Pat Riehecky |
4d96e5 |
# get help
|
|
Pat Riehecky |
4d96e5 |
usage
|
|
Pat Riehecky |
4d96e5 |
;;
|
|
Pat Riehecky |
4d96e5 |
esac
|
|
Pat Riehecky |
4d96e5 |
done
|
|
Pat Riehecky |
4d96e5 |
|
|
Mike McLean |
e5597e |
warn () {
|
|
Mike McLean |
e5597e |
[[ ${QUIET} -eq 1 ]] && return
|
|
Mike McLean |
e5597e |
echo 1>&2 "$@"
|
|
Mike McLean |
e5597e |
}
|
|
Pat Riehecky |
4d96e5 |
|
|
Mike McLean |
e5597e |
if [[ ! -d .git ]] || [[ ! -d SPECS ]]; then
|
|
Pat Riehecky |
7520e4 |
echo 'You need to run this from inside a sources git repo' >&2
|
|
Pat Riehecky |
4d96e5 |
exit 1
|
|
Pat Riehecky |
4d96e5 |
fi
|
|
Pat Riehecky |
4d96e5 |
|
|
Pat Riehecky |
a68f52 |
rpm -q scl-utils-build >/dev/null 2>&1
|
|
Pat Riehecky |
a68f52 |
if [[ $? -ne 0 ]]; then
|
|
Pat Riehecky |
a68f52 |
echo 'Without scl-utils-build some SCL style sources be parsed' >&2
|
|
Pat Riehecky |
a68f52 |
exit 1
|
|
Pat Riehecky |
a68f52 |
fi
|
|
Pat Riehecky |
a68f52 |
|
|
Mike McLean |
e5597e |
# check metadata file and extract package name
|
|
Mike McLean |
e5597e |
packagename=""
|
|
Mike McLean |
e5597e |
shopt -s nullglob
|
|
From: Pat Riehecky |
01a821 |
set -- .*.metadata
|
|
From: Pat Riehecky |
01a821 |
if (( $# == 0 ))
|
|
Mike McLean |
e5597e |
then
|
|
Pat Riehecky |
7520e4 |
echo 'Missing metadata. Please run from inside a sources git repo' >&2
|
|
Pat Riehecky |
4d96e5 |
exit 1
|
|
From: Pat Riehecky |
01a821 |
elif (( $# > 1 ))
|
|
From: Pat Riehecky |
01a821 |
then
|
|
From: Pat Riehecky |
01a821 |
warn "Warning: multiple metadata files found. Using $1"
|
|
Pat Riehecky |
4d96e5 |
fi
|
|
From: Pat Riehecky |
01a821 |
meta=$1
|
|
From: Pat Riehecky |
01a821 |
pn=${meta%.metadata}
|
|
From: Pat Riehecky |
01a821 |
pn=${pn#.}
|
|
Pat Riehecky |
4d96e5 |
|
|
Mike McLean |
e5597e |
filter () {
|
|
Mike McLean |
e5597e |
# filter used for log messages
|
|
Mike McLean |
e5597e |
if [[ ${RHELTAG} -eq 1 ]]
|
|
Mike McLean |
e5597e |
then
|
|
Mike McLean |
e5597e |
grep -v centos | grep import
|
|
Mike McLean |
e5597e |
else
|
|
Mike McLean |
e5597e |
grep import
|
|
Mike McLean |
e5597e |
fi
|
|
Mike McLean |
e5597e |
}
|
|
Mike McLean |
e5597e |
|
|
Mike McLean |
e5597e |
# extract nvr from commit message of last import
|
|
Mike McLean |
e5597e |
msg=$(git log --pretty=format:"%s" | filter | head -n 1)
|
|
Mike McLean |
e5597e |
set -- $msg
|
|
Mike McLean |
e5597e |
pkg="$2"
|
|
Mike McLean |
e5597e |
|
|
Mike McLean |
a6a9e5 |
# strip .src.rpm if present
|
|
From: Pat Riehecky |
01a821 |
git_nvr="${pkg%.src.rpm}"
|
|
From: Pat Riehecky |
01a821 |
|
|
From: Pat Riehecky |
01a821 |
scl=''
|
|
From: Pat Riehecky |
01a821 |
|
|
From: Pat Riehecky |
01a821 |
SPEC=$(cd SPECS; ls *.spec)
|
|
Pat Riehecky |
4d96e5 |
|
|
Mike McLean |
a6a9e5 |
#now get nvr from spec with placeholder dist
|
|
Mike McLean |
a6a9e5 |
mydist="XXXjsdf9ur7qlkasdh4gygXXX"
|
|
|
3a0ccf |
test_nvr=$(build_with_dist_scl "SPECS/${SPEC}" ${mydist})
|
|
From: Pat Riehecky |
01a821 |
|
|
|
3a0ccf |
test_nodist=$(echo ${test_nvr} | sed -e 's/-[a-zA-Z0-9\.]*$//')
|
|
|
3a0ccf |
git_nodist=$(echo ${git_nvr} | sed -e 's/-[a-zA-Z0-9\._]*$//')
|
|
From: Pat Riehecky |
01a821 |
|
|
|
3a0ccf |
if [[ "${git_nodist}" != "${test_nodist}" ]]; then
|
|
|
3a0ccf |
warn "Warning: ${git_nvr} != ${test_nvr}"
|
|
From: Pat Riehecky |
01a821 |
warn "Warning: Trying as a Software Collection"
|
|
|
3a0ccf |
scl=$(echo ${git_nodist} |sed -e "s/-${test_nodist}//")
|
|
|
3a0ccf |
test_nvr=$(build_with_dist_scl "SPECS/${SPEC}" ${mydist} ${scl})
|
|
|
3a0ccf |
test_nodist=$(echo ${test_nvr} | sed -e 's/-[a-zA-Z0-9\.]*$//')
|
|
From: Pat Riehecky |
01a821 |
fi
|
|
From: Pat Riehecky |
01a821 |
|
|
|
3a0ccf |
if [[ "${git_nodist}" != "${test_nodist}" ]]; then
|
|
|
3a0ccf |
git_name=$(echo ${git_nvr} | cut -d '-' -f 1)
|
|
|
3a0ccf |
test_name=$(echo ${test_nvr} | cut -d '-' -f 1)
|
|
From: Pat Riehecky |
01a821 |
warn "Warning: ${git_name} != ${test_name}"
|
|
From: Pat Riehecky |
01a821 |
echo "Warning: Couldn't match srpm name" >&2
|
|
From: Pat Riehecky |
01a821 |
exit 1
|
|
From: Pat Riehecky |
01a821 |
fi
|
|
Mike McLean |
a6a9e5 |
|
|
Mike McLean |
a6a9e5 |
#use our placeholder dist to split the nvr
|
|
|
3a0ccf |
head=${test_nvr%$mydist*}
|
|
Mike McLean |
a6a9e5 |
|
|
|
3a0ccf |
if [ ".$head" = ".$test_nvr" ]
|
|
Mike McLean |
a6a9e5 |
then
|
|
Mike McLean |
a6a9e5 |
#no dist tag
|
|
Mike McLean |
a6a9e5 |
echo ""
|
|
Mike McLean |
a6a9e5 |
exit
|
|
Mike McLean |
a6a9e5 |
fi
|
|
Mike McLean |
a6a9e5 |
|
|
|
3a0ccf |
tail=${test_nvr#*$mydist}
|
|
Mike McLean |
a6a9e5 |
|
|
From: Pat Riehecky |
01a821 |
frag=${git_nvr#$head}
|
|
Mike McLean |
a6a9e5 |
dist=${frag%$tail}
|
|
Mike McLean |
a6a9e5 |
|
|
Mike McLean |
e5597e |
# sanity check
|
|
From: Pat Riehecky |
01a821 |
if [[ "x${scl}" == 'x' ]]; then
|
|
From: Pat Riehecky |
01a821 |
verifynvr=$(build_with_dist_scl "SPECS/${SPEC}" ${dist})
|
|
From: Pat Riehecky |
01a821 |
else
|
|
From: Pat Riehecky |
01a821 |
verifynvr=$(build_with_dist_scl "SPECS/${SPEC}" ${dist} ${scl})
|
|
From: Pat Riehecky |
01a821 |
fi
|
|
From: Pat Riehecky |
01a821 |
|
|
From: Pat Riehecky |
01a821 |
if [ ".$verifynvr" != ".$git_nvr" ]
|
|
Mike McLean |
e5597e |
then
|
|
From: Pat Riehecky |
01a821 |
warn "Warning: $verifynvr != $git_nvr"
|
|
Mike McLean |
e5597e |
warn "Warning: check failed. The %{dist} value may be incorrect"
|
|
Mike McLean |
e5597e |
fi
|
|
Mike McLean |
e5597e |
|
|
Mike McLean |
a6a9e5 |
echo "$dist"
|