Getting Started with Woof
Not logged in

Woof2 is hosted in a Fossil Version Control System repository, which is what you are looking at now. Fossil is a remarkably simple system to use. The entire Woof repository, that is, the entire Woof project, is in a single file. Basically, to get started, you download that file and then extract the Woof files from it.

Download and install Woof

Step 1: Install fossil version 1.20 (or later) into /usr/sbin, get pre-built binary from here:
NOTICE: Users have reported problems with versions of Fossil later than 1.20, therefore, either get 1.20 from the above link, or grab this PET:, or recent releases of Puppy have this already in the 'devx' SFS.

Step 2: Create a directory, say 'woofproject' in a Linux partition (ext2, ext3), open a terminal inside 'woofproject'.

Step 3: Download the Woof2 project file. You need to assign yourself an administrator username, "MrSmith" is just an example. Note, the download is about 21MB...

# fossil clone --admin-user MrSmith woof2.fossil

Step 4: Very important, Fossil v1.20 has a "bug", does not inherit some needed properties from the online Fossil repository, you have to manually turn them on...

# ln -s defaultbrowser /usr/local/bin/firefox (if no Firefox installed)
# fossil ui woof2.fossil

...go to 'Admin/Settings' and tick "allow-symlinks" checkbox. Also, the default applications are not inherited. In the 'editor' box type "defaulttexteditor", in 'web-browser' box type "defaultbrowser". Then click "Apply Changes" button. Close web browser, ctrl-c to kill "fossil ui"

Step 5: Checkout the Woof project files...

# mkdir woof2
# cd woof2
# fossil open ../woof2.fossil

You can leave it open, you don't have to run "fossil close". That is, you will never have to run that "fossil open ../woof2.fossil" ever again.

Using Woof

Read file README-FIRST, this will explain more, and how to get going with Woof.

That file gives more detail, but basically you have this directory hierarchy:


And you have a terminal open inside 'woof2'. You then run this script to create a working project:

# ./merge2out

This will create a working directory that is configured for the Puppy that you wish to build. For example, if you are running on an x86 PC, and want to build a Puppy for ARM architecture, based on Ubuntu Lucid binary packages, you would get a new working directory 'woof-out_x86_arm_ubuntu_lucid':

woof2  woof-out_x86_arm_ubuntu_lucid

You open a terminal window in 'woof-out_x86_arm_ubuntu_lucid' and off you go, and build your pup. There is a README in the working directory also.

Updating Woof

It is wise to stay synced with the online Woof. Perhaps not too often though, you would need to check my blog at to make sure that Woof uploads are not in a transition development phase.

With a terminal open inside directory 'woof2', run this:

# fossil update
# ./merge2out

This will download the latest changes to Woof and update your local Woof repository. The second 'merge2out' step is to update your working directory.

However, you might want to think carefully before executing 'merge2out', as it will over-write all of the Woof files in your working directory. You may have changed some files, such as (using 'woof-out_x86_arm_ubuntu_lucid' as the example): DISTRO_SPECS, DISTRO_PKGS_SPECS-ubuntu-lucid, Packages-puppy-lucid-official. You might want to copy those somewhere else first.

You then copy them back in after having run 'merge2out'. Or, if you have modified many things and not sure what to backup, you could do it like this:

# fossil update
# mv ../woof-out_x86_arm_ubuntu_lucid ../woof-out_x86_arm_ubuntu_lucid-BACKUP1
# ./merge2out

...this will create a brand-new 'woof-out_x86_arm_ubuntu_lucid' directory, then you can copy in anything from the old directory as needed.

If you need any more explanation about updating, 01micko, the coordinator of Slacko Puppy, has a tutorial on this topic: