Puppy Developer News 2008
Notice: this static webpage is temporarily replacing my WordPress blog
until I can sort out a security hole in my site (hosted by
servage.net). Update: as I have moved to Hostgator, I may bring back a
blog soon. UPDATE: experimental blog, see announcement on April 8.
My PPLOG blog now in use
April 10, 2008
The page you are looking at now is only reachable by the full URL:
...which will probably be replaced by a redirection to the blog sometime.
If you go to this URL: http://puppylinux.com/blog
then you will be at the new blog.
How can we detect if a laptop?
April 9, 2008
Some feedback from testers of 4.00beta is that the battery applet
displays in the tray on desktop PCs that do not have a battery. This is
not supposed to happen.
You guys who have this problem, is the battery module is loaded in your
system? Just open a terminal and type 'lsmod'. Well, I guess that I
already know what your answer will be. The battery module is loaded.
There is some code in /etc/rc.d/rc.modules2 that is supposed to load
the battery module only if the computer has a battery. The 'asapm' tray
applet will quit if the battery module isn't loaded.
So what I really need feedback on is some other way to detect that your
computer does not have a battery. Perhaps there is something in
/proc/acpi/battery or /sys/module/battery
If you come up with anything, kindly let us know here:
Pcdripper updated, Fotox menu fixed
April 9, 2008
Jason (Plinej) has updated Pcdripper, a audio CD song ripper, to version 3.5. You can read about it in this forum thread:
In 4.00beta, Fotox does not start from the menu, but does from the
commandline. This is due to a change in installation directory from the
previous version. Fixed.
Icon theming for HotPup
April 9, 2008
The official Dingo live-CD has three desktop icon themes: 'FlatOrange',
'Original' and 'Stardust'. Version 4.00beta has 'Stardust' as default.
These icons can be easily switched by the menu 'Desktop -> Desktop
icon switcher', but this did not change the icons used by HotPup.
I have now integrated HotPup into this scheme, so that it uses icons
from the selected theme.
Sunset background for Citrus-cut theme
April 9, 208
Jesse, the same Jesse who developed MUT, has taken some snapshots of a
spectacular orange/yellow sunset. He posted a 800x600 picture that is
only 37KB and I have put this into Dingo, replacing the 'castle.jpg'
which is 113KB.
Then I switched over from the default 'Gradient-grey' theming in
4.00beta to 'Citrus-cut' and boy it sure is over-powering! Also changed
the desktop icons to 'FlatOrange', but what does not fit in are the
HotPup icons... I have made a note of this, I'll incorporate the HotPup
icons into the desktop icon theming (see the menu Desktop -> Desktop
icon switcher). Should be able to get that done tonight.
Here is the forum thread where Jesse has posted the sunset snapshots:
Yahoo works again with Ayttm
April 9, 2008
As was reported on the Puppy forum, Yahoo chat did not work in Ayttm,
running 4.00beta. Yahoo had made a change to their system on April 2nd
that adversely affected all chat clients.
There is a 'libyahoo2' project, that Ayttm uses for their plugin, and
Siddhesh has got the latest out of SVN and put it into Ayttm. I have
got Ayttm out of CVS today and updated Puppy.
One thing I want to mention about the tinyness of PPLOG -- actually,
the script is only 40KB. Federico develops it in Windows, so lines all
end with carriage-return and line-feed characters. If you open it in
Geany, there is a menu option to change that to a Unix-format text
file, which only has a carriage-return character on each line-end, and
it makes quite a difference to the filesize, down from 45KB to 40KB. If
you want to try PPLOG, do this, otherwise you have to upload the file
(using gFTP) in ASCII transfer mode -- whereas if it is already in Unix
format then you can upload in binary mode. gFTP does not have automatic
detection of ASCII or binary mode for uploading.
Experimental new blog
April 8, 2008
This is truly lovely, a minimalist blog, a real work of art! The blog is named PPLOG and I have got it running here:
PPLOG is tiny,just one 45KB Perl script, plus two images (it was three
but I reduced that!) and one style.css file. That's it, the entire blog.
The author, Federico Ramirez, has been very helpful and explained some
things that I did not know how to set it up -- actually, installation
and setup is extremely simple, but there were just a couple of little
things left out of the instructions. His PPLOG page is here:
To execute the Perl script from a index.html page, not index.shtml,
that is to turn on SSI (Server Side Includes) for a file without the
'.s' in the extension, I found that this can be added to the .htaccess
file in the blog directory:
This turns on SSI parsing for any file with its execute-bit attribute
set. So, I have set 'test.html' to attributes 755 -- that should be ok
shouldn't it? I don't see how setting the owner's execute bit
compromises security. At least, in Hostgator its ok I think -- Servage
on the other hand has all the files owned by 'nobody'.
I have asked Federico about an extra security measure for posting
comments, as I don't think the security code is good enough these days
-- it isn't obfuscated enough.
When the admin makes a post, there is a convenient menubar for
inserting bbcodes. You don't get that when posting comments, but you
can still insert bbcode. I don't know why he left it out -- perhaps to
discourage commenters from using bbcodes! I should ask him about that
It has just occurred to me that this blog is so tiny it could go into
Puppy. We have Perl, we have some small web servers. We already have a
wiki (didiwiki), so why not add a blog? Anyone want to have a go at
getting it running in Puppy? It would be nice if it can run as user
'spot', just like didiwiki-- see /root/spot/README.txt.
Testing Gxine 0.5.901, bugfix for 0.5.9
April 8, 2008
Forum member J_Rey reported that Gxine version 0.5.901 has been
released. So, I have been testing it. For the record, this is how I
# export CPPFLAGS="-I/usr/include/seamonkey -I/usr/X11R7/include"
Probably if I had added '-I/usr/include/seamonkey/nspr' to CPPFLAGS
then the modification to 'npapi.h' would not have been needed.
# export LDFLAGS="-L/usr/lib/seamonkey -L/usr/X11R7/lib -lXinerama"
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --build=i486-t2-linux-gnu --disable-integration-wizard --with-spidermonkey=/usr/include/seamonkey/js --without-dbus --without-hal
In file included from plugin.c:54:
npapi.h:45:21: error: prtypes.h: No such file or directory
I edited 'npapi.h':
/* BK change, this is a seamonkey file...
#include <prtypes.h> */
...then 'make' worked.
# new2dir make install
Testing this version, I am pleased to report that 'Preferences' now
works. However, full-screen is a mess. It still has the bug that the
window has to be maximised first, but now there are more bugs added.
The worst one is that the right inch or so of the video is cut off and
the normal Puppy desktop still displays -- it's weird, full-screen
except for this vertical piece of the desktop on the right side.
Another bug: sometimes the tray is hidden, sometimes it isn't, and I
couldn't see any logic to it.
So, Gxine continues in the same quirky pattern. I reckon that a peak of
acceptable behaviour was reached with 0.5.8 and perhaps 0.5.9.
HOWEVER, I have found one bug in 0.5.9 that is not in 0.5.901. If I
click on a '.rm' (RealMedia video) in ROX-Filer then v0.5.9 starts but
doesn't play the video, no error message. On the otherhand, 'File ->
Open' in 0.5.9 does play the video. I messed around for awhile,
installing 0.5.8, 0.5.9 and 0.5.901 one after the other, trying
different things. Then I made an interesting discovery...
Running 0.5.9, If I start the RealMedia video from the commandline like
this (which is exactly what gets executed when click on the file in
# gxine /mnt/hda3/sources/media-test/TSS_Lindows.rm
then Gxine starts but does not play the video. (Note though, other
files like WMV and AVI play fine). However, if I start it with a
fully-qualified URI like this:
# gxine file:///mnt/hda3/sources/media-test/TSS_Lindows.rm
That's it, it plays! I do vaguelly recall this bug being reported, but
at the time I didn't have a clue why it would make any difference
clicking on the file in ROX-Filer to start it compared with 'File ->
Open inside Gxine.
I have modified /usr/bin/gxineshell, which is a wrapper script for
starting gxine, so that if a file with full path is passed-in then
'file://' is appended. This fixes 0.5.9.
Forum feedback for 4.00beta
April 7, 2008
Just in case you are testing (or want to test) v4.00beta and don't know where to report bugs, there is a forum thread for this:
There is another thread for more general feedback about 4.00beta (like success stories):
Please do read down through this blog for progress reports since 4.00beta was released.
Round avatar, from MU
April 7, 2008
I asked for help to convert my avatar image to a round shape in this forum thread:
Wjaguar responded, and Mark (MU) went the whole way and created them,
using Gimp. They look so nice. I have uploaded them to my site:
Gxine crashes, rollback to 0.5.9
April 7, 2008
Feedback on 4.00beta is that Gxine crashs when 'Preferences' is chosen.
Ah yes, I looked in my notes and I had already discovered that. I had
forgotten about it. What happened was that I went through a very long
process of testing various media players, finding problems with them
all, and eventually went back to Gxine, thinking that it is the best of
a bad bunch -- but I had forgotten about that crashing bug in v0.5.11
(the one in 4.00beta). Now, looking back in my notes, I see that I had
tested just about every version of Gxine, to see if any earlier version
works better in Dingo.
Versions 0.5.8 and 0.5.9 worked well, the 'Preferences' crashing bug
started with version 0.5.10. My notes state that 0.5.8 and 0.5.9 cannot
do full screen -- but I need to take another look at that, given that
even the latest 0.5.11 still has that problem -- so maybe there is a
workaround for those earlier versions also.
Ok, I am now testing 0.5.9. 'Preferences' works. Also, full-screen
works if do the same trick as for 0.5.11 -- that is, maximize the
window first. I'll do some more testing of this version, but it is
looking like a very strong contender -- well the only contender for now
-- for 4.00beta2.
libstdc++.so.5 back in
April 7, 2008
As was reported on the forum, 'xlock' does not work, as libstdc++.so.5
is missing. I was too hasty when I removed it just before building
I have just done a dependency check and found that
/usr/lib/codecs/cook.so and drvc.so also need libstdc++.so.5. This
means that some media files will not play in Gxine.
fuser utility does not always work: Pmount fixed
April 6, 2008
We have had this problem since Puppy v0.1. Yesterday Pmount was unable to unmount
a partition, nor was I able to unmount it from the commandline --
'umount <mount point>' returned a message that the device is busy. When Pmount fails to
unmount a partition, it runs 'fuser -v -m <mount point>' which is
supposed to return all processes that are using that mount point.
Except that it doesn't always work.
Now, I can repeat this situation. If gFTP hangs, which it is often
prone to, I have resorted to killing it by right-clicking in the
taskbar then choose 'kill'. This kills it, or rather appears to as the
GUI disappears. However, there is still a process running, as seen by
'ps'. It is this process that prevents the partition from being
unmounted, yet 'fuser' cannot see it.
That was yesterday. This morning I am trying to get gFTP to hang so
that I can investigate further -- but now of course it is behaving
itself very nicely and won't hang. Oh yes, now it has hung! Can't even
close the window. The way I have just done it is simple -- I'm
currently offline, but do have my LAN and router working. I just
clicked the connect button to try to logon to an FTP server, and after
awhile gFTP timesout then just hangs (the author hasn't upgraded gFTP
for a long time, I wish he would fix some obvious bugs like this). One
thing though, before clicking the 'logon' button, I first choose a
directory in the left pane to somewhere inside the partition that I
want to unmount -- this is the thing that causes the partition to
Ok, now for the solution. I have fixed Pmount so it successfully
unmounted the partition that has a process using it, that fuser cannot
see. With gFTP, when it hangs, and after the GUI is killed, there is a
process named 'gftp' left behind. Wait awhile, and this turns into a
'zombie' or 'defunct' process, which according to the docs is a process
that although it still exists, it is unused and waiting for its parent
to kill it. But in the case of gFTP since it has hung it never kills
the defunct process. Now, fuser cannot see these defunct processes -- a
bit of an oversight I reckon.
However, the 'ps' utility can see zombie processes. If you just run
'ps' without parameters, it runs the Busybox applet, and zombie
processes are marked with a 'Z'. If 'ps' is run with any commandline
parameters, then the full ps is executed. So, I can add some code to
'pmount' to find these zombie processes and kill them. Except I don't
want to kill a zombie if it still has a running parent process, at
least I don't think so. So, I put this code into 'pmount' that finds
any zombies without a parent, by using the '-H' option of ps which
displays a tree-format that shows if a process has a parent:
umount $MNTPTIt works. With a zombie 'gftp' process I was able to unmount the
partition using Pmount. This is great, after so many years I have
finally solved this problem!
#v3.99 fix zombie process prevents partition unmount, invisible to fuser...
if [ $? -ne 0 ];then
ZOMBIES="`ps -H -A | grep '<defunct>' | sed -e 's/ /|/g' | grep -v '|||' | cut -f 1 -d ' ' | tr '\n' ' '`"
for ONEZOMBIE in $ZOMBIES
echo "Killing parentless zombie process $ONEZOMBIE"
I also need to apply this fix to /etc/rc.d/rc.shutdown, which also has
code to kill processes before attempting to unmount partitions. ...ok,
I've done that too.
UPDATE: I aso fixed another
very old bug in Pmount. It's quite a rare bug, and when it happened I
was puzzled, but I have just now realised what causes it. Sometimes it
is possible that some other process unmounts the partition just before
the execution reaches the above code. In that case, not only will
'umount' fail, but later in the code 'fuser -v -m <mount point>'
actually returns the processes of the root or '/' filesystem, which get
displayed in a window informing you that unmounting failed and do you
want to kill these processes -- and it would be very bad to answer in
the affirmative. So, I put in an extra check to see if the partition
has actually unmounted, which avoids this situation.
Missing pages now not missing
April 6, 2008
The pages news.htm and download/downpage.htm at puppylinux.com were
redirection file, so I have put in those missing web pages, that will
redirect to news/index.html and download/index.html respectively.
April 6, 2008
My apology, I left out some files from the Ayttm package. I am keen for
those into online chatting to test Ayttm, but it didn't work in
4.00beta. I have uploaded file 'usr-lib-ayttm.tar.gz' to:
Please download it somewhere, extract the files by either clicking on
it or execute 'tar -zxf usr-lib-ayttm.tar.gz' in a terminal, then copy
the files to /usr/lib/ayttm.
Also, the desktop in 4.00beta was supposed to have a 'chat' icon, that launches Ayttm. Fixed.
Some web pages fixed
April 6, 2008
I have archived all of the posts to this page, until yesterday, to
'news400a7-400b.htm', which you can find via the link at the bottom of
this page. This includes the events leading up to, and the announcement
of Puppy 4.00beta.
On my Developer News pages I have changed the logo at the top of page
from the "information" logo to my avatar. The reason for this is that I
normally use my avatar to designate myself, such as on the forum, and
my news/blog posts are also posts from me. My avatar is a photo of the
original Puppy, looking directly at the camera.
I've had very helpful feedback on my web pages at puppylinux.com. How
to further improve the CSS and IE6 compatibility for example. Some
links that need fixing too. I'll get onto it a bit at a time.
Older news is archived here.