From: Pat Riehecky riehecky@fnal.gov
With the recent adjustment of README.md to add GPLv2 as a default licence, I've updated the into_srpm.sh script to be a bit more flexible and use that licence by default.
README.md is also updated to reflect this new script
Pat Riehecky (1): Added script to re-create SRPM from git commit
README.md | 2 + into_srpm.sh | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+), 0 deletions(-) create mode 100755 into_srpm.sh
From: Pat Riehecky riehecky@fnal.gov
--- README.md | 2 + into_srpm.sh | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+), 0 deletions(-) create mode 100755 into_srpm.sh
diff --git a/README.md b/README.md index 97020f3..cdc37a5 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ This git repo contains the following scripts that make interfacing with git.c.o, Tools: * get_sources.sh: when run from inside a package git checkout, will download the relevant non-text sources from the lookaside cache and drop them into the SOURCES/ dir; note: it will generate 0 byte files in place, rather than download them.
+ * into_srpm.sh: reconstructs the srpm from a given commit + * centos.git.repolist.py: This package gets list of repos from gitblit RPC, used to grab CentOS sources. Requires the package 'python-requests' which is in the EPEL repo for CentOS-6. Has a -b switch to pick a specific branch (defaults to master, but you might want to use -b c7)
* return_disttag.sh: Extracts what appears to be the value of %{dist} from the commit message diff --git a/into_srpm.sh b/into_srpm.sh new file mode 100755 index 0000000..e2bec5e --- /dev/null +++ b/into_srpm.sh @@ -0,0 +1,152 @@ +#!/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: GPLv2 +# +# Initial Author: Pat Riehecky riehecky@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' >&2 + exit 1 +fi + +which git >/dev/null 2>&1 +if [[ $? -ne 0 ]]; then + echo 'You need git in PATH' >&2 + 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' >&2 + 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' >&2 + 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' >&2 + 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 + RC=$? +else + rpmbuild --define "%_topdir `pwd`" --define "%dist `return_disttag.sh`" -bs --nodeps SPECS/*.spec + RC=$? +fi + +if [[ ${RC} -ne 0 ]]; then + if [[ $QUIET -eq 1 ]]; then + echo "$0 failed to recreate srpm" >&2 + fi + exit 1 +fi
pushed
On 06/24/2014 11:31 AM, Pat Riehecky wrote:
From: Pat Riehecky riehecky@fnal.gov
README.md | 2 + into_srpm.sh | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+), 0 deletions(-) create mode 100755 into_srpm.sh
diff --git a/README.md b/README.md index 97020f3..cdc37a5 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ This git repo contains the following scripts that make interfacing with git.c.o, Tools:
- get_sources.sh: when run from inside a package git checkout, will download the relevant non-text sources from the lookaside cache and drop them into the SOURCES/ dir; note: it will generate 0 byte files in place, rather than download them.
- into_srpm.sh: reconstructs the srpm from a given commit
centos.git.repolist.py: This package gets list of repos from gitblit RPC, used to grab CentOS sources. Requires the package 'python-requests' which is in the EPEL repo for CentOS-6. Has a -b switch to pick a specific branch (defaults to master, but you might want to use -b c7)
return_disttag.sh: Extracts what appears to be the value of %{dist} from the commit message
diff --git a/into_srpm.sh b/into_srpm.sh new file mode 100755 index 0000000..e2bec5e --- /dev/null +++ b/into_srpm.sh @@ -0,0 +1,152 @@ +#!/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: GPLv2 +# +# Initial Author: Pat Riehecky riehecky@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' >&2
- exit 1
+fi
+which git >/dev/null 2>&1 +if [[ $? -ne 0 ]]; then
- echo 'You need git in PATH' >&2
- 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' >&2
- 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' >&2
- 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' >&2
- 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
- RC=$?
+else
- rpmbuild --define "%_topdir `pwd`" --define "%dist `return_disttag.sh`" -bs --nodeps SPECS/*.spec
- RC=$?
+fi
+if [[ ${RC} -ne 0 ]]; then
- if [[ $QUIET -eq 1 ]]; then
echo "$0 failed to recreate srpm" >&2
- fi
- exit 1
+fi