|
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 |
|
|
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 |
4d96e5 |
echo 'You need to run this from inside a sources git repo'
|
|
Pat Riehecky |
4d96e5 |
exit 1
|
|
Pat Riehecky |
4d96e5 |
fi
|
|
Pat Riehecky |
4d96e5 |
|
|
Mike McLean |
e5597e |
# check metadata file and extract package name
|
|
Mike McLean |
e5597e |
packagename=""
|
|
Mike McLean |
e5597e |
shopt -s nullglob
|
|
Mike McLean |
e5597e |
for fn in .*.metadata
|
|
Mike McLean |
e5597e |
do
|
|
Mike McLean |
e5597e |
pn=${fn%.metadata}
|
|
Mike McLean |
e5597e |
pn=${pn#.}
|
|
Mike McLean |
e5597e |
if [ -e "SPECS/$pn.spec" ]
|
|
Mike McLean |
e5597e |
then
|
|
Mike McLean |
e5597e |
packagename="$pn"
|
|
Mike McLean |
e5597e |
break
|
|
Mike McLean |
e5597e |
fi
|
|
Mike McLean |
e5597e |
done
|
|
Mike McLean |
e5597e |
if [ -z "$packagename" ]
|
|
Mike McLean |
e5597e |
then
|
|
Mike McLean |
e5597e |
echo 'Missing metadata or spec. Please run from inside a sources git repo'
|
|
Pat Riehecky |
4d96e5 |
exit 1
|
|
Pat Riehecky |
4d96e5 |
fi
|
|
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
|
|
Mike McLean |
a6a9e5 |
nvr1="${pkg%.src.rpm}"
|
|
Pat Riehecky |
4d96e5 |
|
|
Mike McLean |
a6a9e5 |
#now get nvr from spec with placeholder dist
|
|
Mike McLean |
a6a9e5 |
mydist="XXXjsdf9ur7qlkasdh4gygXXX"
|
|
Mike McLean |
a6a9e5 |
nvr2=$(rpm --define "dist $mydist" -q --specfile "SPECS/$packagename.spec" --qf '%{n}-%{v}-%{r}\n' 2>/dev/null | head -n 1)
|
|
Mike McLean |
a6a9e5 |
|
|
Mike McLean |
a6a9e5 |
#use our placeholder dist to split the nvr
|
|
Mike McLean |
a6a9e5 |
head=${nvr2%$mydist*}
|
|
Mike McLean |
a6a9e5 |
|
|
Mike McLean |
a6a9e5 |
if [ ".$head" = ".$nvr2" ]
|
|
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 |
|
|
Mike McLean |
a6a9e5 |
tail=${nvr2#*$mydist}
|
|
Mike McLean |
a6a9e5 |
|
|
Mike McLean |
a6a9e5 |
frag=${nvr1#$head}
|
|
Mike McLean |
a6a9e5 |
dist=${frag%$tail}
|
|
Mike McLean |
a6a9e5 |
|
|
Mike McLean |
e5597e |
# sanity check
|
|
Mike McLean |
e5597e |
nvr3=$(rpm --define "dist $dist" -q --specfile "SPECS/$packagename.spec" --qf '%{n}-%{v}-%{r}\n' 2>/dev/null | head -n 1)
|
|
Mike McLean |
e5597e |
if [ ".$nvr3" != ".$nvr1" ]
|
|
Mike McLean |
e5597e |
then
|
|
Mike McLean |
e5597e |
warn "Warning: $nvr3 != $nvr1"
|
|
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"
|