Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

openSUSE@ARM/GSoC: Cross-compilation & speedup

This weeks topic was the integration of the cross-compilation mode into the build environment. But it’s more than just a cross-toolchain – it’s a speed-boost for our ARM build environment. As of today, the source is deployed in the repository Base:build:arm:cross. It’s not fully bootstrapped because of the current high load and the upcoming downtime – so watch out for changes there and in Base:build:arm.

But what are these “speedup’s” ? First, you’ve to know that in our build environment the ARM binaries are executed through an emulation-layer. This works on the cost of speed. The goal is now, to exchange some key parts in a transparent manner with native x86 binaries: no emulation, no slowdown. Sounds reasonable, but is it easily possible ?
I had to take care not to mix stuff too much because the environment would break. But now I’ve to say:  WOW, this worked incredibly well  😉 .

The distinctive feature of our approach in comparison to usual cross-build environments is that we use the best of native environment emulation and the speed of cross-compilation. Because of this combination we don’t have to patch the individual packages to make them cross-compilation ready. This is a new way of cross-compiling suitable also for large number of packages. A detailed overview about the different crossbuild types can be found on this page.
Another feature to note is that the exchanged binaries (replacing ARM with x86 in the build environment) also don’t need heavy patching and there’s no need to compile them as static binaries. All of them are normal distribution packages.

A switch in the project enables/disables the new features. With the new changes in place, the speed could be vastly increased. Some figures:
* package rpm
* package glibc w/o locales

Build time in minutes
x86 native armv5tel native armv5tel cross factor native factor cross
rpm 8 107 17 13,38 2,13
glibc 33 505 63 15,3 1,91

overview cross-environment

Thats a drop from about x15 to x2 in comparison to the native x86 build-time !! See it yourself when the “crosscompiled” repo in Base:build:arm is up and running.

In other words: “Warp 5, Mr. Sulu !” 😉

a silhouette of a person's head and shoulders, used as a default avatar
a silhouette of a person's head and shoulders, used as a default avatar

South East Linux Fest

This week I attended SELF (South East Linux Fest) at Clemson University here in South Carolina. It was a great day! I met and worked the openSUSE booth with Joe Brockmeier aka “Zonker”.  There were lots of enthusiastic attendees both from the Linux and Education communities.  All of the Educators that came to visit the booth where extremely pleased with the work the EDU team has completed and If I had been able to supply them, many would have taken copies of the EDU Li-F-E disk and Sugar disk that I had running on my laptop.  Cyberog and the team really have hit a home run! I had with me a thin client setup and did several demonstrations  on the ease of installation and setup.  Kiwi-LTSP is one of the most exciting products for Education I have seen in a long time.  Easy-LTSP, the openSUSE configuration utility for LTSP, is by far the easiest configuration utility available to LTSP users. Combine Easy-LTSP and Italc (a computerlab monitoring suite) and in 5 minutes a teacher can setup a computer lab and either display the lesson on each\all screen or capture a students screen for display to others or simple monitoring of all screens.

I sat through a couple of presenters and I was most excited to hear Chad Wollenburg from VA. Chad is a kindred spirit , he has been slowly moving his district to open source for a few years now and he started much the same way most of us have, his school district could not afford to relicense Microsoft office.  He too, had to show that Open Office was compatible and comparable to MSOffice and explain the over 200,000.o0$ savings to his district using small steps and insider advocates as his method of operation. I am glad to meet so many people dedicated to reducing the “criminal” costs of licensing.

Our project itself past another milestone this week, I am proud to present the OBS-Education forum. http://forums.opensuse.org/obs-projects/obs-education/      Please feel free to post questions specific to openSUSE Education development, bugs, enhancements, etc.

a silhouette of a person's head and shoulders, used as a default avatar

Blah blah...

I was reading this book today ("Speech and Language Processing - An Introduction to Natural Language Processing and Computational Linguistics and Speech Recognition" by Daniel Jurafsky & James H. Martin) and would like to share a few interesting tid bits I gathered in the opening chapter..

1. "... regardless of what people believe or know about the inner workings of computers, they talk about them and interact with them as social entities. People act towards computers as if they were people, they are polite to them, treat them as team members, and expect among other things that computers should be able to understand their needs, and be capable of interacting with them naturally" [doesn't that make my job simpler, this software should only understand polite commands and not the rude, mean ones :P ]

2. ELIZA (probably the first cool NLP application, written back in 1966) actually managed to fool people into believing that it were a Rogerian psychotherapist by simply rephrasing sentences inputted by them.

"ELIZA's deep relevance to Turing's ideas is that many people who interacted with ELIZA came to believe that it really understood them and their problems. Indeed, Weizenbaum (1976) notes that many of these people continued to believe in ELIZA's abilities even after the program's operation was explained to them."

[check this for a sample conversation with ELIZA : http://www.stanford.edu/group/SHR/4-2/text/dialogues.html]

The future looks all hunky dory, doesn't it...

Btw my firefox too is showing some signs of being talkative, the last I heard was

"
(firefox:19328): Gdk-WARNING **: XID collision, trouble ahead

(firefox:19328): Gdk-WARNING **: XID collision, trouble ahead

(firefox:19328): Gdk-WARNING **: XID collision, trouble ahead
"

a silhouette of a person's head and shoulders, used as a default avatar

openSUSE Day (Chile). June 18th, 2009.

We are hoping to have students, young people, professors, teachers, and professionals from many fields as well. Actually everyone is welcome to attend the event. We’ll have presentations, stands, gaming, and of course the fun install fest (openSUSE 11.1). And yes, you can have an original openSUSE 11.1 Live DVD if you are one of the first 400 people to get there 😉 (Thanks Zonker!).

Where? Meet us at Universidad Andres Bello (UNAB), Campus República, República 239/Subterráneo R3. Check the map here.

Time? 10 AM though 8 PM.

Talks:

  • Rafael de la Horra, from UNAB: Education for Professionals and the Free Software Environment.
  • Enrique Herrera, from Linux Latin America: GNU/Linux, 10 years of progress.
  • Myself, openSUSE Ambassador: SUSE Studio.
  • Patricia Albornoz, SUN Campus Ambassador: Netbeans and openSUSE.
  • Francisco del Castillo, from the Air Force: Linux and the Air Force.
  • Rodrigo Romo, from IBM/Tallard: Reducing Costs with IBM and Linux.

See you there. Join openSUSE and have a lot of fun!

OSD_afiche

a silhouette of a person's head and shoulders, used as a default avatar

DaysToGo - Minimalistic SuperKaramba Theme


I easily loose track of time when i have a lot of things to do on my list. I needed something to remind me how much time i have left when deciding what do to next or whether to promise to do something more. So i made this simple SuperKaramba theme.

You can download it from here.

The theme is pretty minimalistic and only contains three text items, one using a simple perl script, and an image for the background. So you can easily change it as you wish.

To install SuperKaramba and the theme on a recent openSUSE using terminal do this:
$ sudo zypper in kde4-superkaramba 'perl(Date::Parse)'
$ wget http://www.suse.de/~jkupec/superkaramba/daystogo.tar.gz
$ cp daystogo.tar.gz .kde4/share/apps/superkaramba/themes

(Did you know you could install perl modules like this? :O)

Now if you open Superkaramba, its theme selector should appear and should already contain the new theme. Opening the theme should also unpack the tarball. See the Readme file in the daystogo theme directory for further instruction on how to edit the theme (set your own text and date).

The theme file is as simple as this:
KARAMBA  W=280 H=280

<group> x=5 y=5 w=270 h=270
image x=-10 y=-10 path="img/SUSE_Head_lt.png"
text x=10 y=0 value="<edit daystogo.theme>" color=255,255,255 fontsize=24 shadow=2 bgcolor=100,100,100 font="Sans"
text x=135 y=70 w=270 align=center sensor=program program="~/.kde4/share/apps/superkaramba/themes/daystogo/scripts/daystogo.pl '31/dec/2009 23:59'" line=1 color=255,255,255 shadow=4 bgcolor=0,50,0 fontsize=120 font="Sans" interval=900000
text x=270 y=250 w=270 align=right value="days to go" color=255,255,255 shadow=2 bgcolor=50,50,50 fontsize=24 font="Sans"
</group>
The red parts are what you want to change to suit you. See this manual for description of used items and attributes. You'll find many more there, together with examples you can use to extend this theme or create your own. Looking at other existing themes is useful, too.

Last, but not least, i want to thank Troy Watson for the pretty Geeko icon i used as the background image.

a silhouette of a person's head and shoulders, used as a default avatar

Improved Installation Summary in Zypper

And the best thing last (for now) :O) This was one of the most wanted features for a year now (bnc #389128). Here's how it currently (zypper 1.2.0) looks.

If the architecture or the vendor of an installed package is about to be changed, the old and the new arch/vendor is shown next to the package name:
The following packages are going to change vendor:
kde4-akonadi openSUSE -> openSUSE Build Service
kde4-knemo http://packman.links2linux.de -> openSUSE Build Service
oxygen-icon-theme openSUSE -> openSUSE Build Service
oxygen-icon-theme-scalable openSUSE -> openSUSE Build Service
Other information, like version or repository is not shown by default, like it was before (i argue that it would be too much info for the default output):
The following NEW packages are going to be installed:
dmidecode libpkcs11-helper1 libstorage libx86emu1

The following packages are going to be upgraded:
ConsoleKit ConsoleKit-32bit ConsoleKit-x11
...
Continue? [y/n/?] (y):
But you can toggle display of such info in the 'Continue?' dialog. Enter '?' to show all the available options:
Continue? [y/n/?] (y): ?

y - Yes, accept the summary and proceed with installation/removal of packages.
n - No, cancel the operation.
v - Toggle display of package versions.
a - Toggle display of package architectures.
r - Toggle display of repositories from which the packages will be installed.
m - Toggle display of package vendor names.
d - Toggle between showing all details and as few details as possible.
g - View the summary in pager.

[y/n/?] (y):
Enter 'v' to see the versions:
[y/n/?] (y): v
The following NEW packages are going to be installed:
dmidecode 2.10-3.4
libpkcs11-helper1 1.07-1.7
libstorage 2.18.16-1.1
libx86emu1 1.1-3.1

The following packages are going to be upgraded:
ConsoleKit 0.3.0-1.5 -> 0.3.0-1.6
ConsoleKit-32bit 0.3.0-1.5 -> 0.3.0-1.6
ConsoleKit-x11 0.3.0-1.5 -> 0.3.0-1.6
If the list is too long, enter 'g' to view the result in pager.

Also, the package counts are shown at the end:
1230 packages to upgrade, 2 to downgrade, 5 new, 2 to remove, 4  to change vendor.
Overall download size: 1.02 GiB. After the operation, 175.0 KiB will be freed.
If you have colors enabled the numbers will be highlighted and the ones to-be-removed and to-change-vendor are shown in red to catch your attention.

Enjoy, and let us know what you think!

todo: Add an option to show the dependency graph of the listed packages. That will answer the questions why zypper wants to install or remove a particular package.
todo: Add an option to view detailed package info.
todo: Add an option to view the changelog (esp. of the to-be-upgraded packages).
a silhouette of a person's head and shoulders, used as a default avatar

Zypper Dialogs

I was puzzled by how to make good user dialogs (or prompts) in Zypper for quite some time. My idea was that they should:
  • be translatable, including the answers (or options)
  • have default option, that would be chosen with a simple Enter key stroke (or automatically in non-interactive mode)
  • have the default option visibly marked
  • have help
  • be simple (have expert options hidden from default view)
This has gradually evolved into the following:
Download (curl) error for 'http://foo.bar/beer/content':
Error code: Connection failed
Error message: Couldn't resolve host 'foo.bar'

Abort, retry, ignore? [a/r/i/?] (a): ?

a - Skip retrieval of the file and abort current operation.
r - Try to retrieve the file again.
i - Skip retrieval of the file and try to continue with the operation without the file.
u - Change current base URI and try retrieving the file again.

[a/r/i/?] (a):
And a translated version:
Ukončiť, znova, ignorovať? [k/z/i/?] (k): ?

k - Preskoč súčasný súbor a ukonči operáciu.
z - Skús stiahnuť súbor znova.
i - Preskoč súčasný súbor a pokračuj v operácii bez neho.
u - Zmeň základnú URI adresu a skús súbor stiahnuť znova.

[k/z/i/?] (k):
  • the prompt options are made of a string like "a/r/i/u", which is marked for translation. Translators are advised in the source comment about the meaning of the options and that they
    should use lowercase letters to translate them (but even a longer string would work).

  • The default option is chosen by the programmer, using its position (0 in the above example). On Enter, this option would be used as an answer.

  • The default option is visibly shown in separate parentheses. First i thought highlighting it with some color would be nice, but then my colleagues convinced me that showing different output in color/non-color mode was not a good idea.

  • Whenever there's help or more options available, a question mark (?) is shown as one of the possible options. When entered, the help would be shown, as you can see in the examples above.

  • Programmer can choose how many options should be shown, the rest will be hidden. Only the most important options should be shown, the rest will be listed after entering the '?'.
It's surely not perfect, but hopefully quite usable. Debian's apt does something similar, but i'm not sure about the translations and other details.

todo: Allow to pass arguments together with the option as part of the answer. This would allow to e.g. remove particular package from the list of to-be-installed packages when seeing the summary. Or show detailed info (e.g. changelog) of a package that caught your attention in the summary before starting the installation.

(oh, did i mention that we'd be glad to receive patches implementing any of the todo's i mention in my blog posts? :O) If you like zypper and would enjoy some coding in C++, don't hesitate to contact us).

the avatar of Sandy Armstrong

Tomboy Bug Squashing Day: Tuesday June 16th

Everybody!


Some of our beautiful Tomboy contributors have organized a bug and test day on June 16th, 2009. It is officially scheduled for 8AM-5PM PST (3PM-Midnight UTC), but I expect people will be around before and after. :-)

We're going to be focusing on UNCONFIRMED and NEEDSINFO bugs, outstanding patches, and stuff targeted for the current cycle.

If you want to work on patches, that's great, but anybody can help regardless of their background and abilities. Just show up and we'll help you get started contributing by squashing some bugs!

Check out our wiki page for all the details.

If you're starving for Snowy updates, you might want to join our mailing list. I'll be writing more soon about a lot of the exciting happenings with Tomboy's best friend on the web.

This post brought to you by the Tomboy Blogposter add-in.
a silhouette of a person's head and shoulders, used as a default avatar

Configure Your Zypper

So i mentioned zypper.conf in my previous post? Yes, Zypper now (since 1.2.0) reads configuration file from /etc/zypp/zypper.conf and from your $HOME/.zypper.conf. It does not have too much to offer right now, appart from the colors, but the point is now we can easily add new ones there, whenever there's a need.

If there is Zypper option that you write too often, it should have it's configuration file counterpart as well, so that it saves you typing. I actually have a list of few, collected over time from users, so i'll be adding them soon. You'll always find the latest list of supported config options here, so stay tuned (and let us know if you need something that's not there yet).

So which value will be used after all, the one from the config file, or the one passed via command line? Here is the override priority order, highest to lowest.
  1. command line options
  2. options from $HOME/.zypper.conf
  3. options from /etc/zypp/zypper.conf
  4. and the lowest priority have the ones from zypp.conf, so that you can override libzypp's settings in zypper, if zypper allows it.

You can use an alternative config file via --config custom/zypper.conf global option. If you do, the other config files (item 2 and 3 above) will be ignored.

todo: Add command for manipulating the configuration files as an alternative to manual editing. The command would list available options with current values and descriptions and would allow to set new values, or restore the defaults.