Home

Apr. 15th, 2008

java-gnome 4.0

Thanks to Manu Mahajan, java-gnome 4.0 is now available for Debian.

To install it, use: apt-get install libjava-gnome-java

Tags: , ,

Mar. 22nd, 2008

Seaside on Debian

GNU Smalltalk 3.1 rc1 includes Seaside, a web application framework based on continuations.

To use, you'll need to install package gnu-smalltalk 3.1~rc1-2 from experimental. Then, from a terminal, launch gst and type[1]:

st> PackageLoader fileInPackage: 'Seaside'
st> PackageLoader fileInPackage: 'Seaside-Development'
st> PackageLoader fileInPackage: 'Seaside-Examples'
st> ObjectMemory snapshot: 'seaside.im'
Now start you can start Seaside with gst-remote -I seaside.im --daemon --start=Seaside, and launch your browser on http://localhost:8080/seaside:
Seaside Seaside counter sample application

[1] taken from GNU Smalltalk info page

Dec. 24th, 2007

dwarves uploaded

We've just uploaded Dwarves.

It is a set of tools that use DWARF information inserted in ELF binaries compiled with debugging symbols. See this paper for details on this set.

Included in the package:

  • pahole: finds alignment holes in structs and classes in languages such as C/C++, CPU cacheline alignment. Helps repack those structures to achieve more cache hits.
  • codiff: a diff like tool to compare the effects changes in source code generate on the resulting binaries
  • pfunct: displays all sorts of information about functions, inlines, etc.
  • pdwtags: pretty-prints DWARF information
  • pglobal: lists global symbols
  • prefcnt: counts DWARF tags usage
  • syscse: system call sign extender
  • dtagnames: lists tag names

Until the package reaches unstable, you can grab them from here.

Tags: ,

Dec. 23rd, 2007

omniORBpy 3.1 uploaded

omniORBpy 3.1 was just uploaded. Thanks a lot to Floris for his work on getting omniORBpy up-to-date!

Since some packages were renamed, the upload will require NEW processing. In the meantime you can grab these packages here.

Tags: ,

Dec. 2nd, 2007

Fun with templates

At work we had to use two C libraries defining structures with different size but same name. Function names were different though, so we believed no symbol clash would occur.

We thought if we used the headers from each library in a different compilation unit we'd be safe.

But we were wrong. The code compiled fine but crashed at runtime. Why? Because we used templates within these compilation units, and this generated weak symbols with the very same name. The linker then discarded duplicate symbols, and since structure size was different we got a crash.

Let's reproduce this on a small example:

/* A.h */
#ifndef A_H
#define A_H

struct Data { int an_int; };

#endif
/* B.h */
#ifndef B_H
#define B_H

struct Data { char a_buffer[65]; };

#endif
/* UsingA.cpp */
#inlude "A.h"
#inlude <deque>

static std::deque<Data> a_datas;

std::size_t get_a_size() { return a_datas.size(); }
/* UsingB.cpp */
#inlude "B.h"
#inlude <deque>

static std::deque<Data> b_datas;

std::size_t get_b_size() { return b_datas.size(); }
/* Main.cpp */
int main(int argc, char* argv[]) {  return 0; }
We compile these files:
$ g++ -c -I . UsingA.cpp UsingB.cpp Main.cpp
$ g++ -o Main UsingA.o UsingB.o Main.o
and inspect what got generated in UsingA.o, choosing the call to size() to reduce the output:
$ nm -C UsingA.o | grep '::size()'
0000000000000000 W std::deque<Data, std::allocator<Data> >::size() const
Likewise in UsingB.o:
$ nm -C UsingB.o | grep '::size()'
0000000000000000 W std::deque<Data, std::allocator<Data> >::size() const
g++ has generated code for the deque we're using. That's how templates work: they get "expanded" in the compilation unit using them. So far so good.

Now if we look in Main:

$ nm -C Main | grep '::size()'
0000000000400a64 W std::deque<Data, std::allocator<Data> >::size() const
we see there's only a single symbol in the resulting binary.

Because the symbols are weak (see the W in nm output), g++ silently discards one version, say the version in UsingB.o. (If they were not weak, link would fail because of duplicate symbols. And every C++ program would fail to link.) Therefore any call on b_datas is likely to fail: the deque code called will not use the right definition of Data.

Lesson learned: avoid data structures with the same name.

Tags: ,

Oct. 19th, 2007

Gtk User Interface for GNU Smalltalk

Thanks to Alexander, the next upload of GNU Smalltalk will include the Gtk Blox Browser.

To run it, I used:

st> PackageLoader fileInPackage: 'BloxGTK'!
st> PackageLoader fileInPackage: 'Browser'!
st> BLOX.BLOXBrowser.BrowserMain new initialize!

Here is a screenshot:

GNU Smalltalk Gtk Browser

The package still needs some polishing.

Jul. 20th, 2007

ACE+TAO 5.5.9+1.5.9

I've just uploaded ACE+TAO packages into experimental.

The packages are now in NEW, but you can get them from there.

Tags: ,

Frysk new upload

I've just uploaded a new version of frysk in experimental.

Frysk is composed of a GUI and many command line tools. Here are a few of them:

  • fcore, to generate a corefile from a running process
  • fhpd, a debugger with a text user interface
  • fstack, displays the stack trace of a running process
  • ftrace, a sytem call tracing tool
  • frysk, the Java-Gnome GUI
  • /usr/lib/frysk/funit, the JUnit testsuite, used to test frysk and the kernel

Please give frysk package a try!

Tags: ,

Jun. 16th, 2007

In Edinburgh, today

It's raining. Both outside and inside. (Provided you're in the same room as I am)


See you tomorrow!

May. 10th, 2007

frysk for Debian

A frysk package is ready to test; it's available here. It is targeted for sid and is apt-get'able, just add :
deb http://thomas.g.girard.free.fr/frysk/ ./
to your /etc/apt/sources.list.

For now you'll also need to install Java-Gnome packages in NEW, also available from:

deb http://thomas.g.girard.free.fr/java-gnome/ ./

Last, you'll need libaudit0 from Philipp's private repo.

Unless something really weird is found in this frysk package, it will be uploaded to master right after auditd.

Update: uploaded to experimental

Apr. 25th, 2007

Updating java-gnome 2.x

I am done updating java-gnome 2.x.

Every java-gnome 2.x software $s now has the following packages:

  • lib$s-java for Java bytecode
  • lib$s-jni for calls into native code
  • lib$s-cni for gcj C++ Native Interface natively compiled code
  • lib$s-java-gcj for gcj Binary Compatible ABI natively compiled code
  • lib$s-java-doc for the documentation

Until packages get out of the NEW queue, you can get them from my personal website. You can also add:

deb http://thomas.g.girard.free.fr/java-gnome/ ./
to your /etc/apt/sources.list.
Tags: , ,

Apr. 23rd, 2007

bouml 2.25-1

I just uploaded bouml 2.25-1.

Update: uploaded again. The previous version was depending on libgcc1 from experimental
Tags: ,

Apr. 18th, 2007

GNU Smalltalk 2.3.3-5

just uploaded. It should fix FTBFS on mips, mipsel and alpha.

Thanks to Michael Banck for enlightening me on this.

Apr. 17th, 2007

Fixing GNU Smalltalk FTBFS on s390

I just uploaded gnu-smalltalk 2.3.3-4.

This version fixes #419582.