[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openpkg-cvs
Subject:    [CVS] OpenPKG: openpkg-src/openpkg/ README openpkg.spec openpkg-web/ n...
From:       "Ralf S. Engelschall" <rse () openpkg ! org>
Date:       2003-10-31 9:56:37
[Download RAW message or body]

  OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Ralf S. Engelschall
  Root:   /e/openpkg/cvs                   Email:  rse@openpkg.org
  Module: openpkg-src openpkg-web          Date:   31-Oct-2003 10:56:37
  Branch: HEAD                             Handle: 2003103109563501

  Modified files:
    openpkg-src/openpkg     README openpkg.spec
    openpkg-web             news.txt

  Log:
    work-off the bootstrap package internal documentation

  Summary:
    Revision    Changes     Path
    1.19        +128 -101   openpkg-src/openpkg/README
    1.240       +1  -1      openpkg-src/openpkg/openpkg.spec
    1.7244      +1  -0      openpkg-web/news.txt
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-src/openpkg/README
  ============================================================================
  $ cvs diff -u -r1.18 -r1.19 README
  --- openpkg-src/openpkg/README	22 Sep 2003 14:07:45 -0000	1.18
  +++ openpkg-src/openpkg/README	31 Oct 2003 09:56:36 -0000	1.19
  @@ -1,6 +1,6 @@
   
  -  OpenPKG Source Code Tree
  -  ========================
  +  OpenPKG Boostrap Package Source Tree
  +  ====================================
   
     This is the source code tree for the OpenPKG bootstrap package. What
     you find here is rather complex and tricky stuff, so don't be confused
  @@ -12,150 +12,177 @@
     README .................. this file ;)
   
     openpkg.boot ............ the bootstrapping procedure
  -  openpkg.spec ............ the build procedure
  +  openpkg.spec ............ the regular build 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
  -  make.patch .............. patch for GNU make
  -  patch-2.5.4.tar.gz ...... untouched distribution tarball of the GNU patch 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.25.tar.gz ...... untouched distribution tarball of the GNU tar tool
     curl-7.10.6.tar.gz ...... untouched distribution tarball of the cURL tool
  -
     bzip2-1.0.2.tar.gz ...... untouched distribution tarball of the BZIP2 library
     zlib-1.1.4.tar.gz ....... untouched distribution tarball of the ZLIB library
  -  beecrypt-3.1.0.tar.gz ... untouched distribution tarball of the BeeCrypt
  +  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
  +
  +  make.patch .............. patch for GNU make
  +  bash.patch .............. patch for GNU bash
     beecrypt.patch .......... patch for BeeCrypt
  -  rpm-4.2.1.tar.gz ........ distribution tarball of the RPM tool
     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) 
     rpm.patch.regen ......... patch for RPM (re-generated files parts) 
   
  -  rpmpopt ................. extensions for RPM's popt configuration
  -  rpmrc ................... replacements for RPM's run-commands
  -  rpmmacros ............... replacements for RPM's macros
  -
  -  root.README ............. the <root>/README file for the installation area
  -  local.README ............ the <root>/local/README file for the installation area
  -  dot.bashrc .............. the <root>/.bashrc file 
  -  dot.bash_login .......... the <root>/.bash_login file 
  -  dot.lsyncrc ............. the <root>/local/.lsyncrc file 
  +  rpmpopt ................. replacements/extensions for RPM's POPT configuration
  +  rpmmacros ............... replacements/extensions for RPM's macros
  +  rpmrc ................... replacements for RPM's run-command configuration
  +
  +  root.README ............. the source for installed <prefix>/README
  +  local.README ............ the source for installed <prefix>/local/README
  +  dot.bashrc .............. the source for installed <prefix>/.bashrc
  +  dot.bash_login .......... the source for installed <prefix>/.bash_login
  +  dot.lsyncrc ............. the source for installed <prefix>/local/.lsyncrc
     
  -  rc ...................... the run-command handling script
  -  rc.func ................. the run-command function definitions
  -  rc.conf ................. the run-command configuration template
  -  rc.openpkg .............. the run-command script for the OpenPKG hierarchy
  +  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
   
     rpmtool ................. the rpmtool tool (program source)
     rpmtool.8 ............... the rpmtool tool (manual page)
     rpmtool.pod ............. the rpmtool tool (manual page source)
  +
     lsync ................... the lsync tool (program source)
     lsync.8 ................. the lsync tool (manual page)
     lsync.pod ............... the lsync tool (manual page source)
   
  -  aux.wrapsrc.sh .......... wrapper script for generating openpkg-X.X-X.src.sh
  -  aux.wrapbin.sh .......... wrapper script for generating openpkg-X.X-X.YYY-YYYY-ZZ.sh 
     aux.usrgrp.sh ........... user/group name/id determination script
     aux.prereq.sh ........... prerequisite checking script
  +  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 
   
  -  platform ................ platform identification script
  -
  -  openpkg.pgp ............. the OpenPGP public key of "The OpenPKG Project"
  -
  -  shtool .................. the pre-generated GNU shtool program
  +  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)
   
  +  openpkg.pgp ............. the OpenPGP public key of "The OpenPKG Project"
  +
     The Bootstrapping Procedure
     ---------------------------
   
  -  The complexity of this RPM package results from the fact that we force
  -  us to treat RPM equal to every other package. This implies first that
  -  RPM itself is an RPM package (means: its build procedure is a 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: 100% consistency for the
  -  whole software package facility!
  -
  -  The drawback is that the RPM package requires a very tricky
  -  bootstrapping procedure which had cost a lot of time to figure out
  -  and establish. If you ever wanted to know the gory details, here they
  -  are...
  +  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
  +  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:
  +  100% consistency for the whole OpenPKG software packaging facility!
  +
  +  The drawback is that this package requires a very tricky bootstrapping
  +  procedure which had cost a lot of time to figure out and establish. If
  +  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 RPM with the assumption that RPM is already available. This
  -  way we can provide RPM as an RPM package. Remains the problem how we
  -  actually bootstrap in the case where RPM is still not available, i.e.,
  -  when we reach a new platform. Here the openpkg.boot script comes into
  -  play. It executes the openpkg.spec build procedure very similar to the way
  -  RPM would do it. 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 RPM 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-X.X-X.YYYY-YYYYYY-ZZ.rpm is rolled from the files in the
  -  build root. Additionally a source RPM openpkg-X.X-X.src.rpm is rolled
  -  for consistency reasons.
  +  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 -- 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 create an
  -  incorrect filelist for "rpm" in the 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.
  +  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
  +  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. For
  -  this the build root is packed into a tarball, uuencoded, and finally
  -  wrapped into a self-extracting shell script. The result is the binary
  -  bootstrap script openpkg-X.X-X.YYYY-YYYYYYY-ZZ.sh which can be used
  -  to bootstrap the target hierarchy from scratch. If one later wants to
  -  upgrade this hierarchy one uses openpkg-X.X-X.YYYY-YYYYYYY-ZZ.rpm.
  +  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.
  +  
  +  The result is the binary bootstrap script openpkg-V-R.P-L.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.
   
     To allow one to easily repeat this from-source bootstrapping procedure
     on other machines, one can run "./openpkg.boot -s" which rolls a
  -  openpkg-X.X-X.src.sh script which is a self-extracting script containing a
  -  tarball of this directory. This script is like openpkg-X.X-X.src.rpm, but
  -  for bootstrapping situations.
  +  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
     ------------------------------
   
  -  Operating System         Fully Supported  Partially Supported  Known to work
  -  -----------------------  ---------------  -------------------  -------------
  -  FreeBSD (ix86)           4.8, 5.0         4.[0-7]              -
  -  Debian GNU/Linux (ix86)  3.0, 2.2         -                    -
  -  RedHat Linux (ix86)      -                8.0, 9.0             7.[0-2]
  -  Gentoo Linux (ix86)      -                -                    1.4
  -  Solaris (SPARC64)        8, 9             2.6, 7               -
  -  Solaris (ix86)           -                -                    8, 9
  -  NetBSD (ix86)            -                -                    1.5.[0-2], 1.6[0-1]
  -  OpenBSD (ix86)           -                -                    2.9
  -  HP-UX (PA/IPF)           -                -                    10.20
  -  Tru64 (ix86)             -                -                    5.0A, 5.1A
  -  UnixWare                 -                -                    -
  -  Darwin                   -                -                    -
  -  Cygwin                   -                -                    -
  -  IRIX                     -                -                    -
  -  AIX                      -                -                    -
  +  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
   
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/openpkg/openpkg.spec
  ============================================================================
  $ cvs diff -u -r1.239 -r1.240 openpkg.spec
  --- openpkg-src/openpkg/openpkg.spec	29 Oct 2003 12:57:04 -0000	1.239
  +++ openpkg-src/openpkg/openpkg.spec	31 Oct 2003 09:56:36 -0000	1.240
  @@ -39,7 +39,7 @@
   #   o any cc(1)
   
   #   the package version/release
  -%define       V_openpkg  20031029
  +%define       V_openpkg  20031031
   
   #   the used software versions
   %define       V_rpm      4.2.1
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-web/news.txt
  ============================================================================
  $ cvs diff -u -r1.7243 -r1.7244 news.txt
  --- openpkg-web/news.txt	31 Oct 2003 09:08:50 -0000	1.7243
  +++ openpkg-web/news.txt	31 Oct 2003 09:56:35 -0000	1.7244
  @@ -1,3 +1,4 @@
  +31-Oct-2003: Upgraded package: P<openpkg-20031031-20031031>
   31-Oct-2003: Upgraded package: P<integrit-3.02.00-20031031>
   31-Oct-2003: Upgraded package: P<crm114-20031023rc3-20031031>
   31-Oct-2003: Upgraded package: P<btyacc-3.0-20031031>
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     openpkg-cvs@openpkg.org
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic