Rantaym and Mono libraries we already have. But they will get into the Nokia repository due to a rather “fun” build procedure. I will try, of course, to push through to the non-free section, but there are no guarantees. Referring to the external repository is not kosher, and keeping several clones of these packages is problematic. How to be? Yes, quite simply. Pack runtime and libraries in a standalone executable file with the mkbundle utility. By the way, despite the concerns, I did not notice the difference in the launch time and memory consumption before and after the packaging.

First, download the
deb package . In the future, it is over its contents that we will scoff.
')
Unpack:
dpkg -x bless_0.6.0-2_all.deb bless_armel
dpkg -e bless_0.6.0-2_all.deb bless_armel / DEBIAN
Glancing content. A lot of rubbish, we get rid of the documentation immediately, anyway, it will be removed with triggers during installation.
Now we are left alone with ekheshnik and dll-kami. We set on them mkbundle:
ls * .dll | xargs mkbundle --deps --keeptemp -z bless.exe
We get at the output a.out. We try to start, it seems like it works.
Now we need to somehow build a binary for Maemo. Taking into account the flag --keeptemp mkbundle kindly left 2 files for us: temp.c and temp.s. In theory, they just need to be compiled with at least the same scratchbox, but not at that. For some unknown reason, the arm assembler refuses to understand the .type directive. Oddly enough, it can be cut completely painlessly. Apparently added for compatibility reasons. Well, we have already seen how compatible it is, so set grep up:
cat temp.s | grep -v "type. * object"> armasm.s
Now compile in our build environment:
as armasm.s -o armasm.o
cc -Wl, - rpath = / opt / bless / lib -ggdb -o bless -Wall temp.c `pkg-config --cflags --libs mono` -lz armasm.o
--rpath set because some dll-ki are trying to kick the system library, referring to them by very strange names, so we just create symlinks.
We put the compiled binary in / opt / bless / bin.
Now in this very lib directory we put libMonoPosixHelper.so.0 libmono.so.0 (you can get compiled for n900 from packages in my repository). Copy the gtk binders, create some symlinks (intl, libc, msvcrt) on /lib/libc.so.6, transfer the desktop file to / usr / share / applications / hildon. Pff, in theory everything. We receive here such tree:
/ opt
/ opt / bless
/ opt / bless / bin
/ opt / bless / bin / bless
/ opt / bless / lib
/ opt / bless / lib / msvcrt
/opt/bless/lib/libmono.so.0
/ opt / bless / lib / usr
/ opt / bless / lib / usr / lib
/ opt / bless / lib / usr / lib / cli
/opt/bless/lib/usr/lib/cli/gdk-sharp-2.0
/opt/bless/lib/usr/lib/cli/gdk-sharp-2.0/libgdksharpglue-2.so
/opt/bless/lib/usr/lib/cli/glib-sharp-2.0
/opt/bless/lib/usr/lib/cli/glib-sharp-2.0/libglibsharpglue-2.so
/opt/bless/lib/usr/lib/cli/gtk-sharp-2.0
/opt/bless/lib/usr/lib/cli/gtk-sharp-2.0/libgtksharpglue-2.so
/ opt / bless / lib / intl
/opt/bless/lib/libMonoPosixHelper.so
/ opt / bless / lib / libc
/ DEBIAN
/ DEBIAN / control
/ usr
/ usr / bin
/ usr / bin / bless
/ usr / share
/ usr / share / applications
/ usr / share / applications / hildon
/usr/share/applications/hildon/bless.desktop
/ usr / share / bless
/usr/share/bless/bless-default.layout
/usr/share/bless/bless.glade
/usr/share/bless/help_script.sh
/usr/share/bless/bless-about.png
/usr/share/bless/bless-48x48.png
/usr/share/bless/bless-16-bytes-per-row.layout
/usr/share/bless/bless-all-number-bases.layout
/usr/share/bless/default-preferences.xml
/ usr / share / pixmaps
/usr/share/pixmaps/bless-48x48.png
From DEBIAN / control, we clean out all dependencies - now we depend only on what is in the firmware.
Putting the package:
fakeroot
chown -R root: root bless_armel
dpkg -b bless_armel
And ... And that's all. The package is placed, in the main menu appears, the files are edited. That's how simple it is. They took a package from Debian, poked it up a little, got a workable binary at the output. This can be done with your software,%% username.
The package itself can be downloaded
here .