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:
http://puppylinux.com/blog/index.html
...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:
http://murga-linux.com/puppy/viewtopic.php?t=27859

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:
http://murga-linux.com/puppy/viewtopic.php?t=24157

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:
http://murga-linux.com/puppy/viewtopic.php?t=27938

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:
http://puppylinux.com/blog/test.html

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:
http://pplog.infogami.com/

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:
XBitHack on
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'.

Note1:
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.

Note2:
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 too.

Note3:
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 compiled it:
# export CPPFLAGS="-I/usr/include/seamonkey -I/usr/X11R7/include"
# 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
# make

Error:
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> */
#include <nspr/prtypes.h>

...then 'make' worked.

# new2dir make install
Probably if I had added '-I/usr/include/seamonkey/nspr' to CPPFLAGS then the modification to 'npapi.h' would not have been needed.

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 ROX):
# 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:
http://murga-linux.com/puppy/viewtopic.php?t=27859

There is another thread for more general feedback about 4.00beta (like success stories):
http://murga-linux.com/puppy/viewtopic.php?t=27860

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:
http://murga-linux.com/puppy/viewtopic.php?t=27898

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:
http://puppylinux.com/news/news400a7-400b.htm

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 4.00beta.

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 remain busy.

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 $MNTPT
#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
do
echo "Killing parentless zombie process $ONEZOMBIE"
kill $ONEZOMBIE
done
umount $MNTPT
fi
It 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!

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 missing after I moved to Hostgator. Raffy sent me a Javascript redirection file, so I have put in those missing web pages, that will redirect to news/index.html and download/index.html respectively.

Ayttm fixed

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:

http://distro.ibiblio.org/pub/linux/distributions/puppylinux/test/puppy-4.00beta/

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.