![]() |
Woof: the "Puppy builder" |
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:- 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.
- Having a repository of PET binary packages means that we are also legally obliged to maintain a repository of the source packages.
- 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.
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:
- 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).
- Totally automatially build a Puppy live-CD iso file, with your choice of packages.
- Totally automatically build the 'devx' SFS file (which is how Puppy provides support for C/C++ compiling).
- Support multiple distros.
- Easily upgrade to a new version.
- 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...- 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).
- 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. - 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). - 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'. - 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;
- Automatic dependency management in the Woof build scripts.
- Building-in the locale files for your choice of languages.
- 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.