OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Thomas Lotterer
Root: /v/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-tools Date: 02-Aug-2005 20:29:10
Branch: HEAD Handle: 2005080219290900
Modified files:
openpkg-tools/cmd dev.sh
Log:
new feature for "openpkg dev build" now automatically sets release
header once a locally changed CVS file is detected
Summary:
Revision Changes Path
1.42 +90 -61 openpkg-tools/cmd/dev.sh
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-tools/cmd/dev.sh
============================================================================
$ cvs diff -u -r1.41 -r1.42 dev.sh
--- openpkg-tools/cmd/dev.sh 1 Aug 2005 19:23:29 -0000 1.41
+++ openpkg-tools/cmd/dev.sh 2 Aug 2005 18:29:09 -0000 1.42
@@ -580,6 +580,71 @@
HOME=${OPENPKG_WORK} command cvs ${1+"$@"} | $cvs_colorize
}
+# shared code between "build" and "release"
+_autorel () {
+ echo "++ determine old version (if any)"
+ tmpfile="${OPENPKG_TEMP}/${name}${GUID}"
+ cvs_stat=`builtin cd ${OPENPKG_WORK}; cvs -d ${OPENPKG_REPO} stat
$S/${name}/${name}.spec 2>/dev/null | grep 'Repository revision:'`
+ cvs_rev=`echo "${cvs_stat}" | ${AWK} '/Repository revision:/ { print $3;
}'`
+ cvs_dead=`echo "${cvs_stat}" | grep '/Attic/'`
+ if [ ".${cvs_dead}" != . ]; then
+ cvs_rev="No"
+ fi
+ if [ ".${cvs_rev}" != .No ]; then
+ cvs -d ${OPENPKG_REPO} co -p -r${cvs_rev}
"${OPENPKG_RMOD}/${name}/${name}.spec" >${tmpfile} 2>/dev/null
+ rpm_version_old=`rpmE -q --qf "%{VERSION}" --specfile ${tmpfile}
2>/dev/null`
+ rpm_release_old=`rpmE -q --qf "%{RELEASE}" --specfile ${tmpfile}
2>/dev/null`
+ command rm -f ${tmpfile}
+ [ ".${rpm_version_old}" = . ] && die "cannot determine old version
number"
+ [ ".${rpm_release_old}" = . ] && die "cannot determine old release
number"
+ fi
+
+ echo "++ determine new version"
+ rpm_version_new=`rpmE -q --qf "%{VERSION}" --specfile
${OPENPKG_WORK}/$S/${name}/${name}.spec`
+ rpm_name=`rpmE -q --qf "%{NAME}" --specfile
${OPENPKG_WORK}/$S/${name}/${name}.spec`
+ rpm_summary=`rpmE -q --qf "%{SUMMARY}" --specfile
${OPENPKG_WORK}/$S/${name}/${name}.spec`
+ [ ".${rpm_version_new}" = . ] && die "cannot determine new version
number"
+
+ echo "++ determine branch and related release number and upload suffix"
+ rpm_release_new=`rpmE -q --qf "%{RELEASE}" --specfile
${OPENPKG_WORK}/$S/${name}/${name}.spec`
+ [ ".${rpm_release_new}" = . ] && die "cannot determine new release
number"
+
+ if [ ".$B" = .HEAD ]; then
+ BRANCH="HEAD"
+ else
+ BRANCH=`echo "$B" | sed -e 's;^OPENPKG_;;' -e 's;_STABLE$;;' -e
's;SOLID$;;' -e 's;^HEAD$;;' -e 's;_;;g'`
+ OPMAJORV=`echo ${BRANCH} | cut -c 1`
+ OPMINORV=`echo ${BRANCH} | cut -c 2`
+ if [ ".${OPMINORV}" != . ]; then
+ BRANCH="SOLID"
+ elif [ ".${OPMAJORV}" != . ]; then
+ BRANCH="STABLE"
+ else
+ BRANCH=""
+ fi
+ fi
+ rpm_release_req=""
+ upload=""
+ if [ ".${BRANCH}" = .HEAD ]; then
+ rpm_release_req=`date '+%Y%m%d'`
+ upload="current/SRC/"
+ fi
+ if [ ".${BRANCH}" = .STABLE ]; then
+ rpm_release_req="${OPMAJORV}.`date '+%Y%m%d'`"
+ upload="stable/${OPMAJORV}/SRC/"
+ fi
+ if [ ".${BRANCH}" = .SOLID ]; then
+ update=`echo ${rpm_release_old} | sed -e 's;^.*\.;;'`
+ if [ ".${update}" = . ]; then
+ update=0
+ else
+ update=`expr ${update} + 1`
+ fi
+ rpm_release_req="${OPMAJORV}.${OPMINORV}.${update}"
+ upload="release/${OPMAJORV}.${OPMINORV}/UPD/00UPLOAD/"
+ fi
+}
+
setup () {
# honor optional parameters [[[spec]ctag]exec]; use "" to specify a
empty parameter and use it's default
[ ".$1" != . ] && OPENPKG_SPEC="$1"
@@ -1555,67 +1620,7 @@
[ -f "${OPENPKG_WORK}/pkg/src/${rpmfile}.nosrc.rpm" ] &&
ext="nosrc.rpm"
[ ".$ext" = . ] && die
"${OPENPKG_WORK}/pkg/src/${rpmfile}.[no]src.rpm not found"
- echo "++ determine old version (if any)"
- tmpfile="${OPENPKG_TEMP}/${name}${GUID}"
- cvs_stat=`builtin cd ${OPENPKG_WORK}; cvs -d ${OPENPKG_REPO}
stat $S/${name}/${name}.spec 2>/dev/null | grep 'Repository revision:'`
- cvs_rev=`echo "${cvs_stat}" | ${AWK} '/Repository revision:/ {
print $3; }'`
- cvs_dead=`echo "${cvs_stat}" | grep '/Attic/'`
- if [ ".${cvs_dead}" != . ]; then
- cvs_rev="No"
- fi
- if [ ".${cvs_rev}" != .No ]; then
- cvs -d ${OPENPKG_REPO} co -p -r${cvs_rev}
"${OPENPKG_RMOD}/${name}/${name}.spec" >${tmpfile} 2>/dev/null
- rpm_version_old=`rpmE -q --qf "%{VERSION}" --specfile
${tmpfile} 2>/dev/null`
- rpm_release_old=`rpmE -q --qf "%{RELEASE}" --specfile
${tmpfile} 2>/dev/null`
- command rm -f ${tmpfile}
- [ ".${rpm_version_old}" = . ] && die "cannot determine old
version number"
- [ ".${rpm_release_old}" = . ] && die "cannot determine old
release number"
- fi
-
- echo "++ determine new version"
- rpm_version_new=`rpmE -q --qf "%{VERSION}" --specfile
${OPENPKG_WORK}/$S/${name}/${name}.spec`
- rpm_release_new=`rpmE -q --qf "%{RELEASE}" --specfile
${OPENPKG_WORK}/$S/${name}/${name}.spec`
- rpm_name=`rpmE -q --qf "%{NAME}" --specfile
${OPENPKG_WORK}/$S/${name}/${name}.spec`
- rpm_summary=`rpmE -q --qf "%{SUMMARY}" --specfile
${OPENPKG_WORK}/$S/${name}/${name}.spec`
- [ ".${rpm_version_new}" = . ] && die "cannot determine new
version number"
- [ ".${rpm_release_new}" = . ] && die "cannot determine new
release number"
-
- echo "++ determine branch and related release number and upload
suffix"
- if [ ".$B" = .HEAD ]; then
- BRANCH="HEAD"
- else
- BRANCH=`echo "$B" | sed -e 's;^OPENPKG_;;' -e 's;_STABLE$;;'
-e 's;SOLID$;;' -e 's;^HEAD$;;' -e 's;_;;g'`
- OPMAJORV=`echo ${BRANCH} | cut -c 1`
- OPMINORV=`echo ${BRANCH} | cut -c 2`
- if [ ".${OPMINORV}" != . ]; then
- BRANCH="SOLID"
- elif [ ".${OPMAJORV}" != . ]; then
- BRANCH="STABLE"
- else
- BRANCH=""
- fi
- fi
- rpm_release_req=""
- upload=""
- if [ ".${BRANCH}" = .HEAD ]; then
- rpm_release_req=`date '+%Y%m%d'`
- upload="current/SRC/"
- fi
- if [ ".${BRANCH}" = .STABLE ]; then
- rpm_release_req="${OPMAJORV}.`date '+%Y%m%d'`"
- #upload="stable/${OPMAJORV}/SRC/"
- upload="stable/SRC/"
- fi
- if [ ".${BRANCH}" = .SOLID ]; then
- update=`echo ${rpm_release_old} | sed -e 's;^.*\.;;'`
- if [ ".${update}" = . ]; then
- update=0
- else
- update=`expr ${update} + 1`
- fi
- rpm_release_req="${OPMAJORV}.${OPMINORV}.${update}"
- upload="release/${OPMAJORV}.${OPMINORV}/UPD/00UPLOAD/"
- fi
+ _autorel
if [ ".${OPENPKG_REPO}" = "[EMAIL PROTECTED]:/v/openpkg/cvs" ];
then
echo "++ checking release number"
@@ -2063,6 +2068,30 @@
warn "${OPENPKG_WORK}/$S/${name}/${name}.spec not found"
continue
fi
+
+ if [ $force -eq 0 -a ".${OPENPKG_REPO}" = "[EMAIL
PROTECTED]:/v/openpkg/cvs" ]; then
+ echo "++ checking whether release header was already modified"
+ (builtin cd ${OPENPKG_WORK}/$S/${name} && command cvs 2>&1 diff
-u0 ${name}.spec) \
+ | ${EGREP} '^[+-]Release: +' | wc -l | ${EGREP} '^ *2 *'
>/dev/null
+ if [ $? -ne 0 ]; then
+ echo "++ checking for local added, modified or removed files"
+ (builtin cd ${OPENPKG_WORK}/$S/${name} && command cvs 2>&1
stat) \
+ | ${EGREP} 'Status: *Locally' >/dev/null
+ if [ $? -eq 0 ]; then
+ _autorel
+ if [ ".$rpm_release_req" = . ]; then
+ die "cannot predict required release number for
branch $B"
+ fi
+ if [ ".$rpm_release_new" != ".$rpm_release_req" ]; then
+ echo "++ modifying release number"
+ ( builtin cd ${OPENPKG_WORK}/$S/${name} \
+ && sed -e "s;^\(Release:
*\).*$;\1$rpm_release_req;" <${name}.spec >${name}.spec.n; \
+ mv ${name}.spec.n ${name}.spec)
+ fi
+ fi
+ fi
+ fi
+
package=`rpmE -q --qf "%{NAME}-%{VERSION}-%{RELEASE}" \
--specfile ${OPENPKG_WORK}/$S/${name}/${name}.spec`
template=`rpmE --eval '%{_rpmfilename}'`
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [email protected]