r3933 - in jhalfs/branches/new_features: . pkgmngt

pierre at higgs.linuxfromscratch.org pierre at higgs.linuxfromscratch.org
Mon Mar 20 08:14:54 PDT 2017


Author: pierre
Date: Mon Mar 20 08:14:54 2017
New Revision: 3933

Log:
- Update README.PACKAGE_MANAGEMENT for porg
- Improve (?) README test
- Make VERSION lowercase in packInstall.sh.porg, since porg will do that
  anyway

Modified:
   jhalfs/branches/new_features/README
   jhalfs/branches/new_features/README.PACKAGE_MANAGEMENT   (contents, props changed)
   jhalfs/branches/new_features/pkgmngt/packInstall.sh.porg

Modified: jhalfs/branches/new_features/README
==============================================================================
--- jhalfs/branches/new_features/README	Mon Mar 20 07:15:28 2017	(r3932)
+++ jhalfs/branches/new_features/README	Mon Mar 20 08:14:54 2017	(r3933)
@@ -22,8 +22,8 @@
   run <make menuconfig>, configure the kernel as per the book and save
   the resulting .config file.
 
-  *.  Read carefully this file and the other README.* files before beginning
-  to use this tool.
+  *.  Read carefully this file and the other README.* files before using
+  this tool.
 
 2. PREREQUISITES::
 

Modified: jhalfs/branches/new_features/README.PACKAGE_MANAGEMENT
==============================================================================
--- jhalfs/branches/new_features/README.PACKAGE_MANAGEMENT	Mon Mar 20 07:15:28 2017	(r3932)
+++ jhalfs/branches/new_features/README.PACKAGE_MANAGEMENT	Mon Mar 20 08:14:54 2017	(r3933)
@@ -1,36 +1,54 @@
 TITLE : Package management in jhalfs
 BY    : Pierre Labastie (work in progress)
+$Id$
 
 1. INTRODUCTION:
 
       There are several hints discussing package management for LFS, but
   nothing under jhalfs. There used to be a patch for PACO that I cannot
-  find now. This is a modification ("DESTDIR install" automation), which
-  allows to use a package manager inside jhalfs. I hope it is flexible enough
-  to support several package managers, at least among those who use DESTDIR
-  install. My initial implementation used dpkg, from Debian, in a very
-  crude way (Debian has a sophisticated package management system, which
-  I have not tried to use here). There is also a port to Pacman from
-  Arch Linux (http://www.archlinux.org). I am sorry to say I have (almost)
-  no experience with rpm, so I cannot tell whether it would fit.
+  find now. So there was a need for such a tool, and an infrastructure,
+  which allows using a package manager inside jhalfs, has been developped.
+  I hope it is flexible enough to support several package managers, at least
+  among those who use DESTDIR install and/or LD_PRELOAD during install.
+  It has been tested with dpkg from Debian, pacman from Arch Linux,
+  and porg. Sample configuration files are given for those three packages.
+  I am sorry to say I have (almost) no experience with rpm, so I cannot
+  tell whether it would fit.
 
 2. OVERVIEW OF THE SYSTEM:
 
-      Presently, package management is only available for LFS. I plan to
-  upgrade BLFS tools, but nothing usable right now. I have not attempted
-  to adapt this tool for the other flavours of LFS.
-
-      To use package management, you need to create the required files in
-  the pkgmngt directory (see below), and to select "package management" in
-  the build settings. Note that this is incompatible with creating an SBU
-  and usage report.
-
-3. DETAILS OF OPERATION:
-
-      This system performs basically a "DESTDIR install" for all pages
-  in chapter 6, 7 and 8 of the book. The name of the DESTDIR directory is the
-  same as the one of the executed script. The path to this directory is
-  made available to the scriplets through the PKG_DEST variable.
+      For now, package management is only available for LFS. The `porg style'
+  (see below) package management has been ported to BLFS, but not the distro
+  style one (the book layout makes it rather difficult). I have not attempted
+  to adapt this tool for the other flavours of LFS (TODO).
+
+      This tool comes in two flavours:
+  - for distros package managers (e.g dpkg or pacman), it basically performs
+    a "DESTDIR install" for all pages in chapter 6, 7 and 8 of the book. The
+    name of the DESTDIR directory is the same as the one of the executed
+    script. The path to this directory is available to the scriplets through
+    the PKG_DEST variable. The details of the DESTDIR part are given below.
+    After the package is installed in $PKG_DEST, a function "packInstall" is
+    called, which is supposed to create a binary package (e.g. make a .deb
+    file), store it to a repository and install it to the system.
+  - for porg style package manager, the install instructions are wrapped
+    between pairs of single quotes ('). This allows passing those instructions
+    to a function ("wrapInstall"), which may itself call porg or another
+    (e.g. fakeroot, not tested) instruction wrapper. Note that if the
+    instructions contain single quote charaters, they are changed to '\'',
+    which pass them literally. At the end of the installation, a function
+    "packInstall" is called, with a slighly different aim compared to the
+    DESTDIR one: it is used to make a tarball of the installed files (e.g.
+    using "porgball") and store them into some repository. But there is no
+    need to install them to the system, since this has already been done.
+
+      Note that with carefully crafted "packInstall" and "wrapInstall"
+  functions, a combination of the two methods could be used, for example for
+  DESTDIR installs using fakeroot. This is work in progress and not fully
+  implemented yet.
+
+3. DETAILS:
+
       The XSL stylesheet used for generating the scriptlets, automatically
   adds DESTDIR install instructions when "package management" is selected.
   Also all the paths beginning with " /" or ">/" (absolute paths) are prepended
@@ -42,6 +60,7 @@
   creates a reasonable subset of the FHS hierarchy into the destination
   directory. Empty directories are then removed before packing the
   binary package.
+
       In order to use the package manager, it has to be installed at the end of
   chapter 5 (temporary installation in /tools) and chapter 6 (final install).
   Furthermore, the administrative files and directories have to be created
@@ -50,20 +69,21 @@
   the necessary instructions and enough information to download the tarball.
   This file should reside in the `pkgmngt' directory and be named
   `packageManager.xml'. A template named `packageManager.xml.template' is
-  provided in the `pkgmngt' subdirectory. There are also two XML files for
-  dpkg and pacman, respectively `packageManager.xml.dpkg' and
-  `packageManager.xml.pacman', that you can copy to `packageManager.xml'.
+  provided in the `pkgmngt' subdirectory. There are also three XML files for
+  dpkg, pacman, and porg, respectively `packageManager.xml.dpkg',
+  `packageManager.xml.pacman',  and `packageManager.xml.porg', that you can
+  copy to `packageManager.xml' and modify to suit your needs.
   They are not updated often, so the versions used can be rather old.
-      The last thing to do is to tell how to use the package manager. When
-  the binary package is ready, the scriptlets call a shell function named
-  `packInstall', which should pack the binary package and install it on the
-  system. Note that nothing has been done to manage configuration files, 
+
+      The last thing to do is to tell how to use the package manager. The user
+  has to provide two functions, "wrapInstall" and "packInstall", as described
+  above. Please note that nothing has been done to manage configuration files, 
   which are ususally treated specially by package managers: depending on
   the book layout, it is sometimes possible to create those files afterwards,
   and sometimes not, which means that you have to check them after each
-  upgrade. The user has to write his own `packInstall' function. The shell
-  function should be defined in a file named `packInstall.sh', residing in
-  the `pkgmngt' directory. A template is provided, as well as two example
-  scripts for dpkg and pacman. Note that, due to the way pacman checks the
-  available space on disk, the root directory in chroot must be a mount point,
-  otherwise the installation of packages fails.
+  upgrade. Both functions should be defined in a file named `packInstall.sh',
+  residing in the `pkgmngt' directory. A template is provided (actually a copy
+  of the file for dpkg), as well as three example scripts for dpkg, pacman,
+  and porg. Pacman Note: due to the way pacman checks the available space on
+  disk, the root directory in chroot must be a mount point, otherwise the
+  installation of packages fails.

Modified: jhalfs/branches/new_features/pkgmngt/packInstall.sh.porg
==============================================================================
--- jhalfs/branches/new_features/pkgmngt/packInstall.sh.porg	Mon Mar 20 07:15:28 2017	(r3932)
+++ jhalfs/branches/new_features/pkgmngt/packInstall.sh.porg	Mon Mar 20 08:14:54 2017	(r3933)
@@ -52,7 +52,8 @@
 # the last sed above is because some package managers do not want a '_'
 # in version.
 esac
-echo $VERSION
+echo ${VERSION,,}   # convert to lowercase, in case there is a capital letter
+                    # in version
 }
 
 # Export the previous function, since it is used by the others


More information about the alfs-log mailing list