123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- 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
|