OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall Root: /v/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-src Date: 25-Aug-2006 10:31:59 Branch: HEAD Handle: 2006082509315401 Modified files: openpkg-src/openpkg HISTORY README openpkg.spec Log: cleanup and bring up-to-date the source tree documentation Summary: Revision Changes Path 1.365 +2 -0 openpkg-src/openpkg/HISTORY 1.24 +116 -118 openpkg-src/openpkg/README 1.517 +10 -9 openpkg-src/openpkg/openpkg.spec ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-src/openpkg/HISTORY ============================================================================ $ cvs diff -u -r1.364 -r1.365 HISTORY --- openpkg-src/openpkg/HISTORY 24 Aug 2006 14:27:19 -0000 1.364 +++ openpkg-src/openpkg/HISTORY 25 Aug 2006 08:31:54 -0000 1.365 @@ -2,6 +2,8 @@ 2006 ==== +20060825 cleanup and bring up-to-date the source tree documentation + 20060824 **** RELEASE AS PART OF OPENPKG 2.20060824 *** 20060823 upgrade to openpkg-tools 0.8.70 20060823 create fallback/override directories with owner/group musr/mgrp @@ . patch -p0 <<'@@ .' Index: openpkg-src/openpkg/README ============================================================================ $ cvs diff -u -r1.23 -r1.24 README --- openpkg-src/openpkg/README 7 May 2004 14:13:19 -0000 1.23 +++ openpkg-src/openpkg/README 25 Aug 2006 08:31:55 -0000 1.24 @@ -9,26 +9,36 @@ The Files --------- - README .................. this file ;) + README .................. this file ;-) + HISTORY ................. change history tracking of this package - openpkg.boot ............ the bootstrapping procedure openpkg.spec ............ the regular build procedure + openpkg.boot ............ the bootstrapping procedure - gzip-1.3.5.tar .......... untouched distribution tarball of the GNU gzip tool - make-3.80.tar.gz ........ untouched distribution tarball of the GNU make tool - patch-2.5.9.tar.gz ...... untouched distribution tarball of the GNU patch tool - bash-2.05b.tar.gz ....... untouched distribution tarball of the GNU bash tool - tar-1.13.94.tar.gz ...... untouched distribution tarball of the GNU tar tool - uuid-1.0.0.tar.gz ....... untouched distribution tarball of the OSSP uuid tool - curl-7.11.2.tar.gz ...... untouched distribution tarball of the cURL tool - bzip2-1.0.2.tar.gz ...... untouched distribution tarball of the BZIP2 library - zlib-1.2.1.tar.gz ....... untouched distribution tarball of the ZLIB library - beecrypt-3.1.0.tar.gz ... untouched distribution tarball of the BeeCrypt library - rpm-4.2.1.tar.gz ........ untouched distribution tarball of the RPM tool + gzip-*.tar .............. untouched distribution tarball of the GNU gzip tool + make-*.tar.gz ........... untouched distribution tarball of the GNU make tool + patch-*.tar.gz .......... untouched distribution tarball of the GNU patch tool + bash-*.tar.gz ........... untouched distribution tarball of the GNU bash tool + tar-*.tar.gz ............ untouched distribution tarball of the GNU tar tool + uuid-*.tar.gz ........... untouched distribution tarball of the OSSP uuid tool + curl-*.tar.gz ........... untouched distribution tarball of the cURL tool + bzip2-*.tar.gz .......... untouched distribution tarball of the BZIP2 library + zlib-*.tar.gz ........... untouched distribution tarball of the ZLIB library + beecrypt-*.tar.gz ....... untouched distribution tarball of the BeeCrypt library + rpm-*.tar.gz ............ untouched distribution tarball of the RPM tool + config-*.tar.gz ......... untouched distribution tarball of the GNU config scripts + openpkg-registry-*.tar.gz untouched distribution tarball of the OpenPKG Registry + openpkg-tools-*.tar.gz .. untouched distribution tarball of the OpenPKG Tool Chain + openssl-*.tar.gz ........ untouched distribution tarball of the OpenSSL toolkit + perl-*-mini.tar.gz ...... stripped down distribution tarball of the Perl tool make.patch .............. patch for GNU make bash.patch .............. patch for GNU bash + tar.patch ............... patch for GNU tar beecrypt.patch .......... patch for BeeCrypt + openssl.patch ........... patch for OpenSSL + perl.patch .............. patch for Perl + gzip.c .................. replacement file for GNU gzip rpm.patch.bugfix ........ patch for RPM (bugfixing parts) rpm.patch.feature ....... patch for RPM (new features parts) rpm.patch.porting ....... patch for RPM (portability enhancement parts) @@ -44,14 +54,36 @@ dot.bash_login .......... the source for installed <prefix>/.bash_login dot.lsyncrc ............. the source for installed <prefix>/local/.lsyncrc + openpkg.c ............... the OpenPKG frontend (set-uid wrapper) + openpkg.sh .............. the OpenPKG frontend (main script) + openpkg.pod ............. the OpenPKG frontend manual page (source) + openpkg.1 ............... the OpenPKG frontend manual page (pre-generated output) + rc ...................... the OpenPKG run-command handling script rc.func ................. the OpenPKG run-command function definitions rc.conf ................. the OpenPKG run-command configuration template rc.openpkg .............. the OpenPKG run-command script for the bootstrap package + rc.pod .................. the OpenPKG run-command script manual page (source) + rc.8 .................... the OpenPKG run-command script manual page (pre-generated output) + + release.sh .............. the OpenPKG release information utility script + release.pod ............. the OpenPKG release information utility manual page (source) + release.8 ............... the OpenPKG release information utility manual page (pre-generated output) + + uuid.sh ................. the OpenPKG UUID management utility script + uuid.pod ................ the OpenPKG UUID management utility manual page (source) + uuid.8 .................. the OpenPKG UUID management utility manual page (pre-generated output) + + rpmdb ................... the OpenPKG RPM database management utility rpmtool ................. the rpmtool tool (program source) rpmtool.8 ............... the rpmtool tool (manual page) rpmtool.pod ............. the rpmtool tool (manual page source) + shtool .................. the portable shell tool (GNU shtool) + + rpm-config.sh ........... the RPM C API helper script + rpm-config.pod .......... the RPM C API helper manual page (source) + rpm-config.8 ............ the RPM C API helper manual page (pre-generated output) lsync ................... the lsync tool (program source) lsync.8 ................. the lsync tool (manual page) @@ -62,26 +94,23 @@ aux.wrapsrc.sh .......... wrapper script for generating openpkg-V-R.src.sh aux.wrapbin.sh .......... wrapper script for generating openpkg-V-R.P-L.sh - shtool .................. the portable shell tool (GNU shtool) - platform ................ the platform identification script (OSSP platform) - - rpmx.sh ................. RPM eXtension (Shell wrapper) - rpmx.pl ................. RPM eXtension (Perl program) - mkproxyrpm.pl ........... RPM eXtension (Perl program, --makeproxy part) + pod2man.sh .............. helper script for pre-generating manual page outputs + man.sh .................. helper script for "openpkg man" command + install.sh .............. helper script for "openpkg install" command openpkg.pgp ............. the OpenPGP public key of "The OpenPKG Project" The Bootstrapping Procedure --------------------------- - The complexity of this OpenPKG RPM package results from the fact - that we force us to treat this bootstrapping package equal to every - other regular package. This implies first that the packaging tool - RPM is packaged with itself as an OpenPKG RPM package (means: its + The complexity of this OpenPKG RPM package results from the fact that + we force us to treat this bootstrapping package equal to every other + regular OpenPKG RPM package. First, this implies that the packaging + tool RPM is packaged with itself as an OpenPKG RPM package (means: its build procedure is a real RPM .spec file and it can be installed and - upgraded through a binary or source RPM), second that RPM is installed - into the same filesystem hierarchy as all other packages and third - that RPM manages its own files. The reason for this should be obvious: + upgraded through a binary or source RPM). Second, RPM is installed + into the same filesystem hierarchy as all other packages. Third, RPM + manages its own files. The reason for this approach should be obvious: 100% consistency for the whole OpenPKG software packaging facility! The drawback is that this package requires a very tricky bootstrapping @@ -89,101 +118,70 @@ you ever wanted to know the gory details, here they are... The first step was that we wrote the regular openpkg.spec file for - building the bootstrap package with RPM under the assumption that RPM - is already available. This way we can provide RPM as an RPM package. - Just remains the problem how we actually bootstrap in the case where - RPM is still not available, i.e., when we reach a new platform and - have to build the package from scratch. Here the openpkg.boot script - comes into play. It executes the openpkg.spec build procedure very - similar to the way RPM would do ("rpm -bb"). That is, openpkg.boot - partly emulates RPM -- just enough that openpkg.spec works. As a - result, openpkg.spec cannot use any fancy RPM features or other things - before openpkg.boot is able to emulate it, of course. - - After openpkg.boot executed the %prep, %build and %install scripts - of openpkg.spec, there is a fresh version of the target filesystem - hierarchy staying under a temporary build root. The openpkg.boot - script then creates a very special temporary "rpm" command which - allows the installed "rpm" command inside the build root to work - (although it is built for the final target filesystem path). Then - the $RPM_BOOT variable is set and the package is again "built" via - openpkg.spec -- but this time with the real RPM tool. To avoid - unneccessary re-compilation, the openpkg.spec skips %prep, %build - and %install if $RPM_BOOT is defined, so on this second build phase, - only %files is executed, i.e., a binary RPM openpkg-V-R.P-L.rpm is - rolled from the files in the build root. Additionally, a source RPM - openpkg-V-R.src.rpm is rolled for consistency reasons. - - Finally we override the installation in the build root again by - installing the now rolled binary RPM openpkg-V-R.P-L.rpm again by - using the real RPM tool. This way we achieve that RPM is remembered - as an RPM package in its own database. We just have to make sure the - package is still relocated to the build root while installing. For - this we could use --prefix=$RPM_BUILD_ROOT%{l_prefix}, but this would + building the bootstrap package with OpenPKG RPM under the assumption + that OpenPKG RPM is already available. This way we can provide OpenPKG + RPM as an RPM package. Just remains the problem how we actually + bootstrap in case where OpenPKG RPM is still not available, i.e., + when we reach a new platform and have to build the package from + scratch. Here the "openpkg.boot" script comes into play. It executes + the "openpkg.spec" build procedure very similar to the way the real + OpenPKG RPM would do ("openpkg rpm -bb"). That is, "openpkg.boot" + partly emulates OpenPKG RPM -- just enough that "openpkg.spec" works. + As a result, "openpkg.spec" cannot use any fancy OpenPKG RPM features + or other things before "openpkg.boot" is able to emulate it, of + course. + + After "openpkg.boot" executed the "%prep", "%build" and "%install" + scripts of "openpkg.spec", there is a fresh version of the target + filesystem hierarchy staying under a temporary "build root". The + "openpkg.boot" script then creates a very special temporary "openpkg + rpm" command which allows the installed "openpkg rpm" command inside + the "build root" to work (although it is built for the final target + filesystem path). Then the $RPM_BOOT variable is set and the package + is _again_ build via "openpkg.spec" -- but this time with the real + OpenPKG RPM. To avoid unneccessary re-compilation, the "openpkg.spec" + skips "%prep", "%build" and "%install" sections if $RPM_BOOT is + defined. So, on this second build phase, only the "%files" section is + executed, i.e., a binary OpenPKG RPM package "openpkg-V-R.P-T.rpm" + is rolled from the files in the "build root". Additionally, a source + OpenPKG RPM package "openpkg-V-R.src.rpm" is rolled for consistency + reasons. + + Finally, we override the installation in the "build root" + again by installing the now rolled binary OpenPKG RPM package + "openpkg-V-R.P-T.rpm" by using the real OpenPKG RPM. This way + we achieve that OpenPKG RPM is remembered as a real OpenPKG RPM + package in the RPM database. We just have to make sure the package + is still relocated to the "build root" while installing. For this + we could use "--prefix=$RPM_BUILD_ROOT%{l_prefix}", but this would create an incorrect file list for the package "openpkg" in the RPM - database. Instead we use the tricky --justdb option for "rpm" which - means "rpm" behaves as it would install into the real location, but - does not actually install anything. But as a side-effect, the database - inside the build root is now correct. - - After this procedure, the build root contains the target filesystem - hierarchy with RPM installed with itself. What is now remaining is - to roll a bootstrap package with this stuff for initial installation - without RPM. For this the build root is packed into a tarball, - compressed, again wrapped into another tarball together with the - uncompression tools, and finally wrapped into a self-extracting - shell script by appending aux.wrapbin.sh (padded to 64KB for easier - unpacking of the attached tarball) to its front. + database. Instead we use the tricky "--justdb" option for "openpkg + rpm" which means "openpkg rpm" behaves as it would install into the + real location, but does not actually install anything. But as a + side-effect, the database inside the "build root" is now correct. + + After this procedure, the "build root" contains the target filesystem + hierarchy with OpenPKG RPM installed with itself. What is now just + remaining is to roll a bootstrap package "openpkg" with this stuff for + initial installation without OpenPKG RPM. For this the "build root" + is packed into a "tarball", compressed, again wrapped into another + tarball together with the uncompression tools ("bzip2" and "tar"), + and finally wrapped into a self-extracting shell script by appending + "aux.wrapbin.sh" (padded to 64KB for easier unpacking of the attached + tarball) to its front. - The result is the binary bootstrap script openpkg-V-R.P-L.sh which + The result is the binary bootstrap script "openpkg-V-R.P-T.sh" which can be used to install the target hierarchy from scratch without any - pre-installed RPM. Nevetheless the installed target hierarchy looks - _exactly_ as it would have been installed with RPM. If one later wants - to upgrade this hierarchy one can just use the generated or a newer - openpkg-V-R.P-L.rpm. + pre-installed OpenPKG RPM. Nevetheless, the installed target hierarchy + looks _exactly_ as it would have been installed with OpenPKG RPM. + If one later wants to upgrade this hierarchy one can just use the + generated (or a newer) "openpkg-V-R.P-T.rpm". To allow one to easily repeat this from-source bootstrapping procedure - on other machines, one can run "./openpkg.boot -s" which rolls a - openpkg-V-R.src.sh script which is a self-extracting script containing - an attached tarball of the sources of this directory. This script - contains the same contents like openpkg-V-R.src.rpm, but is intended - for running the described bootstrapping procedure from scratch without - any RPM. - - Platforms and Level of Support - ------------------------------ - - Current this boostrapping package officially supports the following - platforms (older versions are often still working, but no longer - supported): - - ix86-freebsd4.9 - ix86-freebsd5.1 - alpha-freebsd5.1 - ix86-debian2.2 - ix86-debian3.0 - ix86-gentoo1.4 - ix86-suse8.2 - ix86-redhat9 - sparc64-solaris2.6 - sparc64-solaris8 - sparc64-solaris9 - ix86-solaris9 - ix86-solaris10 - ix86-unixware7.1.3 - ix86-darwin6.6.2 - - The following platforms were supported by older versions of - this package, but their support status is currently not known: - - ix86-netbsd1.6 - hppa-hpux11.20 - - For following platforms until now are not supported, but support for - them is planned: - - ix86-openbsd2.4 - alpha-tru645.X - mips-irix5.X.X - ppc-aix4.X.X + on other machines, one can run "./openpkg.boot -s" which rolls + a "openpkg-V-R.src.sh" script which is a self-extracting script + containing an attached tarball of the sources of this directory. This + script contains the same contents like "openpkg-V-R.src.rpm", but + is intended for running the described bootstrapping procedure from + scratch without any OpenPKG RPM. @@ . patch -p0 <<'@@ .' Index: openpkg-src/openpkg/openpkg.spec ============================================================================ $ cvs diff -u -r1.516 -r1.517 openpkg.spec --- openpkg-src/openpkg/openpkg.spec 24 Aug 2006 14:27:19 -0000 1.516 +++ openpkg-src/openpkg/openpkg.spec 25 Aug 2006 08:31:55 -0000 1.517 @@ -22,14 +22,15 @@ ## SUCH DAMAGE. ## -# NOTICE: This RPM specification is _very_ special, because it is -# used both for bootstrapping OpenPKG with its RPM and for regular -# builds of RPM in order to upgrade an existing installation. For this -# it has to interact correctly with the "openpkg.boot" script. See -# this companion script for details, but do not touch anything here -# until you are 100% sure about what you are doing. In short: This -# script is allowed to use only a very restricted subset of the RPM -# functionality! +# NOTICE: This OpenPKG RPM specification is _very_ special, because +# it is used both for bootstrapping OpenPKG with its OpenPKG RPM and +# for regular builds of OpenPKG RPM in order to upgrade an existing +# installation. For this it has to interact correctly with the +# "openpkg.boot" script. See the documentation in the file "README" +# and the source of the companion script "openpkg.boot" for details, +# but do not touch anything here until you are 100% sure about what +# you are doing. In short: This script is allowed to use only a very +# restricted subset of the OpenPKG RPM functionality! # BUILD REQUIREMENTS: # o any sh(1) @@ -38,7 +39,7 @@ # o any cc(1) # the package version/release -%define V_openpkg 20060824 +%define V_openpkg 20060825 # the used software versions %define V_rpm 4.2.1 @@ . ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List openpkg-cvs@openpkg.org