On 07/09/2014 12:10 PM, Pat Riehecky wrote: > --- > return_disttag.sh | 80 +++++++++++++++++++++++++++++++++++++++-------------- > 1 files changed, 59 insertions(+), 21 deletions(-) > > diff --git a/return_disttag.sh b/return_disttag.sh > index d0ae030..de9ff29 100755 > --- a/return_disttag.sh > +++ b/return_disttag.sh > @@ -18,6 +18,20 @@ usage() { > exit 1 > } > > +##################################################################### > +build_with_dist_scl() { > + SPECFILE=$1 > + DIST=$2 > + SCL=${3:-} > + > + if [[ "x${SCL}" == 'x' ]]; then > + result=$(rpm --define "dist ${DIST}" -q --specfile "${SPECFILE}" --qf '%{n}-%{v}-%{r}\n' 2>/dev/null | head -n 1) > + else > + result=$(rpm --define "dist ${DIST}" --define "scl ${SCL}" -q --specfile "${SPECFILE}" --qf '%{n}-%{v}-%{r}\n' 2>/dev/null | head -n 1) > + fi > + > + echo $result > +} > > ##################################################################### > # setup args in the right order for making getopt evaluation > @@ -65,21 +79,18 @@ fi > # check metadata file and extract package name > packagename="" > shopt -s nullglob > -for fn in .*.metadata > -do > - pn=${fn%.metadata} > - pn=${pn#.} > - if [ -e "SPECS/$pn.spec" ] > - then > - packagename="$pn" > - break > - fi > -done > -if [ -z "$packagename" ] > +set -- .*.metadata > +if (( $# == 0 )) > then > - echo 'Missing metadata or spec. Please run from inside a sources git repo' > + echo 'Missing metadata. Please run from inside a sources git repo' > exit 1 > +elif (( $# > 1 )) > +then > + warn "Warning: multiple metadata files found. Using $1" > fi > +meta=$1 > +pn=${meta%.metadata} > +pn=${pn#.} > > filter () { > # filter used for log messages > @@ -97,32 +108,59 @@ set -- $msg > pkg="$2" > > # strip .src.rpm if present > -nvr1="${pkg%.src.rpm}" > +git_nvr="${pkg%.src.rpm}" > + > +scl='' > + > +SPEC=$(cd SPECS; ls *.spec) > > #now get nvr from spec with placeholder dist > mydist="XXXjsdf9ur7qlkasdh4gygXXX" > -nvr2=$(rpm --define "dist $mydist" -q --specfile "SPECS/$packagename.spec" --qf '%{n}-%{v}-%{r}\n' 2>/dev/null | head -n 1) > +testnvr=$(build_with_dist_scl "SPECS/${SPEC}" ${mydist}) > + > +git_name=$(echo ${git_nvr} | cut -d '-' -f 1) > +test_name=$(echo ${testnvr} | cut -d '-' -f 1) > + > +if [[ "${git_name}" != "${test_name}" ]]; then > + warn "Warning: ${git_name} != ${test_name}" > + warn "Warning: Trying as a Software Collection" > + testnvr=$(build_with_dist_scl "SPECS/${SPEC}" ${mydist} ${git_name}) > +fi > + > +test_name=$(echo ${testnvr} | cut -d '-' -f 1) > +if [[ "${git_name}" != "${test_name}" ]]; then > + warn "Warning: ${git_name} != ${test_name}" > + echo "Warning: Couldn't match srpm name" >&2 > + exit 1 > +else > + scl=${git_name} > +fi > > #use our placeholder dist to split the nvr > -head=${nvr2%$mydist*} > +head=${testnvr%$mydist*} > > -if [ ".$head" = ".$nvr2" ] > +if [ ".$head" = ".$testnvr" ] > then > #no dist tag > echo "" > exit > fi > > -tail=${nvr2#*$mydist} > +tail=${testnvr#*$mydist} > > -frag=${nvr1#$head} > +frag=${git_nvr#$head} > dist=${frag%$tail} > > # sanity check > -nvr3=$(rpm --define "dist $dist" -q --specfile "SPECS/$packagename.spec" --qf '%{n}-%{v}-%{r}\n' 2>/dev/null | head -n 1) > -if [ ".$nvr3" != ".$nvr1" ] > +if [[ "x${scl}" == 'x' ]]; then > + verifynvr=$(build_with_dist_scl "SPECS/${SPEC}" ${dist}) > +else > + verifynvr=$(build_with_dist_scl "SPECS/${SPEC}" ${dist} ${scl}) > +fi > + > +if [ ".$verifynvr" != ".$git_nvr" ] > then > - warn "Warning: $nvr3 != $nvr1" > + warn "Warning: $verifynvr != $git_nvr" > warn "Warning: check failed. The %{dist} value may be incorrect" > fi > > -- 1.7.1 pushed -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: OpenPGP digital signature URL: <http://lists.centos.org/pipermail/centos-devel/attachments/20140709/7d6542bf/attachment-0007.sig>