The Wayback Machine - https://web.archive.org/web/20090215224555/http://puppylinux.com:80/woof/
woof

Woof: the "Puppy builder"


Page updated 14 Feb. 2009

NOTICE: Please monitor my blog, puppylinux.com/blog for progress reports on Woof and announcement of the next alpha release.

Preamble

In November 2008 I decided to retire from my front-line role as leader of the Puppy Linux project, and let other keen members of our Puppy-community take control of developing future versions of Puppy. Puppy 4.1.2 was the last release that I had absolute control over.

Although I have used the word "retire", I am not yet leaving Puppy Linux development -- it is just too exciting and addictive! What I wanted was the time and freedom to explore new ideas ...the first of these has been born, named Woof.

Rationale

Up until now, Puppy has had a build system called Puppy Unleashed, which accesses a repository of PET packages and buiilds a live-CD with your choice of packages. There are various problems with this arrangement:
  1. PET packages are heavily cut-down binary packages. There is often a lot of work in creating a PET package as we trim out all the fat.
  2. Having a repository of PET binary packages means that we are also legally obliged to maintain a repository of the source packages.
  3. Upgrading all the core infrastructure packages, such as glibc, gcc, gtk, cups, ghostscript and the other system libraries and creating new PET packages and 'devx' file then getting it all to work, takes us a very long time.
In earlier versions of Puppy we did use binary packages from another distro. For example, the Puppy3 series is based on Slackware binary packages. However, I did every step manually, creating each PET package virtually file-by-file, and then spent several months getting it right before a final release.

Solution

For a long time I have dreamt of a "magical script" that could download packages of some other distro, cut them right down to Puppy-size, then build a Puppy Linux live-CD -- and do all of this totally automatically.

Finally free of front-line responsibility for managing the Puppy project, I had time to pursue this dream. The result is Woof.

This is what Woof does:
  1. Download another distros packages, so we don't have to host them anywhere (although in some cases the distro may not have a suitable package so we still need some of our own PET packages).
  2. Totally automatially build a Puppy live-CD iso file, with your choice of packages.
  3. Totally automatically build the 'devx' SFS file (which is how Puppy provides support for C/C++ compiling).
  4. Support multiple distros.
  5. Easily upgrade to a new version.
  6. The end result is Puppy Linux

Multiple distros

The design of Woof is intended to be so flexible that packages from any distro can be processed. At the time of writing Woof is supporting Debian, Ubuntu, Slackware and Arch. I am considering adding one of the RPM-based distros.

Easy upgrade

I find this one particularly exciting, though it isn't proven yet. The current release of Ubuntu is Intrepid. When they bring out the next release, all that Woof needs is the name of the release and Woof will then download all the packages and build a new Puppy Linux. It may take a couple of hours fixing some package names, but the idea is in one day to have a brand new release of Puppy.

The end result

...is Puppy Linux! What I mean is that you end up with something that has the speed, compactness and all the ease-of-use features of Puppy Linux, nothing sacrificed. Even building from Ubuntu packages, we get a 99MB live-CD, a fast Puppy that runs in RAM, all of the Puppy applications and all of the tools and familiar desktop.

Preparation

Woof is very easy to use. Download the tarball, named something like 'woof-009.tar.gz' and follow these instructions...
  1. User knowledge
    You need basic familiarity with the Linux commandline, plus an understanding of Linux hard drive partitons. If you are a Windows-refugee without this knowledge, you will have to go away and do some learning first (or just download a ready-made Puppy live-CD ISO file).
  2. Suitable build environment
    Expand the 'woof' tarball -- in Puppy you can do this just by clicking on it. But, be sure that this is done in a Linux partition. A Windows/DOS FAT or NTFS partition will not work! Also, the partition needs lots of space, I suggest 10GB.
  3. Host operating system
    You must be running in a Linux environment. The Linux distro that you are running right now may have inadequate or missing 'dpkg-deb' and 'lzma' utilities. This problem also applies to Puppy Linux <= v4. Place 'support/dpkg-deb' into /bin and 'support/lzma' into /usr/bin, replacing any other versions (first run 'which' to check they aren't existing elsewhere).
  4. Choose a compatible-distro.
    This is the distro whose packages you are going to 'borrow' to build your Puppy. Open file DISTRO_SPECS in a text editor and change this line:
    DISTRO_BINARY_COMPAT="ubuntu"
    to what you want, currently 'ubuntu', 'debian', 'slackware' or 'arch'.
  5. Internet access
    As a lot of packages have to be downloaded, a broadband connection is best, but it should be possible with dialup -- with some patience!

Building

Having expanded the 'woof' tarball, you will see four scripts:
0setup, 1download, 2createpackages, 3builddistro
What you do is execute each of these in turn...

0setup
Download package database files
Open a terminal in the 'woof' directory, then run '0setup':
# ./0setup
1download
Download packages
# ./1download
2createpackages
Build the cut-down generic Puppy-packages
This will take 2 - 3 hours, depending on your PC. A reasonably modern fast PC with CPU >= 1.5GHz and >= 256MB RAM is recommended.
# ./2createpackages
3builddistro
Build Puppy live-CD
This gets built in a directory named 'sandbox3' and as well as the live-CD iso file you will also find the individual built files and the 'devx' file.
# ./3builddistro

Future

Binary compatibility with a major distro has one obvious advantage: access to all the packages in its repositories. Well, we do with any version of Puppy, but when the core files of Puppy are built from that distro then we have the prerequisites already in place. Most importantly, we have the packages that were used to compile other packages -- in other words we avoid mismatches of libraries that were configured differently and are the wrong versions.

Also, if a particular package needs more prerequisites to be installed, they will be available on the repositories. We don't have to go through a very tedious and failure-prone process of compiling dependencies from source.

It's on the to-do list, but we will be expanding Puppy's package management to be able to install packages from the compatible-distros repositories.

Other items on the todo list;
  1. Automatic dependency management in the Woof build scripts.
  2. Building-in the locale files for your choice of languages.
  3. Documentation to be a separate SFS file.

Footnote

Who will use Woof? Many curious people won't be able to resist giving it a go!

Woof really is a Linux-distro developers tool. It is not for end-users. If you just want to use Linux, download a ready-made live-CD ISO file -- Woof is not for you!

One thing, I think that Woof is going to spawn a whole new lot of "puplets" (Puppy derivatives)!



(c) copyright 2009 Barry Kauler http://www.puppylinux.com/
No part of this page is to be reproduced anywhere else. I have found that there is a problem where parts of my web pages are being inserted at other sites, then not updated, whereas I am updating my pages regularly. This is not a desirable situation, so please just link to my pages.