OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Thomas Lotterer Root: /e/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-re Date: 31-Mar-2003 23:20:19 Branch: HEAD Handle: 2003033122201800 Modified files: openpkg-re openpkg-dev Log: implement PBE logic into setup() and dependencies Summary: Revision Changes Path 1.80 +106 -80 openpkg-re/openpkg-dev ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-re/openpkg-dev ============================================================================ $ cvs diff -u -r1.79 -r1.80 openpkg-dev --- openpkg-re/openpkg-dev 31 Mar 2003 18:39:38 -0000 1.79 +++ openpkg-re/openpkg-dev 31 Mar 2003 21:20:18 -0000 1.80 @@ -141,25 +141,40 @@ } setup () { + # honor optional parameters [[[spec]ctag]exec] + [ ".$1" != . ] && OPENPKG_SPEC="$1"; + [ ".$2" != . ] && OPENPKG_CTAG="$2"; + [ ".$3" != . ] && OPENPKG_EXEC="$3"; + + # OPENPKG_SPEC in setup() is only a flag to indicate minimal checkout + + # canonify OPENPKG_CTAG + canonifybranch "${OPENPKG_CTAG}" + OPENPKG_CTAG="${RV}" + + # canonify OPENPKG_EXEC + canonifybranch "${OPENPKG_EXEC:-$OPENPKG_CTAG}" + branch2instance "${RV}" + OPENPKG_EXEC="${RV}" + + # set P,B,E without having "cd()" already in place + P="${OPENPKG_SPEC}" + B="${OPENPKG_CTAG}" + E="${OPENPKG_EXEC}" + # sanity check - case ${OPENPKG_WORK} in + case "${OPENPKG_WORK}" in /?* ) ;; * ) die "working area ${OPENPKG_WORK} seems to be strange" ;; esac - if [ -d ${OPENPKG_WORK} ]; then + if [ -d "${OPENPKG_WORK}" ]; then die "working area ${OPENPKG_WORK} already exists" fi - # make sure a OpenPKG instance can be found - if [ ! -f ${OPENPKG_INST}/bin/rpm ]; then - echo "openpkg-dev:ERROR: no working OpenPKG instance found under ${OPENPKG_INST}" 1>&2 - exit 1 - fi - # create a working area echo "++ creating working area ${OPENPKG_WORK}" - if [ ! -d ${OPENPKG_WORK} ]; then - makedir 755 ${OPENPKG_WORK} || die "failed to create ${OPENPKG_WORK} directory" + if [ ! -d "${OPENPKG_WORK}" ]; then + makedir 755 "${OPENPKG_WORK}" || die "failed to create ${OPENPKG_WORK} directory" fi # sane environment @@ -167,7 +182,7 @@ # create a .cvsrc echo "++ creating CVS configuration (${OPENPKG_WORK}/.cvsrc)" - sed -e 's;^ *;;' <<EOF >${OPENPKG_WORK}/.cvsrc + sed -e 's;^ *;;' <<EOF >"${OPENPKG_WORK}/.cvsrc" cvs -z4 checkout -P update -P -d @@ -176,7 +191,7 @@ EOF echo "++ creating CVS file ignore list (${OPENPKG_WORK}/.cvsignore)" - sed -e 's;^ *;;' <<EOF >${OPENPKG_WORK}/.cvsignore + sed -e 's;^ *;;' <<EOF >"${OPENPKG_WORK}/.cvsignore" .[a-za-Z0-9]* 00README dst @@ -185,14 +200,10 @@ # create a .rpmmacros, save existing, overwrite only if different echo "++ creating RPM configuration (${OPENPKG_WORK}/.rpmmacros)" - sed -e 's;^ *;;' <<EOF >${OPENPKG_WORK}/.rpmmacros + sed -e 's;^ *;;' <<EOF >"${OPENPKG_WORK}/.rpmmacros" # source areas %_sourcedir %(echo \${OPENPKG_WORK})/dst/%{name} %_specdir %(echo \${OPENPKG_WORK})/src/%{name} - - # source areas (special setup; enable on demand) - #%_sourcedir %(echo \${OPENPKG_WORK})/dst/%{name} - #%_specdir %(echo \${OPENPKG_WORK})/%(pwd | sed -e 's;^.*/\\(src-[^/][^/]*\).*\$;=\\1;' -e 's;^[^=].*\$;src;' -e 's;^=;;')/%{name} # temporary areas %_builddir %(echo \${OPENPKG_TEMP}) @@ -202,17 +213,8 @@ %_rpmdir %(echo \${OPENPKG_WORK})/pkg/bin %_srcrpmdir %(echo \${OPENPKG_WORK})/pkg/src EOF - echo "++ creating directory structure (${OPENPKG_REPO}/{dst,pkg})" - if [ ! -d ${OPENPKG_WORK}/dst ]; then - makedir 755 ${OPENPKG_WORK}/dst || die "failed to create ${OPENPKG_WORK}/dst directory" - fi - if [ ! -d ${OPENPKG_WORK}/pkg/src ]; then - makedir 755 ${OPENPKG_WORK}/pkg/src || die "failed to create ${OPENPKG_WORK}/pkg/src directory" - fi - if [ ! -d ${OPENPKG_WORK}/pkg/bin ]; then - makedir 755 ${OPENPKG_WORK}/pkg/bin || die "failed to create ${OPENPKG_WORK}/pkg/bin directory" - fi + echo "++ creating directory structure (${OPENPKG_REPO}/{dst,pkg})" # special overridden setup for dev.de.cw.net domain case `hostname` in *.dev.de.cw.net ) @@ -227,51 +229,73 @@ echo "%_rpmdir /e/openpkg/PKG/bin" echo "%_srcrpmdir /e/openpkg/PKG/src" ) >>${OPENPKG_WORK}/.rpmmacros - rm -rf ${OPENPKG_WORK}/dst - ln -s /e/openpkg/DST ${OPENPKG_WORK}/dst - rm -rf ${OPENPKG_WORK}/pkg - ln -s /e/openpkg/PKG ${OPENPKG_WORK}/pkg + if [ ! -d "${OPENPKG_WORK}/dst" ]; then + ln -s /e/openpkg/DST "${OPENPKG_WORK}/dst" || die "failed to link to ${OPENPKG_WORK}/dst directory" + fi + if [ ! -d "${OPENPKG_WORK}/pkg" ]; then + ln -s /e/openpkg/PKG "${OPENPKG_WORK}/pkg" || die "failed to link to ${OPENPKG_WORK}/pkg directory" + fi ;; + * ) + if [ ! -d "${OPENPKG_WORK}/dst" ]; then + makedir 755 "${OPENPKG_WORK}/dst" || die "failed to create ${OPENPKG_WORK}/dst directory" + fi + if [ ! -d "${OPENPKG_WORK}/pkg/src" ]; then + makedir 755 ${OPENPKG_WORK}/pkg/src || die "failed to create ${OPENPKG_WORK}/pkg/src directory" + fi + if [ ! -d "${OPENPKG_WORK}/pkg/bin" ]; then + makedir 755 ${OPENPKG_WORK}/pkg/bin || die "failed to create ${OPENPKG_WORK}/pkg/bin directory" + fi esac # checkout the CVS module(s) - echo "++ checking out source areas (${OPENPKG_REPO}/{src,web,doc,re,adm})" - ( cd ${OPENPKG_WORK} - HOME=${OPENPKG_WORK} - export HOME - cvs -q -d ${OPENPKG_REPO} checkout openpkg-dev-web openpkg-dev-doc openpkg-dev-re openpkg-dev-adm - if [ ".${OPENPKG_CTAG:-HEAD}" = .HEAD ]; then - cvs -q -d ${OPENPKG_REPO} checkout openpkg-dev-src - else - cvs -q -d ${OPENPKG_REPO} checkout -r ${OPENPKG_CTAG} openpkg-dev-src - fi - ) + if [ ".${P}" = . ]; then + echo "++ checking out source areas (${OPENPKG_REPO}/{adm,doc,re,src,web})" + ( cd "${OPENPKG_WORK}" + HOME="${OPENPKG_WORK}" + export HOME + cvs -q -d "${OPENPKG_REPO}" checkout openpkg-dev-adm openpkg-dev-doc openpkg-dev-re openpkg-dev-web + if [ ".${B:-HEAD}" = .HEAD ]; then + cvs -q -d "${OPENPKG_REPO}" checkout openpkg-dev-src + else + cvs -q -d "${OPENPKG_REPO}" checkout -r ${B} openpkg-dev-src + fi + ) + else + echo "++ checking out source areas (${OPENPKG_REPO}/{re,src})" + ( cd "${OPENPKG_WORK}" + HOME="${OPENPKG_WORK}" + export HOME + cvs -q -d "${OPENPKG_REPO}" checkout openpkg-dev-re + if [ ".${B:-HEAD}" = .HEAD ]; then + cvs -q -d "${OPENPKG_REPO}" checkout openpkg-dev-src + else + cvs -q -d "${OPENPKG_REPO}" checkout -r ${B} openpkg-dev-src + fi + ) + fi echo "++ creating README file (${OPENPKG_REPO}/00README)" sed -e 's;^ *;;' <<EOF >${OPENPKG_WORK}/00README OpenPKG Development Area [created by openpkg-dev] - \$ openpkg-dev setup ..... already been done ;) \$ openpkg-dev bash ...... enter development environment - \$ openpkg-dev update .... update development environment from master server - - \$ openpkg-dev package ... switch to a different package \$ openpkg-dev branch .... switch to a different branch + \$ openpkg-dev diff ...... dry run "release" \$ openpkg-dev execute ... execute command on instance closest to branch + \$ openpkg-dev help ...... display this command summary + \$ openpkg-dev install ... install a package + \$ openpkg-dev kill ...... kill the environment + \$ openpkg-dev lint ...... lint package specification \$ openpkg-dev list ...... list source and binary packages - \$ openpkg-dev peek ...... peek at file list of binary package - \$ openpkg-dev search .... search a package on master server - \$ openpkg-dev new ....... create new packag from scratch - \$ openpkg-dev diff ...... dry run "release" - \$ openpkg-dev lint ...... lint package specification + \$ openpkg-dev package ... switch to a different package + \$ openpkg-dev peek ...... peek at file list of binary package \$ openpkg-dev release ... release package changes to master server - \$ openpkg-dev install ... install a package - - \$ openpkg-dev kill ...... kill the environment - \$ openpkg-dev help ...... display this command summary + \$ openpkg-dev search .... search a package on master server + \$ openpkg-dev setup ..... already been done ;) + \$ openpkg-dev update .... update development environment from master server EOF - } update () { @@ -352,8 +376,8 @@ fi # setup variables for use or query - anybin2branch "${1}" - branch="${B}" + canonifybranch "${1}" + branch="${RV}" # execute query, if any if [ ".${query}" != . ]; then @@ -376,8 +400,8 @@ execute () { # no parameter means guessing if [ ".$1" = . ]; then - #B=`command ${OPENPKG_WORK}/re/openpkg-dev branch -query branch "$1"` - branch2instance + branch2instance "${B}" + E=${RV} echo "${E}" return fi @@ -427,7 +451,7 @@ fi } -# convert any (branch|instance|name) into branch and set ${B} +# convert any (branch|instance|name) into branch and return ${RV} # # Branch Instance Name # ------------------- ---------- -------- @@ -437,40 +461,40 @@ # OPENPKG_1_1_SOLID /cw11 1.1 # OPENPKG_1_0_SOLID /cw10 1.0 # -anybin2branch () { +canonifybranch () { # remove surrounding whitespaces, take first arg only, toupper - B=`echo $1 | cut -f 1 -d" " | tr '[a-z]' '[A-Z]'` + RV=`echo ${1:-HEAD} | cut -f 1 -d" " | tr '[a-z]' '[A-Z]'` # strip off any abbreviated form of a leading OPENPKG_ - B=`echo "${B}" | sed -e 's;^O\{0,1\}P\{0,1\}E\{0,1\}N\{0,1\}P\{0,1\}K\{0,1\}G\{0,1\}_\{0,1\};;'` + RV=`echo "${RV}" | sed -e 's;^O\{0,1\}P\{0,1\}E\{0,1\}N\{0,1\}P\{0,1\}K\{0,1\}G\{0,1\}_\{0,1\};;'` # transform instance into branch - B=`echo "${B}" | sed -e 's;^/[A-Z]\{1,\}$;HEAD;' -e 's;^/[A-Z]\{1,\}\([1-9]\);\1_;'` + RV=`echo "${RV}" | sed -e 's;^/[A-Z]\{1,\}$;HEAD;' -e 's;^/[A-Z]\{1,\}\([1-9]\);\1_;'` # replace dots from (SOLID name) and dashes (STABLE name) with underscore for convenience - B=`echo "${B}" | sed -e 's;[\.-];_;g'` + RV=`echo "${RV}" | sed -e 's;[\.-];_;g'` # emptiness means invalid branch - if [ ".${B}" = . ]; then + if [ ".${RV}" = . ]; then return fi # check for HEAD (branch) aka CURRENT (name) - echo "CURRENT" | egrep -q "^${B}" && B="HEAD" - echo "HEAD" | egrep -q "^${B}" && B="HEAD" + echo "CURRENT" | egrep -q "^${RV}" && RV="HEAD" + echo "HEAD" | egrep -q "^${RV}" && RV="HEAD" - if [ .${B} != ".HEAD" ]; then + if [ .${RV} != ".HEAD" ]; then # extract branchpoint (1, 1_1 ...) and optional direction - BRANBP=`echo "${B}" | sed -e 's;^\([1-9][0-9]*\(_\{0,1\}[0-9]*\)\)\(.*\)$;\1;' -e 's;_*$;;'` - BRANDR=`echo "${B}" | sed -e 's;^\([1-9][0-9]*\(_\{0,1\}[0-9]*\)\)\(.*\)$;\3;' -e 's;^_*;;'` + BRANBP=`echo "${RV}" | sed -e 's;^\([1-9][0-9]*\(_\{0,1\}[0-9]*\)\)\(.*\)$;\1;' -e 's;_*$;;'` + BRANDR=`echo "${RV}" | sed -e 's;^\([1-9][0-9]*\(_\{0,1\}[0-9]*\)\)\(.*\)$;\3;' -e 's;^_*;;'` # select direction, check optional direction echo ${BRANBP} | grep -q '_' if [ $? = 0 ]; then - B="OPENPKG_${BRANBP}_SOLID" + RV="OPENPKG_${BRANBP}_SOLID" else - B="OPENPKG_${BRANBP}_STABLE" + RV="OPENPKG_${BRANBP}_STABLE" fi unset BRANBP @@ -479,7 +503,7 @@ } branch2instance () { - INSTANCE=`echo "${B}" | sed -e 's;^OPENPKG_;;' -e 's;_STABLE$;;' -e 's;SOLID$;;' -e 's;^HEAD$;;' -e 's;_;;g'` + INSTANCE=`echo "$1" | sed -e 's;^OPENPKG_;;' -e 's;_STABLE$;;' -e 's;SOLID$;;' -e 's;^HEAD$;;' -e 's;_;;g'` OPMAJORV=`echo ${INSTANCE} | cut -c 1` OPMINORV=`echo ${INSTANCE} | cut -c 2` AVAILINS=`echo ${OPENPKG_INST}${OPENPKG_WILD} | tr ' ' '\n' | sort` @@ -496,7 +520,7 @@ ADD=`echo "${AVAILINS}" | egrep "^${OPENPKG_INST}$"` INSTANCE="${INSTANCE} ${ADD}" fi - E="`echo ${INSTANCE} | tr ' ' '\n' | head -n 1`" + RV="`echo ${INSTANCE} | tr ' ' '\n' | head -n 1`" unset ADD AVAILINS OPMINORV OPMAJORV INSTANCE } @@ -1197,24 +1221,26 @@ # ------------------------------------------------------------ +# when invoked without any parameter, artifically inject "bash" command as default if [ $# -eq 0 ]; then set -- bash fi +# extract command parameter cmd="$1" shift -# create a unique id +# create a unique id for unique temporary files GUID=".`date +%Y%m%d%H%M%S`-$$" -# make sure environment is set up +# make sure environment is set up [ ".${OPENPKG_INST}" = . ] && die "OPENPKG_INST is not set"; -[ ".${OPENPKG_WILD}" = . ] && echo "OPENPKG_WILD is not set"; +[ ".${OPENPKG_WILD}" = . ] && die "OPENPKG_WILD is not set"; [ ".${OPENPKG_WORK}" = . ] && die "OPENPKG_WORK is not set"; [ ".${OPENPKG_REPO}" = . ] && die "OPENPKG_REPO is not set"; [ ".${OPENPKG_DIST}" = . ] && die "OPENPKG_DIST is not set"; -# handle command +# handle command case ${cmd} in bash | ba* ) cmd="bash" ;; branch | br* ) cmd="branch" ;; @@ . ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List [EMAIL PROTECTED]