Note by Apollia on Nov. 8, 2023: Please join my Patreon if you'd like to support me and my work!

My main personal website is now Apollia.org. I'm still not sure what to do with Astroblahhh.Com, so it's mostly staying as-is for now.





Puppy Linux Blog - Most Recent Posts

Posts Below
7/6/2018 - LHPup.org is down, but Lighthouse 64 Puppy Linux 6.02 Beta 2 is still available in Archive.org
1/29/2018 - How to make Saxon/C v1.1.0 into a PHP extension for PHP 5.6.13 in Lucid Puppy Linux 5.2.8
7/31/2017 - How to compile Pale Moon 27.4.1 from source code in Lighthouse 64 Puppy Linux 6.02 Beta 2
7/31/2017 - How to make YouTube HTML5 audio work with Lighthouse 64 Puppy Linux 6.02 Beta 2 and a Sewell USB Sound Box
9/19/2016 - How to make Saxon/C v1.0.2 into a PHP extension for PHP 5.6.13 in Lucid Puppy Linux 5.2.8
7/9/2016 - How to add XML and XSLT 1.0 capabilities to Perl in Lucid Puppy Linux 5.2.8 version 004
6/27/2016 - Accidentally ruined Windows 10 on my Toughbook CF-C1
6/20/2016 - How to use a Sewell USB Sound Box with Lighthouse 64 Puppy Linux 6.02 Beta 2
6/15/2016 - Extended Desktop for Toughbook CF-C1 while running Lighthouse 64 Puppy Linux 6.02 Beta 2
12/30/2015 - How to compile Guile-Gnome 2.16.4 in Lucid Puppy Linux 5.2.8
12/29/2015 - How to compile GNU Guile 2.0.11 in Lucid Puppy Linux 5.2.8
12/29/2015 - Was able to compile PHP 7.0.1 in Lucid Puppy Linux 5.2.8, but couldn't compile PHP-GTK 2.0.1 to work with PHP 7.0.1
12/27/2015 - How to compile newLISP in Lucid Puppy Linux 5.2.8
12/27/2015 - How to compile GNU Common Lisp 2.6.12 in Lucid Puppy Linux 5.2.8
3/22/2015 - Modified version of new2dir for Puppy Linux; and thoughts on Linux package management
2/11/2015 - Apollia's Puppy Linux Setup Kit v1.1 (Software Release)
9/30/2014 - Apollia's Puppy Linux Setup Kit v1.0 (Software Release)

    Hide/Show:


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down
LHPup.org is down, but Lighthouse 64 Puppy Linux 6.02 Beta 2 is still available in Archive.org
Friday, July 6th, 2018
03:56:04 GMT


The Lighthouse 64 Puppy Linux website seems to be down. I first noticed this around perhaps June 22nd:

LHPup.org

I was hoping the website would soon return, but it hasn't so far. And now, that page redirects to a domain name seller's website.


I'm not sure how long LHPup.org has been down, but, here's the most recent version of that page in Archive.org:

https://web.archive.org/web/20180418110240/http://lhpup.org/
From April 18, 2018 - Archive.org


I don't know what happened, and the official forum thread about Lighthouse 64 Puppy Linux 6.02 Beta 2 hasn't been posted to since 2015:

Lighthouse 64 602 Beta2 with GIMP-2.8.4 (6-29-2013)
From Puppy Linux Discussion Forum


I hope the person who owned LHPup.org is OK. Huge thanks to him or her for creating the Lighthouse 64 variant of Puppy Linux - it's still the operating system I use most frequently.




The Lighthouse 64 Puppy Linux 6.02 Beta 2 ISO and DevX SFS file of development tools are both available at Archive.org:

https://archive.org/details/Puppy_Linux_Lighthouse64

In the box at the right side of the page that says "DOWNLOAD OPTIONS", click the "SHOW ALL" link near the bottom to show a list of all available files. The file to download is 257.0 M and is named:

(There's also the larger Mariner edition ISO, but I never tried that, nor probably most of the other files available there.)


The file's SHA-512 checksum:

The file's MD5 checksum exists in Archive.org. (Close the Archive.org toolbar at the top of the page to see it):

https://web.archive.org/web/20130914060703/http://www.lhpup.org:80/beta/L64-602/Lighthouse64-6.02-B2.iso.md5.txt



Here's where you can get Lighthouse 64 Puppy Linux 6.02 Beta 2's official DevX SFS file of development tools:

https://archive.org/details/Puppy_Linux_Devx

In the box at the right side of the page that says "DOWNLOAD OPTIONS", click the "SHOW ALL" link near the bottom to show a list of all available files. The file to download is 383.3 M and is named:


The file's SHA-512 checksum:




I still haven't finished renovating my (Apollia's) Puppy Linux Setup Kit (APSK).

But, when it is finished, it will be possible to use it to set up Lighthouse 64 Puppy Linux 6.02 Beta 2.


I have no plans to even trying to switch to a newer Puppy Linux (or any other GNU/Linux) until I make more progress with APSK, which I will probably gradually release here:

https://apollia.org/gitlist


The renovated APSK is still pretty incomplete, and after being preoccupied with other things for about a month (mainly because I mostly quit GitHub and had to figure out how to get by without it), I feel a bit lost and disoriented now that I'm trying to return to working on APSK.

But, fortunately, I can use my modified version of VUE: Visual Understanding Environment to create some documentation, maybe or maybe not similar to this, which will probably help me get (and share) a better idea of what the heck I was doing and what I should do next.


Some of the best currently-existing documentation of important new features in the renovated version of APSK is in this repo:

https://apollia.org/gitlist/Apollia-Jargon.git


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to make Saxon/C v1.1.0 into a PHP extension for PHP 5.6.13 in Lucid Puppy Linux 5.2.8
Monday, January 29th, 2018
23:10:10 GMT


Today I found out Saxon/C v1.1.0 was released Sept. 27, 2017.

In it, "APIs are available to run XSLT 3.0, XQuery 3.1, XPath 3.1 and Schema Validation from C/C++ or PHP applications."


Here's an article about various exciting new improvements in XSLT 3.0:

Why You Should Be Using XSLT 3.0
(Feb. 14, 2017, from XML.com)


The ability to easily convert between JSON and XML, making it possible to transform JSON using XSLT, is so exciting that even I (who am often reluctant to switch to newer versions of software) was happy to upgrade to Saxon/C v1.1.0.


(Addition, Feb. 17, 2018, 9:32 PM EST. I made some Bash scripts which make it easy to switch between the Saxon/C v1.0.2 PHP module and Saxon/C v1.1.0 PHP module:

Switch Between Versions of Saxon/C

I made those scripts because I found I can't use Schematron unless I use Saxon/C v1.0.2, or one of the commercial editions of Saxon/C v1.1.0.)


Fortunately, the process of making Saxon/C v1.1.0 into a PHP extension was almost the same as it was for Saxon/C v1.0.2.

So, for most of the details, see my previous blog post:

How to make Saxon/C v1.0.2 into a PHP extension for PHP 5.6.13 in Lucid Puppy Linux 5.2.8


The 2 differences were:

  1. I copied the contents of the PHP5-Build folder (which only contains a file named "config.m4") into the Saxon.C.API folder, overwriting the "config.m4" file that was already there.

  2. Then, after running ./configure --enable-saxon and editing the Makefile the way my previous blog post describes, I edited the Makefile a bit more, just to replace all instances of the text "php7" with "php5".

After that, all I had to do was follow the rest of my previous blog post's instructions!


I should note that I accomplished this while running Lucid Puppy Linux 5.2.8 version 004 in a VirtualBox, and I haven't yet tried it in a non-virtual system. But I'm guessing it will work in a non-virtual system too.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to compile Pale Moon 27.4.1 from source code in Lighthouse 64 Puppy Linux 6.02 Beta 2
Monday, July 31st, 2017
11:35:28 GMT


Several days ago, after less than an hour of trying, I successfully compiled my favorite web browser, Pale Moon, from source code, in Lighthouse 64 Puppy Linux 6.02 Beta 2!

The reason I did that was because I thought upgrading my web browser might solve my issues with YouTube's HTML5 player not playing audio. (I was mistaken, but, I finally found a solution!)

And when I tried to simply download the latest precompiled version of Pale Moon for Linux, 27.4.0, it wouldn't run on my system because of this error. (Which also happened with at least one older version many months ago):

./palemoon: /lib/libc.so.6: version `GLIBC_2.17' not found (required by ./palemoon)

So, my only remaining option was to try to build Pale Moon from source code.


Since the build process was a bit more complicated than just ./configure; make; make install, and I thought I might need to know how to do it again someday, and that others might like to know too, I decided to document it.

Happily, it was a lot easier to build than I thought it might be. That was the first time I ever attempted to build a web browser from source code, and I was prepared to spend hours on it if I had to.

But, to my own surprise, it only took me about 45 minutes to figure out, thanks to various helpful web pages. And it will hopefully take much less time in the future, now that I've written this blog post, which even I will be able to refer to someday when I've forgotten most of the below details.


However, the below instructions will probably have to be modified if you don't have enough RAM, because the final /home/root/pmbuild folder on my system ended up being over 3 GB, or 3264 M, to be more exact.

And I was only able to build it there - a location inside my Puppy Linux RAM disk - because my current computer has a huge amount of RAM - 32 GB, which gives me a 16 GB Puppy Linux RAM disk.

So far, I wasn't able to figure out how to make the ./mach command build Pale Moon someplace other than /home/root/pmbuild. I'm guessing the best place to look for answers would be the official Pale Moon forum.


I also haven't tried these instructions in any other Puppy Linux, nor any other GNU/Linux. So, I don't know what changes might need to be made for other Puppies or GNU/Linuxes.


  1. I loaded the Lighthouse 64 DevX SFS file of development tools by right-clicking it and choosing "sfs_load".

    If you need a copy of the DevX SFS file, you can get it from here:

    http://lhpup.org/sfs/602-x86_64/


  2. I didn't have Autoconf 2.13, which is required to build Pale Moon, according to the official instructions on how to build Pale Moon in Linux.

    So, I downloaded autoconf-2.13.tar.gz from here:

    https://ftp.gnu.org/gnu/autoconf/


  3. Then, I unzipped the autoconf-2.13.tar.gz in one of my temporary folders in my Puppy Linux RAM disk.


  4. Building Autoconf 2.13 was easy. In the autoconf-2.13 folder, I opened a terminal window and typed these commands:

    ./configure

    make

    new2dir make install

    I put "new2dir make install" instead of "make install" because I wanted to make Puppy Linux .pet and .sfs installer files for Autoconf 2.13, so I hopefully wouldn't have to repeat this process again.


  5. I'm not sure this is necessary, but I moved my existing copy of autoconf (version 2.69) to some other location with this command:

    mv /usr/bin/autoconf /usr/bin/autoconf269


  6. Then, I had to make this symlink, or else the "Mach" software used to build Pale Moon complained that Autoconf 2.13 couldn't be found. This page gave me that idea:

    ln /usr/local/bin/autoconf /usr/local/bin/autoconf213


  7. Next, I downloaded the "Pale-Moon-27.4_RelBranch.zip" file from this page on GitHub:

    https://github.com/MoonchildProductions/Pale-Moon/tree/27.4_RelBranch

    That file's size is about 230 MB.


  8. I unzipped "Pale-Moon-27.4_RelBranch.zip" in a temporary folder in my Puppy Linux RAM disk. (I went out of my way to put it in a path which contained no spaces, simply because lots of things in Linux seem to be allergic to spaces in paths.)

    If you don't have as much RAM as I do, you might want to unzip that folder to someplace on a physical disk.


  9. Inside the Pale-Moon-27.4_RelBranch folder, I had to put a text file named ".mozconfig" (without quotes).

    I copied and pasted the example .mozconfig file from the official instructions for how to build Pale Moon in Linux: https://developer.palemoon.org/Developer_Guide:Build_Instructions/Pale_Moon/Linux

    But, I found I couldn't use exactly that, because the build got interrupted because I didn't have PulseAudio. And I much preferred to avoid installing PulseAudio because of its association with the infamous systemd.


    Fortunately, this forum thread gave me a clue of how stop Pale Moon from trying to use PulseAudio.

    Here's my final .mozconfig file, which you should place inside the "Pale-Moon-27.4_RelBranch" folder before the next step:


  10. I guess this is the point at which you might need to figure out how to change the default destination for the build, if your Puppy Linux RAM disk can't accomodate over 3 GB of files.

    As I mentioned before, I don't know how to do that yet - sorry.

    So, the rest of these instructions will simply assume you have enough RAM, as I did.


  11. Still in the "Pale-Moon-27.4_RelBranch" folder, I opened a terminal window, and typed this command:

    ./mach build

    Then, I just had to wait a while - 801 seconds, or 13.35 minutes. However, I was using a pretty good 2.8 GHz computer with 8 cores. So it might take more or less time depending on what you're using.


    I'm actually using a used Mac Pro from 2008, which looks like a giant cheese grater. :-) And I actually like it a lot, even though I usually prefer to avoid Apple products.

    Surprisingly, this Mac Pro can run Lighthouse 64 Puppy Linux 6.02 Beta 2, which makes it tremendously nicer for me to use than Mac OS X Lion does.


    The ./mach build command resulted in a large folder at /home/root/pmbuild/. I forgot to check its size before running the next step, but after the next step, it ended up being over 3 GB! 3264 M, to be more exact.


  12. There was still one more build command to run in the "Pale-Moon-27.4_RelBranch" folder:

    ./mach package

    This was much faster to finish than the build, and resulted in a tarchive quite similar to the official precompiled Pale Moon tarchives.

    That tarchive was in the folder /home/root/pmbuild/dist/ and named "palemoon-27.4.1.linux-x86_64.tar.bz2".


  13. Before you unzip that tarchive and run the "palemoon" file, you should probably take the precaution of backing up your current Pale Moon profile, just in case.

    In my system, by default, my Pale Moon profile is located at:

    /root/.moonchild productions

    To back it up, I close Pale Moon, and wait a little while to try to make sure Pale Moon is finished writing any files to that folder.

    Then I zip the folder, and put the zip file somewhere on a physical disk.

    I assume backing up the folder simply by copying the folder to a physical disk might also work, though I haven't tried that lately.


  14. Now, you can unzip the "palemoon-27.4.1.linux-x86_64.tar.bz2" file to whatever folder you want. It contains a "palemoon" folder which contains a "palemoon" executable file you can simply double-click on to run.

    That will launch Pale Moon 27.4.1 with your usual old Pale Moon profile, so, you hopefully won't have to reinstall your add-ons and other customizations from scratch.

    I upgraded from Pale Moon 26.2.2, and so far, I haven't noticed any problems with any of my old add-ons or anything else, though I haven't checked thoroughly.


  15. The most jarring difference I encountered was Google not being in the search engines list by default, but that is very easily fixed by clicking the Google link on this official Pale Moon Search Plugins page:

    https://addons.palemoon.org/integration/addon-manager/external/searchplugins

    And while you're there, you can add a lot of other handy search engines.


I'm very happy with my Pale Moon upgrade so far. It is noticeably faster than the old version I contentedly used for probably over a year, Pale Moon 26.2.2.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to make YouTube HTML5 audio work with Lighthouse 64 Puppy Linux 6.02 Beta 2 and a Sewell USB Sound Box
Monday, July 31st, 2017
08:40:30 GMT


I finally found a way to make YouTube's HTML5 player play audio while I'm using my Sewell USB Sound Box with Lighthouse 64 Puppy Linux 6.02 Beta.

Previously, I simply used the YouTube Flash Video Player web browser add-on instead of struggling to make the HTML5 player work. But, that add-on recently stopped working for me in the Pale Moon web browser. I tried upgrading Pale Moon, but that didn't fix the audio either.

But luckily, after a few days, I stumbled across this helpful forum thread. Post #10 contained all the info I needed. Thanks to all the authors of that thread!


Here's what I did:

  1. To get my Sewell USB Sound Box to work, I followed my own instructions here.

  2. I opened the text file /etc/asound.conf in a text editor. (You might want to make a backup copy of the asound.conf file in case anything goes wrong.)


  3. I replaced the entire contents of /etc/asound.conf with the settings from the above-mentioned Post #10:


  4. I closed then relaunched my web browsers - Pale Moon 27.4.1 and Firefox 45.0.2.

  5. I went to a YouTube video. Both audio and video played fine!

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to make Saxon/C v1.0.2 into a PHP extension for PHP 5.6.13 in Lucid Puppy Linux 5.2.8
Monday, September 19th, 2016
19:15:31 GMT


I wanted to be able to use XSLT 2.0 with PHP (my favorite programming language), so I figured out how to compile Saxon/C into a PHP extension.

According to Saxon/C's official home page, Saxon/C provides "XML document processing for the C/C++/PHP platforms", and "In particular, Saxon/C provides processing in XSLT, XQuery and XPath, and Schema validation".


I ran into a few problems trying to make Saxon/C into a PHP extension on my Lucid Puppy Linux 5.2.8 version 004 system, but, fortunately, I was able to solve them.

I still didn't figure out how to make all of the Saxon/C example PHP scripts work, but, 3 out of 4 work fine for me.




To compile software from scratch in Puppy Linux, it's often necessary (or convenient) to use the DevX file of development tools for your Puppy Linux.

My page of Some Puppy Linux Basics explains more about DevX files, and if you need the DevX for Lucid Puppy 5.2.8, it's available at this link:

http://distro.ibiblio.org/puppylinux/puppy-5.2.8/

If you're using a different version of Puppy than Lucid Puppy 5.2.8, that DevX probably won't work, so you should instead download the DevX released for your Puppy.

Also, if you're not using Lucid Puppy 5.2.8, please bear in mind that the instructions in this blog post might not all apply or work for you, since different Puppy Linux distros, and probably even different versions of the same Puppy distro, can differ quite substantially from each other.

And here's how to load SFS files.




Here's a list of required other software. Perhaps slightly different versions would also work, but these are exactly what I used.




The below instructions assume you already have PHP 5.6.13 and Java 1.8.0_51 installed.

Here's how I made Saxon/C into a PHP extension.


  1. Unzip the file "libsaxon-HEC-setup-v1.0.2.zip" to whatever folder you want.

  2. Open a terminal window in that folder, and type this command:

    ./libsaxon-HEC-setup-v1.0.2


    That program will then give you a prompt that looks something like this:

    Enter destination path[/root/00-ApWorkspace/Saxonica/Saxon-HEC1.0.2]:

    You can press Enter on your keyboard to accept the default path, or type in a different path. If all goes well, a list of files that are being installed will be printed, and in the end, it will say:

    Saxon-HEC 1.0.2 has been successfully installed on your computer.


  3. Next, open the Saxonica folder, then the Saxon-HEC1.0.2 folder.

    There's a "readme.md" file you can read if you want.

    There's also a "php-library-module" folder, containing "saxon.so", an already-built PHP extension. It might work if you happen to be using the version of PHP the Saxon/C home page says that extension was built for - PHP 5.5.9. But, I tried it with PHP 5.6.13, and it didn't work for me.


  4. Open the Saxon.C.API folder, then open a terminal window in that folder, and type these commands. (The "phpize" command will only work if you have PHP installed):

    phpize

    ./configure --enable-saxon


  5. Here's where I had to diverge from the instructions in the "readme.md" file.

    Originally, running "make" didn't succeed for me because I had Java installed in an unconventional place, and "make" needed two Java-related files which "make" couldn't find: "jni.h" and "jni_md.h" (and probably others as well).

    "make" also needed a file from somewhere in the Saxon-HEC1.0.2 folder.


    So, to let "make" know where to find those files, I had to edit the "Makefile" in a text editor.

    In "Makefile", find line 31, which looks like this:

    CPPFLAGS = -DHAVE_CONFIG_H

    Change that to something like this (but customize it with the paths where you have Java, and where you put the Saxon-HEC1.0.2 folder):

    CPPFLAGS = -DHAVE_CONFIG_H -I/root/apbin/Java/v8u51/include/ -I/root/apbin/Java/v8u51/include/linux/ -I/root/00-ApWorkspace/Saxonica/Saxon-HEC1.0.2/


  6. Added Dec. 20, 2016, 12:50 AM EST. (Sorry, I forgot to mention this step before!) Next, to make it so the "make" command will succeed, you must put a symlink inside the /usr/lib/ folder, pointing to the "libsaxonhec.so" file in the "Saxonica/Saxon-HEC1.0.2/" folder.

    Otherwise, without that symlink, "make" will eventually fail with this error:


  7. Next, in a terminal window opened at the Saxon.C.API folder, type this command:

    make

    After "make" succeeds, the compiled "saxon.so" PHP extension will be in the "modules" folder.


  8. Open the "modules" folder. Then, go to wherever your folder of PHP extensions is, and copy "saxon.so" into that folder.

    For me, that folder was:

    /usr/local/lib/php/extensions


  9. Then, to enable the saxon.so extension in PHP, edit your "php.ini" file. You might have multiple php.ini files - I have one at /etc/php.ini and one at /usr/local/lib/php.ini.

    In the extensions section of your "php.ini" file, put a line like this:

    extension=saxon.so


  10. I also had to create a symlink at /usr/lib/rt/ pointing to the "rt" folder in the "Saxon-HEC1.0.2" folder, since otherwise, errors happened, sometimes with PHP, and sometimes with the Hiawatha web server (which sometimes gave me an Internal Server Error).

    In my system, the "rt" folder was in this folder, but it will probably be elsewhere on your system:

    /root/00-ApWorkspace/Saxonica/Saxon-HEC1.0.2


  11. To make sure the extension was installed successfully, you can have PHP run the phpinfo(); command to print a list of installed PHP extensions and other info.

    You can even run the phpinfo(); command from a terminal window with this command line:

    php -r "phpinfo();"


There are example PHP scripts in the folder Saxon-HEC1.0.2/samples/php. "xpathExamples.php", "xqueryExamples.php", and "xsltExamples.php" worked fine for me, but "validatorExamples.php" had an error which I don't yet know how to fix.

Also, I think I ran into Bug #2677 - Saxon/C PHP API getErrorMessage does not report useful error.

However, more detailed error messages are readable in my Hiawatha web server logs, which, on my system, are located at:

/usr/local/var/log/hiawatha/error.log


I made this little PHP script called display_last_5_lines_of_hiawatha_error_log.php to make that log easier to read in my web browser:


Additions, March 12, 2017, 5:36 PM/6:14 PM EDT. While trying to use the Saxon/C PHP extension in Lighthouse 64 Puppy Linux 6.02 Beta 2, I had trouble making it work in the Hiawatha web server, even after doing all of the above.

Even with /usr/lib64/libsaxonhec.so (another other paths) symlinked to my system's location for libsaxonhec.so (/root/apbin/Saxon-HEC/Saxonica/Saxon-HEC1.0.2/libsaxonhec.so), I kept getting Internal Server Errors, and Hiawatha's log said, "Unable to load /usr/lib64/libsaxonhec." and "Error: : No such file or directory".

I think this might be related to Bug #2907 - php saxon.so is looking for libsaxonhec.so without so extension in both /usr/lib64 and /usr/lib and failing.


Fortunately, that bug page helped me figure out a workaround. In every PHP script which needs to run Saxon/C, I can put this line (which you'll probably need to customize with the path to where libsaxonhec.so is on your system):

Then, Saxon/C works fine for me.


Another workaround is to add this to Hiawatha's config file (which, on my system, is at /usr/local/etc/hiawatha/hiawatha.conf):

Then, I don't even need to add anything to my PHP scripts for them to just work.


Yet another workaround is to not even use a web server (which I usually prefer anyway, at least on any of my internet-connected computers). Then, you can either set the SAXONC_HOME environment variable before you run PHP, or, you can set it from inside your PHP script using the PHP line above.

I made a couple scripts to make it easier to view PHP script output in your web browser without having to use a web server:

https://github.com/Apollia/Without-web-server-run-PHP-script-and-view-output-in-web-browser

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to add XML and XSLT 1.0 capabilities to Perl in Lucid Puppy Linux 5.2.8 version 004
Saturday, July 9th, 2016
19:21:33 GMT


By default, I don't know if Lucid Puppy Linux 5.2.8 version 004's copy of Perl already includes modules for dealing with XML and XSLT. But, I don't think it had the ones I wanted to use, so I figured out how to install them.

And I avoided using the "cpan" automated installer for Perl modules because I was using a computer I keep disconnected from the internet.

And also because I dislike package managers or any other software which is excessively dependent on internet access. Given these poverty statistics, I think it's better not to just assume the internet is constantly available to everyone who needs it. The less everyone's computing is dependent on the internet, the better, in my opinion.




OK, back to the instructions.

There was only one tricky part. I'm dubious about whether I handled that correctly, but, I'll explain that below when we reach that step.


I believe the Perl module XML::LibXSLT only has XSLT 1.0 capabilities.

I still haven't done very much with XSLT 2.0 (nor even XSLT 1.0), or Saxon-CE, but I'm guessing Saxon-CE is probably one of the easiest ways to get started doing something with XSLT 2.0, since Saxon-CE is written in JavaScript and runs in a web browser.

Many web browsers already have XSLT 1.0 capabilities built in.




There seem to be some parts of the below Perl modules which are written in C, so, I believe to install them, it's necessary to use the DevX file of development tools for your Puppy Linux.

My page of Some Puppy Linux Basics explains more about DevX files, and if you need the DevX for Lucid Puppy 5.2.8, it's available at this link:

http://distro.ibiblio.org/puppylinux/puppy-5.2.8/

If you're using a different version of Puppy than Lucid Puppy 5.2.8, that DevX probably won't work, so you should instead download the DevX released for your Puppy.

Also, if you're not using Lucid Puppy 5.2.8, please bear in mind that the instructions in this blog post might not all apply or work for you, since different Puppy Linux distros, and probably even different versions of the same Puppy distro, can differ quite substantially from each other.

And here's how to load SFS files.




Next, get the tarballs of the following Perl modules. (The version numbers are just what I used - I don't know if these specific versions are actually required for all these things to work together.)

  1. XML::NamespaceSupport 1.11

  2. XML::SAX::Base 1.08

  3. XML::SAX 0.99

  4. XML::LibXML 2.0126

  5. XML::LibXSLT 1.93




It's necessary to install each of those modules in the order given above. Do the following 2 steps for the first 4 modules above:

  1. Decompress the tarball.

  2. Open a terminal window and type these commands:

    perl Makefile.PL

    make

    make test

    make install

Or "new2dir make install" (without quotes) if you'd like to make a pet file or SFS file.


With one Perl module, there might be some annoying warning about "6.55_02" not being numeric, but since that warning didn't stop the build, I ignored it.




Now, the tricky part. I don't know if my trick really solved the problem, and I don't even know whether or not it might have created other problems. But, at least it made it possible for me to successfully run "make" on the XML::LibXSLT module.

Decompress the XML::LibXSLT tarball.

Then, open the file "LibXSLT.xs" in a text editor, and add this line below the comment section at the top:

int xsltMaxVars = 9999999;

That line is necessary because without it, the build will be halted with these errors:


But with that line, the build should succeed. So, now you can run these commands:

perl Makefile.PL

make

make test

make install


Or "new2dir make install" (without quotes) if you'd like to make a pet file or SFS file.




Now, to see if the modules are working, you'll need three things - a Perl script, an XML file, and an XSLT file.

Here's a zip file containing all 3, which aren't by me, but were slightly modified by me. I changed hardly anything in the Perl script, and all I did with the XSLT stylesheet was add a comment with a link to where I found it.

And the VUE: Visual Understanding Environment concept map file was saved by me, but its source code was automatically generated by VUE. And I had to slightly edit it because of the comments at the top which Perl disliked.

Thanks to all the authors of this code!


Perl XSLT Test Files.zip (3 KB)

All 3 files are also displayed below.



A Perl script which is a slightly modified version of this code from StackOverflow:



An XSLT stylesheet from this post on StackOverflow:



A saved VUE: Visual Understanding Environment concept map file. I had to move the comments formerly at the top (which tell you not to remove them) into a CDATA section near the top, because Perl was complaining about them.


All three files should be in the same folder when you run this command:

perl test-xslt.pl

If that succeeds, the output will be in a newly-created HTML file named test-xslt-perl-script-output.html.

Hopefully soon I'll learn XSLT well enough to figure out how to extract the node text, which is usually the most interesting part of a VUE: Visual Understanding Environment concept map.


Click this link to display the blog comment thread hosted at the Eryss.Com Forum:

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Accidentally ruined Windows 10 on my Toughbook CF-C1
Monday, June 27th, 2016
01:40:37 GMT


My Toughbook CF-C1 with 8 GB of RAM came with a 223.6 GiB (240 GB) hard disk with Windows 10 already installed on it.

In the past, I used to be able to use the GParted disk manager software in Puppy Linux to resize Windows partitions without much trouble.

Upon rebooting, Windows XP used to notice the partition's size change, but all Windows XP did was complain a bit, then did a one-time disk check, then continued normally, and never bothered me again.

In contrast - earlier today, Windows 10 refused to even start, and told me I need a recovery disk or something.

Just another reason Windows 10 is inferior to Windows XP.


I didn't want Windows 10 badly enough to even bother to try to get Windows 10 to work again. (If it was Windows 7, I would have been a little more tempted.)

So, I solved the problem in an even better way - I simply got rid of Windows 10 completely by reformatting my entire hard disk as an ext2 filesystem volume.

So now, my Toughbook CF-C1 with 8 GB of RAM is exclusively a GNU/Linux computer! :-)

Even with all the Windows partitions deleted from the hard disk, I can still boot my CF-C1 using my bootable Flash drive with Lighthouse 64 Puppy Linux 6.02 Beta 2. :-)


I'm actually not very eager to use the internal hard disk for anything important, after all the bad experiences I've had with broken down computers with important not-yet-backed up data stuck on their internal hard disks.

But even I have to admit it's a bit annoying to have to have a Flash drive or any other sort of USB device constantly attached to a laptop.

So, for that reason, I've actually been considering using the internal hard disk a bit. Hopefully I'll be able to make reasonably frequent, easy backups to external disks using the command line tool rsync, or something.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to use a Sewell USB Sound Box with Lighthouse 64 Puppy Linux 6.02 Beta 2
Monday, June 20th, 2016
00:45:34 GMT


I finally figured out how to get my Sewell USB Sound Box to work in Lighthouse 64 Puppy Linux 6.02 Beta 2 with my Toughbook CF-C1.

I thought I might have to compile a driver, but luckily, that wasn't the case.

(Addition, June 28, 2016, 10:22 PM EDT. The below also works for Lucid Puppy Linux 5.2.8 version 004! The only big difference is, Step 4 - restarting X Windows - is required.)


Here's how to make it work. I assume Steps 3 and 6 might be slightly different if you have a different kind of computer.

I recommend, don't wear your headphones until after you're sure all the below steps worked properly and have enabled you to control the volume.


  1. Click on the Puppy Linux equivalent of the Windows "Start" menu.

  2. Go to the Setup menu and choose "Multiple Sound Card Wizard".


  3. In the window titled "Choose which sound card to make the default.", choose:

    card 1: Device [USB Sound Device], device 0: USB Audio [USB Audio]

    (Or whichever other choice says USB Sound Device.)

    It will then tell you to reboot your computer - but, fortunately, you actually don't have to reboot. At most, all you might have to do is restart X Windows.


  4. (Edit, June 28, 2016, 10:25 PM EDT. If you're using Lighthouse 64 Puppy Linux 6.02 Beta 2, Step 4 isn't necessary.

    But, if you're using Lucid Puppy Linux 5.2.8 version 004, Step 4 is necessary.)


    Before you restart X Windows, make sure you have anything you're working on saved, because restarting X Windows will instantly close all of your open programs without even asking you if you want to save.

    And here's another reminder to take off your headphones, so you can avoid the Puppy Linux startup noise possibly blasting your ears.


    Then, to restart X Windows in Lighthouse 64, go to the Puppy Linux equivalent of the Windows "Start" menu, click Shutdown, and choose "Restart X" from the window that appears.

    Or, in Lucid Puppy Linux 5.2.8 version 004, go to the Puppy Linux equivalent of the Windows "Start" menu, go to the Shutdown menu, and choose "Restart X server" from the submenu.


  5. These next steps are to make the volume controls work with the USB sound box.

    After X Windows has restarted, right-click on the volume taskbar icon and choose "Config Window" from the menu.


  6. In the "Retrovol - Configuration" window, go to the Hardware tab.

    Near the top, in the "Sound Card" section, there will be a text box which says "hw:0".

    Change "hw:0" to "hw:1" (without quotes).

    (Or, you might have to change it to something different, if in step 3, you had to choose something other than "card 1: Device [USB Sound Device], device 0: USB Audio [USB Audio]".)


  7. Still in the "Retrovol - Configuration" window, click on the "Tray" tab.

    Then, in the "Tray Slider" section, select whichever dropdown menu item says "Speaker Playback Volume".

    In Lighthouse 64 Puppy Linux 6.02 Beta 2, select "7:Speaker Playback Volume".

    In Lucid Puppy Linux 5.2.8 version 004, select "6:Speaker Playback Volume".

    Then click the "Apply" button.


Now, it should be possible to adjust the volume!


Addition, Nov. 27, 2016, 1:35 AM EST. Today I had trouble getting these instructions to work with the desktop computer running Lucid Puppy Linux 5.2.8 version 004 which I had tested these instructions on in the first place. I was afraid maybe my soundbox had gotten at least partly broken from falling on the floor, but, it still worked fine with Windows 7.

Happily (and surprisingly), the soundbox started working again with my Lucid Puppy desktop computer when I plugged the soundbox into a different port on my USB hub!

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Extended Desktop for Toughbook CF-C1 while running Lighthouse 64 Puppy Linux 6.02 Beta 2
Wednesday, June 15th, 2016
11:12:26 GMT


The Toughbook CF-C1 has a VGA output port which allows you to connect a monitor.

But by default, in Lighthouse 64 Puppy Linux 6.02 Beta 2, the monitor will only mirror what's on the laptop's screen.

Fortunately, I finally stumbled across a way to make each screen show different things! I found it on this Stack Overflow page:

StackOverflow.com - Extended desktop in Linux


The exact command I used on my own system was:

xrandr --output LVDS1 --right-of VGA1

It instantly worked!


However, I don't yet know how to make the touchscreen work right while doing this.

Also, when a 4:3 monitor is connected, the laptop's screen gets resized to match. I was able to put the laptop screen back to its original size with this command:

xrandr --output LVDS1 --mode 1280x800

But, after doing that, the touchscreen only works right if the monitor is mirroring the laptop's screen instead of displaying different stuff.

But with the laptop's screen restored to its original size, the mirroring 4:3 monitor can't fit everything on the screen anymore.


So, this all still needs perfecting. But, at least it's already useful, since it's really nice to have more than one screen. And also, probably most monitors look much better than the CF-C1's washed-out-looking widescreen.

The Redshift screen-tinting software helps with the laptop screen's appearance, but not as much as I hoped. My Windows 7 CF-C1 screen still looks much better, I think maybe because the Intel HD Graphics software in Windows 7 lets you adjust the screen saturation.

Maybe Redshift could be modified to make it capable of adjusting the screen saturation?

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to compile Guile-Gnome 2.16.4 in Lucid Puppy Linux 5.2.8
Wednesday, December 30th, 2015
14:39:36 GMT


It was another difficult process, but I finally managed to build Guile-Gnome for GNU Guile in Lucid Puppy Linux 5.2.8 version 004.

Now, I can actually make GNU Guile create GTK windows! So, perhaps GNU Guile will turn out to be a good substitute for PHP-GTK.

If I can get GNU Guile to work with MySQL and SQLite databases, and also have it output web pages (so I can keep Astroblahhh Desktop's web interface), perhaps a GNU Guile-based Astroblahhh Desktop might be feasible.

I wonder if GNU Guile can work with OrientDB?

However, I'm not sure if I should write the CMS (content management system, for lack of a better term) of my dreams in any very uncommonly used language or platform. PHP is available from most web hosts. Even figuring out how to make the Java-based OrientDB work with my websites seems like it might be difficult, though maybe less difficult than figuring out how to get some form of Lisp or Scheme like GNU Guile working on a web server.


But, back to the topic of how to build Guile-Gnome in Lucid Puppy Linux 5.2.8 version 004.

Once again, I had to use some trickery (or guile! Haha, I made a pun) to get past some hopefully mistaken errors. I'll explain more about that below.


  1. The first prerequisite is to build GNU Guile, if you haven't already. This earlier blog post of mine has instructions.


  2. You can download Guile-Gnome itself here:

    https://www.gnu.org/software/guile-gnome/download.html

    I used version 2.16.4.


  3. Guile-Gnome has various dependencies that you'll need to download.

    Here's most of what I needed:

    Those are the three easiest things to get. Downloading Guile-Cairo will be explained in step 3.


  4. Guile-Cairo can't so easily be downloaded because the needed version was never officially released - it seems to only be available by downloading it via Git (and not even GitHub).

    Fortunately, an at least partway functional copy of an old version of Git exists in the Lucid Puppy Linux DevX SFS file of development tools. The DevX, by the way, is what you need to use to compile software in Lucid Puppy Linux 5.2.8.

    My page of Some Puppy Linux Basics explains more about DevX files, and if you need the DevX for Lucid Puppy 5.2.8, it's available at this link:

    http://distro.ibiblio.org/puppylinux/puppy-5.2.8/

    (If you're using a different version of Puppy than Lucid Puppy 5.2.8, that DevX probably won't work, so you should instead download the DevX released for your Puppy.

    Also, if you're not using Lucid Puppy 5.2.8, please bear in mind that the instructions in this blog post might not all apply or work for you, since different Puppy Linux distros, and probably even different versions of the same Puppy distro, can differ quite substantially from each other.)

    And here's how to load SFS files.


  5. Once you have the DevX mounted, you should be able to run Git. Go to a folder that you want to download Guile-Cairo into, open a terminal window, and put in this command:

    git clone git://git.savannah.nongnu.org/guile-cairo.git

    If it worked, you'll see some text like this:

    # git clone git://git.savannah.nongnu.org/guile-cairo.git
    Initialized empty Git repository in /root/guile-cairo/.git/
    remote: Counting objects: 830, done.
    remote: Compressing objects: 100% (280/280), done.
    remote: Total 830 (delta 522), reused 830 (delta 522)
    Receiving objects: 100% (830/830), 594.72 KiB | 666 KiB/s, done.
    Resolving deltas: 100% (522/522), done.

    And there will now be a "guile-cairo" folder in the folder you opened the terminal window from.


  6. Now we can get started compiling things. First, an easy one. Unzip the G-Wrap source code tarball, open the G-Wrap folder, open a terminal window, and put in these commands:

    ./configure

    make

    make install

    (Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)


  7. Next, Pixman, which is also easy to compile. Unzip the Pixman source code tarball, open the Pixman folder, open a terminal window, and put in these commands:

    ./configure

    make

    make install

    (Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)


  8. Next, a more difficult one to compile - Cairo. Unzip the Cairo source code tarball, open the Cairo folder, open a terminal window, and put in these commands:

    export pixman_CFLAGS="-I/usr/local/include/pixman-1"

    export pixman_LIBS="-L/usr/local/lib/ -lpixman-1"

    ./configure --enable-gobject=yes

    make

    make install

    (Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)


  9. Next, Guile-Cairo. Mostly easy, once you have Cairo itself compiled correctly.

    If you want to make a .pet or .sfs file, rename the Guile-Cairo folder to something like "guile_cairo-1.10". (Though I'm not sure that's the actual version number. You can use any version number - this rename is just to make it so new2dir won't complain later on about not being in a folder with a version number.)

    Next, open the Guile-Cairo folder, open a terminal window, and put in these commands:

    ./configure --prefix=/usr/local

    make

    make install

    (Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)


  10. Now, it should be possible to compile Guile-Gnome itself. Unzip the Guile-Gnome source code tarball, open the Guile-Gnome folder, open a terminal window, and put in this command:

    ./configure --prefix=/usr/local/

    If all went well, somewhere in the messages printed by ./configure should be this text:

    All available wrappers will be built:
      atk cairo corba gconf glib gnome-vfs gtk libglade libgnome libgnomecanvas libgnomeui pango


  11. Don't type "make" yet. Here's where I had to do a maybe unwise trick, so Guile-Gnome won't complain that "Cairo was not compiled with support for GObject".

    Go to the folder /usr/local/include/cairo/ and open the file cairo-gobject.h in a text editor.

    Delete this line toward the top (line 42 in my cairo-gobject.h):

    #if CAIRO_HAS_GOBJECT_FUNCTIONS

    And delete these three lines near the bottom (starting at line 188 in my cairo-gobject.h):

    #else /* CAIRO_HAS_GOBJECT_FUNCTIONS */
    # error Cairo was not compiled with support for GObject
    #endif /* CAIRO_HAS_GOBJECT_FUNCTIONS */

    Then, save the cairo-gobject.h file.


    I believe that due to the way I compiled Cairo (described above), Cairo really does have GObject support.

    And also, I got an encouraging-looking response when I tried a command I found on this page:

    pkg-config --libs cairo-gobject

    The response was:

    -pthread -L/usr/local/lib -lcairo-gobject -lcairo -lgobject-2.0 -lgthread-2.0 -lrt -lglib-2.0


  12. Now, back in the Guile-Gnome folder's, type this in a terminal window:

    make

    Hopefully everything will go smoothly now that Guile-Gnome has no way not to acknowledge that Cairo really does have GObject support.


  13. Next, type either "make install" (without quotes) or "new2dir make install" if you want to make a .pet or .sfs file out of Guile-Gnome.


  14. For some reason, GNU Guile doesn't automatically know where the Guile-Gnome modules are, so you have to give GNU Guile this command:

    (use-modules (gnome-2))

    After doing that, it should be possible to run the example scripts from the Guile-Gtk Overview page, which will create a GTK window containing a button which says "Hello, World!"

I don't know yet how to make GNU Guile automatically find the Guile-Gnome modules.

But, I assume that similar to GNU Emacs, there's probably some sort of config file somewhere which you can put commands in like "(use-modules (gnome-2))" so those commands will be run automatically every time you start GNU Guile.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to compile GNU Guile 2.0.11 in Lucid Puppy Linux 5.2.8
Tuesday, December 29th, 2015
13:07:46 GMT


I apparently managed to compile GNU Guile in Lucid Puppy Linux 5.2.8 version 004 - though doing so was even more difficult than the last few things I compiled.

And I'm not sure the way I did it was a good idea, since I had to do something rather questionable to trick libunistring into acknowledging that my copy of iconv works. I hope this didn't break anything, but I have no idea. So, please be careful.


I got interested in GNU Guile because it uses the programming language Scheme, which is related to Lisp, and GNU Guile has a component called Guile-Gnome (which I haven't tried to compile yet) which apparently lets you deal with GTK stuff.

So, I guess basically I'm fishing around for Lisp-y alternatives to PHP-GTK, just in case I turn out to like Lisp or maybe even Scheme more than PHP.

But maybe in the end I'll just use lisphp with PHP and PHP-GTK. Or maybe I won't even like Lisp enough to do that? I just haven't done enough with any Lisp or Scheme yet to be able to decide.

Also, another factor to take into consideration is, how cross-platform are these Lisp and Scheme-based things? Will they make it as easy as PHP-GTK to make Astroblahhh Desktop capable of working in not only Linux, but also Windows and Macs?


How to build GNU Guile in Lucid Puppy Linux 5.2.8 version 004:

  1. There were at least two dependencies of GNU Guile I had to download, compile and install - libunistring (I used version 0.9.5), and libgc (I used version 7.2).

    And if I hadn't already had libffi 3.2.1 as a result of compiling newLISP the other day, I probably would have had to install libffi too.

    So, the first step is to download the dependencies you need:

    https://www.gnu.org/software/libunistring/#downloading

    http://www.hboehm.info/gc/#where

    https://sourceware.org/libffi/


  2. Lucid Puppy 5.2.8 version 004 apparently already has iconv - so, I'm not sure if this step 2 is necessary. But, I upgraded to libiconv 1.14 in the hope that that would get rid of libunistring's refusal to acknowledge that I have a working copy of iconv.

    But, even upgrading libiconv still didn't fix that problem, so I had to resort to something which I'm hoping was not a bad, dangerous thing to do - I edited libunistring's configure script to make it just assume iconv is working. (I'll explain exactly what I did in a later step.)

    I don't know whether or not GNU Guile can use the iconv that comes with Lucid Puppy 5.2.8, so, maybe it's best to upgrade to libiconv 1.14, as I did.

    So, step 2 is to download libiconv, if you want to update iconv.

    https://www.gnu.org/software/libiconv/#downloading


  3. And, download the source code of GNU Guile itself. (I used version 2.0.11.)

    http://www.gnu.org/software/guile/download/

    ftp://ftp.gnu.org/gnu/guile/guile-2.0.11.tar.gz


  4. Unzip the libffi source code tarball, open the libffi source code folder, and open a terminal window. Then, do these 3 commands:

    ./configure

    make

    make install

    (Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)


  5. Next, unzip the libgc source code tarball, open the source code folder, open a terminal, and do these commands:

    ./configure

    make

    make install

    (Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)


  6. If you decided not to upgrade libiconv, you can skip this step.

    If you decided to upgrade libiconv, unzip the libiconv source code tarball, open the libiconv code folder, open a terminal window, and do these commands:

    ./configure --prefix=/usr/local

    make

    make install

    (Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)

    Then, to stop your system from trying to use the old iconv instead of the new iconv - go to the folder /usr/bin, and rename the file iconv to something else.


  7. Next, unzip the libunistring source code tarball, and open the libunistring source code folder.


  8. This is the trickiest and probably the most potentially dangerous and questionable step. I'm not sure this is a good idea at all, but, I haven't yet found any other way to make the build of GNU Guile succeed, because GNU Guile's ./configure complains if libunistring is compiled without libiconv support.

    In the libunistring source code folder, open the file "configure" with a text editor. Go to line 17639, which says:

    am_cv_func_iconv_works=no

    Change it to:

    am_cv_func_iconv_works=yes


  9. Next, open a terminal at the libunistring source code folder. Do this command:

    ./configure --prefix=/usr/local

    If it worked properly, it should say the following starting around line 114 of the stuff printed by ./configure:

    checking for iconv... yes
    checking for working iconv... yes
    checking how to link with libiconv... /usr/local/lib/libiconv.so -Wl,-rpath -Wl,/usr/local/lib
    checking for iconv declaration... 
             extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
    checking for iconv.h... yes

    If it does say that, then, do these commands:

    make

    make install

    (Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)


  10. Now that GNU Guile's dependencies have been installed, we can proceed with building GNU Guile. Unzip GNU Guile's source code tarball, open the GNU Guile source code folder, and open a terminal window. Do these commands:

    LD_LIBRARY_PATH=/usr/local/lib

    ./configure

    (The first line somehow stops "make" from complaining about not being able to find libunistring.)


  11. Next, do this command:

    make

    And be prepared to wait a long time for it to build. For me, it took more than a half an hour, even on the 3.4 GHz dual core desktop computer I was building it on.

    At first it looks like it's going pretty fast and doing lots of stuff, but it seemed to get stuck for a very long time doing something with these files:

    wrote `ice-9/eval.go'
      GUILEC ice-9/psyntax-pp.go
    wrote `ice-9/psyntax-pp.go'
      GUILEC ice-9/boot-9.go
    wrote `ice-9/boot-9.go'
      GUILEC ice-9/vlist.go
    wrote `ice-9/vlist.go'
      GUILEC srfi/srfi-1.go
    wrote `srfi/srfi-1.go'
      GUILEC language/tree-il/peval.go
    wrote `language/tree-il/peval.go'
      GUILEC language/tree-il/cse.go

    And so on. I was a bit worried something went wrong and it was never going to finish, but, all I had to do was wait. And wait, and wait.


  12. Once "make" is finished, you can do this command:

    make install

    (Or, if you want to build an .sfs or .pet file, put "new2dir make install" (without quotes) instead of "make install".)


Now, it should be possible to run GNU Guile simply by typing "guile" in a terminal.

I don't know if there's a GUI (graphical user interface) somewhere, but, if I find there is, I'll update this post.


I don't yet know how to make GNU Guile do anything particularly eye-catching, but, you can make it do some addition by typing something like this:

(+ 2 2)

To which GNU Guile will respond:

$1 = 4

And apparently that creates a variable called $1, containing "4" (the result of adding 2+2).


And you can use the automatically-created $1 variable in other commands like this:

(+ $1 1)

To which GNU Guile will respond:

$2 = 5

($1 equals 4, and 4 plus 1 equals 5.)

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Was able to compile PHP 7.0.1 in Lucid Puppy Linux 5.2.8, but couldn't compile PHP-GTK 2.0.1 to work with PHP 7.0.1
Tuesday, December 29th, 2015
06:50:38 GMT


I finally heard the news that PHP 7.0.1 has been released. So, I decided to see if I could get PHP-GTK 2.0.1 working with it. Alas, no.

I had hardly any trouble compiling PHP 7.0.1 itself. The only problem I had was this old problem, oddly deemed "Not a bug", from 2010:

https://bugs.php.net/bug.php?id=51774

./configure got stopped with these error messages at the bottom:

The problem was, I had put my PHP source code folder at a path which had a space in it:

/apmnt/truecrypt62/Hobbiton_Meadow/PHP 7/php-7.0.1/

I think I encountered this error while compiling PHP in the past, but I forgot yet again that lots of things in Linux have ridiculous incompatibilities with paths containing spaces.

The fix was simply to remove the space, changing the path to this:

/apmnt/truecrypt62/Hobbiton_Meadow/PHP7/php-7.0.1/

"./configure" worked fine after that, and so did "make" and "make install".


Here are some details on what stopped me from compiling PHP-GTK 2.0.1 to work with PHP 7.0.1.

If I recall correctly, PHP-GTK 2.0.1 needs the Cairo extension from PECL, and I wasn't able to compile Cairo 0.3.2, despite the fact that it worked with PHP 5.6.13.

This is as far as I got trying to compile Cairo 0.3.2:

And this is as far as I got trying to compile PHP-GTK 2.0.1:


So, if I ever manage to finish the PHP-GTK version of Astroblahhh Desktop, it might not be capable, at least for a while, of running on anything much newer than PHP 5.6.13. (Though it might also work with slightly later versions of PHP 5.6 which I haven't yet tried.)

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to compile newLISP in Lucid Puppy Linux 5.2.8
Sunday, December 27th, 2015
14:58:21 GMT


Compiling newLISP 10.6.2 from scratch in Lucid Puppy Linux 5.2.8 wasn't as tough as compiling GNU Common Lisp 2.6.12, but it was still a bit tricky.


  1. You can download newLISP's source code from here:

    http://www.newlisp.org/index.cgi?Downloads


  2. Then, download libffi from here (I used version 3.2.1):

    https://sourceware.org/libffi/

    I don't know if most typical Linuxes usually already have that or not, but, Lucid Puppy 5.2.8 version 004 doesn't, and newLISP needs it.


  3. Unzip the libffi source code tarball, open the libffi source code folder, and open a terminal window. Then, do these 3 commands:

    ./configure
    make
    make install

    (Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.


  4. Next, unzip newLISP's source code, open the newLISP source code folder, open a terminal window, and type:

    ./configure


  5. Don't type "make" yet. For some reason, ./configure wrongly assumes libffi is at a location it's not at, so you have to open the file "makefile_build" in a text editor and fix the mistaken path in it.

    This is the line you need to change:

    CFLAGS = -fPIC -m32 -Wall -Wno-strict-aliasing -Wno-long-long -c -O2 -g -DREADLINE -DSUPPORT_UTF8 -DLINUX -DFFI -I/usr/local/lib/libffi-3.0.13/include

    And here's what you change it to:

    CFLAGS = -fPIC -m32 -Wall -Wno-strict-aliasing -Wno-long-long -c -O2 -g -DREADLINE -DSUPPORT_UTF8 -DLINUX -DFFI -I/usr/local/lib/libffi-3.2.1/include/


  6. Now, you can type "make" (without quotes), and the build should succeed now.


  7. Next, you can type "make install" or "new2dir make install" (without quotes) to install newLISP.


  8. And the last step is, you have to create a symlink so newLISP can find a shared library which newLISP mistakenly looks for in the wrong place.

    This command will create the symlink:

    ln -s /usr/local/lib/libffi.so.6 /usr/lib/libffi.so.6


Now, it should be possible to run newLISP just by typing "newlisp" (without quotes).

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to compile GNU Common Lisp 2.6.12 in Lucid Puppy Linux 5.2.8
Sunday, December 27th, 2015
14:39:57 GMT


I had a tough time compiling GNU Common Lisp 2.6.12 from scratch in Lucid Puppy Linux 5.2.8 version 004.

But, I finally managed to do it. Here's how:


  1. GNU Common Lisp can do things with Tcl/Tk, but only if you have Tcl/Tk installed.

    As far as I know, Lucid Puppy 5.2.8 doesn't include Tcl/Tk by default. So, if you want Tcl/Tk, you can download their source code here:

    https://www.tcl.tk/software/tcltk/download.html

    I downloaded version 8.6.4 of both Tcl and Tk.


  2. Both Tcl and Tk were nice and easy to compile. I don't know if you have to compile and install them in a particular order, but I think I compiled and installed Tcl first.

    All I had to do was unzip each source code tarball, open the source code folder, open a terminal window, and put in these three commands:

    ./configure
    make
    make install

    (Though I actually used the command "new2dir make install" (without quotes) because I wanted to make .pet and .sfs files.)


  3. GNU Common Lisp itself was far more troublesome to compile. You can download its source code here:

    http://gnu.mirror.iweb.com/gcl/gcl-2.6.12.tar.gz


  4. Unzip the source code tarball. And if you want to make a .pet or .sfs file of make .pet and .sfs files, rename the gcl folder to "gcl-2.6.12" (or whichever version you're trying to compile).


  5. Next, open your gcl source code folder, then open the "h" folder. Then, open the "make-init.h" file in a text editor.

    Above the line which says "#include <signal.h>" (without quotes), add this line:

    #include <sys/ucontext.h>

    (Huge thanks to the author of this post for the solution, because without that post I would have had absolutely no clue at all what to do.)

    The above fix makes it so the compilation won't be stopped by these errors:


  6. Go back to the gcl source code folder, open a terminal, and type these three lines:

    ./configure --enable-tkconfig=/usr/local/lib/ --enable-tclconfig=/usr/local/lib/

    LD_LIBRARY_PATH=/usr/local/lib

    make


  7. After the build is finished - if you want to make a .pet and/or .sfs file, type this:

    new2dir make install

    Or, if you'd rather just install it without building a .pet or .sfs file, type this:

    make install


  8. Just one last nuisance to deal with. The file /bin/gcl has to be moved or renamed, because otherwise, your system might mistakenly try to run that instead of the correct gcl file at: /usr/local/bin/gcl

After all those steps, it should be possible to run GNU Common Lisp simply by typing "gcl" (without quotes).


If you have Tcl/Tk, here's how you can try them out with GNU Common Lisp.

Go to the gcl source code folder, open a terminal prompt, and type:

gcl

Then, at the GCL prompt, put in these commands:

(si::tkconnect)

(load "gcl-tk/demos/widget.lisp")

That last command will fail if your current working directory isn't the gcl source code folder.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Modified version of new2dir for Puppy Linux; and thoughts on Linux package management
Sunday, March 22nd, 2015
18:19:45 GMT


new2dir is a wonderfully useful script included with many (all?) Puppy Linuxes, which makes it much easier to create .pet and .sfs files.

The original version of the new2dir script is by Barry Kauler, the creator of Puppy Linux.

The original new2dir and my modified version of new2dir are under the GNU Lesser General Public License, so anyone is allowed to modify them.


Unfortunately, the original new2dir makes my hard disk alarmingly busy, even if the software I'm building is all inside the RAM disk.

So, I made a modified version to solve that problem, at least for myself and anyone who runs Puppy the same way I do - entirely in a RAM disk.

Here's the source code. It's a Bash script:

new2dir with modifications by Apollia


For more information, see this Puppy Linux Discussion Forum thread:

new2dir modified version, imperfect & not thoroughly tested


That, by the way, is the first thing I ever posted to the Puppy Linux Discussion Forum.

I could (and perhaps should) have posted about other Puppy Linux-related stuff I did in the past - but, I had always either been too shy, too busy, too stressed out, or, in some cases, I didn't think my stuff was polished or useful enough.


Anyway, I'm tempted to also post about my Puppy Linux Setup Kit. But, I think I'm going to put that off until I release an update with setup scripts for Lighthouse 64 Puppy Linux 6.02 Beta 2.

My Puppy Linux Setup Kit update will also probably contain stuff related to the next release of Astroblahhh GLMP-GTK and Astroblahhh PH-GTK. I've been working on that lately, because until I finish those, I can't use any of my PHP-GTK software, nor the Eryss astrology software, in LH64.


Actually, I think for the next releases of Astroblahhh GLMP-GTK and Astroblahhh PH-GTK, I'm actually not going to make them into large, combined packages of stuff.

Originally, I made them that way for convenience (and laziness) - just one all-in-one package to download and install. (Astroblahhh GLMP-GTK if you wanted web server+database server-related stuff, and Astroblahhh PH-GTK if you didn't.) But, now, a better way is possible.

My Puppy Linux Setup Kit has some nice, convenient downloader scripts, so, it would probably be better to build a lot of different, separate packages - one for MariaDB, one for PostgreSQL, one for PHP, one for PHP-GTK, etc., and one (or more) for the example scripts, documentation, etc. I bundled with GLMP-GTK and PH-GTK - and then make a bunch of Puppy Setup Kit scripts which will download and install everything in the proper order.


Another, probably even better idea I had was - using the foundation laid by my Puppy Linux Setup Kit, it's now conceivable that I could create some kind of package-building kit, so people could more easily download source code, compile it themselves, and make it into their own .pet and .sfs files.

The package-building kit would provide clear, step-by-step guidance, along with a bit of helpful automation which would do boring things like downloading source code, extracting tarballs, and launching new2dir, dir2pet and mksquashfs.

That would pave the way for people to be able to far more easily build their own possibly customized GLMP-GTK or PH-GTK for whatever Puppy Linux they want, without having to do things as tediously slowly and manually, and without having to wait for me or someone else to do it for them.


Also, it has long bothered me about Linux in general that Linux users are often encouraged to be dependent on package repositories and/or downloading precompiled packages of software for their Linux distro, rather than being more encouraged to download source code and build things themselves.

Even my own Astroblahhh GLMP-GTK and Astroblahhh PH-GTK packages kind of encourage that problem - and so does my Puppy Linux Setup Kit, since it currently mostly downloads .pet and .sfs packages rather than source code - and I'd like to stop encouraging it.

Fortunately, perhaps my not-yet-created package-building kit might be a solution to that problem. It wouldn't be quite as fast and convenient as just downloading a precompiled package, but it would be more educational, give the user the opportunity to customize things themselves more, should be a bit faster than downloading, extracting, and packaging everything manually, and could provide more hand-holding than a source code tarball's README or INSTALL file might.


Having the source code is always better than having precompiled binaries with no source code, for various reasons already explained in this thing I wrote that I so frequently link to: What is free, libre, open source software?

But, until drastically improving my Puppy Linux Setup Kit, I wasn't even able to imagine a convenient, easy way to provide Astroblahhh GLMP-GTK and Astroblahhh PH-GTK without providing precompiled binaries. It seemed so unthinkably difficult originally that I just gave in and provided the precompiled binaries despite my qualms.

Anyway, it will definitely take some work for me to create some package-building scripts, but, thanks to all the work I've already done, going that extra mile doesn't seem like such an overwhelming, intimidating, practically impossible chore anymore.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Apollia's Puppy Linux Setup Kit v1.1
Wednesday, February 11th, 2015
00:09:02 GMT


Software Release

I updated my Puppy Linux Setup Kit, mostly because in version 1.0, there was an incredibly stupid and annoying glitch where the launch scripts would act as if you clicked "Yes" if you clicked the "No" button to stop things from installing.

There were also other small updates and improvements too, which I didn't document because it was too much trouble.

Apollia's Puppy Linux Setup Kit v1.1


For now, I've abandoned the idea of making the setup kit set up Lighthouse 64 Puppy Linux 6.02 Beta 2.

I couldn't get my favorite window manager (IceWM) to work, and running multiple VirtualBoxes didn't seem to work much (or maybe at all) better than running them with Lucid Puppy 5.2.8 version 004 - my usual 4 GB RAM computer still got slowed down. So, since the benefits weren't as dramatic as I hoped they would be, it seemed best to stay with Lucid.

I'm pretty satisfied with the setup kit overall, so this might be the last update of it for quite a while.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   Up ↑
Apollia's Puppy Linux Setup Kit v1.0
Tuesday, September 30th, 2014
17:23:11 GMT


Software Release

I'm very happy to announce that I finally have finished a releasable edition of my Puppy Linux Setup Kit.

Here it is:

Apollia's Puppy Linux Setup Kit v1.0

See its home page and readme for more details about what it is and what it does.

Below, I'm not going to rehash that - I'm just going to jot down some extraneous, digressive notes.


It took a lot longer for me to finish the Puppy Setup Kit I thought it would. I got started on it last May or maybe even April. I didn't work on it non-stop since then, but, darn, I expected it to hopefully only take less than a month. But it took much longer, especially with (as usual) other crap in my life (mostly related to my and my family's continual financial problems) getting in the way.

(As always, donations, microdonations, and purchases of goods and services are welcome.)


Anyway, I think I worked on the setup kit most in May, August, and September, transforming it from the mess you can see here to something much more elegant and polished, if I do say so myself. It is my best work in Perl ever, so far, and even just a couple years ago, I would have been incapable of creating it.

I learned a lot from the book Code Complete, 2nd edition**. which I read around Oct./Nov. 2012. I also learned a lot from my still-incomplete (but remarkably successful) attempts in 2013 to convert Astroblahhh Desktop into a PHP-GTK app, while at the same time keeping it fully capable of running on a web server.

Why did I bother with the project of converting Astroblahhh Desktop? Partly just for fun, and partly because I do get a bit tired of being dependent on the non-libre Windows XP, even if I'm only using it inside a VirtualBox*.

And I also wanted to get away from having to depend on a MySQL or MariaDB server, too, so I also added already fully-functional SQLite conversion capabilities. The newest unreleased version of Astroblahhh Desktop can use both MySQL/MariaDB and SQLite databases, and seamlessly transfer data between each type of database. (At least, it seems pretty seamless so far.)

But I digress from the topic of the Puppy Setup Kit.


Apollia's Puppy Setup Kit is the thing I wrote about in 2013 in the Apollia's Puppy Setup and History With Puppy section of the page Some Puppy Linux Basics.

Back then, it was terribly messy and primitive - partly because I simply didn't have the time to learn how to do things right and polish it up nicely, and largely because I didn't even yet know how to make Perl modules from scratch.

So, in each original setup kit script, there was a lot of needlessly repeated code. I also didn't even yet know that it's a good idea to use these statements near the top of each Perl script:

use strict;
use warnings;

If you're not used to using those statements, they'll probably cause you a lot of annoying warnings at first, but, they'll help you catch a lot of little problems you'd otherwise miss, and help make you more careful and scrupulous in general.


So, happily, now I'm a lot more comfortable with Perl than I ever was in the past. It's still not my favorite language - that's still PHP - but I think now Perl might be my second-favorite language.

And I'm so glad I've finally gotten something so useful finished and released.


I'd like to expand the Puppy Setup Kit to make it capable of nicely customizing Lighthouse 64 Puppy Linux 6.02 Beta 2. I quite like LH64 because it seems to run faster than Lucid Puppy Linux 5.2.8 version 004.

My main obstacle so far with that is that I haven't been able to figure out how to get my favorite window manager, IceWM*, working in LH64. If anyone has some clues on how to do that, I'd love to read about it.




Anyway, at least with this long-overdue project finally finished and released, I now feel far more free to move on to something completely different, if I want. And I might, since I'm likely to take my time with the LH64 part of the Puppy Setup Kit.

Probably my top focus should be trying to figure out how to really fix my financial situation for good.

I guess maybe I might relatively soon start up two more of my websites - one of which will be focused on free (as in freedom), libre, open source stuff, and the other on stuff which is free, but only free as in price.

On the latter, I might point out various examples of the many hidden costs of supposedly "free" (but only as in price) things. And also draw attention to the superior alternatives - stuff which is truly free, as in freedom.




I've owned Apollia.com since Oct. 2013, and I'm thinking I might like to make that into some sort of nice portfolio website, something more polished and more impressive at first glance than Astroblahhh.Com. I've been getting ncreasingly annoyed by Astroblahhh.Com being an informal, messy, too-seldom-updated assortment of stuff of varying levels of quality, and I'm itching to reorganize it somehow, perhaps by installing a CMS.

So far, the CMS I'm most likely to install here is CouchCMS. And maybe someday I'll expand my WordsPlatz blog software, and merge it with features of Astroblahhh Desktop, maybe throw in some wiki-like features, and whatever else seems like a good idea, and hopefully wind up with my ideal, dream CMS.

Or probably I should call it a WRS - website revision system - as GNU.org sensibly recommends calling CMSes, given how absurdly ambiguous the term "content management system" is.

Quoted from this page on GNU.org:

The term "content management" takes the prize for vacuity. "Content" means "some sort of information," and "management" in this context means "doing something with it." So a "content management system" is a system for doing something to some sort of information. Nearly all programs fit that description.

:-)


Apollia.com will probably not be anywhere near as formal as the average curriculum vitae/resumé site, and I hope I will find some way to keep it from being static and boring.

My main goal with it will probably be to try to impress potential employers, probably by pointing out my best work, and maybe I'll put up some glitzier, fancier special effects than I normally like to use on my websites - once I learn how.

Probably my $9.00 a month subscription to Learnable.com will help me learn how to deal better with the cosmetic side of web design which I've typically largely neglected. And it already has helped me gain a deeper understanding of some technical things, and I was a bit surprised to find I quite liked their project management ebook.




Hmm, what else can I mention in this post? Oh, yes. One of the best things I discovered lately was the Mercurial* distributed version control software. It was of great help to me while building the Puppy Setup Kit.

The website hginit.com is a great intro to Mercurial.

I wish I had looked into version control software years ago. I thought version control software was mainly intended to make it easier for multiple developers to collaborate on one project, so I didn't realize it would be of so much use to me as a solo developer who has never yet directly contributed code to anyone else's project.

Sometimes I like to work on the same project on different computers, and in the past I had run into the problem of not having a really good way to merge the changes I made to the same project in each different location. Mercurial solves that (among other nuisances).

So does Git too, I guess, but I find Git quite confusing in comparison. And also, it seems like the copy of Git installed in Lucid Puppy 5.2.8 version 004's DevX SFS file (containing development tools) is partly broken - I couldn't get it to display log entries.




I'd still like to release the original version of my Eryss astrology software - the AutoHotkey* version I threw together in Oct. 2011 and have scarcely touched since Nov. 2011. Perhaps I should quickly just do that, even though it's nowhere near as polished as I'd like, and I'm now aware it has some errors with the code for calculating midpoints, which I really don't feel like struggling to fix.

If I manage to release it before Oct. 5th, then, I will just barely avoid having not released it for 3 entire years after I first started building it (Oct. 5th, 2011).

I guess I can just call it an alpha version. It's very doubtful that I'll ever complete it, because I am still plagued with financial problems, and on top of that, I find it rather hard nowadays to get motivated to work very hard on software which is native to non-libre platforms such as Windows or MacOS, because free, libre, open source software is inherently superior to closed source software in so many important ways.


Again, donations, microdonations, and purchases of goods and services are welcome.


Click this link to display the blog comment thread hosted at the Eryss.Com Forum:

   ▲ Top  ▼ Bottom  △ TOC   Up ↑


    Hide/Show:





Note by Apollia on Nov. 8, 2023: Please join my Patreon if you'd like to support me and my work!

My main personal website is now Apollia.org. I'm still not sure what to do with Astroblahhh.Com, so it's mostly staying as-is for now.