[Gentoo] Gentoo at OSCON

I’m organizing a small lunch of Gentooers (pretty much developers, sponsors and corporate users) at OSCON in a couple of weeks. If I know you and you’ll be at OSCON, drop me an email. Or if I don’t know you and there’s some reason you should be there. =) My new address is dberkholz at gentoo.

I’ll probably con the OSL guys into letting us put some propaganda on their booth, so try to stop by there if you want Gentoo literature or info. Many of them are experienced with Gentoo anyhow.

[Gentoo] Modular X stable

Modular X.Org 7.0 is now stable on x86 and amd64. On architectures not held back by binary drivers, X.Org 7.1 is expected to go stable very soon.

Please see the migration guide for details. The main problem people seem to hit that they can’t figure out on their own is XKB breaking because of major configuration changes.

If you have any issues or want more packages keyworded stable, please file a bug. I’ve only marked stable a minimal set of packages to try to discover which packages people use.

[Gentoo] Still alive and kicking

It’s been a while since I posted. I’ve discovered that the more time I spend blogging, the less actual work I get done. And I don’t have any bosses or employees who I need to convince I’ve been working.

Lots of work has gone into improving the Gentoo scientific computing experience. I’ve written new, more flexible eselect modules for BLAS and LAPACK, a couple of very commonly used linear algebra libraries. They’re in my overlay now, and they will enter the Portage tree soon.

I’m trying to make Gentoo the distribution of choice for my day job — protein X-ray crystallography. This means packaging all the weird Fortran stuff with even weirder, broken build systems. I’m waiting on a patch to go into Portage 2.1.1 to fix RESTRICT=stricter, then I’ll be able to add the remaining apps chilling in my overlay — primarily CCP4 and Coot. I’ve recently added packages for CNS, SHELX and ABINIT. Ghemical-2’s ability to run GAMESS-US also helps quite a bit, and I hope to find some time to work on the WebMO package that’s hard-masked in Portage.

The entrance of GCC 4.1 into testing has made a lot possible, but also requires a lot of fixing. This is particularly the case in scientific computing, where there’s an entirely new Fortran compiler — gfortran. Please note that gfortran is NOT a renamed g77. It accepts different options, and it compiles different code. Only gfortran will compile Fortran90 and Fortran95 code. Only g77 will accept common options such as -fno-globals. Do not assume they are the same.

I’ve also gotten back into trying to do some work on the cluster project, prompted by a couple of active cluster builders in the #gentoo-cluster IRC channel. I hope to be able to set up a test cluster this summer and rework the high-performance computing documentation. It’s currently a bit of a hack, outdated and incomplete but better than nothing. I’d like to create a clean cluster setup using diskless nodes with UnionFS, PXELinux, etc. Also on this list is getting OpenMPI into the tree and creating some sort of ‘eselect mpi’ module that will allow not just system-level switching but also changes on a per-user level.

Also, X.Org 7.1 has entered testing a bit under a month ago. Look to see this stable well before the 2006.1 release, which is in August. Now that Portage 2.1 is stable, the last major blocker appears to be gone. Perhaps we can get it stabilized around the beginning of July. That would be a nice Independence Day present.

[Gentoo] Former Gentoo developers, unite!

In an effort to actually figure out who created Gentoo and how, I’m trying to put a list together of current contact information for everyone who’s ever committed anything to Gentoo. Obviously, many uses exist for this. Newer folks may have questions about your work, we may want to relicense to GPL3 at some point, somebody might want to compile a list of all the major contributions you’ve made, etc.

Also, we’re testing some imports into git (among other SCMs), and git uses your real names and email addresses in the commit history. It would be much more helpful to have addresses that are actually valid.

Anyone out there who’s a former Gentoo dev, please email me (spyderous at gentoo) with your old commit ID, your full name, and your current best email address. Also a GPG key ID would be handy, particularly in combination with a signed email. Put “Names/contact info for former devs” as the subject.

Thanks!

Ha, your Gnome slowdowns are nothin’

Federico, you want to improve Gnome performance? It takes me about 20 seconds (yes, twenty!) from the time I type my password in GDM until my session finishes loading up. This is on a 1 GHz iBook G4.

I’ve got a few applets: clock, system monitor, battery, processor, weather, but the big slowdown is my terminals. My session opens two gnome-terminals, each with 4 tabs, and each tab is a login shell that runs keychain.

This actually got 5-10 seconds slower when upgrading to Gnome 2.14 from 2.12 — it used to only take ~10 seconds to get everything started up.

[Gentoo] Old kernels

Just for fun:

uname on a 2.2 kernel

We’ve got ebuilds for really old stuff in our tree: linux-headers-2.0.40.ebuild, vanilla-sources-2.0.40-r1.ebuild, linux-headers-2.2.26.ebuild, vanilla-sources-2.2.26-r1.ebuild. So I decided to see whether they actually worked. The good news is, 2.2 was really easy to get up and running. Here’s the steps I followed in an attempt to get 2.0 working, but they also work great for 2.2:

  • Install from stage3 normally.
  • Set LT_KERNEL_VERSION=”2.0.0″ in make.conf and rebuild glibc. This changes the minimum ABI that glibc will run programs on. If you only want 2.2 compatibility, feel free to change that value to “2.2.0”.
  • Next, rebuild all apps with ’emerge -e world’. You can check app ABI’s with ‘file’ or ‘eu-readelf -n’. If you use ‘file’, it will show ‘for GNU/Linux 2.0.0’. If you use eu-readelf, it will show ‘OS: Linux, ABI: 2.0.0’ once things are built properly.
  • ‘echo “=sys-kernel/linux-headers-2.2* -*” >> /etc/portage/package.keywords’,
    then ’emerge =linux-headers-2.2* =vanilla-sources-2.2*’.
  • Install gcc 2.95; gcc 3.4 cannot compile a 2.2 kernel. This will require that you change your profile to a gcc2 profile. ‘cd /etc; rm make.profile; ln -s ../usr/portage/profiles/default-linux/x86/gcc2 make.profile’ The emerge of 2.95 will switch to it automatically, but remember to run ‘source /etc/profile’ before compiling the kernel.
  • Install sys-devel/bin86. It’s needed to build a 2.2 kernel.
  • Configure and compile the 2.2 kernel. It’s just like a 2.4 kernel: ‘make menuconfig; make dep; make bzImage modules modules_install’, then install the bzImage to /boot/ and set up grub.conf as usual.
  • Switch back to a gcc-3 compiler using gcc-config. Only use 2.95 for the kernel, because a lot of newer apps fail to compile with it.
  • Emerge sys-fs/static-dev since devfs wasn’t really working well, unless you want to apply the devfs patch. ‘echo “sys-fs/static-dev ~x86” >> /etc/portage/package.keywords’. You should be able to leave sys-fs/udev installed, because our startup scripts autodetect what you’re capable of.

Unfortunately glibc 2.3.4 won’t compile against linux-headers-2.0.40, so it will require some more work to drop back to a 2.0 kernel. Maybe glibc 2.2.5 will work.

[Gentoo] Xgl, getting into OSS

Finally got around to trying out Xgl on Wednesday. Used the xgl-coffee overlay (link to HOWTO) and modified ebuilds to be live cvs instead of dated snapshots, so I don’t need to ever bump them. You can get the new ones from my overlay if you want them — x11-base/{xgl,xorg-server,x11-drm}, x11-wm/compiz, x11-libs/{cairo,libdrm}, media-libs/{glitz,mesa}, x11-drivers/xf86-video-ati will get you basically the latest X there is.

After fixing an accidentally applied aiglx-only patch that made all the pixmaps upside-down in compiz, stuff worked quite well on my iBook G4 (Radeon 9600 or so).

The motivation for doing this was a demo to my LUG at the meeting. I also gave a 5-minute talk on how to get involved in open source. I’ve posted the slides [PDF], but they’re quite unhelpful without me narrating.

[Gentoo] Tracking down crappy performance

Remember a while back when I posted a review of a great book on performance optimization? I just found a USENIX paper by the same guy talking about how he tracked down a performance problem to discover that glibc’s malloc() implementation is optimized for system-wide memory efficiency, not performance, and how to change that.

It’s very easy going, suitable for someone with some slight knowledge of C. Recommended reading.

Update: The paper is from 2001, and I haven’t personally verified that this is still the case but it really wouldn’t surprise me at all. glibc’s behavior is definitely still the same (see the malloc() info page), but perhaps mmap() no longer results in a minor page fault. But the really interesting part of the paper to me is the process of tracking down the problem.

Update 2: Val Henson and Arjan van de Ven have written a patch to change this behavior. Here’s her patch page. I coincidentally found this out because Val’s speaking at our LUG meeting tonight.