KB? On 06/17/2014 04:25 PM, Pat Riehecky wrote: > From: Pat Riehecky <riehecky at fnal.gov> > > --- > into_srpm.sh | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 173 insertions(+), 0 deletions(-) > create mode 100755 into_srpm.sh > > diff --git a/into_srpm.sh b/into_srpm.sh > new file mode 100755 > index 0000000..2e254c4 > --- /dev/null > +++ b/into_srpm.sh > @@ -0,0 +1,173 @@ > +#!/bin/bash -u > +# > +# Turn a centos git repo into a .src.rpm file > +# > +# Might want to drop this in ~/bin/ and chmod u+x it > + > +# > +# License: GPLv3 > +# > +# Initial Author: Pat Riehecky <riehecky at fnal.gov> > +# > + > +##################################################################### > +usage() { > + echo '' >&2 > + echo "$0 [-hq] [-b branch] [-c shasum]" >&2 > + echo '' >&2 > + echo 'You need to run this from inside a sources git repo' >&2 > + echo '' >&2 > + echo ' -h: This help message' >&2 > + echo ' -q: Suppress warnings' >&2 > + echo '' >&2 > + echo ' -b: specify a branch to examine' >&2 > + echo " defaults to repo's current branch" >&2 > + echo " NOTE: your repo will be set to this branch">&2 > + echo '' >&2 > + echo ' -c: specify a commit id' >&2 > + echo " defaults to repo's current commit id" >&2 > + echo " NOTE: your repo will be set to this commit">&2 > + echo '' >&2 > + echo " $0" >&2 > + echo " $0 -b c7" >&2 > + echo " $0 -b remotes/origin/c7" >&2 > + echo " $0 -c 865ae5909b2b5d5fb37971b7ad7960f1fd5a5ffa" >&2 > + echo " $0 -b c7 -c 865ae5909b2b5d5fb37971b7ad7960f1fd5a5ffa" >&2 > + exit 1 > +} > + > +##################################################################### > + > +QUIET=0 > +COMMITHASH="" > +BRANCH="" > + > +##################################################################### > +# setup args in the right order for making getopt evaluation > +# nice and easy. You'll need to read the manpages for more info > +# utilizing 'while' construct rather than 'for arg' to avoid unnecessary > +# shifting of program args > +args=$(getopt -o hqb:c: -- "$@") > +eval set -- "$args" > + > +while [[ 0 -eq 0 ]]; do > + case $1 in > + -- ) > + # end of getopt args, shift off the -- and get out of the loop > + shift > + break > + ;; > + -q ) > + # suppress warnings > + QUIET=1 > + shift > + ;; > + -c ) > + # Use this commit id > + COMMITHASH=$2 > + shift > + shift > + ;; > + -b ) > + # Check this particular branch > + BRANCH=$2 > + shift > + shift > + ;; > + -h ) > + # get help > + usage > + ;; > + esac > +done > + > +if [[ ! -d .git ]] || [[ ! -d SPECS ]]; then > + echo 'You need to run this from inside a sources git repo' > + exit 1 > +fi > + > +which return_disttag.sh >/dev/null 2>&1 > +if [[ $? -ne 0 ]]; then > + echo 'You need return_disttag.sh from centos-git-common in PATH' > + exit 1 > +fi > + > +which get_sources.sh >/dev/null 2>&1 > +if [[ $? -ne 0 ]]; then > + echo 'You need get_sources.sh from centos-git-common in PATH' > + exit 1 > +fi > + > +if [[ "x${BRANCH}" != 'x' ]]; then > + if [[ $QUIET -eq 1 ]]; then > + git fetch >/dev/null > + git checkout ${BRANCH} >/dev/null > + else > + git fetch > + git checkout ${BRANCH} > + fi > +fi > + > +if [[ "x${COMMITHASH}" != 'x' ]]; then > + if [[ $QUIET -eq 1 ]]; then > + git fetch >/dev/null > + git checkout ${COMMITHASH} >/dev/null > + else > + git fetch > + git checkout ${COMMITHASH} > + fi > +fi > + > +if [[ $QUIET -eq 1 ]]; then > + get_sources.sh > +else > + get_sources.sh -q > +fi > + > +if [[ $QUIET -eq 1 ]]; then > + rpmbuild --define "%_topdir `pwd`" --define "%dist `return_disttag.sh -q`" -bs --nodeps SPECS/*.spec > +else > + rpmbuild --define "%_topdir `pwd`" --define "%dist `return_disttag.sh`" -bs --nodeps SPECS/*.spec > +fi > + > + > + > +exit 1 > + > +# commit message contains white space, set IFS to \n > +IFS=' > +' > + > +if [[ "x${BRANCH}" != 'x' ]]; then > + loglist=$(git log ${BRANCH} --pretty="%H|%s" | filter) > + if [[ $? -ne 0 ]]; then > + exit 1 > + fi > +else > + loglist=$(git log --pretty="%H|%s" | filter) > + if [[ $? -ne 0 ]]; then > + exit 1 > + fi > +fi > + > +# flag for if nothing is found > +FOUND=False > +for entry in $loglist; do > + FOUND=True > + > + pkg=$(echo ${entry} | cut -d' ' -f2) > + # strip .src.rpm if present > + nvr="${pkg%.src.rpm}" > + if [[ ${WITHCOMMITHASH} -eq 1 ]]; then > + shasum=$(echo ${entry} | cut -d'|' -f1) > + echo "${shasum}:${nvr}.src.rpm" > + else > + echo "${nvr}.src.rpm" > + fi > +done > + > +if [ "${FOUND}" != "True" ] > +then > + warn "No SRPMs found" > +fi > + -- Pat Riehecky Scientific Linux developer http://www.scientificlinux.org/