woof

Woof: the "Puppy builder"


Page partially updated March 22, 2010

NOTICE: Please monitor my blog, http://bkhome.org/blog/?viewCat=Woof for progress reports on Woof and announcement of the next release.

The Woof build system is a work-in-progress. Although this page states that a Puppy live-CD can be built from Debian, Ubuntu, Arch, Slackware, T2 or Puppy binary packages, you need to read the announcements as to exactly what has been tested. For some builds, you may be "on your own".

Preamble

In November 2008 I decided to take a back-seat 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.

After releasing Puppy 4.1.2 I took "time out" to follow some other interests.  What I wanted was the time and freedom to explore new ideas ...the first of these was named Woof.

Rationale

Up until recently, Puppy had a build system called Puppy Unleashed, which accessed a repository of PET packages and built 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 some 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++/Vala/Genie/Fortran 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, Arch, T2 and Puppy. I am considering adding one of the RPM-based distros.

Easy upgrade

I find this one particularly exciting. The Ubuntu releases are named Intrepid, Jaunty, Karmic, etc. Puppy can be built from whatever is the current one 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 a developer in one day can 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 (or thereabouts) live-CD, a fast Puppy that runs in RAM, all of the Puppy applications and all of the tools and familiar desktop.

How to download Woof

As per my usual habit of reinventing the wheel, I have created my own basic version control system, named Bones. Quite exciting really, you can read-up on Bones here:

Bones version control

Recent puppies or puplets, especially my Quirky, will likely have the 'bones' script (look in /usr/sbin). If not, or you want to get the latest version of 'bones', get it from here:

Quirky PET repository
...just download then click on it to install. If using a non-Puppy distro, 'tar -zxf bones-xxx.pet' will expand it and then manually install.

To download ("checkout") the latest Woof is explained in the Bones web page, but repeating here:
> mkdir woof-tree
> cd woof-tree
> bones setup
You you will be asked to enter a couple of parameters:
Username: mrperson (any name you want to give yourself)
Download URL: http://bkhome.org/bones/woof/
> bones download
...you can repeat that last step whenever you want to update to the most recent Woof.

But, before you launch into downloading and using Woof, there are some preliminary things to think about...

Preparation

You can download Woof as explained above, but think about these first...
  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
    You must download Woof 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 Puppy Linux environment, version 4.3 or later. Other distros may have things missing, such as inadequate or missing 'dpkg-deb' and 'lzma' utilities -- it's not just those two, there are likely to be more inadequacies in some other distros.
  4. Internet access
    As a lot of packages have to be downloaded, a broadband connection is best, but it should be possible with dialup -- with extreme patience! About 550MB in total will need to be downloaded -- no, I take that back about using dialup!

Building

Having downloaded Woof, you will see six scripts:
0Pre, 0setup, 1download, 2createpackages, 3builddistro, 4quirkybuild
What you do is execute each of these in turn, except for 0pre which is for T2 only...

0pre
Generate package database file
This is a special preprocessing script for T2 only. See comments in script for explanation. See also a 'readme' in the support/ subdirectory. There is a special web page on T2: Introduction to T2.

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
4quirkybuild
This is a special post-processing script for my Quirky Linux. You do not use this script for normal Puppy builds. See my web page on Quirky: Introduction to Quirky.

However, I have developed the GUI to the point where it is simpler to use, especially if you are new to Woof. Read about the 'woof_gui' script...

GUI builder

At the time of writing, this is functional, but has many limitations. Here are snapshots:
specs


kernel-options-tab

After downloading that latest Woof, read its README file for latest information on the GUI builder.

Who should use Woof?

This is an important question to ask. Someone who is a "Linux newbie" might read this page and think that Woof looks pretty exciting. Yes it is, but a certain level of Linux commandline expertise and knowledge of hard drive partitions is required.

Actually, it is not difficult, and as the GUI gains more features it is going to make building custom puppies easier and easier.

But, even if you do have the technical know-how to use Woof, is it the best choice for you? There is another alternative for creating a custom live-CD, and that is the CD-Remaster program (see the 'Setup' menu in Puppy). That's an even easier way to do it, although somewhat more restricted. Certainly the remaster-CD option is better for those less knowledgeable about Linux at the commandline level.

The great majority of users will want neither Woof or the CD-Remaster. One of the available live-CDs built by me or another Puppy developer, will be all that most people need. Users have the Puppy Package Manager and the SFS files to add any extra required functionality.

It is those who want to build their own custom Puppy or derivative of Puppy, that will be considering Woof or the CD-Remaster.

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.

The new Puppy Package Manager (PPM) has been completely rewritten by me to work in this multiple-distro environment. The PPM can handle packages from any of the distros supported by Woof.

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.
  4. Many more features for the GUI.
One thing, I think that Woof is going to spawn a whole new lot of "puplets" (Puppy derivatives)!



(c) copyright 2009 Barry Kauler http://bkhome.org/
Woof logo designed especially for Woof by afgs. See FAQ for legal statement.
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.