Browse Source

In following our good ritual when confronted with a new release, we commit a cruel heavy weight change to the critical bootstrap package in order to fully break everything and horse up the whole release. This time we finally introduce the namespace-clean OpenPKG in order to have it already in place for the major version 2.0: New Files: %{l_prefix}/bin/openpkg %{l_prefix}/libexec/openpkg/install %{l_prefix}/libexec/openpkg/man %{l_prefix}/man/man1/openpkg.1 Moved Files: %{l_prefix}/bin/rpm -> %{l_prefix}/libexec/openpkg/rpm %{l_prefix}/bin/rpm-config -> %{l_prefix}/libexec/openpkg/rpm-config %{l_prefix}/bin/rpm2cpio -> %{l_prefix}/libexec/openpkg/rpm2cpio %{l_prefix}/bin/rpmbuild -> %{l_prefix}/libexec/openpkg/rpmbuild %{l_prefix}/sbin/lsync -> %{l_prefix}/libexec/openpkg/lsync %{l_prefix}/man/man8/*.8 -> %{l_prefix}/libexec/openpkg/*.8 %{l_prefix}/lib/openpkg/uuid.sh -> %{l_prefix}/libexec/openpkg/uuid %{l_prefix}/include/rpm/ -> %{l_prefix}/include/openpkg/rpm/ %{l_prefix}/lib/librpm*.a -> %{l_prefix}/lib/openpkg/librpm*.a The short-term goal is to make OpenPKG bootstrap package namespace clean, but the long-term pgoal is to provide the bootstrap part of the new forthcoming OpenPKG Tool Chain in a way we then can seamlessly integrate it. The key point is the new %{l_prefix}/bin/openpkg command.

Ralf S. Engelschall 22 years ago
parent
commit
8256a59b1d

+ 1 - 0
openpkg/HISTORY

@@ -2,6 +2,7 @@
 2004
 2004
 ====
 ====
 
 
+20040216 change filesystem layout for final OpenPKG 2.0 namespace clean layout
 20040216 config.{guess,sub} scripts are no longer installed
 20040216 config.{guess,sub} scripts are no longer installed
 20040216 fixed --tag processing in bootstrapping situation
 20040216 fixed --tag processing in bootstrapping situation
 20040216 upgraded to OSSP uuid 1.0.0
 20040216 upgraded to OSSP uuid 1.0.0

+ 8 - 8
openpkg/aux.wrapbin.sh

@@ -163,7 +163,7 @@ echo "++ fixating OpenPKG instance filesystem hierarchy"
   echo '    chown "$2" "$4"'
   echo '    chown "$2" "$4"'
   echo '    chgrp "$3" "$4"'
   echo '    chgrp "$3" "$4"'
   echo '}'
   echo '}'
-  $l_prefix/bin/rpm -qa \
+  $l_prefix/bin/openpkg rpm -qa \
       --qf '[fixate %7.7{FILEMODES:octal} %{FILEUSERNAME:shescape} %{FILEGROUPNAME:shescape} ::%{FILENAMES:shescape}\n]' |\
       --qf '[fixate %7.7{FILEMODES:octal} %{FILEUSERNAME:shescape} %{FILEGROUPNAME:shescape} ::%{FILENAMES:shescape}\n]' |\
       grep -v '(none)' | sed 's/^fixate .../fixate /' | sed -e "s; ::\\(.\\)@l_prefix@; \\1$l_prefix;"
       grep -v '(none)' | sed 's/^fixate .../fixate /' | sed -e "s; ::\\(.\\)@l_prefix@; \\1$l_prefix;"
 ) | sh 2>/dev/null || true
 ) | sh 2>/dev/null || true
@@ -193,24 +193,24 @@ set -- 1 # emulate RPM's $1 when executing scripts
   echo "Details about this installed OpenPKG instance you can easily"
   echo "Details about this installed OpenPKG instance you can easily"
   echo "determine by running the following typical RPM query commands:"
   echo "determine by running the following typical RPM query commands:"
   echo ""
   echo ""
-  echo "    \$ ${l_prefix}/bin/rpm -qa"
-  echo "    \$ ${l_prefix}/bin/rpm -qi  openpkg"
-  echo "    \$ ${l_prefix}/bin/rpm -qlv openpkg"
+  echo "    \$ ${l_prefix}/bin/openpkg rpm -qa"
+  echo "    \$ ${l_prefix}/bin/openpkg rpm -qi  openpkg"
+  echo "    \$ ${l_prefix}/bin/openpkg rpm -qlv openpkg"
   echo ""
   echo ""
   echo "The integrity of the whole OpenPKG instance you can check at any"
   echo "The integrity of the whole OpenPKG instance you can check at any"
   echo "time by running the RPM verify command:"
   echo "time by running the RPM verify command:"
   echo ""
   echo ""
-  echo "    \$ ${l_prefix}/bin/rpm -Va"
+  echo "    \$ ${l_prefix}/bin/openpkg rpm -Va"
   echo ""
   echo ""
   echo "For installing software packages into this OpenPKG instance, just run"
   echo "For installing software packages into this OpenPKG instance, just run"
   echo "the following two RPM build commands for each package:"
   echo "the following two RPM build commands for each package:"
   echo ""
   echo ""
-  echo "    \$ ${l_prefix}/bin/rpm --rebuild /path/to/foo-*.src.rpm"
-  echo "    \$ ${l_prefix}/bin/rpm -Uvh ${l_prefix}/RPM/PKG/foo-*.rpm"
+  echo "    \$ ${l_prefix}/bin/openpkg rpm --rebuild /path/to/foo-*.src.rpm"
+  echo "    \$ ${l_prefix}/bin/openpkg rpm -Uvh ${l_prefix}/RPM/PKG/foo-*.rpm"
   echo ""
   echo ""
   echo "If you later want to remove a software package, just run:"
   echo "If you later want to remove a software package, just run:"
   echo ""
   echo ""
-  echo "    \$ ${l_prefix}/bin/rpm -e foo"
+  echo "    \$ ${l_prefix}/bin/openpkg rpm -e foo"
   echo ""
   echo ""
   echo "For removing the whole OpenPKG instance under prefix ${l_prefix},"
   echo "For removing the whole OpenPKG instance under prefix ${l_prefix},"
   echo "just remove every package. Once you finally removed the package"
   echo "just remove every package. Once you finally removed the package"

+ 131 - 0
openpkg/install.sh

@@ -0,0 +1,131 @@
+##
+##  install -- OpenPKG Tool Chain "install" command (BOOSTRAP VERSION ONLY)
+##  Copyright (c) 2004 The OpenPKG Project <http://www.openpkg.org/>
+##  Copyright (c) 2004 Ralf S. Engelschall <rse@engelschall.com>
+##  Copyright (c) 2004 Cable & Wireless <http://www.cw.com/>
+##
+##  Permission to use, copy, modify, and distribute this software for
+##  any purpose with or without fee is hereby granted, provided that
+##  the above copyright notice and this permission notice appear in all
+##  copies.
+##
+##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+##  SUCH DAMAGE.
+##
+
+##
+##  This command emulates the "openpkg install openpkg-tools" command
+##  in order to bootstrap the installation of the OpenPKG Tool Chain.
+##
+
+#   sanity check usage
+if [ $# -eq 1 -a ".$1" = ".openpkg-tools" ]; then
+    :
+else
+    echo "openpkg:ERROR: still not available functionality \"$cmd $*\""                   1>&2
+    echo "openpkg: This functionality is provided by the \"openpkg-tools\" package only!" 1>&2
+    echo "openpkg: Run the command \"$OPENPKG_PREFIX/bin/openpkg install openpkg-tools\" to"    1>&2
+    echo "openpkg: bootstrap the \"openpkg-tools\" package for additional functionality." 1>&2
+    echo "openpkg: This bootstrap version only supports this particular install command." 1>&2
+    exit 1
+fi
+
+#   determine OpenPKG release and download URLs
+release=`$OPENPKG_PREFIX/bin/openpkg rpm --eval '%{l_openpkg_release -F "%s"}'`
+case "$release" in
+    CURRENT )
+        url_src="ftp://ftp.openpkg.org/current/SRC"
+        url_upd=""
+        ;;
+    [0-9].[0-9] )
+        url_src="ftp://ftp.openpkg.org/release/$release/SRC"
+        url_upd="ftp://ftp.openpkg.org/release/$release/UPD"
+        ;;
+    * )
+        echo "openpkg:ERROR: invalid OpenPKG release \"$release\"" 1>&2
+        exit 1
+        ;;
+esac
+
+#   determine path to binary RPMs
+rpmdir=`$OPENPKG_PREFIX/bin/openpkg rpm --eval '%{_rpmdir}'`
+rpmtag=`$OPENPKG_PREFIX/bin/openpkg rpm --eval '%{l_platform -p}-%{l_tag}'`
+
+#   iterate through package installation in dependency order
+for pkg in openpkg make binutils gcc perl openpkg-tools; do
+    #   determine latest package version and URL
+    pkg_srpm=""
+    pkg_name=""
+    for url in $url_upd $url_src; do
+        if [ ".$url" = . ]; then
+            continue
+        fi
+        pkg_name=`$OPENPKG_PREFIX/lib/openpkg/curl -s -l "$url/" |\
+            egrep "^${pkg}-[0-9]" |\
+            sed -e "s;^${pkg}-\\([0-9][^-]*\\)-\\([^-][^-]*\\)\\.src\\.rpm.*;\\2:\\1;" |\
+            sort -r | head -1 |\
+            sed -e "s;^\\([^:]*\\):\\(.*\\);${pkg}-\\2-\\1;"`
+        if [ ".$pkg_name" != . ]; then
+            pkg_srpm="$url/$pkg_name.src.rpm"
+            break
+        fi
+    done
+    if [ ".$pkg_name" = . ]; then
+        echo "openpkg:ERROR: package \"$pkg\" not found under URLs:" 1>&2
+        if [ ".$url_upd" != . ]; then
+            echo "openpkg:ERROR: $url_upd" 1>&2
+        fi
+        echo "openpkg:ERROR: $url_src" 1>&2
+        exit 1
+    fi
+
+    #   check whether package is already installed
+    if [ ".`$OPENPKG_PREFIX/bin/openpkg rpm -q $pkg_name | grep -v 'is not installed'`" != . ]; the
+        continue
+    fi
+
+    #   build binary package from source package
+    if [ ! -f "$rpmdir/$pkg_name.$rpmtag.rpm" ]; then
+        echo "++ fetching and building source package \"$pkg_name.src.rpm\""
+        $OPENPKG_PREFIX/bin/openpkg rpm --rebuild $pkg_srpm
+        if [ $? -ne 0 ]; then
+            echo "openpkg:ERROR: failed to build package \"$pkg_name\" (RPM returned with $?)" 1>&2
+            exit 1
+        fi
+        if [ ! -f "$rpmdir/$pkg_name.$rpmtag.rpm" ]; then
+            echo "openpkg:ERROR: failed to build package \"$pkg_name\" (RPM returned successfully but there is no $rpmdir/$pkg_name.$rpmtag.rpm)" 1>&2
+            exit 1
+        fi
+    fi
+
+    #   install binary package
+    echo "++ installing binary package \"$pkg_name.$rpmtag.rpm\""
+    $OPENPKG_PREFIX/bin/openpkg rpm -Uvh "$rpmdir/$pkg_name.$rpmtag.rpm"
+    if [ $? -ne 0 ]; then
+        echo "openpkg:ERROR: failed to install package \"$pkg_name\" (RPM returned with $?)" 1>&2
+        exit 1
+    fi
+done
+
+#   display final result message
+if [ -f "$OPENPKG_PREFIX/lib/openpkg-tools/openpkg.sh" ]; then
+    ( echo "Congratulations, you have bootstrapped the OpenPKG Tool Chain."
+      echo "You now have additional management ommands available. Run"
+      echo "    \$ $OPENPKG_PREFIX/bin/openpkg --help"
+      echo "for more details on the actual list of available commands."
+    ) | $OPENPKG_PREFIX/lib/openpkg/rpmtool msg -b -t notice
+else
+    echo "openpkg:ERROR: failed to install package \"openpkg-tools\"" 1>&2
+    exit 1
+fi
+

+ 28 - 0
openpkg/man.sh

@@ -0,0 +1,28 @@
+#!@l_prefix@/lib/openpkg/bash
+##
+##  man -- OpenPKG Tool Chain "man" command
+##  Copyright (c) 2004 The OpenPKG Project <http://www.openpkg.org/>
+##  Copyright (c) 2004 Ralf S. Engelschall <rse@engelschall.com>
+##  Copyright (c) 2004 Cable & Wireless <http://www.cw.com/>
+##
+##  Permission to use, copy, modify, and distribute this software for
+##  any purpose with or without fee is hereby granted, provided that
+##  the above copyright notice and this permission notice appear in all
+##  copies.
+##
+##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+##  SUCH DAMAGE.
+##
+
+echo "FIXME: STILL NOT IMPLEMENTED"
+

+ 186 - 0
openpkg/openpkg.1

@@ -0,0 +1,186 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` 
+.    ds C' 
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "OPENPKG 1"
+.TH OPENPKG 1 "OpenPKG" "OPENPKG(8)" "OpenPKG"
+.SH "NAME"
+\&\fBOpenPKG\fR \-\- Cross\-Platform Unix Software Packaging Facility
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.IP "Command Line Interface" 4
+.IX Item "Command Line Interface"
+$ \fBopenpkg\fR [\fIopt\fR ...] \fIcmd\fR [\fIcmd_opt\fR ...] [\fIcmd_arg\fR ...]
+.Sp
+$ \fBopenpkg\fR \fBman\fR \fIcmd\fR
+.IP "Project Locations" 4
+.IX Item "Project Locations"
+.Vb 5
+\& http://www.openpkg.org/       web service
+\& http://cvs.openpkg.org/       repository service
+\& http://pgp.openpkg.org/       OpenPGP service
+\& http://rt.openpkg.org/        request tracking service
+\& ftp://ftp.openpkg.org/        download service
+.Ve
+.IP "Project Forums" 4
+.IX Item "Project Forums"
+.Vb 5
+\& petidomo@openpkg.org          mailing-list manager
+\& openpkg-announce@openpkg.org  project announcements
+\& openpkg-dev@openpkg.org       developer forum
+\& openpkg-users@openpkg.org     users forum
+\& openpkg-bugdb@openpkg.org     users forum
+.Ve
+.IP "Local Documentation" 4
+.IX Item "Local Documentation"
+.Vb 7
+\& openpkg-rpm(1)                RPM package manager
+\& openpkg-rpmbuild(1)           RPM package manager (build only)
+\& openpkg-rpm2cpio(1)           RPM payload utility
+\& openpkg-rpm-config(1)         RPM C API utility
+\& openpkg-lsync(1)              local area synchronization
+\& openpkg-rc(1)                 run-command facility
+\& openpkg-tools(1)              OpenPKG Tool Chain (optional)
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+OpenPKG is the world leading instrument for deployment and maintenance
+of Open Source software when administration crosses Unix platform
+boundaries. The OpenPKG project is a collaboration effort with the
+goal of creating and maintaining portable and easy to install software
+packages for use on the major Unix server platforms.
+.PP
+The unique OpenPKG architecture leverages proven technologies like
+Red Hat Package Manager (\s-1RPM\s0) to establish a unified administration
+environment, independent of the underlying operating system. OpenPKG
+is completely self-contained and does not even need a preinstallation
+of \s-1RPM\s0. Instead, \s-1RPM\s0 is provided as an OpenPKG \s-1RPM\s0 package itself plus
+a tricky bootstrapping procedure in order to allow one to create from
+scratch the initial state of the whole OpenPKG software packaging
+system.

+ 1 - 1
openpkg/openpkg.boot

@@ -411,7 +411,7 @@ if [ -f "$tmpdir/rpm" ]; then
     exit 1
     exit 1
 fi
 fi
 ( echo "#!/bin/sh"
 ( echo "#!/bin/sh"
-  echo "exec $RPM_BUILD_ROOT$prefix/bin/rpm \\"
+  echo "exec $RPM_BUILD_ROOT$prefix/libexec/openpkg/rpm \\"
   echo "    --rcfile \"$tmpdir/rpm.1\" \\"
   echo "    --rcfile \"$tmpdir/rpm.1\" \\"
   echo "    --define \"__platform $RPM_BUILD_ROOT$prefix/etc/openpkg/platform\" \\"
   echo "    --define \"__platform $RPM_BUILD_ROOT$prefix/etc/openpkg/platform\" \\"
   echo "    \"\$@\""
   echo "    \"\$@\""

+ 90 - 0
openpkg/openpkg.pod

@@ -0,0 +1,90 @@
+##
+##  openpkg -- OpenPKG Tool Chain
+##  Copyright (c) 2000-2004 The OpenPKG Project <http://www.openpkg.org/>
+##  Copyright (c) 2000-2004 Ralf S. Engelschall <rse@engelschall.com>
+##  Copyright (c) 2000-2004 Cable & Wireless <http://www.cw.com/>
+##
+##  Permission to use, copy, modify, and distribute this software for
+##  any purpose with or without fee is hereby granted, provided that
+##  the above copyright notice and this permission notice appear in all
+##  copies.
+##
+##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+##  SUCH DAMAGE.
+##
+##  openpkg.pod: Minimum Execution Frontend (Language: Perl POD)
+##
+
+=pod
+
+=head1 NAME
+
+B<OpenPKG> -- Cross-Platform Unix Software Packaging Facility
+
+=head1 SYNOPSIS
+
+=over 4
+
+=item Command Line Interface
+
+$ B<openpkg> [I<opt> ...] I<cmd> [I<cmd_opt> ...] [I<cmd_arg> ...]
+
+$ B<openpkg> B<man> I<cmd>
+
+=item Project Locations
+
+ http://www.openpkg.org/       web service
+ http://cvs.openpkg.org/       repository service
+ http://pgp.openpkg.org/       OpenPGP service
+ http://rt.openpkg.org/        request tracking service
+ ftp://ftp.openpkg.org/        download service
+
+=item Project Forums
+
+ petidomo@openpkg.org          mailing-list manager
+ openpkg-announce@openpkg.org  project announcements
+ openpkg-dev@openpkg.org       developer forum
+ openpkg-users@openpkg.org     users forum
+ openpkg-bugdb@openpkg.org     users forum
+
+=item Local Documentation
+
+ openpkg-rpm(1)                RPM package manager
+ openpkg-rpmbuild(1)           RPM package manager (build only)
+ openpkg-rpm2cpio(1)           RPM payload utility
+ openpkg-rpm-config(1)         RPM C API utility
+ openpkg-lsync(1)              local area synchronization
+ openpkg-rc(1)                 run-command facility
+ openpkg-tools(1)              OpenPKG Tool Chain (optional)
+
+=back
+
+=head1 DESCRIPTION
+  
+OpenPKG is the world leading instrument for deployment and maintenance
+of Open Source software when administration crosses Unix platform
+boundaries. The OpenPKG project is a collaboration effort with the
+goal of creating and maintaining portable and easy to install software
+packages for use on the major Unix server platforms.
+
+The unique OpenPKG architecture leverages proven technologies like
+Red Hat Package Manager (RPM) to establish a unified administration
+environment, independent of the underlying operating system. OpenPKG
+is completely self-contained and does not even need a preinstallation
+of RPM. Instead, RPM is provided as an OpenPKG RPM package itself plus
+a tricky bootstrapping procedure in order to allow one to create from
+scratch the initial state of the whole OpenPKG software packaging
+system.
+
+=cut
+

+ 252 - 0
openpkg/openpkg.sh

@@ -0,0 +1,252 @@
+#!@l_prefix@/lib/openpkg/bash
+##
+##  openpkg -- OpenPKG Tool Chain
+##  Copyright (c) 2000-2004 The OpenPKG Project <http://www.openpkg.org/>
+##  Copyright (c) 2000-2004 Ralf S. Engelschall <rse@engelschall.com>
+##  Copyright (c) 2000-2004 Cable & Wireless <http://www.cw.com/>
+##
+##  Permission to use, copy, modify, and distribute this software for
+##  any purpose with or without fee is hereby granted, provided that
+##  the above copyright notice and this permission notice appear in all
+##  copies.
+##
+##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+##  SUCH DAMAGE.
+##
+##  openpkg.sh: Execution Frontend (Language: Bourne-Shell)
+##
+
+##
+##  command line parsing
+##
+
+#   option defaults
+opt_prefix=""
+opt_tools=""
+opt_version=no
+opt_help=no
+
+#   iterate over argument line
+for opt
+do
+    case $opt in
+        -*=*) arg=`echo "$opt" | sed 's/^[-_a-zA-Z0-9]*=//'` ;;
+           *) arg='' ;;
+    esac
+    case $opt in
+        -v|--version   ) opt_version=yes   ;;
+        -h|--help      ) opt_help=yes      ;;
+        --prefix=*     ) opt_prefix="$arg" ;;
+        --tools=*      ) opt_tools="$arg"  ;;
+        -* ) echo "openpkg:ERROR: Invalid command-line option \"$opt\"." 1>&2
+             echo "openpkg:ERROR: Run \"$0 --help\" for list of valid options" 1>&2; exit 1 ;;
+        *  ) break ;;
+    esac
+done
+
+##
+##  determine OpenPKG locations
+##
+
+#   determine path to OpenPKG instance
+if [ ".$opt_prefix" != . ]; then
+    OPENPKG_PREFIX="$opt_prefix"
+fi
+if [ ".$OPENPKG_PREFIX" = . ]; then
+    OPENPKG_PREFIX="@l_prefix@"
+fi
+if [ ! -f "$OPENPKG_PREFIX/bin/openpkg" ]; then
+    echo "openpkg:ERROR: no OpenPKG instance found under \"$OPENPKG_PREFIX\"" 1>&2
+    exit 1
+fi
+
+#   allow convient all-in-one specification of OpenPKG Tool Chain locations
+if [ ".$opt_tool" != . ]; then
+    OPENPKG_TOOLS="$opt_tools"
+fi
+if [ ".$OPENPKG_TOOLS" != . -a ".$OPENPKG_TOOLS_CMDPATH" = . ]; then
+    OPENPKG_TOOLS_CMDPATH="$OPENPKG_TOOLS/cmd"
+fi
+if [ ".$OPENPKG_TOOLS" != . -a ".$OPENPKG_TOOLS_APIPATH" = . ]; then
+    OPENPKG_TOOLS_APIPATH="$OPENPKG_TOOLS/api"
+fi
+
+#   determine path to OpenPKG Tool Chain commands
+cmdpath="$OPENPKG_PREFIX/libexec/openpkg"
+if [ -d "$OPENPKG_PREFIX/libexec/openpkg-tools" ]; then
+    #   openpkg-tools package overrides
+    cmdpath="$OPENPKG_PREFIX/libexec/openpkg-tools:$cmdpath"
+fi
+if [ ".$OPENPKG_TOOLS_CMDPATH" != . ]; then
+    #   user supplied path overrides
+    cmdpath=`echo "$OPENPKG_TOOLS_CMDPATH" | sed -e "s;@;$cmdpath;"`
+fi
+OPENPKG_TOOLS_CMDPATH=`echo "$cmdpath" | sed -e 's/::/:/g' -e 's/^://' -e 's/:$//'`
+
+#   determine path to OpenPKG Tool Chain API
+apipath=""
+if [ -d "$OPENPKG_PREFIX/lib/openpkg-tools" ]; then
+    #   openpkg-tools package overrides
+    apipath="$OPENPKG_PREFIX/lib/openpkg-tools:$apipath"
+fi
+if [ ".$OPENPKG_TOOLS_APIPATH" != . ]; then
+    #   user supplied path overrides
+    apipath=`echo "$OPENPKG_TOOLS_APIPATH" | sed -e "s;@;$apipath;"`
+fi
+OPENPKG_TOOLS_APIPATH=`echo "$apipath" | sed -e 's/::/:/g' -e 's/^://' -e 's/:$//'`
+
+#   export variables into environment
+export OPENPKG_PREFIX
+export OPENPKG_TOOLS
+export OPENPKG_TOOLS_CMDPATH
+export OPENPKG_TOOLS_APIPATH
+
+##
+##  determine command details and execute command appropriately
+##
+
+#   command line sanity check
+if [ $# -eq 0 ]; then
+    echo "openpkg:ERROR: Invalid command-line arguments." 1>&2
+    echo "openpkg:ERROR: Run \"$0 --help\" for list of valid arguments." 1>&2
+    exit 1
+fi
+
+#   implement stand-alone "--help" option
+if [ ".$opt_help" = .yes ]; then
+    release=`$OPENPKG_PREFIX/libexec/openpkg/rpm --eval '%{l_openpkg_release}'`
+    echo ""
+    echo "This is $release <http://www.openpkg.org/>"
+    echo "Cross-Platform Unix Software Packaging Facility"
+    echo ""
+    echo "Copyright (c) 2000-2004 The OpenPKG Project <http://www.openpkg.org/>"
+    echo "Copyright (c) 2000-2004 Ralf S. Engelschall <rse@engelschall.com>"
+    echo "Copyright (c) 2000-2004 Cable & Wireless <http://www.cw.com/>"
+    echo ""
+    echo "The command \"@l_prefix@/bin/openpkg\" is the official command-line"
+    echo "execution frontend of the OpenPKG tool chain. Its usage is:"
+    echo ""
+    echo "  \$ @l_prefix@/bin/openpkg [<option> ...] \\"
+    echo "     <command> [<command-option> ...] [<command-argument> ...]"
+    echo ""
+    echo "where <option> is one of the following global options:"
+    echo "  -p, --prefix    sets the OpenPKG instance prefix   (also: \$OPENPKG_PREFIX)"
+    echo "  -t, --tools     sets the OpenPKG tool chain prefix (also: \$OPENPKG_TOOLS)"
+    echo "  -v, --version   display OpenPKG version/release"
+    echo "  -h, --help      display this usage help message"
+    echo ""
+    echo "where <command> is one of the following commands:"
+    echo "  rpm             (provided by bootstrap package)"
+    echo "  rpmbuild        (provided by bootstrap package)"
+    echo "  rpm2cpio        (provided by bootstrap package)"
+    echo "  rpm-config      (provided by bootstrap package)"
+    echo "  uuid            (provided by bootstrap package)"
+    echo "  rc              (provided by bootstrap package)"
+    echo "  lsync           (provided by bootstrap package)"
+    echo "  man             (provided by bootstrap package)"
+    #   install command intentionally left out in above display!
+    for cmd in rpm rpmbuild rpm2cpio rpm-config uuid rc lsync man install; do
+        id=`echo "$cmd" | sed -e 's/-/_/g'`
+        eval "__cmd_seen_$id=yes"
+    done
+    OIFS="$IFS"; IFS=":"
+    for dir in $OPENPKG_TOOLS_CMDPATH; do
+        IFS="$OIFS"
+        for cmd in `cd $dir 2>&1 && echo *`; do
+            cmd=`echo "$cmd" | sed -e 's/\.sh$//' -e 's/\.pl$//' -e 's;^;X;' -e 's;^X\([a-zA-Z][a-zA-Z0-9_-]*\)$;\1;' -e 's;^X.*$;;'`
+            if [ ".$cmd" != . ]; then
+                id=`echo "$cmd" | sed -e 's/-/_/g' -e 's/\.sh$//' -e 's/\.pl$//'`
+                eval "seen=\$__cmd_seen_$id"
+                if [ ".$seen" != .yes ]; then
+                    echo "$cmd" | awk '{ printf("  %-15s (provided by addon package)\n", $0); }'
+                fi
+            fi
+        done
+    done
+    IFS="$OIFS"
+    echo ""
+    echo "where <command-option> and <command-argument> are <command> specific"
+    echo "options and arguments. Run \"@l_prefix@/bin/openpkg <command> --help\""
+    echo "and \"@l_prefix@/bin/openpkg man <command>\" for more details."
+    echo ""
+    exit 0
+fi
+
+#   implement stand-alone "--version" option
+if [ ".$opt_version" = .yes ]; then
+    release=`$OPENPKG_PREFIX/libexec/openpkg/rpm --eval '%{l_openpkg_release}'`
+    version=`$OPENPKG_PREFIX/libexec/openpkg/rpm -q --qf '%{version}' openpkg`
+    echo "$release ($version)"
+    exit 0
+fi
+
+#   iterate over all command directories
+cmd="$1"
+shift
+cmd_path=""
+cmd_shell=""
+OIFS="$IFS"; IFS=":"
+for dir in $OPENPKG_TOOLS_CMDPATH; do
+    IFS="$OIFS"
+    if [ -x "$dir/$cmd" ]; then
+        #   found executable stand-alone binary
+        cmd_path="$dir/$cmd"
+        cmd_shell=""
+        break
+    elif [ -f "$dir/$cmd.sh" ]; then
+        #   found non-executable Bourne-Shell script
+        cmd_path="$dir/$cmd.sh"
+        cmd_shell="$OPENPKG_PREFIX/lib/openpkg/bash"
+        break
+    elif [ -f "$dir/$cmd.pl" ]; then
+        #   found non-executable Perl script
+        cmd_path="$dir/$cmd.pl"
+        if [ -x "$OPENPKG_PREFIX/bin/perl" ]; then
+            cmd_shell="$OPENPKG_PREFIX/bin/perl"
+        else
+            cmd_shell=`$OPENPKG_PREFIX/lib/openpkg/shtool -m perl 2>&1`
+            if [ ".$cmd_shell" = . ]; then
+                echo "openpkg:ERROR: No Perl interpreter found in \$PATH" 1>&2
+                exit 1
+            fi
+        fi
+        #   provide module include path(s) to API
+        OIFS="$IFS"; IFS=":"
+        for dir2 in $OPENPKG_TOOLS_APIPATH; do
+            IFS="$OIFS"
+            cmd_shell="$cmd_shell -I$dir2"
+        done
+        IFS="$OIFS"
+        break
+    fi
+done
+IFS="$OIFS"
+if [ ".$cmd_path" = . ]; then
+    echo "openpkg:ERROR: No such command \"$cmd\" found in command path" 1>&2
+    echo "openpkg:ERROR: ($OPENPKG_TOOLS_CMDPATH)." 1>&2
+    echo "openpkg:ERROR: Set \$OPENPKG_TOOLS_CMDPATH appropriately." 1>&2
+    echo "openpkg:ERROR: Run \"$0 --help\" for list of valid commands." 1>&2
+    exit 1
+fi
+
+#   execute command
+eval "$cmd_shell $cmd_path \${1+\"\$@\"}"
+
+#   execution result check and graceful termination
+if [ $? -ne 0 ]; then
+    echo "openpkg:ERROR: Command \"$cmd\" failed (return code was $?)" 1>&2
+    exit $?
+else
+    exit 0
+fi
+

+ 140 - 74
openpkg/openpkg.spec

@@ -126,6 +126,11 @@ Source54:     rpmx.pl
 Source55:     rpmx.sh
 Source55:     rpmx.sh
 Source56:     shtool
 Source56:     shtool
 Source57:     uuid.sh
 Source57:     uuid.sh
+Source58:     openpkg.sh
+Source59:     openpkg.pod
+Source60:     openpkg.1
+Source61:     install.sh
+Source62:     man.sh
 
 
 #   build information
 #   build information
 Prefix:       %{l_prefix}
 Prefix:       %{l_prefix}
@@ -746,6 +751,8 @@ Provides:     openpkg = 1.3.1-1.3.1
         test -d $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir || \
         test -d $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir || \
         mkdir $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir
         mkdir $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir
     done
     done
+    mkdir $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg
+    mkdir $RPM_BUILD_ROOT%{l_prefix}/include/openpkg
 
 
     #   display verbosity header
     #   display verbosity header
     set +x; VERBOSE "INSTALL: Installation of RPM"
     set +x; VERBOSE "INSTALL: Installation of RPM"
@@ -807,6 +814,12 @@ Provides:     openpkg = 1.3.1-1.3.1
     mv $RPM_BUILD_ROOT%{l_prefix}/include/popt.h \
     mv $RPM_BUILD_ROOT%{l_prefix}/include/popt.h \
        $RPM_BUILD_ROOT%{l_prefix}/include/rpm/popt.h
        $RPM_BUILD_ROOT%{l_prefix}/include/rpm/popt.h
 
 
+    #   move C API into custom locations
+    mv $RPM_BUILD_ROOT%{l_prefix}/include/rpm \
+       $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm
+    mv $RPM_BUILD_ROOT%{l_prefix}/lib/librpm* \
+       $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/
+
     #   replace symlinks with hardlinks
     #   replace symlinks with hardlinks
     for entry in rpme:rpmi rpmt:rpmb rpmu:rpmi rpmv:rpmq; do
     for entry in rpme:rpmi rpmt:rpmb rpmu:rpmi rpmv:rpmq; do
         eval `echo $entry | sed -e 's/^\(.*\):\(.*\)$/dst=\1; src=\2/'`
         eval `echo $entry | sed -e 's/^\(.*\):\(.*\)$/dst=\1; src=\2/'`
@@ -816,7 +829,9 @@ Provides:     openpkg = 1.3.1-1.3.1
     done
     done
     rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/rpmbuild
     rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/rpmbuild
     ln $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmb \
     ln $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmb \
-       $RPM_BUILD_ROOT%{l_prefix}/bin/rpmbuild
+       $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmbuild
+    mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmbuild.8 \
+       $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmbuild.8
 
 
     #   display verbosity header
     #   display verbosity header
     set +x; VERBOSE "INSTALL: Install Additional Tools"
     set +x; VERBOSE "INSTALL: Install Additional Tools"
@@ -824,21 +839,21 @@ Provides:     openpkg = 1.3.1-1.3.1
     #   install lsync tool
     #   install lsync tool
     sed -e "s:@l_prefix@:%{l_prefix}:g" \
     sed -e "s:@l_prefix@:%{l_prefix}:g" \
         <`SOURCE lsync` \
         <`SOURCE lsync` \
-        >$RPM_BUILD_ROOT%{l_prefix}/sbin/lsync
-    chmod a+x $RPM_BUILD_ROOT%{l_prefix}/sbin/lsync
+        >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lsync
+    chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lsync
     sed -e "s:@l_prefix@:%{l_prefix}:g" \
     sed -e "s:@l_prefix@:%{l_prefix}:g" \
         <`SOURCE dot.lsyncrc` \
         <`SOURCE dot.lsyncrc` \
         >$RPM_BUILD_ROOT%{l_prefix}/local/.lsyncrc
         >$RPM_BUILD_ROOT%{l_prefix}/local/.lsyncrc
     sed -e "s:@l_prefix@:%{l_prefix}:g" \
     sed -e "s:@l_prefix@:%{l_prefix}:g" \
         <`SOURCE lsync.8` \
         <`SOURCE lsync.8` \
-        >$RPM_BUILD_ROOT%{l_prefix}/man/man8/lsync.8
+        >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lsync.8
 
 
     #   install rpm-config tool
     #   install rpm-config tool
     ( l_prefix="%{l_prefix}"
     ( l_prefix="%{l_prefix}"
       l_cc="%{l_cc}"
       l_cc="%{l_cc}"
       l_cflags=""
       l_cflags=""
-      l_cppflags="-DOPENPKG -I${l_prefix}/include/rpm -I${l_prefix}/include"
-      l_ldflags="-L${l_prefix}/lib"
+      l_cppflags="-DOPENPKG -I${l_prefix}/include/openpkg/rpm -I${l_prefix}/include/openpkg"
+      l_ldflags="-L${l_prefix}/lib/openpkg"
       l_libs="-lrpmbuild -lrpm -lrpmio -lrpmdb -lrpmpopt -lrpmbeecrypt -lrpmbz2 -lrpmz"
       l_libs="-lrpmbuild -lrpm -lrpmio -lrpmdb -lrpmpopt -lrpmbeecrypt -lrpmbz2 -lrpmz"
       sed -e "s:@l_prefix@:%{l_prefix}:g" \
       sed -e "s:@l_prefix@:%{l_prefix}:g" \
           -e "s:@l_cc@:$l_cc:g" \
           -e "s:@l_cc@:$l_cc:g" \
@@ -847,12 +862,30 @@ Provides:     openpkg = 1.3.1-1.3.1
           -e "s:@l_ldflags@:$l_ldflags:g" \
           -e "s:@l_ldflags@:$l_ldflags:g" \
           -e "s:@l_libs@:$l_libs:g" \
           -e "s:@l_libs@:$l_libs:g" \
           <`SOURCE rpm-config.sh` \
           <`SOURCE rpm-config.sh` \
-          >$RPM_BUILD_ROOT%{l_prefix}/bin/rpm-config
+          >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config
     ) || exit $?
     ) || exit $?
-    chmod a+x $RPM_BUILD_ROOT%{l_prefix}/bin/rpm-config
+    chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config
     sed -e "s:RPM_VERSION:%{V_rpm}:g" \
     sed -e "s:RPM_VERSION:%{V_rpm}:g" \
         <`SOURCE rpm-config.8` \
         <`SOURCE rpm-config.8` \
-        >$RPM_BUILD_ROOT%{l_prefix}/man/man8/rpm-config.8
+        >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config.8
+
+    #   move rpm2cpio tool to custom location
+    mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpm2cpio \
+       $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio
+    mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpm2cpio.8 \
+       $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio.8
+
+    #   move rpm tool to custom location
+    mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpm \
+       $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm
+    ( echo "#!/bin/sh"
+      echo "echo \"openpkg:WARNING: The \\\"%{l_prefix}/bin/rpm\\\" command is deprecated since OpenPKG 2.0!\" 1>&2"
+      echo "echo \"openpkg:WARNING: Use the \\\"%{l_prefix}/bin/openpkg rpm\\\" command instead, please.\" 1>&2"
+      echo "exec %{l_prefix}/bin/openpkg rpm \${1+\"\$@\"}"
+    ) >$RPM_BUILD_ROOT%{l_prefix}/bin/rpm
+    chmod 755 $RPM_BUILD_ROOT%{l_prefix}/bin/rpm
+    mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpm.8 \
+       $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm.8
 
 
     #   install RPM extension
     #   install RPM extension
     ( cd rpm-%{V_rpm}
     ( cd rpm-%{V_rpm}
@@ -890,8 +923,8 @@ Provides:     openpkg = 1.3.1-1.3.1
     sed -e "s;@l_prefix@;%{l_prefix};g" \
     sed -e "s;@l_prefix@;%{l_prefix};g" \
         -e "s;@l_musr@;%{l_musr};g" \
         -e "s;@l_musr@;%{l_musr};g" \
         -e "s;@l_mgrp@;%{l_mgrp};g" \
         -e "s;@l_mgrp@;%{l_mgrp};g" \
-        <`SOURCE uuid.sh` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/uuid.sh
-    chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/uuid.sh
+        <`SOURCE uuid.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/uuid
+    chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/uuid
     sed -e "s;@l_prefix@;%{l_prefix};g" \
     sed -e "s;@l_prefix@;%{l_prefix};g" \
         -e "s;@l_musr@;%{l_musr};g" \
         -e "s;@l_musr@;%{l_musr};g" \
         -e "s;@l_mgrp@;%{l_mgrp};g" \
         -e "s;@l_mgrp@;%{l_mgrp};g" \
@@ -910,6 +943,22 @@ Provides:     openpkg = 1.3.1-1.3.1
         <`SOURCE rpmtool` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmtool
         <`SOURCE rpmtool` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmtool
     chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmtool
     chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmtool
 
 
+    #   install OpenPKG tool chain execution frontend
+    sed -e "s;@l_prefix@;%{l_prefix};g" \
+        <`SOURCE openpkg.sh` >$RPM_BUILD_ROOT%{l_prefix}/bin/openpkg
+    chmod 755 $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg
+    sed -e "s:@l_prefix@:%{l_prefix}:g" \
+        <`SOURCE openpkg.1` \
+        >$RPM_BUILD_ROOT%{l_prefix}/man/man1/openpkg.1
+
+    #   install more OpenPKG tool chain commands
+    sed -e "s;@l_prefix@;%{l_prefix};g" \
+        <`SOURCE install.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/install
+    chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/install
+    sed -e "s;@l_prefix@;%{l_prefix};g" \
+        <`SOURCE man.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/man
+    chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/man
+
     #   install an own copy of shtool
     #   install an own copy of shtool
     cp $shtool $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/shtool
     cp $shtool $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/shtool
     chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/shtool
     chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/shtool
@@ -953,11 +1002,13 @@ Provides:     openpkg = 1.3.1-1.3.1
     chmod 755 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/rc.openpkg
     chmod 755 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/rc.openpkg
     ( echo "#!/bin/sh"
     ( echo "#!/bin/sh"
       echo "exec %{l_prefix}/etc/rc \${1+\"\$@\"}"
       echo "exec %{l_prefix}/etc/rc \${1+\"\$@\"}"
-    ) >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rc
-    chmod 755 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rc
+    ) >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc
+    chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc
+    ln  $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc \
+        $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rc
     sed -e "s:@l_prefix@:%{l_prefix}:g" \
     sed -e "s:@l_prefix@:%{l_prefix}:g" \
         <`SOURCE rc.8` \
         <`SOURCE rc.8` \
-        >$RPM_BUILD_ROOT%{l_prefix}/man/man8/rc.8
+        >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc.8
 
 
     #   create configuration directory
     #   create configuration directory
     test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg || \
     test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg || \
@@ -1013,10 +1064,8 @@ Provides:     openpkg = 1.3.1-1.3.1
     %dir %{l_prefix}/RPM/TMP
     %dir %{l_prefix}/RPM/TMP
     %dir %{l_prefix}/cgi
     %dir %{l_prefix}/cgi
     %dir %{l_prefix}/bin
     %dir %{l_prefix}/bin
+    %{l_prefix}/bin/openpkg
     %{l_prefix}/bin/rpm
     %{l_prefix}/bin/rpm
-    %{l_prefix}/bin/rpm-config
-    %{l_prefix}/bin/rpm2cpio
-    %{l_prefix}/bin/rpmbuild
     %dir %{l_prefix}/etc
     %dir %{l_prefix}/etc
     %{l_prefix}/etc/rc
     %{l_prefix}/etc/rc
     %config(noreplace) %{l_prefix}/etc/rc.conf
     %config(noreplace) %{l_prefix}/etc/rc.conf
@@ -1030,49 +1079,49 @@ Provides:     openpkg = 1.3.1-1.3.1
     %config %{l_prefix}/etc/openpkg/rpmrc
     %config %{l_prefix}/etc/openpkg/rpmrc
     %{l_prefix}/etc/openpkg/openpkg.pgp
     %{l_prefix}/etc/openpkg/openpkg.pgp
     %dir %{l_prefix}/include
     %dir %{l_prefix}/include
-    %dir %{l_prefix}/include/rpm
-    %{l_prefix}/include/rpm/argv.h
-    %{l_prefix}/include/rpm/beecrypt.h
-    %{l_prefix}/include/rpm/bzlib.h
-    %{l_prefix}/include/rpm/db.h
-    %{l_prefix}/include/rpm/fts.h
-    %{l_prefix}/include/rpm/glob.h
-    %{l_prefix}/include/rpm/hdrinline.h
-    %{l_prefix}/include/rpm/header.h
-    %{l_prefix}/include/rpm/misc.h
-    %{l_prefix}/include/rpm/popt.h
-    %{l_prefix}/include/rpm/rpmal.h
-    %{l_prefix}/include/rpm/rpmbuild.h
-    %{l_prefix}/include/rpm/rpmcli.h
-    %{l_prefix}/include/rpm/rpmdb.h
-    %{l_prefix}/include/rpm/rpmds.h
-    %{l_prefix}/include/rpm/rpmerr.h
-    %{l_prefix}/include/rpm/rpmfc.h
-    %{l_prefix}/include/rpm/rpmfi.h
-    %{l_prefix}/include/rpm/rpmfile.h
-    %{l_prefix}/include/rpm/rpmhash.h
-    %{l_prefix}/include/rpm/rpmio.h
-    %{l_prefix}/include/rpm/rpmlib.h
-    %{l_prefix}/include/rpm/rpmlog.h
-    %{l_prefix}/include/rpm/rpmmacro.h
-    %{l_prefix}/include/rpm/rpmmessages.h
-    %{l_prefix}/include/rpm/rpmpgp.h
-    %{l_prefix}/include/rpm/rpmps.h
-    %{l_prefix}/include/rpm/rpmspec.h
-    %{l_prefix}/include/rpm/rpmsw.h
-    %{l_prefix}/include/rpm/rpmte.h
-    %{l_prefix}/include/rpm/rpmts.h
-    %{l_prefix}/include/rpm/rpmurl.h
-    %{l_prefix}/include/rpm/stringbuf.h
-    %{l_prefix}/include/rpm/ugid.h
-    %{l_prefix}/include/rpm/zlib.h
+    %dir %{l_prefix}/include/openpkg
+    %dir %{l_prefix}/include/openpkg/rpm
+    %{l_prefix}/include/openpkg/rpm/argv.h
+    %{l_prefix}/include/openpkg/rpm/beecrypt.h
+    %{l_prefix}/include/openpkg/rpm/bzlib.h
+    %{l_prefix}/include/openpkg/rpm/db.h
+    %{l_prefix}/include/openpkg/rpm/fts.h
+    %{l_prefix}/include/openpkg/rpm/glob.h
+    %{l_prefix}/include/openpkg/rpm/hdrinline.h
+    %{l_prefix}/include/openpkg/rpm/header.h
+    %{l_prefix}/include/openpkg/rpm/misc.h
+    %{l_prefix}/include/openpkg/rpm/popt.h
+    %{l_prefix}/include/openpkg/rpm/rpmal.h
+    %{l_prefix}/include/openpkg/rpm/rpmbuild.h
+    %{l_prefix}/include/openpkg/rpm/rpmcli.h
+    %{l_prefix}/include/openpkg/rpm/rpmdb.h
+    %{l_prefix}/include/openpkg/rpm/rpmds.h
+    %{l_prefix}/include/openpkg/rpm/rpmerr.h
+    %{l_prefix}/include/openpkg/rpm/rpmfc.h
+    %{l_prefix}/include/openpkg/rpm/rpmfi.h
+    %{l_prefix}/include/openpkg/rpm/rpmfile.h
+    %{l_prefix}/include/openpkg/rpm/rpmhash.h
+    %{l_prefix}/include/openpkg/rpm/rpmio.h
+    %{l_prefix}/include/openpkg/rpm/rpmlib.h
+    %{l_prefix}/include/openpkg/rpm/rpmlog.h
+    %{l_prefix}/include/openpkg/rpm/rpmmacro.h
+    %{l_prefix}/include/openpkg/rpm/rpmmessages.h
+    %{l_prefix}/include/openpkg/rpm/rpmpgp.h
+    %{l_prefix}/include/openpkg/rpm/rpmps.h
+    %{l_prefix}/include/openpkg/rpm/rpmspec.h
+    %{l_prefix}/include/openpkg/rpm/rpmsw.h
+    %{l_prefix}/include/openpkg/rpm/rpmte.h
+    %{l_prefix}/include/openpkg/rpm/rpmts.h
+    %{l_prefix}/include/openpkg/rpm/rpmurl.h
+    %{l_prefix}/include/openpkg/rpm/stringbuf.h
+    %{l_prefix}/include/openpkg/rpm/ugid.h
+    %{l_prefix}/include/openpkg/rpm/zlib.h
     %dir %{l_prefix}/info
     %dir %{l_prefix}/info
     %dir %{l_prefix}/lib
     %dir %{l_prefix}/lib
     %dir %{l_prefix}/lib/openpkg
     %dir %{l_prefix}/lib/openpkg
     %{l_prefix}/lib/openpkg/bash
     %{l_prefix}/lib/openpkg/bash
     %{l_prefix}/lib/openpkg/bzip2
     %{l_prefix}/lib/openpkg/bzip2
     %{l_prefix}/lib/openpkg/uuid
     %{l_prefix}/lib/openpkg/uuid
-    %{l_prefix}/lib/openpkg/uuid.sh
     %{l_prefix}/lib/openpkg/curl
     %{l_prefix}/lib/openpkg/curl
     %{l_prefix}/lib/openpkg/file
     %{l_prefix}/lib/openpkg/file
     %{l_prefix}/lib/openpkg/gzip
     %{l_prefix}/lib/openpkg/gzip
@@ -1103,15 +1152,31 @@ Provides:     openpkg = 1.3.1-1.3.1
     %{l_prefix}/lib/openpkg/rpmx.sh
     %{l_prefix}/lib/openpkg/rpmx.sh
     %{l_prefix}/lib/openpkg/shtool
     %{l_prefix}/lib/openpkg/shtool
     %{l_prefix}/lib/openpkg/tar
     %{l_prefix}/lib/openpkg/tar
-    %{l_prefix}/lib/librpm.a
-    %{l_prefix}/lib/librpmbeecrypt.a
-    %{l_prefix}/lib/librpmbuild.a
-    %{l_prefix}/lib/librpmbz2.a
-    %{l_prefix}/lib/librpmdb.a
-    %{l_prefix}/lib/librpmio.a
-    %{l_prefix}/lib/librpmpopt.a
-    %{l_prefix}/lib/librpmz.a
+    %{l_prefix}/lib/openpkg/librpm.a
+    %{l_prefix}/lib/openpkg/librpmbeecrypt.a
+    %{l_prefix}/lib/openpkg/librpmbuild.a
+    %{l_prefix}/lib/openpkg/librpmbz2.a
+    %{l_prefix}/lib/openpkg/librpmdb.a
+    %{l_prefix}/lib/openpkg/librpmio.a
+    %{l_prefix}/lib/openpkg/librpmpopt.a
+    %{l_prefix}/lib/openpkg/librpmz.a
     %dir %{l_prefix}/libexec
     %dir %{l_prefix}/libexec
+    %dir %{l_prefix}/libexec/openpkg
+    %{l_prefix}/libexec/openpkg/uuid
+    %{l_prefix}/libexec/openpkg/man
+    %{l_prefix}/libexec/openpkg/install
+    %{l_prefix}/libexec/openpkg/lsync
+    %{l_prefix}/libexec/openpkg/lsync.8
+    %{l_prefix}/libexec/openpkg/rc
+    %{l_prefix}/libexec/openpkg/rc.8
+    %{l_prefix}/libexec/openpkg/rpm-config
+    %{l_prefix}/libexec/openpkg/rpm-config.8
+    %{l_prefix}/libexec/openpkg/rpm2cpio
+    %{l_prefix}/libexec/openpkg/rpm2cpio.8
+    %{l_prefix}/libexec/openpkg/rpmbuild
+    %{l_prefix}/libexec/openpkg/rpmbuild.8
+    %{l_prefix}/libexec/openpkg/rpm
+    %{l_prefix}/libexec/openpkg/rpm.8
     %dir %{l_prefix}/man
     %dir %{l_prefix}/man
     %dir %{l_prefix}/man/man1
     %dir %{l_prefix}/man/man1
     %dir %{l_prefix}/man/man2
     %dir %{l_prefix}/man/man2
@@ -1131,17 +1196,11 @@ Provides:     openpkg = 1.3.1-1.3.1
     %dir %{l_prefix}/man/cat7
     %dir %{l_prefix}/man/cat7
     %dir %{l_prefix}/man/cat8
     %dir %{l_prefix}/man/cat8
     %dir %{l_prefix}/man/cat9
     %dir %{l_prefix}/man/cat9
-    %{l_prefix}/man/man8/lsync.8
-    %{l_prefix}/man/man8/rc.8
-    %{l_prefix}/man/man8/rpm-config.8
-    %{l_prefix}/man/man8/rpm.8
-    %{l_prefix}/man/man8/rpm2cpio.8
-    %{l_prefix}/man/man8/rpmbuild.8
+    %{l_prefix}/man/man1/openpkg.1
     %dir %{l_prefix}/sbin
     %dir %{l_prefix}/sbin
     %dir %{l_prefix}/pub
     %dir %{l_prefix}/pub
     %dir %{l_prefix}/share
     %dir %{l_prefix}/share
     %dir %{l_prefix}/var
     %dir %{l_prefix}/var
-    %{l_prefix}/sbin/lsync
     %dir %{l_prefix}/local
     %dir %{l_prefix}/local
     %{l_prefix}/local/README
     %{l_prefix}/local/README
     %{l_prefix}/local/.lsyncrc
     %{l_prefix}/local/.lsyncrc
@@ -1748,9 +1807,16 @@ Provides:     openpkg = 1.3.1-1.3.1
 
 
     #   remember what OpenPKG RPM version was installed, so we can
     #   remember what OpenPKG RPM version was installed, so we can
     #   correctly upgrade the RPM database in the %post section (see below).
     #   correctly upgrade the RPM database in the %post section (see below).
-    if [ -d ${prefix}/RPM/DB -a -x ${prefix}/bin/rpm ]; then
+    if [ -d ${prefix}/RPM/DB ]; then
+        if [ -x "${prefix}/bin/openpkg" -a -x "${prefix}/libexec/openpkg/rpm" ]; then
+            #   OpenPKG 2.0
+            rpm="${prefix}/bin/openpkg rpm"
+        else
+            #   OpenPKG 1.x
+            rpm="${prefix}/bin/rpm"
+        fi
         rm -f ${prefix}/RPM/DB/.version >/dev/null 2>&1 || true
         rm -f ${prefix}/RPM/DB/.version >/dev/null 2>&1 || true
-        ${prefix}/bin/rpm --version |\
+        $rpm --version |\
             sed -e 's;^;X;' \
             sed -e 's;^;X;' \
                 -e 's;^X[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$;\1;' \
                 -e 's;^X[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$;\1;' \
                 -e 's;^X[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$;\1;' \
                 -e 's;^X[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$;\1;' \
@@ -1760,7 +1826,7 @@ Provides:     openpkg = 1.3.1-1.3.1
 
 
 %post
 %post
     #   update or initially create OpenPKG UUID configuration
     #   update or initially create OpenPKG UUID configuration
-    %{l_prefix}/lib/openpkg/uuid.sh update >/dev/null 2>&1 || true
+    %{l_prefix}/bin/openpkg uuid update >/dev/null 2>&1 || true
 
 
     #   determine new and old OpenPKG RPM version
     #   determine new and old OpenPKG RPM version
     V_rpm_new="%{V_rpm}"
     V_rpm_new="%{V_rpm}"
@@ -1791,10 +1857,10 @@ Provides:     openpkg = 1.3.1-1.3.1
           echo "be used, but it is strongly recommended to up upgrade it"
           echo "be used, but it is strongly recommended to up upgrade it"
           echo "as soon as possible to the latest Berkeley-DB format files"
           echo "as soon as possible to the latest Berkeley-DB format files"
           echo "by executing the command:"
           echo "by executing the command:"
-          echo "    \$ %{l_prefix}/bin/rpm --db-rebuild"
+          echo "    \$ %{l_prefix}/bin/openpkg rpm --db-rebuild"
           echo "In case of problems with the RPM database you can always"
           echo "In case of problems with the RPM database you can always"
           echo "execute the command:"
           echo "execute the command:"
-          echo "    \$ %{l_prefix}/bin/rpm --db-cleanup"
+          echo "    \$ %{l_prefix}/bin/openpkg rpm --db-cleanup"
         ) | %{l_prefix}/lib/openpkg/rpmtool msg -b -t warn
         ) | %{l_prefix}/lib/openpkg/rpmtool msg -b -t warn
     fi
     fi
 
 

+ 1 - 0
openpkg/pod2man.sh

@@ -1,4 +1,5 @@
 #!/bin/sh
 #!/bin/sh
+pod2man --section=1 --center="OpenPKG" --release="OPENPKG(8)"    --date="OpenPKG" --quotes=none openpkg.pod    >openpkg.1
 pod2man --section=8 --center="OpenPKG" --release="RC(8)"         --date="OpenPKG" --quotes=none rc.pod         >rc.8
 pod2man --section=8 --center="OpenPKG" --release="RC(8)"         --date="OpenPKG" --quotes=none rc.pod         >rc.8
 pod2man --section=8 --center="OpenPKG" --release="RPMTOOL(8)"    --date="OpenPKG" --quotes=none rpmtool.pod    >rpmtool.8
 pod2man --section=8 --center="OpenPKG" --release="RPMTOOL(8)"    --date="OpenPKG" --quotes=none rpmtool.pod    >rpmtool.8
 pod2man --section=8 --center="OpenPKG" --release="LSYNC(8)"      --date="OpenPKG" --quotes=none lsync.pod      >lsync.8
 pod2man --section=8 --center="OpenPKG" --release="LSYNC(8)"      --date="OpenPKG" --quotes=none lsync.pod      >lsync.8

+ 3 - 3
openpkg/rc.openpkg

@@ -17,15 +17,15 @@
     echo "openpkg_active=\"$openpkg_active\""
     echo "openpkg_active=\"$openpkg_active\""
 
 
 %info -o
 %info -o
-    @l_prefix@/lib/openpkg/uuid.sh info
+    @l_prefix@/bin/openpkg uuid info
 
 
 %start
 %start
     rcService openpkg enable yes || exit 0
     rcService openpkg enable yes || exit 0
-    @l_prefix@/lib/openpkg/uuid.sh update >/dev/null 2>&1 || true
+    @l_prefix@/bin/openpkg uuid update >/dev/null 2>&1 || true
 
 
 %daily
 %daily
     rcService openpkg enable yes || exit 0
     rcService openpkg enable yes || exit 0
-    @l_prefix@/lib/openpkg/uuid.sh update >/dev/null 2>&1 || true
+    @l_prefix@/bin/openpkg uuid update >/dev/null 2>&1 || true
 
 
 %env -p0
 %env -p0
     rcService openpkg enable yes || exit 0
     rcService openpkg enable yes || exit 0

+ 3 - 3
openpkg/root.README

@@ -5,13 +5,13 @@
 
 
   Short OpenPKG RPM query command summary:
   Short OpenPKG RPM query command summary:
 
 
-  $ @l_prefix@/bin/rpm -qa
+  $ @l_prefix@/bin/openpkg rpm -qa
     (q)uery list of (a)ll installed packages
     (q)uery list of (a)ll installed packages
 
 
-  $ @l_prefix@/bin/rpm -qi <name>
+  $ @l_prefix@/bin/openpkg rpm -qi <name>
     (q)uery (i)nformation about package <name>
     (q)uery (i)nformation about package <name>
 
 
-  $ @l_prefix@/bin/rpm -qlv <name>
+  $ @l_prefix@/bin/openpkg rpm -qlv <name>
     (q)uery (v)erbose (l)ist of installed files of package <name>
     (q)uery (v)erbose (l)ist of installed files of package <name>
 
 
   Use "eval `@l_prefix@/etc/rc --eval all env`" from within a user's
   Use "eval `@l_prefix@/etc/rc --eval all env`" from within a user's

+ 3 - 3
openpkg/rpmdb

@@ -117,7 +117,7 @@ if [ ".$dbpath" = . ]; then
     dbpath="$prefix/RPM/DB"
     dbpath="$prefix/RPM/DB"
 fi
 fi
 if [ ".$rpm" = . ]; then
 if [ ".$rpm" = . ]; then
-    rpm="$prefix/bin/rpm"
+    rpm="$prefix/bin/openpkg rpm"
 fi
 fi
 
 
 ##
 ##
@@ -209,7 +209,7 @@ db_wait () {
     verbose 2 "waiting for RPM database to be available"
     verbose 2 "waiting for RPM database to be available"
     local i=0
     local i=0
     while [ $i -lt 10 ]; do
     while [ $i -lt 10 ]; do
-        if $prefix/bin/rpm -q openpkg >/dev/null 2>&1; then
+        if $prefix/libexec/openpkg/rpm -q openpkg >/dev/null 2>&1; then
             break
             break
         fi
         fi
         sleep 1
         sleep 1
@@ -361,7 +361,7 @@ fi
 if [ ! -d $prefix ]; then
 if [ ! -d $prefix ]; then
     error "OpenPKG instance directory \"$prefix\" not found"
     error "OpenPKG instance directory \"$prefix\" not found"
 fi
 fi
-if [ ! -x $prefix/bin/rpm ]; then
+if [ ! -x $prefix/bin/openpkg ]; then
     error "OpenPKG instance directory \"$prefix\" not valid"
     error "OpenPKG instance directory \"$prefix\" not valid"
 fi
 fi
 
 

+ 6 - 3
openpkg/rpmmacros

@@ -27,7 +27,7 @@
 ##
 ##
 
 
 #   the OpenPKG release identification (for the current package or as a fallback for the bootstrap package)
 #   the OpenPKG release identification (for the current package or as a fallback for the bootstrap package)
-%l_openpkg_release(F:)   %(echo "%{?release}%{!?release:%(%{l_prefix}/bin/rpm -q --qf '%{release}' openpkg)}" | sed -e 's;^;X;' -e 's;^X\\([0-9][0-9]*\\.[0-9][0-9]*\\).*$;\\1;' -e 's;^X\\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\\)$;CURRENT;' -e 's;^X.*$;UNKNOWN;' | awk '{ printf(%{?-F:%{-F*}}%{!?-F:"OpenPKG-%s"}, $0); }')
+%l_openpkg_release(F:)   %(echo "%{?release}%{!?release:%(%{l_rpm} -q --qf '%{release}' openpkg)}" | sed -e 's;^;X;' -e 's;^X\\([0-9][0-9]*\\.[0-9][0-9]*\\).*$;\\1;' -e 's;^X\\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\\)$;CURRENT;' -e 's;^X.*$;UNKNOWN;' | awk '{ printf(%{?-F:%{-F*}}%{!?-F:"OpenPKG-%s"}, $0); }')
 
 
 #   the OpenPKG OIDs (root is officially registered at IANA)
 #   the OpenPKG OIDs (root is officially registered at IANA)
 %l_openpkg_oid           1.3.6.1.4.1.18749
 %l_openpkg_oid           1.3.6.1.4.1.18749
@@ -230,7 +230,10 @@
 
 
 #   provide fixed paths to tools (additional)
 #   provide fixed paths to tools (additional)
 %l_rc                    %{l_prefix}/etc/rc
 %l_rc                    %{l_prefix}/etc/rc
-%l_rpm                   %{l_prefix}/bin/rpm
+%l_rpm                   %{l_prefix}/libexec/openpkg/rpm
+%l_rpm2cpio              %{l_prefix}/libexec/openpkg/rpm2cpio
+%l_rpm_config            %{l_prefix}/libexec/openpkg/rpm-config
+%l_lsync                 %{l_prefix}/libexec/openpkg/lsync
 %l_rpmtool               %{l_prefix}/lib/openpkg/rpmtool
 %l_rpmtool               %{l_prefix}/lib/openpkg/rpmtool
 %l_shtool                %{l_prefix}/lib/openpkg/shtool
 %l_shtool                %{l_prefix}/lib/openpkg/shtool
 %l_curl                  %{l_prefix}/lib/openpkg/curl
 %l_curl                  %{l_prefix}/lib/openpkg/curl
@@ -330,7 +333,7 @@ Provides: %{name}::%{1} = %(echo '%{expand:%%{%{1}}}' | sed -e 's;%%;%%%%;g' -e
     %{nil}
     %{nil}
 
 
 #   macro-processor add-on for testing external conditions
 #   macro-processor add-on for testing external conditions
-%l_test(pfd)             %(if [ ".%{?-p:yes}" = .yes ]; then %{l_prefix}/bin/rpm -q %1 >/dev/null 2>&1; rc=$?; elif [ ".%{?-f:yes}" = .yes ]; then test -f %1; rc=$?; elif [ ".%{?-d:yes}" = .yes ]; then test -d %1; rc=$?; fi; if [ ".$rc" = .0 ]; then echo "yes"; else echo "no"; fi)
+%l_test(pfd)             %(if [ ".%{?-p:yes}" = .yes ]; then %{l_rpm} -q %1 >/dev/null 2>&1; rc=$?; elif [ ".%{?-f:yes}" = .yes ]; then test -f %1; rc=$?; elif [ ".%{?-d:yes}" = .yes ]; then test -d %1; rc=$?; fi; if [ ".$rc" = .0 ]; then echo "yes"; else echo "no"; fi)
 
 
 #   default list of vendor source fetching locations
 #   default list of vendor source fetching locations
 %l_fetch_mirror_0        -
 %l_fetch_mirror_0        -

+ 1 - 1
openpkg/rpmx.pl

@@ -39,7 +39,7 @@ my $CFG = {
 
 
 #   determine path to executables
 #   determine path to executables
 my $prefix = shift(@ARGV);
 my $prefix = shift(@ARGV);
-$CFG->{PRG}->{"rpm"}   = $prefix."/bin/rpm";
+$CFG->{PRG}->{"rpm"}   = $prefix."/libexec/openpkg/rpm";
 $CFG->{PRG}->{"curl"}  = $prefix."/lib/openpkg/curl";
 $CFG->{PRG}->{"curl"}  = $prefix."/lib/openpkg/curl";
 $CFG->{PRG}->{"bzip2"} = $prefix."/lib/openpkg/bzip2";
 $CFG->{PRG}->{"bzip2"} = $prefix."/lib/openpkg/bzip2";
 $CFG->{PRG}->{"gzip"}  = $prefix."/lib/openpkg/gzip";
 $CFG->{PRG}->{"gzip"}  = $prefix."/lib/openpkg/gzip";

+ 1 - 1
openpkg/uuid.sh

@@ -28,7 +28,7 @@
 prefix="@l_prefix@"
 prefix="@l_prefix@"
 musr="@l_musr@"
 musr="@l_musr@"
 mgrp="@l_mgrp@"
 mgrp="@l_mgrp@"
-prog_rpm="$prefix/bin/rpm"
+prog_rpm="$prefix/libexec/openpkg/rpm"
 prog_shtool="$prefix/lib/openpkg/shtool"
 prog_shtool="$prefix/lib/openpkg/shtool"
 prog_uuid="$prefix/lib/openpkg/uuid"
 prog_uuid="$prefix/lib/openpkg/uuid"
 file_uuid="$prefix/etc/openpkg/uuid"
 file_uuid="$prefix/etc/openpkg/uuid"