Search Results: "spa"

31 December 2009

Christian Perrier: Sandro, I made it too...

Sandro, I was about to write that I wouldn't join you in the club of Those Who Reviewed The Entire Debian Mailing Lists, at least for 2009. And, finally, in a very last rish, I ade it and completed my remaining 541 mails to review in the bloody debian-user mailing list. By the way, you could be interested in learning that I flagged all messages from the "Sponge Burning A Republican!" giant thread (probably the biggest thread in Debian mailing lists ever) as spam. That's debatable but such huge crap is definitely not something I personnally think belonging to the Debian mailing list archives..:-) To others: we still need a few other crazy minds to continue cleaning up spam from our lists archives (at least, debian-boot is in the way to become the first entirely spam-free mailing list on lists.debian.org).

Junichi Uekawa: Shifting my life towards programming.

Shifting my life towards programming. 2009 was an year where I focused more on programming. My day job involved coding lots of code using C++ and python and SQL and other languages, and I started writing more code in general in my spare time as well.

30 December 2009

Christine Spang: Coders at Work

On the train to my parents' house for Christmas I finished up a wild run through the book Coders at Work. The book isn't even mine, but I'd been borrowing it very often, sometimes to the chagrin of its owner, because I could barely put it down. Coders at Work book cover The book is a collection of interviews with 15 great programmers of our time, starting with Jamie Zawinsky and ending with Donald Knuth. It's written in an interview style each interview starts with a brief introduction to the person being interviewed, summarizing what the person is known for and what he or she has accomplished and a few of the highlights of the interview, and then a transcript of the interview follows, with the author/editor, Peter Siebel, will saying something or asking a question, and the interviewee responding. I was skeptical about this format at first because I feel like it can be an easy way out of good editing and make the reader have to do the work of the editor, but on finishing I think that Siebel uses the format to his advantage in this case. For one, the speech format allows the reader to really form a picture of how the person being interviewed speaks and would act in a conversation. Jamie is somewhat bitter and pretty informal. Brad Fitzpatrick is flippant and energetic, his speech littered with profanity and colloquialisms. Others seem more stately and verbose Joe Armstrong's responses can go on for a page or more. In this way, not only do readers learn something about what these greats have learned about programming, but we also feel a bit more like we've met or know them, and can connect to them more as people. I always have this problem where I want to read computer books, but often computer books seem inextricably tied to the computer, so there's this dynamic of reading a bit and then wanting to get on a machine and try something out, write some code, play around especially with books focused on a specific language. Coders at Work retains some of this computer-book dynamic in that I constantly encountered things that I want to investigate or play around with more: Erlang, OCaml, various papers and essays, Knuth's literate programs, and books such as Higher Order Perl and others. Siebel makes a point to ask each person what her short-list of books and papers programmers should read are, so this book is a great source of pointers to other reading material. Unlike a more specific book, however, keeping a list in a notebook was enough to settle the mind to read away-from-a-computer for chapters at a time. It's obvious that despite the interview format, Siebel has done some serious editing. None of the prose is boring to read, and I can't imagine that the text is a straight transcript of how the interviews went. He also has arranged the interviews in an order such that different interviews play off each other. In Branden Eich's interview, for example, he disparages the book Design Patterns:
I never bought the Gamma book. Some people at Netscape did, some of Jamie Zawinski's and my nemeses from another acquisition, they waved it around like the Bible and they were kind of insufferable because they weren't the best programmers.
In the next chapter, Joshua Bloch names it as a book he thinks programmers should read:
Another one, which I have slightly mixed feelings about but I still think everyone should read, is Design Patterns. It gives us a common vocabulary. There are a lot of good ideas in there.
Similar plays, such as Ken Thompson and Fran Allen disagreeing on the badness of C, happen in later chapters, tieing together the different chapters and illustrating how even really good programmers disagree on the Right Thing all the time. Clearly the craft of programming is no settled thing. Besides the general structure of the book being well thought-out, the material is generally thought-provoking and interesting. One thing that stood out to me was Joshua Bloch describing what he called the "empathy gene", which is what a programmer has to have if he's going to be able to design good APIs and programming languages he has to be able to put himself in the shoes of the person who will be using the language or API. This is one thing that differentiates how different programmers can be good at different things. Another thing that stood out to me is that many of those interviewed stated that they don't use much in the way of modern tools and IDEs Joshua Bloch and Simon Peyton-Jones both touch on this, just to name a couple examples, even though some say that they think using these tools would make them more productive, especially when it comes to refactoring. This is a testament to the power of inertia sometimes there is just no chance to be unproductive now in order to be more productive later. Or perhaps just a sign that a programmable text-editor can stand on the same level as a heavier tool in terms of productivity in the right hands. I could go on with examples, but the conclusion here is that I thoroughly enjoyed Coders at Work, and I think it is a book that is well-worth the time spent reading the entire thing.

Torsten Landschoff: libtool silently skips shared libraries without -rpath

Ouch! This is the second time I am running into this so I ll write it up this time. I used libtool via automake for building a python module. Quite unhelpfully, libtool happens to build only the static library. It does that even though I passed the -module option, which should make it clear that a static library does not help at all. There is also no mention why it skips the shared library. After some research, my memory came back: libtool requires to pass the -rpath option to actually build shared libraries. I did not want to pass that options, since it is considered harmful where multiple variants of a library are available. It is even less useful in my specific case, as the module is only used inside the source tree for unit testing. Solution: I changed the Makefile.am to use
1
_helper_la_LDFLAGS = -module -rpath /freaking/libtool/requires/at/least/a/dummy/path
Interestingly, the same scheme (apart from the wording) is used in libtool s own source.

29 December 2009

Leo 'costela' Antunes: Re: Making pbuilder just that little bit faster

Absolutely, but there are at least two workarounds:
  1. Adding
    BINDMOUNTS="/var/cache/apt/archives"
    APTCACHE=""
    to your .pbuilderrc, in case you don t need any special separation of local and pbuilder caches (that s my case).
  2. Using apt-proxy or the like, which has its overhead, but also its other advantages.
None of them seem all that bad to me, considering the sensible speed improvements to pbuilder, but the ultimate decision probably depends on the amount of disk-access the packages in question need.

Sandro Tosi: Debian lists spam: ALL messages reviewed!!!

Holy crap! I don't know how I made it, but my mailing-list spam review page is EMPTY!! It was a long way, started on 2009-04-05, but at least the biggest part is done (now there are only the new reports, much much less than the whole backlog).

Again, I'd like to invite anyone to contribute to have (an ideal) lists.d.o spam free:
I know it seems boring at first (and indeed it is), but we are many people, and anyonw contributes a little, it will be much faster and less-annoying. For example: why not review some message while waiting for your next package to be built? Or while you wait for the dist-upgrade to end? Or in any other situation where you got some minutes of spare time to dedicate to such an easy task?

Some links to those interested:
Have fun!

27 December 2009

Gregor Herrmann: RC bugs 2009/52

a short update on my RC-bug squashing activities: remarks:

Chris Lamb: Readline tab completion using Django models

The following snippet allows readline-style tab completion backed onto Django models. I am using this in management commands in preference to specifying primary keys as arguments.
class QuerySetCompleter(object):
    def __init__(self, qs, field):
        self.qs = qs
        self.field = field
        self.prefix = None
    def __call__(self, prefix, index):
        if prefix != self.prefix:
            qs = self.qs.values_list(self.field, flat=True)
            if prefix:
                qs = qs.filter(** 
                    '%s__startswith' % self.field: prefix,
                 )
            self.matching = list(qs)
            self.prefix = prefix
        try:
            return self.matching[index]
        except IndexError:
            return None
Example usage:
import readline
from mymodels import MyModel
completer = QuerySetCompleter(MyModel.objects.all(), 'name')
readline.set_completer(completer)
readline.parse_and_bind("tab: complete")
readline.set_completer_delims('')
while 1:
    print repr(raw_input(">>> "))
Pressing <tab> at this >>> prompt will complete from the name field of the MyModel model just like a regular shell would. We call readline.set_completer_delims as our items may contain word delimeters - otherwise readline would attempt a seperate completion of (eg) "Bar" if one of our items was "Foo Bar".

Thorsten Glaser: speling[sic!]

With the Lintian 2.3.0 saturday-after-christmas release (by the way, over here if it s done twice it ll really become tradition) I ve run its spelling tests over all of MirOS CVS repository. The result: 293 kinds of typos in 35857 souce files. (Although there are the case things too. Without them, I have 51 typos in 7206 files. Asides from false positives (I used fgrep -rwl[i], and -i and -w don t play well together, and -w mis-catches GTK+ as GTK ) I probably can t (API, source code) or won t fix all of them though.) However, I have some rather hot asia-style food to eat right now, and will need to get up early tomorrow for work, so I am not applying/fixing them right now. (bsiegert@ and gecko2@ however are enjoying themselves at 26C3, see their wlog entries.) Note that all of today s fixes will not make it into the next MirBSD snapshot already, since it s built (i386) and building X11 already (sparc). On the other hand, the next bunch of WTF *.deb files will have them. I also need to fix makefs upstream for Hurd and continue the T&S questionnaire *sigh* Update: I suppose this is my Hello, Pl net Debian! posting (thanks aptituz!) well, my packages in the archive were already lintian clean, in case someone wonders (I did recheck with 2.3.0 though). My point was, why not use checking tools from one universe for another one, viceque versa? (Similar to synergy effects from knowledge.)

Kurt Roeckx: Canon EOS 500D

I recently bought myself a Canon EOS 500D also known as EOS Rebel T1i, and EOS Kiss Digital X3. I also got myself a Canon EF 50mm f/1.4 USM lens. One of the new things about the 500D, compared to my previous 400D, is that it has live view. So I wanted to see if that's useful or not. I'm not that happy with it. If you want to let it auto focus normally you would half press the release button but instead you need to press the AE lock (*) button, half pressing the release button doesn't have any effect. The live view auto focus is also very slow, takes about 5 seconds on average. It's also has a habit of not focusing it all, or going in the wrong direction to find the focus. I sometimes suddenly feel the focus ring vibrate on the 50 f/1.4 USM while it normally never moves. There is also some weird clicking noise on my zoom lens, it appears to keep trying to send it beyond the smallest focus range while the object is meters away. There is also a "quick" focus mode, so that if you press the AE lock button the mirror goes down, temporary turning live view off, doing the focus the normal way, and then the mirror goes up again. In that mode the auto focus takes about 2 seconds instead. The only thing live view seems useful for is that you can zoom in to see if something is in focus. I'm also seeing some weird behavior when using the flash. When using the 50mm f/1.4 it really seems to prefer using f/2.8, sometimes f/1.4 or f/4.0, and you can't select anything else in the auto, CA or P mode. Sometimes the depth of field is just too small, so I tried to set it to Av mode and manually select the one I want. What I didn't expect in that case is that it's calculating the shutter time like it won't be using the flash, and you suddenly get shutter times of 5 seconds. Other modes have similar problems, only setting everything manual seems to work properly.

Russ Allbery: Lintian 2.3.0

Continuing a Saturday after Christmas tradition (well, two years in a row, at least), have a new Lintian release. This release welcomes Raphael Geissert as a member of the Lintian maintenance team. He's been providing good patches for quite some time, so this was overdue. Releases have been infrequent lately, so there was a rather large bug backlog built up. I also took some time to rewrite the tag handling module and move its namespace around, which is largely why the larger version bump. This version has a few new command-line switches. --suppress-tags and --suppress-tags-from-file allows disabling specific tags that one never wants to see, added primarily for Emdebian to be able to turn off particular tags but possibly of use in other situations. -F or --ftp-master-rejects shows only those tags that might result in an automated reject, although currently doesn't distinguish between ones that can be overridden and ones that can't. I'm going to update lintian.d.o in a few moments and start an archive-wide run, since this release fixes a bunch of bugs and should hopefully fix handling of multiple versions of the same package in the archive. There are a lot of code changes in this release, so it may not be completely stable. I'm planning on making another release next Saturday.

26 December 2009

Stefano Zacchiroli: RC bugs of the week - week 16

RCBW - week #16 ... and here are christmas (for those who care) RC squashes, by yours truly (for those who care too): and here are the usual notes: Hint/request of the week: please add +pending when you do DELAYED/ NMUs, that way filtering out already taken care of bugs gets easier and refreshing a bug log page in the browser will immediately show the new tag at the top.
(Yes, I agree that nmudiff should offer that when passed --delay, I intend to propose a patch for that, but feel free to beat me at it :-P) In other news, christmas vacations are awesome to catch up with books you planned to finish reading months ago ... Update: the patch for nmudiff I've mentioned has been kindly provided by gregor hermann, thanks!

24 December 2009

Julien Blache: Packard Bell OneTwo all-in-one with touch screen

I ve just bought a Packard Bell OneTwo (M3700), a 600 Euros all-in-one computer with a 20 multipoint touch screen (there are bigger models with 23 touch screen, wifi and some other options). This machine will be used to run OpenBravoPOS, a free (libre) point of sale software. So far, I think this machine is just perfect for the job. Getting it to run smoothly under Linux is not a walk in the park, however. There are some quirks and some assembly is required, but once you re done (that takes a couple of hours at most once you ve got all the info, which you have if you re reading this) this machine is just great. It s fast, with a 2.1 GHz Pentium Dual-Core (T4300) CPU, 4 GB of RAM, an Intel GM45 GPU with up to 256 MB of shared RAM, gigabit networking, a fast 320 GB SATA disk and a combo DVD-drive (not a slot-in, too bad). The screen is nice, and the touchscreen is incredibly smooth, precise and sensitive. The sound is good, the webcam is great and it works out of the box, too! Update: added a note about the card reader. Before you go Enter the BIOS and bump the amount of memory allocated to the GPU to 256 MB. By default, the machine ships with only 64 MB allocated to the GPU, which is low and ridiculous considering it is equipped with 4 GB Installing Debian Forget about installing Lenny with debian-installer on this machine. The standard installer with its 2.6.26 kernel doesn t support the network interface properly. Upgraded installer images with 2.6.28 or 2.6.30 kernels end up locking the machine solid before the first installer screen. Your best friend: System Rescue CD. Your other best friend: debootstrap. Before rebooting, install the 2.6.30 kernel from backports.org. It works like a charm, even if the 2.6.30 on the upgraded installer locked up solid. Go figure :) While you re at it, install X from Testing. You need a recent enough version of the intel driver that will support the GM45 chip. Configuring X This is the first and the biggest quirk on this machine. The LCD is actually wired up to both the VGA and the LVDS outputs on the graphic card, and advertises different resolutions on both. The native resolution (1600 900 on this model) is only advertised on the LVDS output. While fiddling with X, it becomes obvious that the VGA output is used as the boot video device. If you disable the output in X with xrandr, you loose the text consoles. My un(?)educated guess is that this setup allowed them to use a standard desktop PC BIOS instead of using a more expensive laptop BIOS. I may be wrong, but that s pretty much the only thing that makes sense to me. Anyway. If you want X to work properly, you ll have to tell it to ignore the VGA output entirely.
Section "Device"
 Identifier  "Intel X4500"
 Option  "Monitor-LVDS"  "Panel on LVDS"
 Option  "Monitor-VGA"  "Panel on VGA"
EndSection
Section "Monitor"
 Identifier  "Panel on LVDS"
EndSection
Section "Monitor"
 Identifier  "Panel on VGA"
 # The LCD panel is wired up on both VGA and LVDS
 # Ignore the VGA output as far as X is concerned
 Option  "Ignore"  "True"
EndSection
If you don t tell X to ignore the VGA output, you ll end up with a mirror setup and your desktop will use the smallest size so as to fit on both monitors. It isn t pretty, it s plain silly and we want those 20 used fully, dammit! See the full xorg.conf. Touch screen The touch screen is an infrared multipoint touch screen from Quanta. No kernel driver is needed, only an input driver for X is required. Start by adding an udev rule like this one:
SUBSYSTEM=="usb", ATTRS idVendor =="0408", ATTRS idProduct =="3000", SYMLINK+="usb/quanta_touch"
The touch screen will now appear as /dev/usb/quanta_touch, which is more handy and stable than /dev/usb/hiddevN. Grab xf86-input-hidtouch from HidTouch Suite on SF.net, and apply this patch. The aim of the patch is to ignore anything but the first reported pressure point. The touch screen is a multipoint touch screen and as such can report 2 or 3 (not sure) pressure points at the same time. The driver can t handle that yet. The patch also fixes a bad comment and an API difference with newer X versions. Build and install the driver, then edit xorg.conf:
Section "InputDevice"
 Identifier  "Optical Touch Screen"
 Driver  "hidtouch"
 Option  "SendCoreEvents"  "true"
 Option  "ReportingMode"  "Raw"
 Option  "Device"  "/dev/usb/quanta_touch"
 Option  "PacketCount"  "13"
 Option  "OpcodePressure"  "852034"
 Option  "OpcodeX"  "65584"
 Option  "OpcodeY"  "65585"
 Option  "CalibrationModel"  "1"
 Option  "CornerTopLeftX"  "0"
 Option  "CornerTopLeftY"  "0"
 Option  "CornerTopRightX"  "1600"
 Option  "CornerTopRightY"  "0"
 Option  "CornerBottomLeftX"  "0"
 Option  "CornerBottomLeftY"  "900"
 Option  "CornerBottomRightX"  "1600"
 Option  "CornerBottomRightY"  "900"
 Option  "CornerScreenWidth"  "1600"
 Option  "CornerScreenHeight"  "900"
EndSection
There you are. Working touch screen! Credit: the above touch screen setup instructions, including the patch (which I reworked slightly ) were taken from this post on the Ubuntu-fr.org forum. The instructions cover the Packard Bell Viseo 200T touch screen, which is identical to what s used on the OneTwo. If you re looking for a 20 touch screen, go for it; at 200 Euros it s a good deal. Sound The Realtek ALC268 codec as used in the OneTwo isn t properly supported yet, however using model=acer-aspire works for the integrated speakers and the headphone jack. Line out and the integrated microphone do not work. Webcam The webcam is a UVC webcam and the image quality is stunning. I m seriously considering stealing that webcam to replace the iSight in my MacBook Pro. It works out of the box without any firmware. Quite a good surprise :) Flash card reader The integrated flash card reader also works out of the box, for the card formats supported by Linux.

MJ Ray: A Christmas Present From Spammers

Contained in the recent billionth-spam report from Project Honeypot is the revelation that The volume of spam drops approximately 21% on Christmas Day and 32% on New Year s Day. (Thanks to Raphael for the pointer.) Happy Christmas to those of you who celebrate it

23 December 2009

Torsten Landschoff: Hitting the dynamic linker wall

I was working on replacing some mockup code for testing an internal library with python. Basically, the C code is incredibly big and I would rather mock the 3rd party API we are using in python. I wrote a generator to create wrapping code that forwards the C API calls to my python module. Now that most of the work is finished, I get the following error message from my python mock:
1
2
3
4
5
6
Traceback (most recent call last):
File "simple_mockup.py", line 2, in <module>
import threading
File "/usr/lib/python2.5/threading.py", line 11, in <module>
from time import time as _time, sleep as _sleep
ImportError: /usr/lib/python2.5/lib-dynload/time.so: undefined symbol: PyExc_ValueError
What s going on here? This issue reminds me of a bug of my ancient Debian times which affected loading of GTK theme engines from python-gtk. The bug (#38138) is so old, it s not even in the BTS archive anymore The problem is illustrated by the following example program (consisting of three files):
demo.c
1
2
3
4
5
6
7
#include <Python.h>

void test_python()

Py_Initialize();
PyRun_SimpleString("import threading\n");
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <dlfcn.h>

int main(void)

const char *error;

void *handle = dlopen("./demo.so", RTLD_LAZY EXTRA_RTLD_FLAGS);
void (*test_python)();
*(void**) &test_python = dlsym(handle, "test_python");
if ((error = dlerror()))
fprintf(stderr, "%s\n", error);
return 1;


printf("Calling test_python @ %p in shared object @ %p.\n", test_python, handle);
(*test_python)();
dlclose(handle);
printf("Feels fine, finishing.\n");
return 0;
run_it.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
#! /bin/sh

gcc -shared python-config --includes -o demo.so demo.c python-config --ldflags

echo "Running example with default RTLD flags:"
gcc -DEXTRA_RTLD_FLAGS=0 -o main main.c -ldl
./main
echo

echo "Passing RTLD_GLOBAL in addition:"
gcc -DEXTRA_RTLD_FLAGS=RTLD_GLOBAL -o main main.c -ldl
./main
echo
On my system, this results in the following output:
torsten@pulsar:~/sh_bug$ ./run_it.sh
Running example with default RTLD flags:
Calling test_python @ 0xb77084bc in shared object @ 0x96bc018.
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.5/threading.py", line 11, in <module>
    from time import time as _time, sleep as _sleep
ImportError: /usr/lib/python2.5/lib-dynload/time.so: undefined symbol: PyExc_ValueError
Feels fine, finishing.
Passing RTLD_GLOBAL in addition:
Calling test_python @ 0xb783f4bc in shared object @ 0x95e1018.
Feels fine, finishing.
Sucky. So embedding Python into an application is easy but if you want to use the interpreter and its modules from a plugin, you are out of luck. Somebody knows a way around this problem? The only solution I can think of is to link libpython.so into each of the python plugins. Update: Work around Small update: For my current problem, the work around is to run the application with the python library preloaded: LD_PRELOAD=/usr/lib/libpython2.5.so.1.0 app. Back to adding functionality

22 December 2009

Gustavo Noronha Silva: WebKitGTK+ HackFest!

The WebKit hackfest is now over, and I think it was a very productive week. Thank you very much to all who attended, to Igalia for organizing the hackfest, and hosting us so well, to Collabora for having sponsored the event, and allowed me to spend the week working on it, and to the GNOME foundation for having payed all of my costs!
Xan blogged about day 0, and also a summary of all that was done, so I ll focus on the stuff he forgot to mention ;D. The hackfest, for me, started on day -1 with me not allowing Xan to go sleep before he had reviewed a couple patches of mine to fix DOM context menu handling. It always bothered me that Epiphany failed to open right-click menus in some pages, or let pages handle the right click. Well, this is fixed now, and Zimbra users can now have their right click menus, and WoW players can remove talent points from their calculators =P. It turns out that many of the attendees don t like pages messing with their context menus, though, and they had some good points to back up their positions (like pages making it hard to save images, for instance), so I implemented a way to force openning the custom menu: Ctrl-rightclick. We wanted to use a GtkInfoBar to display questions regarding the form saving - our initial implementation always saved all credentials, but that didn t sound good enough. Xan and I thought it would be very complicated to make this work, because there were assumptions in the code regarding which widget contains which, but it turned out to be quite trivial - making EphyEmbed a descendant of GtkVBox instead of GtkScrolledWindow, fixing a small number of assumptions, and that was it. The passwords are saved in the GNOME Keyring. It s interesting to point out that GNOME Keyring seems to be unhappy with the number of passwords a browser stores - Xan s daemon was hanging, crashing, and spawning a large number of threads. My daemon decided to take up some 300MB of RAM at one point. It s somewhat funny to see how much a browser pushes the limits of our platform. We are hoping this will improve with the new keyring APIs, and the rewrite that is ongoing. It s nice to see my browser form passwords in seahorse, though, and be able to manage them like any other. One more thing worth of notice, although this post is already a bit too big: one of the main concerns people had during the Hackfest was on making build time smaller. Touching a single file in WebCore causes a debug build of 10 minutes on my laptop. Evan Martin and Benjamin Otte made a push at removing unnecessary includes from WebCore, and WebKitGTK+ files, which brough the build time down a bit. They end up inspiring Aroben, from Apple, to go even further into this, and remove many includes from files all over WebKit. Evan was also able to bring linking time down by making it possible to link libwebkit without having to build all the intermediate libraries, which brought build time down to 1 minute, when touching a single file in WebCore. Behdad and I also started looking into breaking WebCore up into lots of shared libraries for Debug builds, since we don t care too much about speed penalties in those. None of these experiments got committed yet, but I am hoping we will be having a better time hacking on WebKitGTK+ in the near future. It was awesome meeting everyone, by the way! See you around =).

21 December 2009

David Paleino: RC bug squashing

Just had some time in the last two days, and here's the list of uploaded NMUs. So far, I had only one maintainer complaining (again, sorry!), but I must admit that on Sunday I just didn't follow the correct NMU procedure Sad Anyhow, here's what I have:
  1. #504824 [libnids] FTBFS with GCC 4.4: #elif used instead of #else
  2. #504864 [omnievents] FTBFS with GCC 4.4: missing #include
  3. #504871 [bookmarkbridge] FTBFS with GCC 4.4: missing #include
  4. #504902 [libofa] FTBFS with GCC 4.4: missing #include
  5. #504943 [libassa] FTBFS with GCC 4.4: missing #include
  6. #504963 [libfcgi] FTBFS with GCC 4.4: missing #include
  7. #504970 [italc] FTBFS with GCC 4.4: missing #include
  8. #504973 [libspiff] FTBFS with GCC 4.4: missing #include
  9. #505021 [passepartout] FTBFS with GCC 4.4: missing #include
  10. #505078 [codeine] FTBFS with GCC 4.4: missing #include
  11. #505333 [gloox] FTBFS with GCC 4.4: missing #include
  12. #505372 [bobot++] FTBFS with GCC 4.4: missing #include
  13. #505420 [esteidutil] FTBFS with GCC 4.4: missing #include
  14. #510759 [log4cxx] FTBFS with GCC 4.4: missing #include
  15. #526151 [openmovieeditor] FTBFS with GCC 4.4: missing #include
  16. #551107 [fusecompress] FTBFS with GCC 4.4: missing #include
  17. #551718 [eboard] eboard: FTBFS with latest eglibc and gcc 4.4
Some highlights Most of these bugs, if not all, already had a patch attached. Thanks to Martin Michlmayr for his work on this! Regarding fusecompress, after my upload to DELAYED/2, the maintainer promptly replied asking for sponsorship of a package he already had. So this does not really count Smile If you want to participate in this great game too, and improve our loved distribution, you can have a look at this list of possibly easy bugs to fix. Have fun!

Debian News: FAI Project celebrates its 10th anniversary

Ten years ago, on December 21st, 1999, Thomas Lange announced the release of version 1.0 of FAI (Fully Automatic Installation).

FAI is a non-interactive system to install, customize and manage Linux systems and software configurations on computers as well as virtual machines and chroot environments, from small networks to large infrastructures and clusters.

It is a tool for mass unattended Linux installation. You can take one or more virgin systems, turn on the power, and after a few minutes, the systems are installed, and completely configured to your exact needs, without any interaction necessary.

The tool was developed at the University of Cologne, because the author was too lazy to install Debian on 16 hosts manually.FAI now also supports the installation of Ubuntu and RPM-based Linux distributions. It is used worldwide in very different environments; even installations on two zSeries z10 mainframes are reported.

A detailed report in German about the 10 years of the FAI project can be found at http://www.informatik.uni-koeln.de/fai/otherdocs/10jahre.html.

Thomas Lange

Daniel Kahn Gillmor: dd, netcat, and disk throughput

I was trying to dump a large Logical Volume (LV) over ethernet from one machine to another. I found some behavior which surprised me.fun constraints(how do i get myself into these messes?)This entry has been truncated read the full entry.Tags: lvm, netcat

20 December 2009

Dirk Eddelbuettel: Rcpp and inline example

Following up on yesterday's Rcpp 0.7.0 release, here is a quick example of why the new feastures can be so useful. The following R code defines a character variable gslrng. This variable contains a short C++ code segment, which is then transformed by the function cfunction into a function of two arguments assigned to funx: <body style="background-color:#ffffff">
    ## now use Rcpp to pass down a parameter for the seed, and a vector size
    gslrng <- '
       int seed = RcppSexp(s).asInt();
       int len = RcppSexp(n).asInt();
       gsl_rng *r;
       gsl_rng_env_setup();
       std::vector<double> v(len);
       r = gsl_rng_alloc (gsl_rng_default);
       gsl_rng_set (r, (unsigned long) seed);
       for (int i=0; i<len; i++)  
           v[i] = gsl_rng_get (r);
        
       gsl_rng_free(r);
       return RcppSexp(v).asSexp();
    '
    ## turn into a function that R can call
    ## compileargs redundant on Debian/Ubuntu as gsl headers are found anyway
    funx <- cfunction(signature(s="numeric", n="numeric"),
                      gslrng,
                      includes="#include <gsl/gsl_rng.h>",
                      Rcpp=TRUE,
                      cppargs="-I/usr/include",
                      libargs="-lgsl -lgslcblas")
    print(funx(0, 5))
</body> The signature argument to cfunction defines two variables s and n -- which the C++ function then reads in from R and converts to two integers seed and len. seed is used to initialize the random-number generator, and len draws are then taken and stored in the STL vector v which returned at the end. As the R level, we now have a function of two arguments returning a vector of RNG draws of the given lenth and using the given seed. Also note how we tell cfunction to add the GSL include line, specify that we want to compile and link against Rcpp and provide -I and -L arguments to compile and link with the GSL. (The include statement is not needed as the compiler would have found them in /usr/include anyway, but it shows how to set this if needed.) Finally, we simply call our freshly compiled, linked and loaded C++ function with arguments zero for the seed and five for the length, and print the results vector returned to R from C++.

Next.

Previous.