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]