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:
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:
I downloaded version 8.6.4 of both Tcl and Tk.
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:
(Though I actually used the command "new2dir make install" (without quotes) because I wanted to make .pet and .sfs files.)
Above the line which says
(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:
LD_LIBRARY_PATH=/usr/local/lib
make
Or, if you'd rather just install it without building a .pet or .sfs file, type this:
After all those steps, it should be possible to run GNU Common Lisp simply by typing "
Go to the gcl source code folder, open a terminal prompt, and type:
Then, at the GCL prompt, put in these commands:
(load "gcl-tk/demos/widget.lisp")
That last command will fail if your current working directory isn't the gcl source code folder.
./configure
make
make install
"#include <signal.h>"
(without quotes), add this line:
#include <sys/ucontext.h>
./configure --enable-tkconfig=/usr/local/lib/ --enable-tclconfig=/usr/local/lib/
new2dir make install
make install
/usr/local/bin/gcl
gcl
" (without quotes).
If you have Tcl/Tk, here's how you can try them out with GNU Common Lisp. gcl
(si::tkconnect)
▲ 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.
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.
(Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.
This is the line you need to change:
And here's what you change it to:
This command will create the symlink:
./configure
make
make install
./configure
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
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/
make
" (without quotes), and the build should succeed now.
make install
" or "new2dir make install
" (without quotes) to install newLISP.
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 ↑
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:
./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:
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:
"./configure" worked fine after that, and so did "make" and "make install".
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:
/apmnt/truecrypt62/Hobbiton_Meadow/PHP 7/php-7.0.1/
/apmnt/truecrypt62/Hobbiton_Meadow/PHP7/php-7.0.1/
Here are some details on what stopped me from compiling PHP-GTK 2.0.1 to work with PHP 7.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 ↑
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.
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?
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:
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.
make
make install
(Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)
make
make install
(Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)
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:
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.
In the libunistring source code folder, open the file "configure" with a text editor. Go to line 17639, which says:
Change it to:
If it worked properly, it should say the following starting around line 114 of the stuff printed by ./configure:
If it does say that, then, do these commands:
make install
(Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)
./configure
(The first line somehow stops "make" from complaining about not being able to find libunistring.)
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:
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.
(Or, if you want to build an .sfs or .pet file, put "new2dir make install" (without quotes) instead of "make install".)
I don't know if there's a GUI (graphical user interface) somewhere, but, if I find there is, I'll update this post.
To which GNU Guile will respond:
And apparently that creates a variable called $1, containing "4" (the result of adding 2+2).
To which GNU Guile will respond:
($1 equals 4, and 4 plus 1 equals 5.)
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.
How to build GNU Guile in Lucid Puppy Linux 5.2.8 version 004:
./configure
./configure
./configure --prefix=/usr/local
am_cv_func_iconv_works=no
am_cv_func_iconv_works=yes
./configure --prefix=/usr/local
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
make
LD_LIBRARY_PATH=/usr/local/lib
make
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
make install
Now, it should be possible to run GNU Guile simply by typing "guile" in a terminal.
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)
$1 = 4
And you can use the automatically-created $1 variable in other commands like this:
(+ $1 1)
$2 = 5
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.
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.
I used version 2.16.4.
Here's most of what I needed:
Those are the three easiest things to get. Downloading Guile-Cairo will be explained in step 3.
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:
(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.
If it worked, you'll see some text like this:
And there will now be a "guile-cairo" folder in the folder you opened the terminal window from.
make
make install
(Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)
make
make install
(Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)
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.)
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:
make
make install
(Or "new2dir make install" (without quotes) if you'd like to make a .pet or .sfs file.)
If all went well, somewhere in the messages printed by ./configure should be this text:
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):
And delete these three lines near the bottom (starting at line 188 in my cairo-gobject.h):
Then, save the cairo-gobject.h file.
And also, I got an encouraging-looking response when I tried a command I found on this page:
The response was:
Hopefully everything will go smoothly now that Guile-Gnome has no way not to acknowledge that Cairo really does have GObject support.
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.
But, back to the topic of how to build Guile-Gnome in Lucid Puppy Linux 5.2.8 version 004.
git clone git://git.savannah.nongnu.org/guile-cairo.git
# 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.
./configure
./configure
export pixman_CFLAGS="-I/usr/local/include/pixman-1"
./configure --prefix=/usr/local
./configure --prefix=/usr/local/
All available wrappers will be built:
atk cairo corba gconf glib gnome-vfs gtk libglade libgnome libgnomecanvas libgnomeui pango
#if CAIRO_HAS_GOBJECT_FUNCTIONS
#else /* CAIRO_HAS_GOBJECT_FUNCTIONS */
# error Cairo was not compiled with support for GObject
#endif /* CAIRO_HAS_GOBJECT_FUNCTIONS */
I believe that due to the way I compiled Cairo (described above), Cairo really does have GObject support.
pkg-config --libs cairo-gobject
-pthread -L/usr/local/lib -lcairo-gobject -lcairo -lgobject-2.0 -lgthread-2.0 -lrt -lglib-2.0
make
(use-modules (gnome-2))