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 openpkg-cvs@openpkg.org