mirror of
https://git.centos.org/centos-git-common.git
synced 2025-02-23 08:12:56 +00:00
Added script to re-create SRPM from git commit
This commit is contained in:
parent
061172c484
commit
87c8aeb8f6
2 changed files with 154 additions and 0 deletions
|
@ -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
|
||||
|
|
152
into_srpm.sh
Executable file
152
into_srpm.sh
Executable file
|
@ -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 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' >&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
|
Loading…
Add table
Reference in a new issue