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: 02-Apr-2003 10:37:46
Branch: HEAD Handle: 2003040209374500
Modified files:
openpkg-re openpkg-dev
Log:
update 00README and move maintenance from setup() into help()
fix possible problem in release() where $package was not preinitialized
three second penalty and hint to fix it when using obsolete $OPENPKG_DIST
new() now supports multiple packages and dry run
install() and search() now follow PBE logic
lint() supports PBE logic and also accepts files and directories
Summary:
Revision Changes Path
1.85 +215 -139 openpkg-re/openpkg-dev
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-re/openpkg-dev
============================================================================
$ cvs diff -u -r1.84 -r1.85 openpkg-dev
--- openpkg-re/openpkg-dev 2 Apr 2003 07:56:33 -0000 1.84
+++ openpkg-re/openpkg-dev 2 Apr 2003 08:37:45 -0000 1.85
@@ -276,26 +276,7 @@
fi
echo "++ creating README file (${OPENPKG_REPO}/00README)"
- sed -e 's;^ *;;' <<EOF >${OPENPKG_WORK}/00README
- OpenPKG Development Area [created by openpkg-dev]
-
- \$ openpkg-dev bash ...... enter development environment
- \$ 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 new ....... create new packag from scratch
- \$ 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 search .... search a package on master server
- \$ openpkg-dev setup ..... already been done ;)
- \$ openpkg-dev update .... update development environment from master server
-EOF
+ help
}
update () {
@@ -922,6 +903,7 @@
# honor optional parameters [-dry] [-m "message"]
dry=0
msg=""
+ packages=""
while [ ".$1" != . ]; do
case ".$1" in
.-dry ) dry=1 ;;
@@ -972,7 +954,9 @@
# compatiblity FIXME
echo "${OPENPKG_DIST}" | egrep -q "/current/SRC/?$"
if [ $? -eq 0 ]; then
- warn "deprecated suffix /current/src in OPENPKG_DIST=${OPENPKG_DIST}.
Please fix."
+ warn "deprecated suffix /current/src in OPENPKG_DIST=${OPENPKG_DIST}."
+ warn "This might come from your ~/.openpkg-dev.rc file. Please fix."
+ warn "Three second penalty :-)"
sleep 3
OPENPKG_DIST=`echo ${OPENPKG_DIST} | sed -e 's;/$;;' -e
's;/current/src$;;'`
fi
@@ -1209,139 +1193,183 @@
}
new () {
- name=$1
- shift
- if [ -d "${OPENPKG_WORK}/src/${name}" ]; then
- die "directory ${OPENPKG_WORK}/src/${name} already exists -- remove first"
- fi
-
- echo "++ creating openpkg-src/${name}/ CVS area"
- makedir 755 ${OPENPKG_WORK}/src/${name} || die "cannot create
${OPENPKG_WORK}/src/${name}"
- ( cd ${OPENPKG_WORK}/src && cvs -d ${OPENPKG_REPO} add ${name} )
-
- echo "++ creating openpkg-src/${name}/${name}.spec skeleton"
- year=`date '+%Y'`
- ( echo "##"
- echo "## ${name}.spec -- OpenPKG RPM Specification"
- echo "## Copyright (c) 2000-${year} Cable & Wireless Deutschland GmbH"
- echo "## Copyright (c) 2000-${year} The OpenPKG Project
<http://www.openpkg.org/>"
- echo "## Copyright (c) 2000-${year} Ralf S. Engelschall <[EMAIL PROTECTED]>"
- echo "##"
- echo "## Permission to use, copy, modify, and distribute this software for"
- echo "## any purpose with or without fee is hereby granted, provided that"
- echo "## the above copyright notice and this permission notice appear in all"
- echo "## copies."
- echo "##"
- echo "## THIS SOFTWARE IS PROVIDED \`\`AS IS'' AND ANY EXPRESSED OR IMPLIED"
- echo "## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF"
- echo "## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED."
- echo "## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR"
- echo "## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,"
- echo "## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT"
- echo "## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF"
- echo "## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND"
- echo "## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,"
- echo "## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT"
- echo "## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF"
- echo "## SUCH DAMAGE."
- echo "##"
- echo ""
- echo "# package information"
- echo "Name: ${name}"
- echo "Summary: Badly Packaged Program"
- echo "URL: http://www.${name}.org/"
- echo "Vendor: John Doe"
- echo "Packager: The OpenPKG Project"
- echo "Distribution: OpenPKG [EVAL]"
- echo "Group: Misc"
- echo "License: GPL"
- echo "Version: 7.42"
- echo "Release: `date '+%Y%m%d'`"
- echo ""
- echo "# list of sources"
- echo "Source0:
ftp://ftp.${name}.org/pub/${name}/${name}-%{version}.tar.gz"
- echo ""
- echo "# build information"
- echo "Prefix: %{l_prefix}"
- echo "BuildRoot: %{l_buildroot}"
- echo "BuildPreReq: OpenPKG, openpkg >= 20030103"
- echo "PreReq: OpenPKG, openpkg >= 20030103"
- echo "AutoReq: no"
- echo "AutoReqProv: no"
- echo ""
- echo "%description"
- echo " ${name} is the most badly packaged program in the OpenPKG world."
- echo ""
- echo "%prep"
- echo " %setup -q"
- echo ""
- echo "%build"
- echo " CC=\"%{l_cc}\" \\"
- echo " CXX=\"%{l_cxx}\" \\"
- echo " CFLAGS=\"%{l_cflags -O}\" \\"
- echo " CXXFLAGS=\"%{l_cxxflags -O}\" \\"
- echo " CPPFLAGS=\"%{l_cppflags}\" \\"
- echo " LDFLAGS=\"%{l_ldflags}\" \\"
- echo " ./configure \\"
- echo " --prefix=%{l_prefix}"
- echo " %{l_make} %{l_mflags -O}"
- echo ""
- echo "%install"
- echo " rm -rf \$RPM_BUILD_ROOT"
- echo " %{l_make} %{l_mflags} install
AM_MAKEFLAGS=\"DESTDIR=\$RPM_BUILD_ROOT\""
- echo " strip \$RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true"
- echo " %{l_rpmtool} files -v -ofiles -r\$RPM_BUILD_ROOT %{l_files_std}"
- echo ""
- echo "%files -f files"
- echo ""
- echo "%clean"
- echo " rm -rf \$RPM_BUILD_ROOT"
- echo ""
- ) >${OPENPKG_WORK}/src/${name}/${name}.spec
- ( cd ${OPENPKG_WORK}/src/${name} && cvs -d ${OPENPKG_REPO} add ${name}.spec )
-
- echo "++ creating openpkg-re/vcheck/vc.${name} skeleton"
- ( echo "config = {"
- echo "}"
- echo ""
- echo "prog ${name} = {"
- echo " version = 7.42"
- echo " url = ftp://ftp.${name}.org/pub/${name}/"
- echo " regex = ${name}-(__VER__)\.tar\.gz"
- echo "}"
- echo ""
- ) >${OPENPKG_WORK}/re/vcheck/vc.${name}
- ( cd ${OPENPKG_WORK}/re/vcheck && cvs -d ${OPENPKG_REPO} add vc.${name} )
+ # honor optional parameters [-dry] [-m "message"]
+ dry=0
+ packages=""
+ while [ ".$1" != . ]; do
+ case ".$1" in
+ .-dry ) dry=1 ;;
+ * ) packages="$packages $1"
+ esac
+ shift
+ done
+
+ if [ ".$packages" = . ]; then
+ die "package cannot be identified. Parameter is mandatory."
+ else
+ all="$packages"
+ fi
+
+ for name in $all; do
+ if [ -d "${OPENPKG_WORK}/src/${name}" ]; then
+ die "directory ${OPENPKG_WORK}/src/${name} already exists -- remove
first"
+ fi
+
+ echo "++ creating openpkg-src/${name}/ CVS area"
+ if [ ${dry} -eq 0 ]; then
+ makedir 755 ${OPENPKG_WORK}/src/${name} || die "cannot create
${OPENPKG_WORK}/src/${name}"
+ ( cd ${OPENPKG_WORK}/src && cvs -d ${OPENPKG_REPO} add ${name} )
+ else
+ echo "makedir 755 ${OPENPKG_WORK}/src/${name}"
+ echo "cd ${OPENPKG_WORK}/src && cvs -d ${OPENPKG_REPO} add ${name}"
+ fi
+
+ echo "++ creating openpkg-src/${name}/${name}.spec skeleton"
+ year=`date '+%Y'`
+ if [ ${dry} -eq 0 ]; then
+ ( echo "##"
+ echo "## ${name}.spec -- OpenPKG RPM Specification"
+ echo "## Copyright (c) 2000-${year} Cable & Wireless Deutschland
GmbH"
+ echo "## Copyright (c) 2000-${year} The OpenPKG Project
<http://www.openpkg.org/>"
+ echo "## Copyright (c) 2000-${year} Ralf S. Engelschall <[EMAIL
PROTECTED]>"
+ echo "##"
+ echo "## Permission to use, copy, modify, and distribute this
software for"
+ echo "## any purpose with or without fee is hereby granted, provided
that"
+ echo "## the above copyright notice and this permission notice
appear in all"
+ echo "## copies."
+ echo "##"
+ echo "## THIS SOFTWARE IS PROVIDED \`\`AS IS'' AND ANY EXPRESSED OR
IMPLIED"
+ echo "## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF"
+ echo "## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED."
+ echo "## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND
THEIR"
+ echo "## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL,"
+ echo "## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT"
+ echo "## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF"
+ echo "## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND"
+ echo "## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY,"
+ echo "## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
WAY OUT"
+ echo "## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF"
+ echo "## SUCH DAMAGE."
+ echo "##"
+ echo ""
+ echo "# package information"
+ echo "Name: ${name}"
+ echo "Summary: Badly Packaged Program"
+ echo "URL: http://www.${name}.org/"
+ echo "Vendor: John Doe"
+ echo "Packager: The OpenPKG Project"
+ echo "Distribution: OpenPKG [EVAL]"
+ echo "Group: Misc"
+ echo "License: GPL"
+ echo "Version: 7.42"
+ echo "Release: `date '+%Y%m%d'`"
+ echo ""
+ echo "# list of sources"
+ echo "Source0:
ftp://ftp.${name}.org/pub/${name}/${name}-%{version}.tar.gz"
+ echo ""
+ echo "# build information"
+ echo "Prefix: %{l_prefix}"
+ echo "BuildRoot: %{l_buildroot}"
+ echo "BuildPreReq: OpenPKG, openpkg >= 20030103"
+ echo "PreReq: OpenPKG, openpkg >= 20030103"
+ echo "AutoReq: no"
+ echo "AutoReqProv: no"
+ echo ""
+ echo "%description"
+ echo " ${name} is the most badly packaged program in the OpenPKG
world."
+ echo ""
+ echo "%prep"
+ echo " %setup -q"
+ echo ""
+ echo "%build"
+ echo " CC=\"%{l_cc}\" \\"
+ echo " CXX=\"%{l_cxx}\" \\"
+ echo " CFLAGS=\"%{l_cflags -O}\" \\"
+ echo " CXXFLAGS=\"%{l_cxxflags -O}\" \\"
+ echo " CPPFLAGS=\"%{l_cppflags}\" \\"
+ echo " LDFLAGS=\"%{l_ldflags}\" \\"
+ echo " ./configure \\"
+ echo " --prefix=%{l_prefix}"
+ echo " %{l_make} %{l_mflags -O}"
+ echo ""
+ echo "%install"
+ echo " rm -rf \$RPM_BUILD_ROOT"
+ echo " %{l_make} %{l_mflags} install
AM_MAKEFLAGS=\"DESTDIR=\$RPM_BUILD_ROOT\""
+ echo " strip \$RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 ||
true"
+ echo " %{l_rpmtool} files -v -ofiles -r\$RPM_BUILD_ROOT
%{l_files_std}"
+ echo ""
+ echo "%files -f files"
+ echo ""
+ echo "%clean"
+ echo " rm -rf \$RPM_BUILD_ROOT"
+ echo ""
+ ) >${OPENPKG_WORK}/src/${name}/${name}.spec
+ ( cd ${OPENPKG_WORK}/src/${name} && cvs -d ${OPENPKG_REPO} add
${name}.spec )
+ else
+ echo "creating ${OPENPKG_WORK}/src/${name}/${name}.spec"
+ echo "cd ${OPENPKG_WORK}/src/${name} && cvs -d ${OPENPKG_REPO} add
${name}.spec"
+ fi
+
+ echo "++ creating openpkg-re/vcheck/vc.${name} skeleton"
+ if [ ${dry} -eq 0 ]; then
+ ( echo "config = {"
+ echo "}"
+ echo ""
+ echo "prog ${name} = {"
+ echo " version = 7.42"
+ echo " url = ftp://ftp.${name}.org/pub/${name}/"
+ echo " regex = ${name}-(__VER__)\.tar\.gz"
+ echo "}"
+ echo ""
+ ) >${OPENPKG_WORK}/re/vcheck/vc.${name}
+ ( cd ${OPENPKG_WORK}/re/vcheck && cvs -d ${OPENPKG_REPO} add vc.${name}
)
+ else
+ echo "creating ${OPENPKG_WORK}/re/vcheck/vc.${name}"
+ echo "cd ${OPENPKG_WORK}/re/vcheck && cvs -d ${OPENPKG_REPO} add
vc.${name}"
+ fi
+ done
}
install () {
- for name in $*; do
+ if [ ".$1" = . ]; then
+ if [ ".$P" = . ]; then
+ die "package cannot be identified. Neither parameter given nor \$P set."
+ fi
+ all="$P"
+ else
+ all="$*"
+ fi
+ if [ ".$E" = . -o ! -x $E/bin/rpm ]; then
+ die "$E/bin/rpm not executable. \$E might not be set properly."
+ fi
+ for name in $all; do
+ echo "++ installing ${name}"
if [ ! -f "${OPENPKG_WORK}/src/${name}/${name}.spec" ]; then
warn "${OPENPKG_WORK}/src/${name}/${name}.spec not found"
continue
fi
- package=`HOME=${OPENPKG_WORK} ${OPENPKG_INST}/bin/rpm -q --qf
"%{NAME}-%{VERSION}-%{RELEASE}" \
+ package=`HOME=${OPENPKG_WORK} $E/bin/rpm -q --qf
"%{NAME}-%{VERSION}-%{RELEASE}" \
--specfile ${OPENPKG_WORK}/src/${name}/${name}.spec`
- template=`HOME=${OPENPKG_WORK} ${OPENPKG_INST}/bin/rpm --eval
'%{_rpmfilename}'`
- rpmfile=`HOME=${OPENPKG_WORK} ${OPENPKG_INST}/bin/rpm -q --qf "${template}"
\
+ template=`HOME=${OPENPKG_WORK} $E/bin/rpm --eval '%{_rpmfilename}'`
+ rpmfile=`HOME=${OPENPKG_WORK} $E/bin/rpm -q --qf "${template}" \
--specfile ${OPENPKG_WORK}/src/${name}/${name}.spec`
- rpmdir=`HOME=${OPENPKG_WORK} ${OPENPKG_INST}/bin/rpm --eval '%{_rpmdir}'`
+ rpmdir=`HOME=${OPENPKG_WORK} $E/bin/rpm --eval '%{_rpmdir}'`
if [ ! -f "$rpmdir/$rpmfile" ]; then
echo "++ building $package ($rpmfile)"
- (cd ${OPENPKG_WORK}/src/${name} && HOME=${OPENPKG_WORK}
${OPENPKG_INST}/bin/rpm --fetch ${name}.spec)
- (cd ${OPENPKG_WORK}/src/${name} && HOME=${OPENPKG_WORK}
${OPENPKG_INST}/bin/rpm -bb ${name}.spec)
+ (cd ${OPENPKG_WORK}/src/${name} && HOME=${OPENPKG_WORK} $E/bin/rpm
--fetch ${name}.spec)
+ (cd ${OPENPKG_WORK}/src/${name} && HOME=${OPENPKG_WORK} $E/bin/rpm -bb
${name}.spec)
if [ ! -f "$rpmdir/$rpmfile" ]; then
warn "failed to build $package ($rpmfile)"
continue
fi
fi
- HOME=${OPENPKG_WORK} ${OPENPKG_INST}/bin/rpm -q $package >/dev/null 2>&1 &&
continue
+ HOME=${OPENPKG_WORK} $E/bin/rpm -q $package >/dev/null 2>&1 && continue
echo "++ installing $package ($rpmfile)"
if [ ".$HOSTNAME" = . ]; then
HOSTNAME=`hostname`
fi
- ssh -t -x "[EMAIL PROTECTED]" HOME=${OPENPKG_WORK} ${OPENPKG_INST}/bin/rpm
-Uvh "$rpmdir/$rpmfile"
- HOME=${OPENPKG_WORK} ${OPENPKG_INST}/bin/rpm -q $package >/dev/null 2>&1
+ ssh -t -x "[EMAIL PROTECTED]" HOME=${OPENPKG_WORK} $E/bin/rpm -Uvh
"$rpmdir/$rpmfile"
+ HOME=${OPENPKG_WORK} $E/bin/rpm -q $package >/dev/null 2>&1
if [ $? -ne 0 ]; then
warn "failed to install $package"
fi
@@ -1364,7 +1392,15 @@
}
search () {
- for i in "$@"; do
+ if [ ".$1" = . ]; then
+ if [ ".$P" = . ]; then
+ die "package cannot be identified. Neither parameter given nor \$P set."
+ fi
+ all="$P"
+ else
+ all="$*"
+ fi
+ for i in $all; do
search_for $i ftp://ftp.openpkg.org/current/SRC/
search_for $i ftp://ftp.openpkg.org/release/1.2/UPD/
search_for $i ftp://ftp.openpkg.org/release/1.2/SRC/
@@ -1378,11 +1414,29 @@
}
lint () {
- for p in $*; do
- if [ -d $p ]; then
- files="`find $p -name '*.spec' -print`"
+ if [ ".$1" = . ]; then
+ if [ ".$P" = . ]; then
+ die "package cannot be identified. Neither parameter given nor \$P set."
+ fi
+ all="$P"
+ else
+ all="$*"
+ fi
+ for name in $all; do
+ echo "$name" | egrep -q "^[./]+"
+ if [ $? -ne 0 ]; then
+ echo "$name" | egrep -q "/"
+ if [ $? -eq 0 ]; then
+ name="${OPENPKG_WORK}/src/$name"
+ else
+ name=`echo $name | sed -e 's;\.spec$;;'` # convenience
+ name="${OPENPKG_WORK}/src/$name/$name"
+ fi
+ fi
+ if [ -d $name ]; then
+ files="`find $name -type f -name '*.spec' -print`"
else
- files="$p"
+ files="$name"
fi
for file in $files; do
echo "++ Linting package specification: $file"
@@ -1395,6 +1449,28 @@
}
help () {
+ sed -e 's;^ *;;' <<EOF >${OPENPKG_WORK}/00README
+
+ OpenPKG Development Area [created by openpkg-dev]
+
--------------------------------------------------------------------------------------------------------
+ \$ openpkg-dev bash # [[[spec]ctag]exec] enter development
environment
+ \$ openpkg-dev branch # [ctag] switch to a
different branch
+ \$ openpkg-dev diff # alias for "release -dry" dry run "release"
+ \$ openpkg-dev execute # [exec] execute command on
instance closest to branch
+ \$ openpkg-dev help # display this command
summary and update 00README
+ \$ openpkg-dev install # [[spec]...] install a package
+ \$ openpkg-dev kill # kill the environment
+ \$ openpkg-dev lint # [[spec|file|path]...] lint package
specification
+ \$ openpkg-dev list # [[spec]...] list source and
binary packages
+ \$ openpkg-dev new # spec... [-dry] create new packag
from scratch
+ \$ openpkg-dev package # [spec] switch to a
different package
+ \$ openpkg-dev peek # [[spec]...] peek at file list of
binary package
+ \$ openpkg-dev release # [[spec]...] [-dry] [-m "msg"] release package
changes to master server
+ \$ openpkg-dev search # [[spec]...] search a package on
master server
+ \$ openpkg-dev setup # [[[spec]ctag]exec] already been done ;)
+ \$ openpkg-dev update # update development
environment from master server
+
--------------------------------------------------------------------------------------------------------
+EOF
cat ${OPENPKG_WORK}/00README
}
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [EMAIL PROTECTED]