Chicken on the N900
To get started either get the code from the repository, build & install the eggs with chicken-install (you'll need: QTDIR=/opt/qt4-maemo5/ chicken-install for the qt egg), or just add the deb repositories and apt-get chicken-qt. Note that I only have binary deb repositories for maemo armel, not x86. There are a number of examples in the repository named testN as well as examples in the qt/ directory. You should probably also run qt/tests.scm just to make sure everything is fine. As soon as I figure out how you document eggs I'll put up some docs as well.
The repository contains chicken scheme packaged for the N900, dbus & qt eggs, and their dependencies. The dbus egg is ported from chicken/3. The qt egg has undergone some large changes including:
- support for qobject attributes
- qvariantlist and qvariant are supported so interfacing with qt is a lot more natural
- removed the simple receiver and replaced it with an object that crafts the correct slot on request
- arbitrary number of arguments to slots and support for some common argument types (although notably pointers aren't yet handled)
- invoking arbitrary qt methods/signals/slots
- support for qt-maemo (stackable windows and various information boxes)
- it now builds in c++ so that I don't have to make bindings to every enum by hand and so that more code can be inlined
- qt-dbus is now supported so that polling isn't required, it too works with an arbitrary number of arguments and provides all of the basic capabilities: receiving/sending dbus signals, method invocation, and exposing methods over dbus
- 0% cpu usage when idle so it's battery-friendly
- it's debianized along with its dependencies so that it can be deployed to the n900
- asynchronous networking through qt
If you're deploying this to your device or your armel simulator you can add my optified repository or the non-optified version version using these links, and then apt-get install chicken-qt.
Note that if you're having trouble when hosting .install files on your website you'll need to put the following incantation in your .htaccess file for the .install files to have the correct mime type: AddType application/x-install-instructions install
Debianizing and deploying an egg that's not in the binary apt repository:
The debianize-egg contains two useful scripts debianize-egg and fetch-and-build-egg, you should make sure that it's symmlinked to ~/debianize-egg as paths are hardcoded for now.
- ~/debianize-egg/debianize-egg "eggname"
Will take an egg which is in a directory $PWD/name and debianize it for you, it will not build it. Note that the name, email, and version numbers are set in debianize-egg. - ~/debianize-egg/fetch-and-build-egg "eggname"
Will fetch the egg using chicken-install, debianize it as above, then produce .deb and .changelog files in the current directory, it won't delete the temporary directory of the egg Copy the deb to the device and run dpkg -i "eggname". Make sure to change the email, name, version numbers, etc in debianize-egg.
Let me know when you find other eggs that are useful and work.