darkness3560 afc70ad7c4 Re-coded HTML-based documentation 5 years ago
boot cca1794813 Search in USB for savefiles when booting from CD 5 years ago
kernel-skeleton 03b8b5cdbe Reverted symlinked and moved firmware 6 years ago
packages-templates 78f52e6950 Fix for missing code pages 6 years ago
rootfs-packages 584bd8bb1b Rename rootfs-packages/ptheme folder to pthemes 5 years ago
rootfs-skeleton afc70ad7c4 Re-coded HTML-based documentation 5 years ago
support 3ab1aa2ff7 Add source for fetch.bac in woof-code/support 6 years ago
0pre 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 6 years ago
0setup ffe03d4def Bugfix of last commit to 0setp plus some preliminary 64 bit support (may change) 6 years ago
1choosepackages 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 6 years ago
1download 7f356bb37c Fix 1download for kernel downloads. NOT: kernel now needed in the Packages-puppy-${DISTRO_DB_SUBNAME}-official database 6 years ago
2createpackages 616007a06f Another bugfix 2createpackages 6 years ago
3builddistro 13561b9267 Fix mounting of SD card image 5 years ago
4babybuild ea1465560a Revert "Move all-firmware to modem-firmware" 6 years ago
4quirkybuild 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 6 years ago
DISTRO_PET_REPOS 0cb8b7900d Fix ibiblio path so check pets will not fail 6 years ago
DISTRO_SPECS 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 6 years ago
PKGS_HOMEPAGES 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 6 years ago
PKGS_MANAGEMENT 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 6 years ago
README.txt 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 6 years ago
VCSMETADATA 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 6 years ago
create_new_woof 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 6 years ago
findwoofinstalledpkgs 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 6 years ago
woof_gui 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 6 years ago
woof_gui_tabs 04e0df1191 Fix woof_gui_tabs to call /usr/sbin/gtkdialog in the shebang 6 years ago



Woof is a "Puppy builder". What this means is you can build your own custom
Puppy Linux live-CD from the binary packages of another distro.

Currently supported: Ubuntu, Debian, Slackware, Arch, T2, Puppy, Mageia

What you get looks and feels just like Puppy, is Puppy. The default selection
of packages gives you a live-CD ISO file about 100MB - 130MB. You also get the
freedom and speed of Puppy, and none of the disadvantages that you may have
perceived with the other distros.

Notice that 'Puppy' is in the list. It may seem a bit "circular" but yes, the
compatible-distro can be one of the Puppy-releases, so you could build a Puppy
live-CD with 100% PET packages. Wary Puppy is built this way.


1. Suitable build environment
If you are reading this then you have expanded the 'woof' tarball. 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.

2. Host operating system
You must be running in a Linux environment.
The Linux distro that you are running rght 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 elsehwere).

NOTICE: Woof is currently only supported in a running Puppy 4.3+ environment.
Do not use any other Linux distro.

3. 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:
to what you want, 'arch', 'ubuntu', 'debian', 'slackware', 't2' or 'puppy'.

Building a Puppy: using the commandline scripts

0. Download package database files
You must have broadband Internet access.
Open a terminal in the 'woof' directory, then run '0setup':
# ./0setup

1a. OPTIONAL: Tweak common PET package selection
# ./1choosepackages
You can edit the variable PKGS_SPECS_TABLE in file DISTRO_PKGS_SPECS-* to choose
the packages that you want in your build. '1choosepackages' is a GUI that might
make it easier to fiddle with the choices of "common" PET packages, which is
those PETs that are used in all Puppy builds.
Note, file Packges-puppy-common-official is the database of the common PETs.

1. Download packages
About 500MB drive space is required, but this may vary enormously
depending on the package selection.
# ./1download

2. 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

3. 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

Building a Puppy: using the GUI

The GUI is under heavy development.
Currently only tested building from compat-distro Puppy-4 PET pkgs.

I have written a frontend GUI for the above scripts (and then some).
The GUI is also a frontend for all of the configuration files, so you
should not have to directly edit any of them (or that's the plan anyway).
It is a work-in-progress, but quite usable, and I recommend that you use the
GUI interface rather than the commandline scripts, especially when new to Woof.

# ./woof_gui

It will come up with a tabbed-interface, and basically you go from left-tab
to right-tab.

For newcomers, I recommend that you perform a run-through without making any
changes, to confirm that everything works. By default, Woof is configured
to build Puppy 4.3+ from 4.x PET packages only (the compatible-distro is set
to 'puppy').

Newcomer instructions:

SKIP THIS IF LATEST WOOF: 'Download dbs' tab: click the 'UPDATE' button.
'Download pkgs' tab: click the 'DOWNLOAD' button.
'Build pkgs' tab: click the 'BUILD ALL' button.
'Kernel options' tab: choose the latest kernel.
'Build distro' tab: click the 'BUILD DISTRO' button.

...then you will have a Puppy 4.3+ live-CD ISO file and a 'devx' SFS file!


Woof is (c) copyright Barry Kauler 2009, puppylinux.com
Woof is free, at this stage a specific distribution licence is not decided.
However, Woof consists of components that are under various 'GPL' licences
and builds from 'GPL' and various 'free' binary packages, so the final
build of Puppy will be in conformance with those and as stated in the Puppy
'rootfs-skeleton/usr/share/doc/index.html' file.



packages-templates directory

any directory in the template, the files in the target pkg will be cut down to the same selection.
(even if empty dir). Exception, file named 'PLUSEXTRAFILES' then target will have all files from deb.
0-size file, means get file of same name from deb (even if in different dir) to target.
non-zero file, means copy this file from template to target.
template files with '-FULL' suffix, rename target file also (exs: in coreutils, util-linux).

Any dir in template with 'PKGVERSION' in name, substitute actual pkg version number in target dir.
Except for /dev, /var, all dirs in target are deleted to only those in template, except
if file 'PLUSEXTRADIRS' is found in template.

As a last resort, if target pkg is wrong, a file 'FIXUPHACK' is a script that can be at top dir
in template. It executes in target, with current-dir set to where FIXUPHACK is located. (ex: perl_tiny).
Ran into problem slackware post-install scripts messing things up. See near bottom of '2createpackages'
how damage is limited. Also DISABLE_POST_INSTALL_SCRIPT=yes in FIXUPHACK to disable entirely.

If a dir in template has files in it then target is cut down (unless PLUSEXTRAFILES present),
however there are some exceptions (such as .so regular files). To not allow any exceptions,
place NOEXCEPTIONFILES in the template dir (ex: glibc usr/lib/gconv).
I needed to finetune this some more -- example packages-templates/gettext/usr/lib, have
NOEXCEPTIONFILES, but do want all of libasfprint.so.* whatever the version numbers are,
so can now create zero-size file 'libasfprint.so.STARCHAR' to achieve this.


Notice that there are 'Packages-puppy-2-official' and 'Packages-puppy-2xx-official',
also 'Packages-puppy-4-official' and 'Packages-puppy-4xx-official'.

The '-2xx-' and '-4xx-' database files are local only, used in Woof only.
These files do not get uploaded to ibiblio.org.
They are used for building a "compatible-distro" from PET packages.
The 'DISTRO_PKGS_SPECS-puppy-2' and 'DISTRO_PKGS_SPECS-puppy-4' specify these database files.

The single-digit '-2-', '-3-', '-4-', '-5-' files reside on ibiblio.org also.
These files list the complete contents of each repository.

The reason for having a '-2xx-' as well as a '-2-' database files is because
the latter is a complete record of what is in 'pet_packages-2' directory on
ibiblio.org, whereas the former lists packages being used to build the Puppy

Barry Kauler