GithubHelp home page GithubHelp logo

puppylinux-woof-ce / woof-ce Goto Github PK

View Code? Open in Web Editor NEW
385.0 48.0 276.0 56.08 MB

woof - the Puppy builder

License: GNU General Public License v2.0

Shell 90.75% CSS 1.74% HTML 4.63% Roff 1.30% Modelica 0.02% Scheme 0.15% Makefile 0.04% C 1.28% PLSQL 0.07% JavaScript 0.01%
builder shell puppylinux woof bash ash pet sfs aufs overlayfs

woof-ce's Introduction

woof - the Puppy builder

Currently supported:

Distro Version Architecture Status
Slackware 15.0 x86_64, x86 slackware-s15pup
Ubuntu 24.04 x86_64 ubuntu-noble64
Ubuntu 22.04 x86_64 ubuntu-jammy64
Debian 12 x86_64, x86 debian-bookworm
Debian 11 x86_64, x86 debian-bullseye
Devuan 5.0 x86_64 devuan-daedalus64
Void - x86_64, x86 void-voidpup

(Other build configurations might work but they are not built periodically)

Building a Puppy: using GitHub Actions

Puppy can be built directly on GitHub, saving the hassle of preparing a suitable build environment on a fast machine with adequate storage.

  1. Fork woof-CE.

  2. Clone your fork.

  3. Modify woof-CE, commit your changes and push them.

  4. Trigger a woof-CE run on GitHub Actions.

  5. Download your Puppy from the newly published release.

  6. Test your Puppy and open a pull request to woof-CE, if you want your changes to be officially incorporated into woof-CE.

Contributing to woof-CE: using the GitHub web editor

See woof-CE Contributor 101.

Directory Structure

Woof-CE has five directories:

  • woof-arch : architecture-dependent (x86_64, x86, ARM) files, mostly binary executables.
  • woof-code : the core of Woof.
    • 0setup
    • 1download
    • 2createpackages
    • 3builddistro
    • support : various helper scripts used by 0setup, 1download, 2createpackages and 3builddistro.
    • rootfs-skeleton : the Puppy file system skeleton, which includes core scripts like sfs_load and configuration files like /etc/passwd.
    • rootfs-packages : additional Puppy packages, like the network wizard, that can be included in the build.
    • packages-templates : recipes used by woof-CE to make compatible-distro packages work under Puppy and reduce their size.
    • rootfs-petbuilds : recipes used by woof-CE to build packages from source.
  • woof-distro : architecture (x86_64, x86, etc.) and distro specific (Debian, Slackware, etc.) configuration files.
    • DISTRO_SPECS : metadata like the name and version number of the built Puppy distro.
    • DISTRO_PKGS_SPECS-* : the list of prebuilt (compat distro or PET) packages to include in the build.
    • DISTRO_COMPAT_REPOS-* : the list of compat distro repos to download packages from.
    • DISTRO_PET_REPOS-* : the list of PET package repos to download packages from.
    • _00build.conf : additional settings like the default theme, custom commands to run at the end of the build and a list of packages to build from source during the build.
    • _00build_2.conf : overrides settings defined in _00build.conf.
  • kernel-kit : scripts to download, patch, configure and build the kernel.
    • configs_* : kernel .config files.
    • debian-diffconfigs : .config file fragments for use with ./scripts/kconfig/merge_config.sh, which can be used to build a Puppy-compatible kernel from the Debian kernel source.
    • build.conf : a configuration file that specifies the kernel .config file to use and determines whether or not aufs is included in the build.
    • build.sh : builds the kernel based on the configuration defined in build.conf.
  • initrd-progs: scripts and files to generate the initial ramdisk

Preparation

  1. Suitable build environment
  • Linux partition
  • At least 6-10GBs of space
  1. Host operating system
  • A recent Woof-CE puppy with the devx (compilers, headers and other development tools) installed. Otherwise use run_woof.
  1. A woof-out_* working directory

The merge2out script merges woof-CE's core from woof-code, prebuilt binaries from woof-arch and configuration files from woof-distro/$arch/$distro/$version to into a directory named woof-out_* where you can run woof-CE. You then cd into woof-out_* and run the build scripts.

The great thing about this merge operation is that you can choose exactly what you want to go into woof-out. You can choose the host system that you are building on (usually x86_64), the target (exs: x86_64 x86, ARM), the compatible-distro (ex: slackware), and the compat-distro version (ex: 15.0). So, you create woof-out without any confusing inappropriate content.

So, to get going with woof-CE, open a terminal and do this:

./merge2out
cd ../woof-out_*

Building a Puppy: building the kernel

This is an optional step that can be skipped if you wish to use a prebuilt kernel in your woof-CE build.

Open a terminal in the woof-out_* directory.

  1. Switch to the kernel-kit directory

    cd kernel-kit
    
  2. Modify build.conf or replace it with one of *-build.conf

  3. Run kernel-kit

    ./build.sh
    

The output should be available in kernel-kit/output and 3builddistro can use it instead of downloading a prebuilt kernel.

Building a Puppy: using the commandline scripts

Open a terminal in the woof-out_* directory.

  1. Download package database files

    ./0setup
    

OPTIONAL: Tweak package selection. You can edit the variable PKGS_SPECS_TABLE in file DISTRO_PKGS_SPECS-* and the variable PETBUILDS in file _00build.conf to choose the packages that you want in your build.

  1. Download packages

    ./1download
    

About 500MB drive space is required, but this may vary enormously depending on the package selection.

  1. Build the cut-down generic Puppy-packages

    ./2createpackages
    
  2. Build Puppy live-CD

    ./3builddistro
    

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.

Branding and Artwork

The human-readable distro name (DISTRO_NAME), version (DISTRO_VERSION) and file name prefix (DISTRO_FILE_PREFIX) are specified in DISTRO_SPECS.

3builddistro takes the distro logo that appears in documentation and first-run dialogs from woof-code/rootfs-skeleton/usr/share/doc/puplogos. It looks for ${DISTRO_FILE_PREFIX}.svg or ${DISTRO_BINARY_COMPAT}.svg, then falls back to a generic Puppy logo.

There are two ways to specify the artwork (window manager theme, GTK+ theme, icon theme, wallpaper and cursor theme) to use by default, both via _00build.conf:

  1. Using pTheme: choose one of the global themes under /usr/share/ptheme/globals.

    PTHEME="Original Pup"
    
  2. Using support/choose_themes: specify default themes individually.

    THEME_WALLPAPER="Blue.svg"
    THEME_GTK2="Flat-grey-rounded"
    THEME_JWM="Flat-grey"
    THEME_JWM_BUTTONS="Buntu"
    THEME_GTK_ICONS="Puppy Standard"
    THEME_DESK_ICONS="StandardSvg"
    THEME_MOUSE="DMZ-Black"
    

See support/choose_themes for a list of theme directories.

Themes are not downloaded automatically by woof-CE and must be added to the build as binary packages or built from source during the build.

Adding Binary Packages

The list of binary packages to include in the distro is specified in DISTRO_PKGS_SPECS-*. See woof-code/README.pkgs_specs for more details.

Building Packages from Source

woof-CE implements a "petbuilds" mechanism in woof-code/support/petbuilds.sh. It builds packages from source inside a chroot environment of the built Puppy distro (with its devx), so the built packages are reproducible, guaranteed to be compatible with the built Puppy and customizable.

This mechanism is useful when:

  1. A package must be customized to work in Puppy: for example, some applications refuse to run as root.

  2. A package is not available in the compat distro repos: for example, many Puppy tools rely on gtkdialog, but it's a Puppy-specific tool not available in other distros.

  3. An application is available in the compat distro repos, but it's too old for use in Puppy: for example, some Puppy JWM themes won't work if JWM is too old.

  4. An application is available in the compat distro repos, but the compat distro enables optional features that add unwanted dependencies, making the compat distro package bigger and heavier than a much smaller but slightly less full-featured package built from source.

  5. Maintaining a .pet package repository containing prebuilt packages is not an option.

To build a package from source during 3builddistro and include it in the build:

  1. Add a directory for your package under woof-code/rootfs-petbuilds.

  2. Add a petbuild file under the directory: this is a shell script that defines two functions, download() and build(). The former downloads files needed to build the package, like a source code tarball. The latter builds the package and installs it to /.

  3. If needed, add extra sources files that cannot be downloaded, like Puppy-specific patches.

  4. If needed, add extra files and directories that will be included in the package, like configuration files.

  5. Add a pet.specs file under the directory: this file is needed so PPM recognizes this package as a pre-installed one.

  6. Add a sha256.sum file under the directory: this file specifies the SHA256 checksum of all files downloaded by download(). If this file is missing, no verification of downloaded files is performed and this can lead to broken packages. Files not listed in sha256.sum are not verified.

For example, if the download() function of the busybox package downloads files named busybox-1.35.0.tar.bz2 and busybox-guess_fstype.patch, the sha256.sum file for busybox can be generated using:

   cd woof-code/rootfs-petbuilds/busybox
   . ./petbuild
   download
   sha256sum busybox-1.35.0.tar.bz2 busybox-guess_fstype.patch > sha256.sum
  1. If needed, add a pinstall.sh post-installation script.

  2. Add the package name to PETBUILDS, under _00build.conf.

TECHNICAL NOTES

History

Woof-CE (woof-Community Edition) is a fork of Barry Kauler's woof2 fossil repository of Nov 11, 2013 commit f6332edbc4a75c262a8fec6e7d39229b0acf32cd.

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

Packages-puppy-*

Notice that there are Packages-puppy-noarch-official, also Packages-puppy-common-official

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

Puppy filenames

The main Puppy files are:

vmlinuz, initrd.gz, puppy.sfs, zdrv.sfs, fdrv.sfs, adrv.sfs, ydrv.sfs

Versioning is put into the last two, for example:

vmlinuz, initrd.gz, puppy_slacko_7.0.0, zdrv_slacko_7.0.0.sfs fdrv_slacko_7.0.0.sfs, adrv_slacko_7.0.0.sfs, ydrv_slacko_7.0.0.sfs

...those last two names are intended to be unique for that build of Puppy, so they can be found at bootup.

DISTRO_SPECS file

The filenames are stored in the built Puppy, in /etc/DISTRO_SPECS. For example:

DISTRO_PUPPYSFS='puppy_slacko_7.0.0.sfs'
DISTRO_ZDRVSFS='zdrv_slacko_7.0.0.sfs'
DISTRO_FDRVSFS='fdrv_slacko_7.0.0.sfs'
DISTRO_ADRVSFS='adrv_slacko_7.0.0.sfs'
DISTRO_YDRVSFS='ydrv_slacko_7.0.0.sfs'

So, any script that wants to know what the names are can read these variables.

Woof 3builddistro also copies DISTRO_SPECS into the initrd.gz, so that the init script can see what files to search for.

However, in a running Puppy, you can find out the filenames in the way that scripts have done before, by reading PUPSFS and ZDRV variables in /etc/rc.d/PUPSTATE.

In fact, to clarify the difference between these two sets of variables, I have put this comment into /etc/DISTRO_SPECS:

#Note, the .sfs files below are what the `init` script in initrd.gz searches for,
#for the partition, path and actual files loaded, see `PUPSFS` and `ZDRV` in /etc/rc.d/PUPSTATE

kernel

Woof-CE, a fork of woof2 can build the same as woof2 however a new feature has been added. It now has the ability to build a distro with out modules in the initrd.gz, a feature which had been pioneered by Fatdog developers kirk and jamesbond. This has a number of advantages over the legacy kernel builds.

  1. No messy copying kernel modules from the initial ram disk to the root system.
  2. Ease of changing kernels.

It's named 'huge' type kernel, for want of a better term. The rationale for this is that Slackware developers name their default kernel huge-$some_suffix. The reason is that the vmlinuz kernel image contains all the necessary filesystem and hardware drivers to get the system to boot and hand over to the real running system. Once that occurs, kernel modules are loaded to bring up the rest of the hardware and extra filesystems if necessary.

"kernel-kit", part of woof-CE, has the ability to produce one of these 'huge' style kernel packages. Please read the relevant README and the comments in "build.conf" inside the kernel-kit directory.

If you have built a "huge" style kernel with kernel-kit then place the package in the "huge_kernel" directory at the root of your woof installation. If not, one will be downloaded for you after you invoke 3builddistro from the CLI. You do get a choice of which version you want. Be sure you choose the correct architecture. All 32 bit builds are suffixed with either i486, i686 or x86. All 64 bit builds are suffixed x86_64. At the end you will end up with an ISO image, devx and checksums as usual.

Regards, Barry Kauler puppylinux.com

woof-ce's People

Contributors

01micko avatar asriedu avatar cou645 avatar dimkr avatar drscavngr avatar gyrog avatar jakesfr avatar jamesbond3142 avatar keyboard-k avatar lakshayrohila avatar mavrothal avatar mr-kumar-abhishek avatar mrfricks avatar noryb009 avatar peabee avatar rizalmart avatar rizalmartin avatar rodins avatar rserwin1 avatar s243a avatar sc0ttj avatar scuba156 avatar stemsee avatar technosaurus avatar triotj avatar wdlkmpx avatar wlwaw avatar woodenshoe-wi avatar xanad avatar zigbert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

woof-ce's Issues

Update readme & have it display default on github.

This is more of a request, but it would be nice if the Readme-first describing the entire project was moved over on top of the readme with markup to display nicely on github. If you are wanting to keep the original commit notice about a fork of BarryK's woof2 repo just keep it at the top with the GPL notice?

It also looks like the readme hasn't been updated since it was written by Barry. Maybe add some info on the currently usage distros to base the puppy on, etc.

fstab entries are ignored

From what I can see we do not run "mount -a" at any point.
As a result /etc/fstab drive entries with 'auto' or 'defaults' option that should be auto-mounted are ignored and may need some hacking in rc.local or /root/.config/autostart to mount at boot time.
Is there any risk in adding "mount -a' in rc.sysinit?

Woof is invasive

I am woofing in FatDog64

Binaries are getting written to the running system from woof. This is bad, very bad. The running system should not be touched at all.

arm_gentoo_gap6 package download failures

From: DOWNLOAD-FAILS-gentoo-gap6

a52dec-0.7.4-r6.tar.bz2
acl-2.2.51.tar.bz2
alsa-lib-1.0.25-r1.tar.bz2
alsa-utils-1.0.25-r1.tar.bz2
appres-1.0.3.tar.bz2
atk-2.2.0.tar.bz2
attr-2.4.46-r1.tar.bz2
autoconf-2.13.tar.bz2
automake-1.11.1.tar.bz2
bash-4.2_p20.tar.bz2
bdftopcf-1.0.3.tar.bz2
bigreqsproto-1.1.1.tar.bz2
binutils-2.21.1-r1.tar.bz2
bison-2.4.3.tar.bz2
bzip2-1.0.6-r3.tar.bz2
cairo-1.10.2-r2.tar.bz2
cmake-2.8.7-r5.tar.bz2
compositeproto-0.4.2.tar.bz2
coreutils-8.14.tar.bz2
cpio-2.11.tar.bz2
cups-1.5.2-r4.tar.bz2
curl-7.24.0.tar.bz2
damageproto-1.2.1.tar.bz2
db-4.7.25_p4.tar.bz2
diffutils-3.0.tar.bz2
docbook-xml-dtd-4.1.2-r6.tar.bz2
dri2proto-2.6.tar.bz2
e2fsprogs-1.42.tar.bz2
e2fsprogs-libs-1.42.tar.bz2
eject-2.1.5-r2.tar.bz2
expat-2.1.0.tar.bz2
faac-1.28-r1.tar.bz2
faad2-2.7-r2.tar.bz2
findutils-4.4.2-r1.tar.bz2
fixesproto-5.0.tar.bz2
flac-1.2.1-r3.tar.bz2
flex-2.5.35_p10.tar.bz2
fontconfig-2.8.0-r1.tar.bz2
fontsproto-2.1.1.tar.bz2
foomatic-filters-4.0.15.tar.bz2
freetype-2.4.9-r1.tar.bz2
gawk-4.0.0.tar.bz2
gcc-4.5.3-r2.tar.bz2
gdbm-1.8.3-r4.tar.bz2
gdk-pixbuf-2.24.1-r1.tar.bz2
gettext-0.18.1.1-r1.tar.bz2
ghostscript-gpl-9.05-r1.tar.bz2
giflib-4.1.6-r2.tar.bz2
git-1.7.3.4-r1.tar.bz2
glib-2.30.3.tar.bz2
glib-networking-2.30.2.tar.bz2
glibc-2.13-r4.tar.bz2
glproto-1.4.14-r1.tar.bz2
gmp-5.0.2_p1.tar.bz2
gnutls-2.12.18.tar.bz2
grep-2.9.tar.bz2
groff-1.21.tar.bz2
gtk+-2.24.10-r1.tar.bz2
gtksourceview-2.10.5-r2.tar.bz2
gzip-1.4.tar.bz2
hicolor-icon-theme-0.12.tar.bz2
hunspell-1.3.2-r3.tar.bz2
iceauth-1.0.5.tar.bz2
inputproto-2.0.2.tar.bz2
intltool-0.50.2.tar.bz2
iptables-1.4.13.tar.bz2
kbproto-1.0.5.tar.bz2
lame-3.99.3.tar.bz2
lcms-1.19.tar.bz2
less-444.tar.bz2
libarchive-3.0.3.tar.bz2
libcdio-0.83.tar.bz2
libcroco-0.6.5.tar.bz2
libdrm-2.4.27.tar.bz2
libdv-1.0.0-r2.tar.bz2
libffi-3.0.10.tar.bz2
libfontenc-1.1.0.tar.bz2
libgcrypt-1.4.6.tar.bz2
libglade-2.6.4.tar.bz2
libgpg-error-1.10.tar.bz2
libice-1.0.7.tar.bz2
libidl-0.8.14.tar.bz2
libjpeg-turbo-1.2.0-r1.tar.bz2
libnotify-0.7.4.tar.bz2
libogg-1.3.0.tar.bz2
libpciaccess-0.12.1.tar.bz2
libpcre-8.12.tar.bz2
libpng-1.5.10.tar.bz2
libproxy-0.4.7.tar.bz2
libpthread-stubs-0.3.tar.bz2
librsvg-2.34.2.tar.bz2
libsm-1.2.0.tar.bz2
libsndfile-1.0.25.tar.bz2
libtasn1-2.12.tar.bz2
libtheora-1.1.1.tar.bz2
libtool-2.4-r1.tar.bz2
libusb-1.0.9_rc3.tar.bz2
libvorbis-1.3.2.tar.bz2
libx11-1.4.4.tar.bz2
libxau-1.0.6.tar.bz2
libxaw-1.0.9.tar.bz2
libxcb-1.7.tar.bz2
libxcomposite-0.4.3-r1.tar.bz2
libxcursor-1.1.12.tar.bz2
libxdamage-1.1.3.tar.bz2
libxdmcp-1.1.0.tar.bz2
libxext-1.3.0.tar.bz2
libxfixes-5.0.tar.bz2
libxfont-1.4.4.tar.bz2
libxft-2.2.0.tar.bz2
libxi-1.4.3-r1.tar.bz2
libxkbfile-1.0.7.tar.bz2
libxml2-2.7.8-r5.tar.bz2
libxmu-1.1.0.tar.bz2
libxpm-3.5.9.tar.bz2
libxrandr-1.3.2.tar.bz2
libxrender-0.9.6.tar.bz2
libxres-1.0.5.tar.bz2
libxscrnsaver-1.2.1.tar.bz2
libxslt-1.1.26-r3.tar.bz2
libxt-1.1.1.tar.bz2
libxtst-1.2.0.tar.bz2
libxv-1.0.6.tar.bz2
libxxf86misc-1.0.3.tar.bz2
libxxf86vm-1.1.1.tar.bz2
linux-headers-3.1.tar.bz2
luit-1.1.0.tar.bz2
m4-1.4.15.tar.bz2
make-3.82-r1.tar.bz2
makedepend-1.0.3.tar.bz2
man-1.6g.tar.bz2
mesa-7.11.2.tar.bz2
mkfontdir-1.0.6.tar.bz2
mkfontscale-1.0.9-r1.tar.bz2
module-init-tools-3.16-r1.tar.bz2
mpc-0.8.2.tar.bz2
mpfr-3.0.1_p4.tar.bz2
ncurses-5.9-r2.tar.bz2
net-tools-1.60_p20110409135728.tar.bz2
nettle-2.4.tar.bz2
nspr-4.9.tar.bz2
nss-3.13.4.tar.bz2
openssh-5.9_p1-r4.tar.bz2
openssl-1.0.0i.tar.bz2
pango-1.29.4.tar.bz2
parted-3.1.tar.bz2
patch-2.6.1.tar.bz2
pciutils-3.1.9-r1.tar.bz2
perl-5.12.4-r1.tar.bz2
pixman-0.24.0.tar.bz2
pkgconfig-0.26.tar.bz2
poppler-0.18.4-r1.tar.bz2
popt-1.16-r1.tar.bz2
procps-3.2.8_p11.tar.bz2
psmisc-22.14.tar.bz2
python-2.7.2-r3.tar.bz2
randrproto-1.3.2.tar.bz2
readline-6.2_p1.tar.bz2
realpath-1.16.tar.bz2
recordproto-1.14.1.tar.bz2
renderproto-0.11.1.tar.bz2
resourceproto-1.2.0.tar.bz2
rsync-3.0.9.tar.bz2
scrnsaverproto-1.2.1.tar.bz2
sed-4.2.1.tar.bz2
sgml-common-0.6.3-r5.tar.bz2
speex-1.2_rc1.tar.bz2
sqlite-3.7.10.tar.bz2
startup-notification-0.12.tar.bz2
sudo-1.8.3_p2.tar.bz2
sysvinit-2.88-r3.tar.bz2
texinfo-4.13.tar.bz2
tiff-4.0.1-r1.tar.bz2
timezone-data-2011n.tar.bz2
udev-171-r5.tar.bz2
unrar-4.1.4-r2.tar.bz2
unzip-6.0-r1.tar.bz2
util-linux-2.20.1-r1.tar.bz2
util-macros-1.17.tar.bz2
videoproto-2.3.1.tar.bz2
wget-1.12-r3.tar.bz2
xauth-1.0.6.tar.bz2
xcalc-1.0.4.1.tar.bz2
xcb-proto-1.6-r2.tar.bz2
xcb-util-0.3.8.tar.bz2
xclipboard-1.1.1.tar.bz2
xclock-1.0.5.tar.bz2
xcmiscproto-1.2.1.tar.bz2
xdpyinfo-1.2.0.tar.bz2
xev-1.1.0.tar.bz2
xextproto-7.2.0.tar.bz2
xf86-input-evdev-2.6.0.tar.bz2
xf86-input-keyboard-1.6.0.tar.bz2
xf86-input-mouse-1.7.1.tar.bz2
xf86-video-fbdev-0.4.2.tar.bz2
xf86-video-omapfb-0.1.1_p3.tar.bz2
xf86-video-v4l-0.2.0.tar.bz2
xf86bigfontproto-1.2.0.tar.bz2
xf86dgaproto-2.1.tar.bz2
xf86driproto-2.1.1.tar.bz2
xf86miscproto-0.9.3.tar.bz2
xf86vidmodeproto-2.3.1.tar.bz2
xgamma-1.0.4.tar.bz2
xhost-1.0.4.tar.bz2
xineramaproto-1.2.1.tar.bz2
xinit-1.3.1-r1.tar.bz2
xkbcomp-1.2.3.tar.bz2
xkeyboard-config-2.4.1-r3.tar.bz2
xload-1.1.0.tar.bz2
xmessage-1.0.3.tar.bz2
xmodmap-1.0.5.tar.bz2
xorg-server-1.11.2-r2.tar.bz2
xprop-1.2.1.tar.bz2
xproto-7.0.22.tar.bz2
xrandr-1.3.5.tar.bz2
xrdb-1.0.9.tar.bz2
xset-1.2.2.tar.bz2
xsm-1.0.2.tar.bz2
xtrans-1.2.6.tar.bz2
xvid-1.3.2.tar.bz2
xvidtune-1.0.2.tar.bz2
xvinfo-1.1.1.tar.bz2
xwininfo-1.1.2.tar.bz2
xz-utils-5.0.3.tar.bz2
zip-3.0.tar.bz2
zlib-1.2.5-r2.tar.bz2

Update mimetypes

Puppy uses defaults, has already many file associations in woof. Which that means that is outdated.

It's based on two files:

  • /usr/share/mime/packages/puppy.xml

This file contains mime types like 2fs, 3fs, 4fs, initrd.gz, and other strange filetypes but are essential for mounting images and administration.

However that file is not in woof but in a separte package. That is a bug.

  • /usr/share/mime/packages/freedesktop.org.xml

This contains outdated standard mimetypes, which can be updated, MIME types are essential in a system, they define a system.

This again, is an essential file, it belongs to woof.

By adding these two files and add/update/fix MIME associations in /root/Choices/MIME-types , ROX will continue to work as expected.

A lot of work is to be done with an alternative file manager like PCManFM.

What happend to pgprs?

Just noticed (in Slacko-5.9.3 & Tahr-5.8.3) that /lib/modules/all-firmware/pgprs/* no longer exists, hence "Connect to internet by -> Wireless GPRS modem" in "Internet Connection Wizard" won't work.
Was it intentional removal?

ROX should not be hardwired

In Puppy many default programs are actually scripts, which are overwritten everytime a user chooses another program as default for a specific action.

defaulthtmlviewer
defaultimageviewer
defaultwordprocessor

defaultfilmanager or defaultfm.... damn it's not there. It's a bug.

ROX is also hardwired in some scripts. To avoid being diligent and change the code, rox can be used insted of defaultfilemanager.

  • /usr/local/bin/rox

Is a symlink to the actual rox, could also be a symlink to another program.

A little script can handle this situation.

For example, one can do this:
defaults fm rox
defaults fm pcmanfm

Standardize Icon Theme

Puppy has a default icon theme, with is ROX specific. That icon theme is very limited and small in size, which is good.

  • /usr/local/apps/ROX-Filer/ROX/MIME

I'm looking at that folder in woof, there are already a few icons. Uhmm...

Now, that prevents choice in the system level. Other file managers are unable to use ROX themes, which is bad.

However ROX can also use the standard icon theme hicolor. Just by changing one setting and now ROX is using true standards.

All icons should be moved/copied to /usr/share/icons/hicolor/48x48/mimetypes. ROX will work the same.

  • /usr/share/icons/hicolor/48x48/mimetypes

From now on, other icons can be added, ALL file managers will be benefited by this.

Update each PKGS_SPECS_TABLE

Need to update each PKGS_SPECS_TABLE var to accommodate new gtkdialog-splash, that is, remove all references to gtkdialog3, see isuue #6
In due course.

Deprecate cryptoloop in favour of dm-crypt for pup_save

Most (Debian, Arch, RedHat) distros are using cryptsetup.

Please see comment from JamesBond at Barry's Blog

Posted on 22 Feb 2013, 20:06 by jamesbond
cryptoloop is going the dinosaurs way too
losetup from klibc (the latest I tried is 2.0.2) also supports encryption (both -e and -p).

That being the case, the cryptoloop module itself will be going soon as soon as this patch is merged with mainline https://lkml.org/lkml/2012/11/1/375.

cryptsetup (aka dm-crypt) has been around for years and getting more mature, as well as more secure than cryptoloop.

It is relatively easy to replace losetup with cryptsetup:

"losetup -e aes /dev/loop5 x.img"

can be replaced with

"cryptsetup -M plain -c aes-cbc-plain -h plain open `pwd`/x.img encrypted_device"

There is however no known methods of replacing the "xor" (aka "light") encryption.

For more info please see https://lkml.org/lkml/2012/11/2/162 (that URL still uses cryptsetup 1.5.x format, "open" is introduced in 1.6.0).

Fatdog already uses cryptsetup by default for new encrypted savefile although it still uses losetup as "compatibility mode" for older, existing encrypted savefile. Once the cryptoloop is gone I will have to migrate to cryptsetup for all encryption modes.

cheers!

Some good links:
Ubuntu:
https://help.ubuntu.com/community/EncryptedFilesystemOnIntrepid

Arch:
https://wiki.archlinux.org/index.php/Dm-crypt_with_LUKS
https://wiki.archlinux.org/index.php/System_Encryption_with_LUKS

Puppy

Improve scripts readability & speed

I usually edit the code and replace spaces with tabs. That way the code looks beautiful..

I can edit most scripts so everyone can understand the code better, but I need approval. I'm just learning how to use git, I might get lost

We should replace sed, cut, etc .. where possible. When it comes to process one line... it's better to use 'case' or '[[ ]]', bash also supports regular expressions ...

PupZip or defaultarchiver?

That is the question.

sh-4.3# file /usr/local/bin/pupzip
/usr/local/bin/pupzip: symbolic link to `defaultarchiver'

pupzip is a wrapper for xarchiver, a highly expandable utility. I hope what I'm writing makes sense, I'm reaching beyond my limits.

pupzip is hardwired in puppy, but again, just like rox, it can be replaced in case we don't want to modify the code and file associations in /root/Choices/MIME-types

Then we have a choice.

In here there is Xarchiver, my script that looks like File-Roller, and File-Roller GTK2 patched with the latest fixes from Engrampa (MATE). All of them quite lightweight.

By far File-Roller is the most friendly and complete, not as complete as my script of course. But displays a file hierarchy and file icons from the standard icon theme. It just looks perfect. It enhances the user experience and makes them feel comfortable.

That is choice.

printk patch fails in > 3.16 (kernel-kit)

I have just discovered that in k >= 3.16 (that I know of) they have moved and changed the name of the kernel message constants from kernel/printk/prink.c to include/linux/printk.h

I will have to adjust kernel-kit/build.sh to allow for this. I posted this as a reminder as I'm too busy right now. Shouldn't be a difficult fix.

fontmanager defaults to false

On first run fontmanager in a fresh install defaults to "false" for antialiasing, hinting, etc
However, if the fonts look OK to begin with (and usually do in an LCD monitor) the user may not change the default settings, so then the fonts get all messed up.
Is there anyway to detect monitor type and set defaults accordingly?
If not I would set the line 17 variables to "true", as LCDs should be more common even for puppy users

VirtualBox failure

Something in the recent commits to the init or /etc/rc.d/rc.sysinit is baulking boot of a puppy VM in oracle virtualbox, known to affect slacko-5.6 and precise-5.7x

Updating pet repos in woof_gui messes up DISTRO_PET_REPOS

The problem is in woof_gui_tabs lines 342-348.
Building slacko "Packages-puppy-${xDISTRO_COMPAT_VERSION}-official" becomes "Packages-puppy-14.0-official" instead of the correct "Packages-puppy-slacko14-official", thus Packages-puppy-slacko14-official is missing from PACKAGELISTS_PET_ORDER after the update.

remove commented out code

I have start removing old commented out blocks of code from puppy scripts to make them a more legible. So far about 500 lines from /bin, /etc and /sbin scripts.
Anu objection before I go to /usr?

Trash status

Since we now save the contents of the trashcan we need an additional icon to show that we have items in the trash (zigbet? ;) and the corresponding changes is the ROX-app to change the icon depending on the content.

Using cross build copies wrong arch petget utils to target build (find-cat and friends)

This occurs in my 64 fork as well as in the arm architectures, I just checked a raspberry pi build I did recently and the mime says ELF 32 bit LSB executable intel 80386

My proposal is to create a new package called "petget-utils-$version-$arch" to eliminate this problem and remove the offending code from 3builddistro rather than to hack that and also hack merge2out.

Add more and more file associations

In

  • /root/Choices/MIME-types (manually placed)
  • /root/.config/rox.sourceforge.net/MIME-types (ROX filer gui associations)

You can already find many default file associations. So why not add more and more.

For this to be worthwhile, it's recommended to add the latest version of Freedesktop mimetypes first and update the mime database.

  • /root/Choices/MIME-types/image_svg+xml : exec defaultimageviewer "$1"
  • /root/Choices/MIME-types/image_x-portable-pixmap : exec defaultimageviewer "$1"
  • /root/.config/rox.sourceforge.net/MIME-types/image_vnd.microsoft.icon : exec defaultimageviewer "$1"
  • /root/.config/rox.sourceforge.net/MIME-types/application_x-cue : exec defaulttexteditor "$@"

That way everything becomes easier for everyone.

Everyone can contribute on this, they just find something they know that definitely is supported and report.

And even specific mimetype may be added:

  • /root/Choices/MIME-types/application_x-audacity-project : exec audacity "$@"

If audacity is not present, when they click, they will find out that the program required to open that file is : audacity.

Deprecate saving to floppy?

Does anyone have a working floppy drive? I have a bunch but I don't know if they work because I can't get disks (that work). Can only save a few things from /etc anyway like locale, timezone. This wont' affect booting from floppy for archaic machines that can't boot from cd/usb.

Touchscreen support

I intend to add some files for this over the coming weeks.

Many of zigbert's new gui are already touchscreen friendly (in a size sense)

latest cleanup breaks desktop icon

Guys.. we need care.. baby steps. The 'dotpups' scripts was directly linked to the 'install' icon on the desktop.

While I'm not a huge fan of the current puppy layout, it is there and works for now. If we tweak it then we must test it!

xz compression for PET packages (PXT)

A long time ago technosaurus patched petget and various other files so pets could be built with xz compression. This is long overdue to be included in puppy, after all, most sfs these days use xz compression which can make packages up to 15% smaller, depending on their content (eg: images are usually already compressed so ymmv).
I've asked him for the patches so we can integrate into woof-CE.
I also will consider supporting the .pxt extension proposed by techno, though it will be a bit of a pain to patch in. Then again, it might be better to keep only .pet extension and change the algorithm to expand pets.

Thoughts?

SVG icons break compatibility with older Window Managers

www.youtube.com/watch?v=es1vQl_S55Y

All Window managers look so primitive compared to lxp-icewm that is unbelievable that development was stopped almost a decado ago. I guess it was already complete, but not anymore. That ability to use images for everything makes it look so amazing. When the mouse is over the window buttons, they change color (image), when clicked it also happens the same.

IceWM can look for an icon if the extension is not specified. PNG, JPG, XMP, even GIF I think.

ex 'icon=palemoon' is enough for IceWM to get it right every time.

When I moved my whole setup to tharpup CE, IceWM was unable to display 97% of the icons.

Add essential scripts to woof

sh-4.3# syscore -gitdiff /usr/sbin/pdict
15c15
< yaf-splash -placement center -bg orange -close never -timeout 60 -fontsize large -text "$(gettext 'Please wait, accessing online Dict server...')" &

---
> /usr/lib/gtkdialog/box_splash -placement center -close never -timeout 60 -fontsize large -text "$(gettext 'Please wait, accessing online Dict server...')" &

In woof there are trivial scripts like pdict, file associations that must go into the ROX package.

However, in my experiencie, these 2 scripts are more important that most of the scripts introduced to woof lately:

sh-4.3# syscore -gitdiff /usr/sbin/sfs_load
diff: /mnt/sda1/github/WOOFCE/woof-code/rootfs-skeleton/usr/sbin/sfs_load: No such file or directory

sh-4.3# syscore -gitdiff /usr/sbin/frugalinstaller
diff: /mnt/sda1/github/WOOFCE/woof-code/rootfs-skeleton/usr/sbin/frugalinstaller: No such file or directory

kernel kit broken

the kernel kit seems to be broken, aufs-utils fails to compile and then it exits.

666philb

Add support for pcmanfm --desktop & pup-volume-monitor

It's no fun using pcmanfm if drives icons do not appear in the left panel. It feels like a primitive Windows explorer with missing functionality and I'd rather go back to ROX. Which again is my favorite.

However that requires pup-volume-monitor, which can coexist with pup_event_frontend_d. I'm not sure, can't remember.

But what I do I'm sure is that [ROX-Filer + everything standard] Puppy and [pcmanfm + pup-volume-monitor] can coexist in the same system.

pup-volume-monitor installs a GIO module I think, which can be moved to another place to avoid conflicts. And bring it back when needed.

In fact pcmanfm is smaller than ROX, it can be included in an official Puppy and the code to switch between these 2 options should be in woof. PCManFM + pup-volume-monitor is 5x faster at mounting and unmonting drives, but its very limited I guess. But that shouldn't be a problem.

Packagers should know what to include for this work.

To avoid conflicts, when creating a remaster or building from woof, in the final stage, execute the code below with ROX as default.

And for switching, this is the code I use:

function fm() {
filer=$1
dbustr="## test for an existing bus daemon, just to be safe #-DBUS\nif test -z "$DBUS_SESSION_BUS_ADDRESS" ; then #-DBUS\n ## if not found, launch a new one #-DBUS\n dbus-uuidgen --ensure #-DBUS\n ADDRESS="$(dbus-launch --sh-syntax --exit-with-session)" #-DBUS\n eval $ADDRESS #-DBUS\n echo "D-Bus per-session daemon address is: $DBUS_SESSION_BUS_ADDRESS" #-DBUS\nfi #-DBUS\nwhich $CURRENTWM"
case $filer in
pcmanfm) #set pcmanfm as default filer
[ ! -x /usr/bin/pcmanfm ] && echo "ERROR: pcmanfm is missing" && exit 1
rm -f /usr/local/bin/rox
ln -sfv /usr/bin/pcmanfm /usr/local/bin/rox
sed -i 's|rox -p|rox-real -p|' /root/.xinitrc /usr/sbin/set_bg
#sed -i -e '/#-DBUS/d' -e "s|which $CURRENTWM|${dbustr}|" /root/.xinitrc
## eventmanager
[ ! -f /etc/.eventmanager_ORIG ] && cp -v /etc/eventmanager /etc/.eventmanager_ORIG #Backup eventmanager
sed -i 's/true/false/g' /etc/eventmanager #turn off
#sed -i 's/ICONDESK="true"/ICONDESK=false/' /etc/eventmanager #turn off just icons
#sed -i 's/ICONDESK=true/ICONDESK=false/' /etc/eventmanager
chmod +x /etc/init.d/start-pup-volume-monitor
chmod +x /usr/bin/pup-volume-monitor-starter
mv -fv /etc/udev/50-pup-volume-monitor.rules /etc/udev/rules.d
mv -fv /usr/libpup-volume-monitor.so /usr/lib/gio/modules
;;
rox)
rm -f /usr/local/bin/rox
sed -i 's|rox-real -p|rox -p|' /root/.xinitrc #/usr/sbin/set_bg
echo -e "#!/bin/sh \n exec /usr/local/apps/ROX-Filer/AppRun "$@"" > /usr/local/bin/rox
chmod +x /usr/local/bin/rox
[ -f /etc/.eventmanager_ORIG ] && mv -f /etc/.eventmanager_ORIG /etc/eventmanager
chmod -x /etc/init.d/start-pup-volume-monitor
chmod -x /usr/bin/pup-volume-monitor-starter
mv -fv /etc/udev/rules.d/50-pup-volume-monitor.rules /etc/udev
mv -fv /usr/lib/gio/modules/libpup-volume-monitor.so /usr
;;
)
echo "ERROR: specify pcmanfm or rox"
exit 1
;;
esac
echo -e "#!/bin/sh \n exec /usr/local/apps/ROX-Filer/AppRun "$@"" > /usr/local/bin/rox2
chmod +x /usr/local/bin/rox2
echo "
Default file manager set to: $filer (now restart pc)"
}

.

troll post

Use control panels to unclutter menus

Would be good to eliminate some of the menu entries that are served by the puppy setup panel. JWM entries could be included here too.
Also the install panel could include the remaster etc entries under setup menu.
The other big category of menu entries are the ones relating to hardware info under system. A "system-info panel could consolidate those too.
These changes should make touch navigation easier particularly in smaller screen where you run out of space if taller manus are implemented.

0setup error line 19 DISTRO_BINARY_COMPAT-debian dirrectory not found

we were running puppy linux 5.7 running off USB stick
followed read me instructions and got stuck on 0setup and got roughly this error
0setup error line 19 DISTRO_BINARY_COMPAT-debian dirrectory not found
is there any other documentation to follow?
we read through the 3 readmes refered to but are getting nowhere.

also is there a video tutorial or clear documentation to use woof ce?

firmware : pgprs is missing in current 5.6.4

While rearranging the firmware code, pgprs folder is missing from /lib/modules/all-firmware .

/usr/sbin/pgprs-shell says ๐Ÿ‘Ž

# pgprs-shell 
EXIT="Exit on timeout"
Generating /root/.jwmrc...
/usr/sbin/pgprs-shell: line 50: exec: pgprs-setup: not found

Did not detect it before, since I booted into old savefiles .

New kernel setup brakes booting from VFAT USB drives with non-english 'pkeys'

When using the "huge kernel" with no modules in initrd, booting with a pkeys parameter from a usb drive with a vfat file system will fails since it may need CODEPAGE_{850,852} and ISO8859_2 that are now in zdrv and can not be modprobe'ed.
Need to be built in the kernel and not as modules.
Alternatively we may try to mount zdrv in the initfs early and have everything available, though finding and mounting the zdrv may need codepage when in a vfat usb...

magic_sysrq?

How about enabling CONFIG_MAGIC_SYSRQ=y in all configs?
It was always incomprehensible to me that this feature is absent in all kernels in Puppyland.

I did recompile Slacko-5.7(.0) kernels with sysrq (adds only a couple of kb to vmlinuz) few months ago and, so far only once, but it saved me from hard shutdown.

Related: http://www.murga-linux.com/puppy//viewtopic.php?t=92961

Add generic symlinks/placeholders to fool programs/users

Some programs/users come with hardcoded paths, they usually look for a specific program and if they don't find it, the code fails.

For example, I'm writing from QtWeb, this program seemed to be unstable, but is even faster than opera and very nice looking, with handy shortcuts. All problems seem to resolved, except one.

What happens is that when I try to open the download folder, nothing happens, so I did this:

sh-4.3# ln -sfv rox /usr/local/bin/thunar
/usr/local/bin/thunar' ->rox'
sh-4.3# ln -sfv rox /usr/local/bin/nautilus
/usr/local/bin/nautilus' ->rox'
sh-4.3# ln -sfv rox /usr/local/bin/konqueror
/usr/local/bin/konqueror' ->rox'
sh-4.3# ln -sfv rox /usr/local/bin/pcmanfm
/usr/local/bin/pcmanfm' ->rox'

One of them worked, I think it was konqueror.

/usr/local/bin is the place. If any program is installed, it usually ends up in /usr/bin, superseding the one in /usr/local/bin

Merge restartwm, wmpoweroff, wmreboot & wmexit into one script?

  • restartwm
  • wmpoweroff
  • wmreboot
  • wmexit

These all share the same code, with a few differences. That can be sorted out with a symlink.

Suppose wmexit is the script, all the others are symlinks to wmexit.

Looking at how busybox works, I realized that by calling an application through a symlink, the $0 variable stores the symlink path.

So we can do this:

script=${0##*/}

case $script in
    wmexit)
        #code and comments here
        ;;
    restartwm)
        #code and comments here
        ;;
    wmreboot)
        #code and comments here
        ;;
    wmpoweroff)
        #code and comments here
        ;;      
esac

Expand petget capabilities

Petget is so slow that I had to write a lightweight replacement for it.

I do check the filelist for the tar --strip option, but I also use the same filelist to determine if system updates are needed.

This is easy to understand and expand

while read FILEx; do    
    case $FILEx in
        */usr/share/mime/packages/?*)        HASMIME=1 ;;
        */usr/share/applications/?*.desktop) HASDESKTOP=1 ;;
        */usr/share/icons/hicolor/?*)        HASICONS=1 ;;
        */usr/share/fonts/default/?*)        HASFONTS=1 ;;
        */usr/share/man/?*)                  HASMANUAL=1 ;;
    esac
done <<< "$filelist"

That way I can also process a directory full of packages to install. I also "merge" all install scripts into one. The woof style. Then there is a final script and some variables tell me what to update.

if [ ! "$IGNORE_POSTINSTALL" ] ; then #can be set anytime

if [ "$PINSTALL" ] ; then
    echo -e "\n========= NOW RUNNING INSTALL SCRIPT(s) ============\n"
    ${FORCELOCATION}/pinstall.final
fi
rm -f ${FORCELOCATION}/pinstall.final


echo -e "\n========= POST-INSTALL ACTIONS ============\n"

if [ $HASDESKTOP -eq 1 ]; then
    echo "--- Updating menus ---"
    fixmenus ; jwm -reload &>/dev/null || jwm -restart
fi

if [ $HASMIME -eq 1 ]; then
    echo "--- Updating MIME database ---"
    update-mime-database /usr/share/mime
fi

if [ $HASICONS -eq 1 ]; then
    echo "--- Updating HICOLOR icon cache ---"
    gtk-update-icon-cache -i -f /usr/share/icons/hicolor 
fi

if [ $HASFONTS -eq 1 ]; then
    echo "--- Updating FONTCONFIG cache ---"
    fc-cache -r /usr/share/fonts/default
fi

if [ $HASMANUAL -eq 1 ]; then
    echo "--- Updating MAN database ---"
    mandb -q
fi

fi

Modify some folders in packages-templates

Though Puppy is different, it should try to look as normal as possible.

  • woof-CE/woof-code/packages-templates/

coreutils, util-linux, create extremely cutdown packages.

I find MANY tutorials and solutions that use utilities from those packages. Also there is a fatal flaw: there is a 'truncate' utility, that I really find useful, but it's different from the one in Puppy, and both share the same path.

busybox also has a lot of applets, you can create symlinks this way:

sh-4.3# busybox --list | while read applet ; do if ! which $applet >/dev/null ; then ln -sfv ../../bin/busybox /usr/bin/$applet ; fi ; done
/usr/bin/add-shell' ->../../bin/busybox'
/usr/bin/adjtimex' ->../../bin/busybox'
/usr/bin/arp' ->../../bin/busybox'
/usr/bin/arping' ->../../bin/busybox'
/usr/bin/bootchartd' ->../../bin/busybox'
/usr/bin/brctl' ->../../bin/busybox'
/usr/bin/catv' ->../../bin/busybox'
/usr/bin/chpst' ->../../bin/busybox'
/usr/bin/conspy' ->../../bin/busybox'
/usr/bin/cttyhack' ->../../bin/busybox'
/usr/bin/dnsd' ->../../bin/busybox'
/usr/bin/envdir' ->../../bin/busybox'
/usr/bin/envuidgid' ->../../bin/busybox'
/usr/bin/ether-wake' ->../../bin/busybox'
/usr/bin/fakeidentd' ->../../bin/busybox'
/usr/bin/fatattr' ->../../bin/busybox'
/usr/bin/ftpd' ->../../bin/busybox'
/usr/bin/hush' ->../../bin/busybox'
/usr/bin/ifenslave' ->../../bin/busybox'
/usr/bin/inetd' ->../../bin/busybox'
/usr/bin/killall5' ->../../bin/busybox'
/usr/bin/linuxrc' ->../../bin/busybox'
/usr/bin/lpd' ->../../bin/busybox'
/usr/bin/makemime' ->../../bin/busybox'
/usr/bin/mt' ->../../bin/busybox'
/usr/bin/nanddump' ->../../bin/busybox'
/usr/bin/nandwrite' ->../../bin/busybox'
/usr/bin/nbd-client' ->../../bin/busybox'
/usr/bin/nmeter' ->../../bin/busybox'
/usr/bin/ntpd' ->../../bin/busybox'
/usr/bin/patch' ->../../bin/busybox'
/usr/bin/popmaildir' ->../../bin/busybox'
/usr/bin/raidautorun' ->../../bin/busybox'
/usr/bin/reformime' ->../../bin/busybox'
/usr/bin/remove-shell' ->../../bin/busybox'
/usr/bin/runsv' ->../../bin/busybox'
/usr/bin/runsvdir' ->../../bin/busybox'
/usr/bin/rx' ->../../bin/busybox'
/usr/bin/sendmail' ->../../bin/busybox'
/usr/bin/setuidgid' ->../../bin/busybox'
/usr/bin/slattach' ->../../bin/busybox'
/usr/bin/smemcap' ->../../bin/busybox'
/usr/bin/softlimit' ->../../bin/busybox'
/usr/bin/sv' ->../../bin/busybox'
/usr/bin/svlogd' ->../../bin/busybox'
/usr/bin/tcpsvd' ->../../bin/busybox'
/usr/bin/telnetd' ->../../bin/busybox'
/usr/bin/tftpd' ->../../bin/busybox'
/usr/bin/tunctl' ->../../bin/busybox'
/usr/bin/ubiattach' ->../../bin/busybox'
/usr/bin/ubidetach' ->../../bin/busybox'
/usr/bin/ubimkvol' ->../../bin/busybox'
/usr/bin/ubirmvol' ->../../bin/busybox'
/usr/bin/ubirsvol' ->../../bin/busybox'
/usr/bin/ubiupdatevol' ->../../bin/busybox'
/usr/bin/udpsvd' ->../../bin/busybox'
/usr/bin/vconfig' ->../../bin/busybox'
/usr/bin/watchdog' ->../../bin/busybox'
/usr/bin/whois' ->../../bin/busybox'
/usr/bin/zcip' ->../../bin/busybox'

Then check the full packages and determine what to keep and what not.

How about x(print)idle?

'getcurpos' is very handy, little binary, however its use in 'frontend_timeout' to measure time of user's inactivity is IMO wrong, as it relies only on mouse, not keyboard.
I'd like to propose an inclusion of another little and very handy piece - xidle, from:
https://github.com/ericpruitt/lintils
or xprintidle (which source at http://freecode.com/projects/xprintidle seems to be unavailable ATM).
Each of them, compiled & stripped, takes only ~5K (personally I prefer xidle).

Appropriate part in frontend_timeout could be simplified like this then:

MINUTECNT=0
[ -f /tmp/pup_event_frontend_timeout_minutecnt ] && MINUTECNT="`cat /tmp/pup_event_frontend_timeout_minutecnt`"

 if [ $POWERTIMEOUT -ne 0 ];then #power-off computer after inactivity.
  MINUTECNT=`expr $MINUTECNT + 4`
  echo -n "$MINUTECNT" > /tmp/pup_event_frontend_timeout_minutecnt
  if [ $MINUTECNT -gt 59 ];then #come in here every minute...
   MINUTECNT=0
   echo -n "$MINUTECNT" > /tmp/pup_event_frontend_timeout_minutecnt
   IDLETIME=`xidle -i`
   #IDLETIME=`expr \`xprintidle\` \/ 1000`
   [ $IDLETIME -ge $POWERTIMEOUT ] && wmpoweroff &
  fi
 fi

What do you think?

Greetings!

move package support to /var

I do not know the historical reasons that ppm support files are in /root/.packages but placing them in /var/packages makes more sense and will facilitate multi-user support or even fido/spot etc.
The change looks pretty simple (just a sed command) and for pets that still look in /root/.packages a symlink should do.
I guess it can wait till after the first woof-CE puppy release ;)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.