Dima Krasner a9eab45edf Merge branch 'testing' into libre 9 years ago
..
boot 7228b3e57f Merge branch 'testing' into libre 9 years ago
huge_extras c3ba39bb05 in init a stray symlink was being created re: 8b8726a 9 years ago
huge_kernel 8848aa5bcb add 'huge_kernel', a repository for new huge style kernels 10 years ago
kernel-skeleton 794425e26c Restored the empty all-firmware and rootfs-packages directories 9 years ago
packages-templates 8c57385d55 Merge branch 'testing' into libre 9 years ago
rootfs-packages 44130fbf9f jwm_config: tray: remove existing item in tray 9 years ago
rootfs-skeleton 7228b3e57f Merge branch 'testing' into libre 9 years ago
support 4e2ce9a2e5 Fixes to rootfs-skeleton 9 years ago
0pre 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 11 years ago
0setup 45bdd4f3cb Run message scripts in-scriptto facilitate tarnslation 9 years ago
1choosepackages 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 11 years ago
1download 3b68790eb1 Added Trisquel support, based on tahrpup. 9 years ago
2createpackages d8f9d843ee Fix up for missing symlinks in devx re #606 9 years ago
3builddistro 7228b3e57f Merge branch 'testing' into libre 9 years ago
3builddistro-Z 7228b3e57f Merge branch 'testing' into libre 9 years ago
4babybuild ea1465560a Revert "Move all-firmware to modem-firmware" 11 years ago
4quirkybuild 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 11 years ago
DISTRO_PET_REPOS 0cb8b7900d Fix ibiblio path so check pets will not fail 11 years ago
DISTRO_SPECS 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 11 years ago
PKGS_HOMEPAGES 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 11 years ago
PKGS_MANAGEMENT 3b68790eb1 Added Trisquel support, based on tahrpup. 9 years ago
README.txt 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 11 years ago
VCSMETADATA 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 11 years ago
create_new_woof 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 11 years ago
findwoofinstalledpkgs 7b9bf56d19 Address #608 by creating files for rootfs-packages in builtin_files and add entries in woof-installed-pkgs 9 years ago
woof_gui 07a44aa52f Initial commit from Nov 11, 2013, woof2 fossil repo 11 years ago
woof_gui_tabs 4903f486b7 Change 'Normal' to 'LEGACY' for the old type build in 'Build distro' GUI tab 9 years ago

README.txt

Woof
----

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.

Preparation
-----------

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:
DISTRO_BINARY_COMPAT="ubuntu"
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

###PENDING###
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
-------------------------------

NOTICE, OCTOBER 2009:
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!

LEGAL
-----

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.

------------------------------------------------------------------------------

TECHNICAL NOTES
---------------


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.

Packages-puppy-*
----------------

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
live-CD.


Regards,
Barry Kauler
puppylinux.com