Info about OSBuilder - tool for automated building

Stanislav Brabec utx at
Thu Dec 14 09:54:15 PST 2000

Hallo alfs developers,

I want to let you know that I am developing for more than 2 years project
OSBuilder - Build Own GNU-Linux - semi-intelligent package compiling shell.

If anybody wants to participate, I can release CVS tree.

(Sorry, I didn't yet checked alfs tool - I have found reference to
your site just now.)



Package build description - currently written for cca 350 packages
  (planned format change from simple bash script to sed-parsed bash
  with auto-editing feature).

gnu-fhs - FHS compliant setup for GNU compliant packages based on --prefix
  (done, waiting a week for FHS 2.2 deadline)
  Without GNU-FHS:
  ./configure --prefix=/opt/exttools \
  --sysconfdir=/etc/opt/exttools --localstatedir=/var/opt/exttools \
  --sharedstatedir=/var/opt/exttools/cache \
  --mandir=/opt/exttools/share/man --infodir=/opt/exttools/share/info
  With GNU-FHS:
  ./configure --prefix=/opt/exttools

bootscript - simple boot script
  (boot done, others to do)

pkgsh - package compiling shell - a complex package for automated
  compiling. Written in Bash.

  GNUize (done) - a patchgenerator for GNU compliant setup on GNU non-compliant
    packages - e.g. prefix, CFLAGS etc. Contains:

    siteconf - scan site configuration and resolve standard paths

    patchcflags - change cflags to those specified by siteconf

    fixdirs - change hardwired paths to those specified by siteconf

    ac_fixdirs - change mis-hardwired paths in autoconf packages

    site scripts - currently are rewritten to support gnu-fhs and new
      scheme of setting up flags.

  version checker (unstable code) - check available versions, compare
    them and find latest, create unpacking sequence. Todo: find and
    effectivelly download via ftp/http/cvs, allow effective relation
    between version and directory name. Currently functional: .tar.gz,
    tar.bz2, .xdp, .diff.gz, diff.bz2 in most naming schemes for both
    incremetal and interversion.
    Example: binutils-2.8.0 to binutils- correctly finds and
    sorts cca 25 patches (not in simple incremental order) to
    correctly get source. Todo: patching linux sources from 2.2.0
    though 2.2.8-to-2.3.0 up to 2.4.0-test12. All code for this is
    done, but have bugs.

  version guess (not perfect) - guess version from source and find
    some paths - e. g. find path to support files of ghostscript to
    finish install etc.

  source tree lookup - look up source tree and decide, what to do.
    Currently supported: Old-style make, automake/autconf configure
    (needs some effort to decide, whether install-strip is supported),
    xmkmf (needs some hacking to decide between old X-6.3
    install.linkkit and new X-6.4 install.sdk), Makefile.PL, hacker's, user defined.

  support tools (done, some progress required)

    sedit - simple offline editor

    edstring - advanced offline editor with special features for
      adding/removing commented string to configuration files.

    glibc-inspector - automated code inspector for fixing most often
      problems for compiling third-party sources under glibc.
      Currently supports: mis-declarations of prototypes of string
      inline macros, possibly conflicting sys_errlist definitions,
      non-constant initialisers of standard input/output, planned -
      incorrect initialisation of locale (glibc-2.2 is more sensitive
      to it).

  customize (ugly code) - diffing tools to customize and register
    edited configuration files.

  ctrace (very ugly hack now, nice stuff in progress) - trace file and
    variable accesses for checking of created files, package
    dependencies and misc checks. (Does anybody now how to send an
    argument to preloaded shared library?)

  prefixes - prefix manager for simple managing PATH, MANPATH, INFOPATH
    from /etc/prefixes and GNU site scripts.

  simple package management


- Package dependencies (needssource, needsconfig, buildneeds, requires, uses).
- Automated extraction of description and special installation steps
  from .desc files.
- Much more.
- Ftp/http/cvs downloader and local mirror manager.
- Docs.

Example of pkgsh session:

Demo of pkgsh - package compiling shell (pre-alpha, will be updated soon):

There is small Package description file:
patchopt="-p 2"

And here is shortened interactive log, if you are only pressing ENTER:

utx:/usr/src$ pkgsh ggv
Pkgsh 0.0
Package set to: ggv
Latest version found: 0.82
Seems to be only recompilation...
=== phase unpack[0] === suggested by unp ===
=== suggested ===
cd /usr/src
tar -I -x -f /dist/gnome/ggv/ggv-0.81.tar.bz2
mv ggv-0.81 ggv-0.82
cd ./ggv-0.82/
echo "Applying patch /dist/gnome/ggv/ggv-0.81-0.82.diff.bz2"
bzcat /dist/gnome/ggv/ggv-0.81-0.82.diff.bz2 | TZ=EST5EDT patch -s -T -p 2
pkgsh at ggv:/etc/pkgsh>
Applying patch /dist/gnome/ggv/ggv-0.81-0.82.diff.bz2
pkgsh at ggv:/usr/src/ggv-0.82> skip
Recommended use GNU configure in separate build dir.
=== phase conf[0] === suggested by cs ===
=== suggested ===
mkdir -p /var/src/ggv-0.82
cd /var/src/ggv-0.82
 /usr/src/ggv-0.82/configure --prefix=/opt/gnome
pkgsh at ggv:/usr/src/ggv-0.82>
loading site script /etc/sysconfig/site.config
*** pkgsh local site configuration ***
creating cache ./config.cache
checking for a BSD compatible install... /bin/install -c
creating config.h
=== phase make[0] ===
=== suggested ===
pkgsh at ggv:/var/src/ggv-0.82>
make  all-recursive
make[1]: Entering directory `/var/src/ggv-0.82'

make[1]: Leaving directory `/var/src/ggv-0.82'
=== phase versupdate[0] ===
=== suggested ===
echo >/var/packages/versions/ggv 0.82
pkgsh at ggv:/var/src/ggv-0.82>
=== phase install[0] === suggested by doinstall ===
=== suggested ===
cmtr make install-strip
pkgsh at ggv:/var/src/ggv-0.82>
make[1]: Leaving directory `/var/src/ggv-0.82'
pkgsh at ggv:/var/src/ggv-0.82>
=== phase remove[0] === suggested by rem ===
=== suggested ===
cd /etc/pkgsh
rm -r /var/src/ggv-0.82
rm -r /usr/src/ggv-0.82

Stanislav Brabec

Unsubscribe: send email to alfs-discuss-request at
and put unsubscribe in the subject header of the message

More information about the alfs-discuss mailing list