 Welcome to Planet Gentoo, an aggregation of Gentoo-related weblog articles written by Gentoo developers. For a broader range of topics, you might be interested in Gentoo Universe.
September 15, 2009
X11 forwarding a chroot (September 15, 2009, 19:11 UTC)
I figured I’d blog this so I wouldn’t stop forgetting how to do this and possibly learn a “better” way to do this. I’m going to assume that vanilla x11 forwarding works outside the chroot as a starting point.
The process is relatively simple that I use. First I ssh into my server as a user using the -Y option like so:
ssh -Y ken@fooserver
Then I su to root:
su
Now comes the part that makes the forwarding work. We need to export the magic cookie that our current session is using so that the chroot can import it and use it. We do this like so:
xauth list > /tmp/X
This saves the magic cookie info into a file under /tmp so that we may access it later. Now its time to chroot in:
chroot /mnt/devchroot/ /bin/zsh
and I generally like to set my PS1 to remind me that it’s a chroot but is not necessary:
PS1="dev $PS1"
Now we need to import the magic cookie after chrooting in:
xauth add $(cat /tmp/X)
At this point x11 forwarding should now be working in the chroot. An easy way to test is to simply launch an xterm inside the chroot.
xterm&
If the xterm appears everything is in working condition. At this point you should probably delete the /tmp/X file for security.
|
First startup of the router (September 15, 2009, 01:36 UTC)
Tonight I tried for the first time the router in its official capacity as my main home gateway. It wasn’t really a good start to be honest.
The first problem has been the noise: my mother complained that the fans were too loud, so I wanted to go with my backup plan (replacing the main CPU fan with a fanless heatsink. Unfortunately it didn’t work out at all: there’s a capacitor in the way where the heatsink should go. Minus my intervention in form of a powerdrill over the (quite expensive) copper heatsink, it will never fit; my intervention is cheduled for tomorrow.
Sidestepped that for a moment (“Sure mom, I’ll fix it, just give me tonight to test it out!”), the next problem waiting in line was with the startup: I made a mistake in the hurry of fixing up the init scripts to actually start, and I had to take the nullmodem cable again and fix up the boot with the serial console; unfortunately I wanted to do that with my newly fixed MacBook Pro running the newly updated Snow Leopard, but the nullmodem cable had the WCH314 serial converter rather than the PL2303 (the only one I have at home that works with OS X – note to self: order some more PL2303 converters), so I had to pick up the right one again.
_Queued up to fix tomorrow I got: a very custom init script to convert the ethers file into a dhcpd-compatible list of known clients, and a fix to the pdnsd init script so that it will create the cache directory if it doesn’t exist (otherwise, the daemon will silently fail to work which is definitely not what you want!)._
The final problem is with the DHCP protocol and the modem itself. The modem is actually a so-called modem/router, running Linux itself, as well. Unfortunately, it seems like the way it handles the DHCP requests is not fully compatible with either dhcpcd or dhclient; the former will try to validate the provided address and then times out (failing back to ipv4ll addresses, zeroconf), and the latter tries to renew the lease every 30 seconds, without actually setting up the routes for the Internet connections.
On the other hand, hostapd seems to work fine and seems to handle multiple clients just fine; thanks to the fact that I finally can handle this stuff just like I want it to, I created a single, open, wireless network (I live in the middle of nowhere, whoever comes near my wifi enough to connect would be in my garden!), where the authorized clients will sit in one subnet, and are allowed to talk to each other, and the unauthorized clients are left in a different subnet, able to talk between them but not to the authorized ones, and can still connect to the internet (but only passively). The latter is quite helpful so that I don’t have to register all the laptops I get to fix, or all the PSPs that connect at my home.
For all those who thought that the whole idea was moot and that using Gentoo in such a system is too difficult: the only ebuild I had to locally overlay was file, which is now fixed in Portage and even in the stable systems; the rest worked fine with some tweaks; of course there are a few more issues (for instance a lot of packages install Perl-based scripts that are absolutely not mandatory, and I’d like for those to have a perl USE flag in the future), but the whole idea is not bogus and it woks fine. Using simply emerge --configroot and some custom configuration files, the resulting system is 164MB big, and with the due fixes to device.map even setting up grub was quite painless.
I guess the absolute final step would be to create a Rails application to manage the router, akin to the web interface of most commercial solutions. Yes I know that dd-wrt and other opensource firmware for “classic” routers have interfaces already, but if I have to write something, I’m most certainly going for implementing it in Ruby, as silly as that might sound. And to make stuff worse, if I do, I’ll be using sudo to launch the commands, getting the password via net… okay I’m definitely overthinking something I’m most likely never going to do.
And for those of you who know me and my mania with Star Trek names (even my cellphones are called Danube and Delta Flyer ), this one got a quite famous name: Deep Space 9. After all, it is somewhat of a base station to another quadrant of the net!
P.S.: Here I might as well ask some help to the lazyweb; I am planning on two things that I haven’t started even implementing yet: IPv6 support for my network and QoS for the VoIP connections (I got two in this network usually, my cellphone and the DECT phone). For the former, I did request registration with SIXXS but I missed the “no free mail providers” bit and registered with the GMail address, and was thus rejected, now waiting in the queue to see if the staff can rescue my request or not; in the mean time I have no idea how to set up IPv6 properly to avoid making myself open to the world; ideas?
For what concern QoS does anybody have some easy link that explains how to set it up? All the stuff I found skimming through seem to be trying to explain how it work more than how to make it work; and I really don’t care how it works as much as making sure that all the VoIP traffic can trump the P2P and HTTP traffic (so that if I’m downloading a new ISO of FreeBSD I can still make calls properly). Ideas?
|
September 14, 2009
Javaaaaaaargh. (September 14, 2009, 22:54 UTC)
I presume my liking of Java is known well enough ;)
So I tried a Java app today just to see how well it works. And suddenly ...
this:
*** glibc detected *** /usr/lib/jvm/sun-jdk-1.6/bin/java: free():
invalid pointer: 0x00000000420eef40 ***
======= Backtrace: =========
/lib/libc.so.6[0x3002271e46]
/opt/sun-jdk-1.6.0.16/jre/lib/amd64/libdcpr.so[0x7f8c503d2b52]
/opt/sun-jdk-1.6.0.16/jre/lib/amd64/libdcpr.so[0x7f8c503dbe05]
/opt/sun-jdk-1.6.0.16/jre/lib/amd64/libdcpr.so(Java_sun_dc_pr_PathFiller_reset+
0x43)[0x7f8c503d51c3]
[0x7f8cf52a4f50]
======= Memory map: ========
40000000-40009000 r-xp 00000000 09:00 85671701 /opt/sun-jdk-1.6.0.16/bin/java
40108000-4010b000 rwxp 00008000 09:00 85671701 /opt/sun-jdk-1.6.0.16/bin/java
41716000-42288000 rwxp 00000000 00:00 0 [heap]
So I think "well, sun-jdk is teh shizzle, I'll try ... err ... no, that one is
fetch restricted. So is this one. Err, yeah, icedtea-bin!
Guess what. Same result. Not good.
Now I'm thinking "A crash _in the Java core_? No wai!".
/opt/sun-jdk-1.6.0.16/jre/lib/amd64/libzip.so(
Java_java_util_zip_Deflater_deflateBytes+0x305)[0x7fe671a33e95]
[0x7fe66eb3d4a2]
What, a crash in libzip? That smells bad. Random code execution bad. I find
that very unlikely! How on earth does this happen?
Now, let's go bleeding edge and try to build icedtea from source. That only
takes ... sigh. About one hour on a quadcore. Grumble grumble yell moan
grumble.
And? Can you guess it? Implodes the same way. This is getting really
interesting!
Hmm. Looks like all the code this app uses is pure Java. Hmm, this makes no
sense. But ... wait ... what's that? "core.jar" - guessing from imports this is
the Processing library. That looks like a candidate. Let's have a look at the
homepage ... yes, this seems to be C++ code with a Java interface. Ok, this
could mess with things. But how?
Just injecting the .jar with the newest version doesn't change a thing. Crummy.
And I do notice that their LINUX tarball has files with the .dll ending.
File says:
PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
Uhm. Yah. No good.
But I can try to build it from source, yes?
Yes. These nice people have a svn repository I can pull from. And as a Gentoo
user I'm used to playing with such things.
If you have a weak stomach you should stop reading now!
Now, svn checkout. unzip, make, c++, I have all of those (Gentoo sei Dank!).
Let's have a look at the build syste... the build... what the ...
Ok, there's a build/ directory with linux/ and windows/ and other directories.
And in those directories are, uhm, scripts. And the eclipse editor preferences?
What the ... but I digress. Scripts. There's one called "make.sh". Good! Let's
have a look.
#!/bin/sh
Ok, so they aren't using any bash features I hope!
ARCH=`uname -m`
if [ $ARCH = "i686" ]
then
echo Extracting JRE...
tar --extract --file=jre.tgz --ungzip --directory=work
else
# echo This is not my beautiful house.
# if [ $ARCH = "x86_64" ]
# then
# echo You gots the 64.
# fi
Wat. SRSLY. I lack words to describe this. So the whole 64bit part is commented
out. Why do I think that that's not a good idea? And what is "Extracting
JRE..." supposed to mean? Noone sane would ... but ... omg. MAH BRAINZ. There's
a FULL JRE in the svn checkout.
echo "
The Java bundle that is included with Processing supports only i686 by default.
To build the code, you will need to install the Java 1.5.0_15 JDK (not a JRE,
and not any other version), and create a symlink to the directory where it is
installed. Create the symlink in the \"work\" directory, and named it \"java\":
ln -s /path/to/jdk1.5.0_15 `pwd`/work/java"
exit
Some things are not meant to be seen. Like this message, which throws up many
questions (and the rest of my lunch). At this point my motivation approached
zero (or rather, my motivation to do useful things. I had a strong motivation
to hurt some people).
And I try to run that crashy code in my i686 chroot. Guess what. Yes!
Now I do wonder. Who is to blame here?
The clueless upstream that doesn't even know how to cut a release without
including their editor config?
The Java runtime that loads any crap without doing sanity checks? (Seriously
... how can you load a 32bit .so or even a .dll into your adress space without
immediately exploding?)
Or me, who still thinks there are Java apps out there that don't make you go
insane?
So, after a few hours of tracking it down I'm again reminded why I usually
don't touch Java at all. The amount of stupid I've found today is enough to
last a small african country for a year ...
Oh, one small final note. I can't really blame people for not knowing
platform-specific things. But there's a fine line between being a bit ignorant
and being purposefully incompetent. If you don't know how to package for a
platform find someone who does. Ask on IRC, or if you don't like that on
mailinglists. But please, don't release broken stuff like that. It's very rude
and can be devastating for the mental state of people that might use your
software!
|
I just ran into “No space left on device” from Portage again. In such a situation previously I ran
# df -H
just to find that there was space left on all mounted devices! Confused I deleted a few distfiles through
# rm -vf /usr/portage/distfiles/*
and found Portage to work again magically. This time I remembered a chat with rbu: Inodes can run out, too. Checking the number of free inodes I was in trouble indeed:
# df -i -H
Filesystem Inodes IUsed IFree IUse% Mounted on
..
/dev/sda7 1.3M 1.3M 1 100% /var
..
That’s all I wanted to share.
(PS: With /var on a different partition now deleting distfiles no longer helps…)
|
September 13, 2009
Fixing libtool (September 13, 2009, 20:46 UTC)
You might have noticed that Gentoo has been lacking libtool 2.2 support for quite a while; this has been quite a problem because libtool 2.2 among other things shorten the time needed for the execution of ./configure as it doesn’t unconditionally check for C++ and Fortran, and at the same time, quite a bit of packages have been using the new libtool now.
While a lot of packages using libtools were easily worked around by removing the libtool macro files and regenerating the autotools using whatever libtool the system cam with (so that they could be marked stable even with libtool 1.5), this only worked as long as upstream didn’t decide to update the calls to libtool as they should have been doing. And more importantly, the LTDL-based packages, like PulseAudio, almost always failed to support both libtool 1.5 and 2.2, so lots moved to simply supporting 2.2. PulseAudio, well, being one of them.
So to have new versions of PulseAudio stable, we needed the new libtool stable. Piece of cake, no? Well, no, beside the packages failing with libtool-2.2 there were a few test failures reported in the stable request bug, that went lingering for a while; as much as I like autotools, I’m not the maintainer in Gentoo for any of them, since I’m not in the base system team. But since people started complaining (somewhat rightfully) about PulseAudio 0.9.9 being ancient, and asked for a stable of a newer version, on Sunday I went to look at the test failures.
The results, have been much simpler than I expected; especially counting in that nobody else looked at them in the time before, with the exception of a few users playing with the vanilla USE flag:
- one test was caused by the
elibtoolize patches — we don’t want those applied to libtool itself!
- one test failed when the system lacked German locale (it tests localised messages, and uses the German locale to do that); this was already worked around upstream by skipping it whenever the German locale is unavailable, backported to the Gentoo ebuild;
- one more test fails because… the other failed; the test that ensures that libtool works even when the maximum size of parameters is very short simply re-executes the testsuite recursively; this gives the test two error-out cases: when libtool is broken with short max parameters, and when something else is broken, not nice!
- finally, there was another test failure, that I couldn’t reproduce, but that seemed tied to
--as-needed; after some headbanging around, I noticed the way the test failed (indirect link), and indeed, this seems to be a problem with the older, stricter --as-needed behaviour; I already wrote about the softer --as-needed back in February, if you don’t know what I’m talking about;
As it turns out, getting the testsuite proper so that it can be trusted wasn’t especially cumbersome or painful; it only took half an afternoon of mine to fix most of the evident problems, and the last one is not a stable showstopper (as much as I like --as-needed, a failure in a testsuite because of it is not a stable showstopper, although I’d like to get the test fixed).
What can be noticed here is that once again we’re lacking people who actually go check the problems and fix them up. We need more people who can look at this kind of stuff, we need more users to insightfully note the bugs; if it wasn’t for Pacho Ramos and Dustin Polke who, in the bug looked up possible points of failures (icecream and the vanilla USE flag — the latter made a bell ring on my head about elibtoolize), then libtool 2.2 would probably be still far, far away for Gentoo stable. Thanks guys!
|
I’ve already written quite a bit about the fact that I’m mostly a Mono enthusiast and that I think there is work to be done to integrate Mono-based builds into autotools but I haven’t spent enough words about the integration of Mono in Gentoo as a distribution.
Indeed, the Mono team right now seem to be uniquely implemented by Peter Alfredsen (loki_val), which is of course a sub-optimal situation, since nothing should really end up being done by a single person in theory; in practice that’s more than common in Gentoo and that is one of our worst problems. And it’s not just a matter of not having the time to deal with everything, but also that you cannot brainstorm to separate the bad ideas from the good ones, and to polish them so that they can be used by more than a few people.
In paticular, there are quite a few things in the way Gentoo handles Mono that I’d love to see improved, but that I doubt would be considered unless me and someone else would join the team to discuss about them. Now, some things are definitely subjective – for instance I don’t like having upstream packages split in multiple ebuilds, especially now that we got USE-based dependencies, while it seems to be something that Peter loves to do – but others are definitely areas that need some work.
The first problem relates to where do we install Mono files: for some reason, in Gentoo we’re currently installing the Mono libraries under /usr/lib64, for AMD64 multilib systems; this is probably due to the fact that usually they also install 64-bit libraries and thus their libdir is supposed to be suffixed with 64. Unfortunately this is against what upstream uses, since Novell uses /usr/lib for it all — indeed, all the .NET libraries, the .dll and .exe files, are arch-independent, or actually platform-independent, for the most part (see this post for more details about how is it possible for .NET libraries to be arch-dependent). We’re stuck at patching lots of libraries, just like Fedora, because of that path change.
Another problems appears when you factor in the problem of ABI and .NET libraries: while Ruby, Perl and Python don’t really have ABI (at least between programs and native libraries), and Java have ABI but no ABI-definition (thus requiring a lot of manual work for the Java team), .NET policies come very near to ELF files and versioning, for which we have revdep-rebuild already. Unfortunately we have no similar tool for .NET (and it wouldn’t always work fine, given that undefined symbols in .NET are not fatal, and can easily be handled — for instance the software I’m developing only uses Outlook if it can load all its libraries).
Also, that I know of at least, there is no script to verify the properness of the runtime dependencies of Mono software, which is quite a bit of a problem when you end up packaging it yourself. I’m pretty sure somewhere there is a tool to check dependencies akin to the Dependency Walker but I really don’t know about it (if somebody has a name, that would probably be appreciated!).
All in all, there aren’t really big problems with Mono in Gentoo; they really appear no problems at all when you consider what we have yet to fix with Ruby but they still can be a bit of a bother. And they need more people for them to be fixed.
|
F-Spot problems (September 13, 2009, 11:49 UTC)
I like taking photos, although I have rarely some nice subjects outside of my garden (since I haven’t travelled a lot before, although I intend to fix this in the next few months, for instance going back to London and somewhere else too). Since most of the photos I take I want to be seen by friends and family, I resolved some time ago into publishing all of them on flickr with the pro-account, without upload limits and with full-size photos available as well.
I don’t want to go on with explaining why I prefer flickr to Picasa, let’s just leave it to the fact that I can interface to flickr with XSLT without having to implement the GData protocol, okay?
You might then expect that I was pretty upset when, after upgrading to F-Spot 0.6.1.1 I didn’t find the option to upload photos to flickr (in the mean time, even Apple’s iPhoto gained that feature!). Turns out that the problem wasn’t really F-spot’s but rather a problem with the patch, applied in Gentoo, to “fix” parallel build (in truth, it was just a hack to provide some serialisation to avoid breaking when using parallel make).
So indeed I was able to fix the Flickr exporter in 0.6.1.1-r1 and that was it: it used a system copy of the FlickrNet .NET library that was used by the exporter, instead of building and using the internal copy, so the keywords were dropped, but in the end it worked fine.
But the way I did the “fix” in Gentoo was as much as a hack as the original “parallel make fix”, so I wanted to rewrite it properly for upstream, by giving them something that merged directly, and could be really used. When I started doing so, I finally found what broke: the original “fix” stopped make from recursing into the bundled libraries’ directories on all targets, included clean and, more importantly for us, install. So the libraries were built but not installed, and that was our original problem.
The final problem, instead, is that F-Spot bundles libraries! FlickrNet is one of those, but there seem to be more, including Mono.Addins (which is already in the tree by the way), and gnome-keyring-sharp (also). And as usual, this is a violation of Gentoo policy; bug #284732 was filed, and I’ll try to work on it when I have some time; but before doing that I have to hope that upstream will accept the changes I made up to now, I would rather not do the work if upstream is going to reject it.
If you’re interested to see what I changed, or you’re an F-Spot developer that arrived on my blog, you find my changes in my git repository which is available on this server.
|
September 12, 2009
Building Stuff, the Gentoo way (September 12, 2009, 18:40 UTC)
Today's blog post shall be focussed on how to efficiently build packages.
So here's the boring part: Hardware specs.
Processor: AMD Phenom(tm) 9950 Quad-Core Processor @ 2.6Ghz
RAM: 8GB
/var/tmp/portage: 8GB SSD (2x4GB Compact Flash / RAID0 )
Storage: 4-disk SATA RAID-5 (mdadm)
Now that's quite powerful, but still you easily end up waiting some time
for things to be compiled. And of course you usually don't want to test in your
livesystem environment. So chroots to the rescue!
Currently I have 4 chroots I regularly use: i686 and amd64, stable and testing.
That makes testing things quite a bit easier, especially when you run into some
bugs that only happen on stable systems. The setup is quite simple, and because
I'm lazy I've added some small scripts that mount everything I need.
All chroots share /usr/portage and /usr/portage/distfiles. That's a bindmount -
saves lots of space and keeps them all in sync. One "special" thing is
/usr/portage/packages, that's a bindmount per chroot. So I have a packages dir
with amd64-stable, amd64-unstable etc. subdirectories, which makes searching
quite a bit easier if I ever need a binpkg.
The make.conf is as default as possible, but if you build lots 'o stuff you end
up with a few interesting mods:
FEATURES="buildpkg"
NOCOLOR="true"
PORT_LOGDIR="/var/log/portage"
PORTAGE_ELOG_SYSTEM="save"
PORTAGE_ELOG_CLASSES="info warn error log qa"
USE="X gcj objc"
VIDEO_CARDS="vga"
Why would I do that? Well, first of all buildpkg. That saves a binpkg of
everything built, which saves quite a bit of time. The whole logging thing is
very convenient if you build things with a script like this:
for i in `pquery --max -a 'x11-drivers/*'`; do emerge $i; done
Why would I do such a thing? Well, maybe someone asks me if all x11-drivers
work with the new mesa or xorg-server. And like this I just kick it off and
grep the logfiles later. Obvious, eh?
Lastly the useflags are optimized to make the toolchain capable of building
exotic stuff like gnustep or java packages out of the box. Otherwise you'd soon
be rebuilding gcc, which takes time and effort ... so let's add it as early as
possible. And VIDEO_CARDS to make xorg "thinner" - less drivers installed, and
we don't actually use the drivers anyway!
Now if I want to test a package I usually use:
FEATURES="test" emerge -1avk somepackage
which has the advantage that it uses binpkgs if available (k), shows me what
will happen and (a)sks. And -1 / --oneshot so it doesn't end up in world file,
so I can get rid of everything with a simple emerge --depclean.
Since there are so many packages where tests fail I often short-circuit and use
--onlydeps to get everything installed without having to run and fail tests
and only run the tests of the package I actually want to test.
As you can see that's quite streamlined to get as many things compiled with as
little effort as possible. To work on things I usually group one console tab in
the shared PORTDIR (which in my case is a cvs checkout) with one console tab in
the chroot. That way I can easily toggle between ebuild editing and compiling.
Usually I only have two such tab groups open because otherwise I tend to forget
things. Whenever possible I try to avoid doing two things at once in one chroot
because that can cause some headaches, it is easier for me to use a different
chroot for it. And setting up a new one is quite easy :)
A short while ago I deleted ~12000 binary packages because I was getting a few
inconsistencies - the gcc 4.3 to 4.4 migration cost me quite a lot in terms of
build time. But now I've mostly caught up, the common packages exist as
binaries for fast install and everything else would need to be compiled
anyway.
So much for the "how to compile things" part. Next week on BBC: How to make an
omelette without eggs!
|
September 11, 2009
LinuxCon 2009 tutorial (September 11, 2009, 20:48 UTC)
Somehow I got convinced to give a tutorial at LinuxCon this year, and it was
originally scheduled to be my normal "Write a Real, Working, Linux Driver"
tutorial I've been giving for the past 4 years or so (which happens to be
online here, if you are bored and need something to fall asleep to.)
But that's old-hat, as people on 4 major continents have seen it before. So,
to try to break up the boredom, I'm please to announce a change:
Write and Submit Your First Kernel Patch
This tutorial will cover the steps necessary to properly compose, describe,
and submit a Linux kernel patch. It will cover the basic usage of git, and
how that works with the Linux kernel development cycle. As part of the
tutorial, every attendee will compose and submit a patch to the Linux kernel
that will be included in the main kernel tree.
Every attendee should have a solid grasp of the C language, and know how to
build and install, a Linux kernel from scratch (if not, reading the book,
Linux Kernel in a Nutshell, free online, ahead
of time would be a very good idea.) The latest source tree, from the git
repository, of the Linux kernel should be installed on every attendees laptop
before they arrive.
Sign up on the tutorial web site if you are going to attend so I get a
clue how many people to expect. Right now I have unique material for 100
people to write new patches for, but can come up with more if needed.
See you all at LinuxCon, should be a fun time. I'm also giving a
few other talks there as well, so come and heckle.
|
In 2006 Jo Vermeulen compared Bazaar and Git performance-wise. Up to today Bazaar has a bad reputation regarding speed and from the results of Jo you see at least that Git is incredibly fast, Bazaar is usable but a bit slow on the uptake in some scenarios. Jo strictly did not use any remote operations which are hard to compare, but from some own tests I do know that Git is incredibly fast there, too, while Bazaar can be really slow on the initial clone operations. The latter fact may be history now, as the new 2a repository format has been introduced with Bazaar 1.17 and enabled by default in 2.0 (both are in Portage). It gives improved speed and flexibility while using up a bit more disk space than the old formats.
Back to what we are really looking at: The scenario. Operations chosen by Jo were:
- Repository initialisation
- Adding of a Linux kernel tree
- Diffing (not possible with current Git)
- Commit of many files (whole kernel tree)
- Diff on empty changeset
- Output of status information
- Small commit
The results were clearly in favour of Git, especially the empty diff was quite awkard for Bazaar. The same operations were done by Jordan Mantha in 2008, also including Mercurial in a follow-up.
A clever idea by Jordan was to provide time ratios, as test environments and settings were a bit different (other kernel version, different computer system). He concluded that Bazaar got faster, so did Git, but in the end Bazaar gained more ground. So now is the time to repeat the tests with current versions of both SCM systems, the following table only has the ratios of the other two guys.
You will note that Git is mostly faster than Bazaar (apart from the add operation), but the absolute time of Bazaar is more than sufficient (got faster since 2006 and 2008) and outweighed by its better user interface in my eyes. Ranked by used space Git (471MB) wins, followed by Bazaar (482MB) and Mercurial (554MB); the numbers are for the whole tree including working tree.
The used versions are given in the table, all times in seconds. For the sake of completeness, Mercurial is also listed in the table and compared to the ratios Jordan reached.
Edit: I corrected the repository sizes because Git's gc command gives a good improvement in repository size. Additionally I should add that no custom options were used, just the straight commands.
|
Task
|
Git 1.6.4.2
|
Bazaar 2.0 RC1
|
Ratio
|
Ratio Git 1.5.4.3/Bzr 1.3.1
|
Ratio Git 0.99.9c/Bzr 0.7pre
|
Mercurial 1.3.1
|
Ratio
|
Ratio Git 1.5.4.3/Bzr 1.3.1/Hg 0.9.5
|
|
Initialization
|
0.008
|
0.783
|
0.010
|
0.257
|
0.100
|
0.265
|
1 : 97.88 : 33.13
|
1: 3.88 : 1.59
|
|
Adding files
|
14.612
|
6.556
|
2.229
|
2.930
|
1.320
|
1.867
|
7.83 : 3.51 : 1
|
5.65 : 1.92 : 1
|
|
Committing large changes
|
5.270
|
52.685
|
0.100
|
0.410
|
0.440
|
41.836
|
1 : 10 : 7.94
|
1 : 2.41 : 1.68
|
|
Diffing no changes
|
0.110
|
0.182
|
0.604
|
0.007
|
0.00025
|
0.731
|
1 : 1.66 : 6.65
|
1 : 138 : 3.91
|
|
Getting repo status
|
0.313
|
0.818
|
0.383
|
0.305
|
0.022
|
0.630
|
1 : 2.61 : 2.01
|
1.14 : 3.74 : 1
|
|
Small commit
|
0.338
|
1.282
|
0.264
|
0.044
|
0.058
|
1.278
|
1 : 3.79 : 3.78
|
1 : 22.7 : 4.82
|
|
And sometimes it's my fault (September 11, 2009, 12:18 UTC)
Picking up from my previous post I finally was able to install a boot loader on the compact flash card, yuppie! Indeed it was quite easy to do so with grub, after Zeev made me notice that yeah there is nothing wrong with it, it’s just a matter of configuring it properly.
Unfortunately starting up everything properly wasn’t really a cakewalk, but it was mostly my fault:
- first of all, I created
grub.conf and not menu.lst, which of course wasn’t picked up by grub;
- then I used the wrong device for the root parameter (
/dev/hda1 rather than /dev/sda1);
- I built-in ext3 support but formatted the card as ext4 (non-journaled);
- I forgot to create
/dev/console so I couldn’t see OpenRC startup output (on a related note: if you pass twice the console parameters to the kernel, like I do on Yamato, /dev/console only outputs to the second one not the first, why? Either I forgot to configure it properly, or I should look into fixing this into the kernel);
- I set up the serial getty with the wrong line speed (9600 while both grub and the kernel use 115200);
- I forgot to add a password for root (and also a little note:
ROOT= merges don’t create users and groups properly, but this is not Gentoo’s fault, rather shadow, that manages Linux authentication databases, don’t support accessing files that are on a different root — I think FreeBSD utilities do handle that though);
- hostapd failed to start because it couldn’t find
libnl.so (broken DEPEND/RDEPEND assignment in the ebuild, I fixed that for hostapd and a bunch of other ebuilds making the same mistake; I also opened a repoman check request so maybe in the future it can be avoided)
Now I finally got somewhat closer to what I need to do, but it’s still not yet complete. I hope to be able to get it as main router soonish. I’m also going to reduce the load on hostapd in the future since I finally went around buying some cat5e cable to wire up my house (FTP, since I need to use the same connections as the electrical system, sigh). And on that note I added some of the hardware I still need to complete the task to my wishlist .
Getting this to work is giving me quite a bit of insight in what we should probably be doing to support more properly embedded system cases like mine, and I don’t think this is anything extremely complex, like some want us to think; it only requires starting to accept some different changes, for instance by spitting the meaning of system from “what is inside the stage3” so that we can actually have stuff in the stage3 that is not in system and that can be removed with a simple -C (or --depclean after removing what uses it), instead of having to deal with profile-mucking files. If that was the case and the system set was really minimal (like Reiman suggested, a minimal POSIX set), then we could be saying “okay, that package is in system so I don’t really have to depend on it”.
|
gentoo-dev for Gentoo users (September 11, 2009, 00:56 UTC)
Maybe I’m the last to stumble upon this… anyway: Nabble is monitoring gentoo-dev offering a search and browse interface and two feeds for it: “new message” and “new threads”. I was thinking the “new threads” one could be a great tool to Gentoo users that are not interested in every single mail (I currently am) but still would like to keep on track of the big picture of gentoo-dev. I would have needed just that for the Google Summer of Code mailing list.
|
"/usr/portage is my overlay" (September 11, 2009, 00:33 UTC)
... and I wish more devs would focus on getting things in the tree. The proliferation of overlays is really nice because some have quite exotic stuff, but I find it
frustrating to have to use 12 overlays to get all the apps I want/need. So please, if you can, consolidate. Push things to sunrise instead of your private overlay. And
if it works (even it a bit ugly) push it to our main tree. Mask it if you don't like it. But please try to avoid handing users this nice puzzle game with 12 incompatible
overlays that break random other stuff ...
|
September 10, 2009
Small status update (September 10, 2009, 20:31 UTC)
I've been trying to fix stuff as good as I can. Still there are tons of trivial bugs, so if something doesn't compile I usually just leave a note on the corresponding
bug and continue with something else. It's kinda rude, but that way I get more fixes per timeunit done.
Y'all might have noticed me bumping postgresql and samba. Those were lagging behind so much, and many people use them - so I spent some time getting us up to speed
there. Still lots of minor issues, but at least we have something from this decade now. Amusing thing: Just as I started bumping postgresql to 8.4 upstream reported a
few security issues and bumped it. So I spent quite some time compiling postgresql 8.0 8.1 8.2 8.3 and 8.4 - 7.4 needs some more attention, but then who uses something
that old ;)
I'm getting quite frustrated with test failures. In my chroots I use FEATURES="test buildpkg" so during the initial compile the tests are run, then reuse the binpkg to
save time. With gcc 4.4.1 I had so many linking inconsistencies I decided to drop my binpkgs and start "from scratch". That has slowed me down a bit because I compile
more, but it also makes me find lots of seriously messed up tests. Don't even think about suggesting that for future EAPIs as default. It's a retarded idea that does not
work.
The amd64 chroot has close to 1k packages already after the gcc 4.4.1 upgrade, so I seem to build a bit of everything now. Lots of bumps, especially in dev-python.
The quadcore definitely pays off for that. If anyone wants to motivate me ... I could use some more harddisks. Never enough of those ;)
I just bumped virtualbox to 3.0.6, a day after the announcement. I wouldn't be able to do that without helpers like Alessio who feed me things. They allow me to reduce
my role to pure integration testing, so I can cover more ground, they get their favourite packages fixed and everyone profits. If you want to get involved feel free to
bother me, that usually has a non-null chance of getting bugs fixed. We still have about 10k open bugs, so there's always
something to do. And I can only fix what I'm aware of (same goes for everyone else. File bugs. Write patches. Make it easy for us to fix stuff.)
While I'm spending most of my time at the tip of bleeding edge these days I am aware of the lag with getting things marked stable. That's mostly a manpower issue, so if
you have some spare time and want to improve things that might have the largest payoff at the moment. And don't think you're not qualified - they let n00bs like me have
access to the tree, so you're qualified for stable testing.
So what's next? Things are getting into a better shape, but there's always room for improvement. Upstreams release a constant trickle of new stuff which we have to
integrate. That takes time and we need to be aware of it, so if it hasn't been bumped after a week or so feel free to file us a bug. If you have ideas how to make things
better don't hold back - maybe it's an awesome and helps a lot. Help us help you!
A worthy goal?
One bug a day. I challenge you to either open or fix one a day - doesn't take much time, but if we get 30 people doing it for a year that'd be the amount of open bugs we
have. Or 300 people for one month ... Imagine what that'd do to your Gentoo! And now stop dreaming and go fix stuff.
|
gentoo-sources-2.6.31 released (September 10, 2009, 01:22 UTC)
I just committed gentoo-sources-2.6.31 to the portage tree.
Check out Kernel Newbies for the ChangeLog.
|
September 09, 2009
This was originally sent to the linux-kernel and driver-devel mailing lists.
Based on some of the feedback I got, I figured I should post it here as well.
Here's a summary of the state of the drivers/staging/ tree, basically
what will be coming in the 2.6.32 merge, and what the status of the
different drivers are so far.
First off, drivers/staging/ is NOT a dumping ground for dead code. If
no one steps up to maintain and work to get the code merged into the
main portion of the kernel, the drivers will be removed.
As proof of that, the epl (Ethernet Power Link) driver will be removed
in the .32 kernel, as no one is working on it, the upstream developers
never respond to my emails, and no one seems to care about it.
The pata_rdc driver is also going to be removed, as there is a "better"
one being merged through the libata tree for this hardware.
So, taking the drivers in chunks, here's some that have had active
development on for the .32 release:
rt* wireless drivers. Bart has done amazing work merging all
of these together into something much better than they
originally were. And even better, they still work! Great
job Bart!
rtl* wireless drivers. Again, Bart has been doing great work
here.
wlan-ng driver: a bit of work here, but this seems to be
dropping off, with the loss of a test platform for the driver.
Hopefully someone has a device around and can help out here.
comedi drivers had only a bit of work done, lots more is
needed here, let's not loose the fact that this is getting
closer to a mergable shape.
android drivers have had a bit of work done, but upstream
seems to not care at all about what is going on here, as they
are working to forward port their code to the 2.6.29! kernel.
{sigh}. If this keeps up, the drivers will be dropped in the
2.6.32 kernel release.
Note, Pavel has been adding some of the Dream hardware
drivers, which are separate from the core Android drivers. I
have no objection to those, but they should work to get merged
to their "correct" places in the tree in another release or
so.
w35und driver. It's slowly being worked on.
echo driver. This one is now in good enough shape to merge
into the main kernel tree. I'll send out review patches soon
for this.
eth131x driver. Alan Cox is working on fixing up the issues in
this driver. Hopefully it will get into mergable shape soon.
New drivers that will show up in the .32 kernel release:
vt66* wireless drivers. These VIA drivers are being actively
worked on to get into a much better shape. Nice job.
new rt3090, and rtl8192e wireless drivers have been added and
worked on cleaning up issues involved in them.
hv (Microsoft Hyper-V) drivers. Over 200 patches make up the
massive cleanup effort needed to just get this code into a
semi-sane kernel coding style (someone owes me a bit bottle of
rum for that work!) Unfortunately the Microsoft developers
seem to have disappeared, and no one is answering my emails.
If they do not show back up to claim this driver soon, it will
be removed in the 2.6.33 release. So sad...
quatech_usb2 driver. I don't know if it quite works, but
someone is developing it, so I'm not complaining :)
VME bus drivers. Yeah! They are progressing nicely.
SEP and RAR drivers. Alan Cox has been working on cleaning
these up a lot.
IIO (Industrial I/O), these are new drivers that are being
actively worked on.
pohmelfs and dst. It seems that DST is dead, so I think I
will remove it in .33. pohmelfs is under active development
outside of the tree, and hopefully patches start moving in
here to help out with keeping it up to date.
cowloop. Yes, another COW driver! :) Seriously, this does
things that DM can't do, so it might be useful. The upstream
developer is interested in getting this merged properly, and
is working on cleaning it up.
Drivers not being actively worked on:
otus This is sitting here until a "real" wireless driver
will be merged through the wireless tree. Hopefully that
happens soon.
agnx wireless driver. No one seems to care about it. If no
one steps up soon, it will be removed in .33.
altpciechdma Upstream developers seem to have disappeared.
Again, if no one steps up, it will be removed in .33
asus_oled This only needs minor cleanups to get merged
properly into the main tree. If someone wants an easy
project, this would be it.
at76_usb wireless driver. Again, no one working on it, it
will be dropped in .33.
b3dfg I really do not think anyone cares about this. again,
will be dropped if this is true in .33.
cpc-usb After the initial flurry of development, everyone
seems to have run away. Was it the fact that I hadn't
showered in a few days? Again, will be removed if no one
comes back. And I am wearing deodorant now...
frontier A nice driver, again, should not be hard to get
merged into the main tree, if someone wants an easy project...
go7007 Ugh. Unless someone steps up now to take this over,
it's going to be removed in .33. There is no hardware made
with this anymore, and no specs around that I know of, and the
code isn't the nicest in the world.
heci A wonderful example of a company throwing code over the
wall, watching it get rejected, and then running away as fast
as possible, all the while yelling over their shoulder, "it's
required on all new systems, you will love it!" We don't, it
sucks, either fix it up, or I am removing it.
line6 Another nice driver that should be simple to get
merged. Please, if you are looking for something to do, this
is it.
me4000 and meilhaus They work on the same hardware, and they
duplicate the existing COMEDI drivers. Someone thinks that
custom userspace interfaces are fun and required. Turns out
that being special and unique is not what to do here, use the
COMEDI drivers instead. These will be removed. Heck, I'll go
remove them for .32, there is no reason these should still be
around, except to watch the RT guys squirm as they try to
figure out the byzantine locking and build logic here (which
certainly does count for something, cheap entertainment is
always good.)
mimio Another driver that should be simple to get merged.
Someone just step up to do this please, there are users of
this hardware out there.
p9auth While it seemed like a good idea, I don't think that
anyone actually uses this. It will be removed in .33 unless
someone comes forward.
panel Another one that should be simple to merge. Anyone?
phison What? I thought I asked for this to be merged a
while ago, sorry about that, no reason it should still be in
staging anymore, it's just so small it slipped through the
cracks...
poch A long-suffering company is enduring the slowest
developers in the world here. Hopefully the code will be
replaced with a UIO driver, but testing the userspace side
seems to be difficult and slow. I have to give Redrapids
major credit for being patient here, they are being amazing.
rspiusb A weird, very expensive camera, from a company that
does not want to release the specs, and wants custom userspace
interfaces. The code hasn't built since the 2.6.20 days.
I'll go delete it now from .32, it doesn't deserve to live as
no one cares about it, least of all, the original authors of
the code :(
slicoss and sxg These are being developed by a consulting
company for the main producer of the chips. Yet they seem to
have disappeared half-way through the job. Odd. Hopefully
they come back soon.
stlc45xx Another wireless driver that no one seems to care
about. So sad. I guess no one will miss it when it goes away
in .33.
udlfb Video over USB, it doesn't get anymore whacked than
that. This is still being developed but the developer doesn't
like to do incremental updates for some odd reason. Hopefully
he pops up again with an update. But for now, it is quite
workable for a number of developers.
usbip USB over IP. I guess if you ran video over IP to your
USB device, that would be more whacked than just video over
USB. This did get one big update during the .32 development
cycle, hopefully the developer can come back again when they
get some free time to continue working on it. Rumor has it
that some major distros are starting to rely on this code, so
it would be nice to get their help to get it working better...
That should cover all of the 600+ patches in the staging tree for the
.32 kernel merge, and the existing drivers/staging/ tree. If I missed
anything, please let me know.
|
Not always Gentoo's fault (September 09, 2009, 17:39 UTC)
Continuing the story of building my own custom-tailored router, I have to say that sometimes, the problems present are nowhere near being Gentoo problems: they are upstream problems.
Among these problems you can find for instance ntp forcing readline (my router would work perfectly fine without readline), and lilo not playing nice with installing on an USB compact flash drive without trying to guess what the BIOS will say about it to begin with.
Indeed, most of the problems I’m likely to encounter are due to brokenish software that is not designed to work in those cases; of course this is no good excuse for ignoring the issues altogether: indeed we should most likely fix those things and patch it out (for instance see automagic dependencies which we have documented properly).
And for those who asked, this is a photo of the current status of the router:

The case is one designed for HTPC; it seemed the best choice to have something that looked at least nice: the bad side is that it has some faux-DVD drives on the front, the good side is that it has the USB ports hidden by default. The mainboard is an ASRock, no clue about the specs themselves, it has a 2.8GHz Celeron CPU, an on-board Via Rhine network card, an Atheros AR5008 wireless card and three Sundance network cards (I bought four to make sure that if one is faulty I don’t have to have three network drivers loaded — I would have preferred having a single model of network cards, but it’s difficult to find the name of the chip on whatever card when you buy the cheapest available in the shop). Since I’m currently considering wiring up my whole house (and possibly the garage so I can actually move my servers out there) with gigabit cables, I might switch one of the cards for the Intel Pro/1000 I have at home so that it would talk the right speed. Inside the case there’s a D-Link ADSL2+ pass-through modem, connected to the Rhine; of the other three cards, one I’ll use as console, and one is going to be connected to the IP phone downstairs.
Also, since this system sounds like the perfect case for it, and the shop opened just today, I wanted to get an entropy key for it (no input from the system, no harddrive, and I’m going to use this with OpenVPN as well). Unfortunately it seems like I was the first European VAT-registered customer, and the procedure isn’t exactly up to speed, yet. Hopefully once this is cleared and I’ll get the keys, I’ll be packaging the software to use them under Gentoo (since I’m going to use it in the router, I’ll be getting two, one connected to Yamato so that I have a test source).
Right now, I’m trying to find how to make syslinux boot my flash drive since lilo fails and I don’t think I want to try with GRUB… SysLinux would be an option, but it looks to me like extlinux (for using with ext2/3/4 partitions) works as intended either. If somebody has another idea, I’ll be happy to know!
|
Yesterday, I finally found the bug which prevented neatx from working on my
system (thanks upstream for the debugging), so in your next portage sync,
you'll find net-misc/neatx-0.3.1_p43 ready for your testing! If you don't need
vnc/sound/printer tunneling or load-balancing, neatx is easier to set up than
freenx and works great out-of-the-box. Thanks again to Mike Auty (ikelos) for
his work on the ebuild.
Another work-in-progress for me these days is a source ebuild for chromium
(open-source version of Google Chrome). A binary version (chromium-bin) has
been available in portage for some time now (with amd64 support added
recently), but source version ebuild had some problems. Now my current version
(available in my overlay for the curious) has fixed most of them, including use
of system libraries, makefiles use instead of scons, --as-needed support, ...
So why is it not yet in portage? Well, for now the tarballs from upstream are
not yet available, so you won't go past the fetch phase These should be
available soon, once available you can expect chromium to quickly land in a
portage tree near you.
By the way, if chromium crashes at startup for you (either binary or source
version), they finally found the cause: you are probably using nvidia-drivers
and nvidia opengl (via eselect opengl). However the libGL.so from nvidia
overrides dlsym/dlopen (dynamic linker functions) with broken replacements,
breaking applications relying on these functions! Chromium devs implemented a
workaround, available for -bin in versions >=4.0.208.0_p25708, but expect
some breakage in time-related functions. All the gory details are here:
http://code.google.com/p/chromium/issues/detail?id=16800
And now to change a bit from technical talks, I wanted to say a big "thank
you" to all of you Gentoo users who spend time filing bugreports, fixing,
writing or rewriting ebuilds, debugging and finding the cause for all sorts of
bugs (finding that some dynamic linkers break with specific video cards for
example...), in short to all of you who work to make your distro a better one!
And recently, a special thanks to Bernd Lommerzheim, who helps me a lot in
proftpd maintenance, up to providing an entirely new ebuild for latest version,
with lots of fixes and new features.
|
It seems like somebody read my previous post about using Gentoo for building embedded-system filesystems as a mission that would increase the complexity of the work for Gentoo, and would waste time for no god reason. And if you look at the post, I do call that bullshit, for a good reason: proper dependencies are not going to increase complexity of either ebuilds nor the work needed by the packager, they are only extensions to the standard procedure.
Let’s take, as example, the zlib package: it’s part of the system set and some people say that this is enough to ignore adding it to the dependencies. Why? Well that’s a very good question: most of the times the reason I’ve been given was to avoid cyclic dependencies, but given zlib has no dependencies itself… Instead, what do we gain, if we actually add it to all the packages that do use it, you have proper reverse-dependency information, which can be used for instance by a much more sophisticated tinderbox to identify which packages need to be rebuilt when one changes.
At the same time, the correct depgraph will be used by Portage to properly order zlib before any other package that do use it is merged; this is quite useful when you broke your system and you need to rebuild everything. And it’s not all, the idea is that you only need to specify dependencies on system packages only for other packages possibly in the system set; the problem is: how can you be certain you’re not in the system set? If you start to consider that pambase can bring gnome in the system set, it’s not really easy, and it’s a moving target as well.
So I beg to differ regarding complexity: if you simply follow the rule if it uses foo, it depends on foo the complexity will be reduced over time rather than increased: you don’t have to check whether foo and your package are in system set or not. The only two packages that QA approves of not depending upon are the C library and the compiler: all the rest has to be depended upon properly.
And in respect of the already-noted bug with distutils eclass: the same problem exists for other eclasses like apache, webapp and java, that would add their own dependencies by default… but have an explicit way to disable the dependencies and the code or tie them to an USE flag. You know, that is not complexity; that is a properly-designed eclass.
|
texmfind, finally updated (September 09, 2009, 08:12 UTC)
Originally texmfind has been written by a Gentoo user to find out which TeX file (LaTeX, too) is available in which package so you can emerge the correct one. Unfortunately it has not been updated for TeXLive 2008 and so looses some functionality, although some entries are still valid. Now I forked the project and updated it. The ebuild 2008.1 is already available in testing. Check it out, a stabilisation should happen soon.
|
September 08, 2009
Nokia switched their Qt git master to version 4.7 recently, creating a new branch for 4.6.
They also created two new branches, master-stable and 4.6-stable. Commits pushed to those branches are tested in Nokia’s testing farms, ensuring that they’ll always build.
The Gentoo Qt team provides various live Qt ebuilds in our official overlay, qting-edge [1]. These ebuilds now include x11-libs/qt-*-4.6.9999, building code from the 4.6 Qt branch, as well as a new USE flag called stable-branch, available (and enabled by default) in 4.6.9999 and 4.9999. This USE flag enables/disables the use of the stable branches, allowing you to choose between last-minute code VS tested, known to compile code.
Either way, its bleeding edge!
If you need help, leave a comment or visit us @ Freenode IRC, #gentoo-kde
[1] to install qting-edge, make sure you have layman installed and configured, then run layman -a qting-edge.
share this post:
|
I’m finally working on setting up my home gateway with a Gentoo-based system, as I wrote about some time ago, since I didn’t find anything that looked even barely like what I wanted, off the shelf.
But since the router is going to be working on CF flash drives, I’m also using some tricks to get it up, and this is binging me to find even more problems within Gentoo, but that’s as usual and to be expected, isn’t it?
The first problem is that I don’t want to have superfluous stuff in the router: Portage (I don’t want to live update it), Perl, Python, autotools, other build-related tools, all that stuff should not be there at all. So the obvious is to buil dup my own profile to reduce the system set. This is actually quite boring and a problem in my opinion. Given the stage3 is system itself, to have autotools in the stages (which we do want) we need to have them in system… but they shouldn’t be.
The second problem is that not having either Portage nor autotools in the final system means that the dependencies over Python and Perl of the rest of the packages need to be perfect_: no more and no less. Unfortunately sys-apps/file depends on Python unconditionallybug.cgi?id=284051 and util-linux installs a Perl script without depending on it (or having a perl USE flag). If the runtime dependencies are not properly expressed, my router won’t work as intended and that’s going t make me sad, depressed, and probably very angry with those who don’t express dependencies fully. And C++ dependencies will also be a problem.
I’ll be posting some tips and tricks soonish, for now I’m still working on defining what should I add to my router, and how. In particular I’ve been able to do stuff like enabling graphite n the GCC used for building, but not enabling it on the gcc needed on the system, so that it won’t bring in ppl and cloog-ppl, in a quite decent fashion.
Again, being able to prepare this kind of systems programmatically needs more work than just a few tricks and a lot of fighting so you probably will read more about this, and find more bugs about this in the future.
And as a bottom-line: since this is working mostly on stable tree, I also noticed that a few packages that should have been stable already weren’t… so I started opening a few stable requests for my packages; I really need to find a way to make sure they don’t excessively slack off…
|
September 07, 2009
Knitting and Gentoo (September 07, 2009, 19:00 UTC)
Ravelry is a knit and crochet community. In an interview with Tim Bray of ongoing, their site engineer Casey Forbes says: “We have 7 servers running Gentoo Linux and virtualized into a total of 13 virtual servers with Xen.” On these servers they use nginx, HAProxy, Apache, MySQL, and of course Ruby on Rails (with Passenger). And how they use it!
We’ve got 430,000 registered users, in a month we’ll see 200,000 of those, about 135,000 in a week and about 70,000 in a day.
We peak at 3.6 million pageviews per day. That’s registered users only (doesn’t include the very few pages that are Google accessible) and does not include the usual API calls, RSS feeds, AJAX.
Actual requests that hit Rails per day is 10 million.
900 new users sign up per day.
The forums are very active with about 50,000 new posts being written each day.
Thanks for sharing the details, it’s what keeps us developers running. At least those as vain as me.
|
September 05, 2009
The Ruby packager blues (September 05, 2009, 21:32 UTC)
Okay after ranting and implementing it’s time for crying. Because this whole day of work depressed me in a way that I wouldn’t have expected to be possible for Free Software.
Indeed, even though I added support for using the gems as base for the installation of packages in Gentoo, this does not solve one of my most important issues: tests that weren’t run and that’s bothering me.
It bothers me because for instance, running gruff’s tests, I found two bugs that are now in github (but not yet merged in the original master). It bothers me because it would take very little extra steps to get the things working properly, and nobody follows it.
If I started listing all the problems I found and I needed to cope with or workaround, I’d probably be feeling even more depressed. So I’ll just try to repeat some of the rules-of-thumb that you should follow:
- please try to provide tgz as well as gems: while even Gentoo can deal with gems at this point, it still requires a double-extraction;
- provide the tests and the framework to run them; without those, it’s difficult to understand whether the code works as intended or not;
- always good, but especially if you don’t release the tgz: tag your releases! This allows to go look at eventually missing files (in tgz or gem) for executing tests, or to look for further changes that might have fixed things; if you use github, providing proper tags also provides automatic tarball downloads, so you don’t have to do anything else than provide the gem and tags;
- try your own tests before releasing so that you’ll avoid releasing code that does not pass the tests in the first place; this is true also when the bugs are in the testsuite rather than in the code logic.
Unfortunately, the more I try to package software for Ruby, the more I see that these rules are blatantly ignored and people just release out whatever crap works for them. I’m seriously surprised that this stuff can be used in production, most of the times!
And if you feel like my work is worth something, and you’d like to say “thank you”, you can always look at my wishlist which also has useful technical elements; for instance I’d really like to read that OpenMP book so that I could learn some new tricks for making software behave better with multicore systems.
|
More on Ruby, JRuby and Gems. (September 05, 2009, 17:49 UTC)
Okay, after my previous rant about ruby I’ve decided to get to work and try to fix at least part of the problems. The first was getting rmagick, and thus gruff, to work on Ruby 1.9. The solution, obviously, was to use ruby-ng.eclass. And this brought me at extending it further.
The good new is that now ruby-fakegem.eclass can unpack gems! This means that we have an almost total coverage: software not available in tarballs can be fetched and unpacked as gem and then installed with a fake gem. This does not seem to comply with what Hans wanted, but gives us enough space for improvement in the future. This also means I can finally package a few more extensions that I had to ignore before, like hoe for instance.
I also wanted to package an updated version of jruby-openssl (and looking at the downloads I also noticed there’s a rmagick compatible package for JRuby there, I’ll have to look at it so maybe I can do all the work in a single pass with JRuby itself); the new versions actually come in tarball as well as gems (the tarball is still preferred, it’s one step less after all). Unfortunately it turns out that both the gem and the tarball are missing the Rakefile for the tests (which makes it quite impossible to get the tests running). It also comes with two bundled jar for dev-java/bcprov and dev-java/bcmail, but that’s for another moment.
But to test the git version of jruby-openssl (spoiler: it still does not work!), I ended up having to package hoe, and from that rubyforge, which was a stopping bucked before, as it doesn’t come in tarball form… which is no longer a problem! Unfortunately the testsuite of hoe (oh did I say that the gems installed this way can run test and don’t install them any longer? oh yeah it’s sweet!) broke, seems like for an internal error in ruby 1.9 itself!
/usr/bin/ruby19 -w -Ilib:ext:bin:test -e 'require "rubygems"; require "test/unit"; require "test/test_hoe.rb"'
Loaded suite -e
Started
....
Finished in 0.172264 seconds.
4 tests, 34 assertions, 0 failures, 0 errors, 0 skips
/usr/lib64/ruby19/1.9.1/pathname.rb:270: warning: `*' interpreted as argument prefix
rake aborted!
Command failed with status (1): [/usr/bin/ruby19 -w -Ilib:ext:bin:test -e '...]
(The pathname warning is what is causing the error further down the road).
So while this is no real improvement for my job task; this is actually a good improvement for Gentoo and Ruby; now if my fellow devs wouldn’t mind helping me polishing out the eclasses and testing the overlay then we might even get this in the tree one day so that all users could make use of the new shiny support for Ruby 1.8, Ruby 1.9 and JRuby at once.
The following step would probably be supporting even other Ruby implementations, has anybody said Ruby EE, Rubinius or IronRuby? (Indeed it’s theoretically possible to support all of those as well, as far as I can tell, as long as they are commandline-compatible with the original Ruby).
|
September 02, 2009
g-CTAN has made...nearly (September 02, 2009, 16:47 UTC)
Now a live ebuild for g-CTAN has been added to the tree as I now want some real life testing: Please go and emerge app-portage/g-ctan. g-CTAN is similar to g-cpan which creates an ebuild for packages from the Comprehensive TeX Archive Network (CTAN). The usage is easy, just call the --help option to learn more after you emerged it. There are two posts by me, that explain some more details about it. There are still rough edges, but please don't hesitate to report bugs either over Gentoo Bugzilla, Launchpad or email. The one thing I still would like to solve is to filter out all packages from the listing that have not been updated since the release of TeXLive.
|
kde 4.3.1 released, in gentoo (September 02, 2009, 12:42 UTC)
UPDATE: 4.3.1 is now unmasked for amd64/x86 and the masking issue has been fixed by jmbsvicetto, so we won’t have this issue again in the future! The post below is updated to reflect on it.
The first bugfix release for KDE 4.3, 4.3.1, is now available.
You can read about the improvements it brings here.
Ebuilds for KDE 4.3.1 are already available in gentoo for architectures amd64 and x86.
To upgrade from 4.3.0 you simply need to
emerge --sync
emerge -avDuN world
This should be a straightforward update for most people.
If you’re upgrading from an older KDE 4 version (or clean-installing KDE 4 on a stable system) you should keyword-unmask KDE 4.3 by following this post’s instructions. You’ll also find some troubleshooting hints there.
The ebuilds are hard.masked for all other architectures due to bug 280312.
As usual, if you have any issues, feel free to leave a comment or visit us @ IRC: freenode/#gentoo-kde
share this post:
|
September 01, 2009
One thing I'm noticing a bit of confusion on in general online is what the docs or me mean when it says to install the ALSA sound card drivers as modules. So, lemme clarify real quick.
There are two *places* to get the drivers from: either in the kernel, or from the alsa-driver package. But, when using the kernel drivers, like many other drivers there, they can either be compiled in statically or loaded as modules as the computer is booting up. So, there are actually two ways to install the drivers as modules, which could be a bit confusing.
So, a quick list:
1) In-kernel drivers (statically compiled)
2) In-kernel drivers (modules)
3) External drivers (alsa-driver package, modules)
The first two are the officially supported methods by the ALSA team, so I'll quickly focus on those two. Now the, recommended way to do things is #2 -- select them as modules in the kernel and build them that way when you are setting up ALSA for the very first time. Why? Well, the answer is really that it gives you a lot more options.
Let's say, for instance, that you aren't sure which driver your card requires. So, you flip on a few that look like it's the right one, and set them to be installed as modules. Once they are there, you can run alsaconf, which is a part of alsa-utils. The alsaconf program will do the detective work for you by looking at the modules that are available on the system, and the cards that you have on your box, and then load the modules and update your module list so that they will load up the next time you boot your box as well. Pretty simple, right? It sure is a lot faster than compiling one driver in the kernel, rebooting, testing if that works, trying a separate one, rebooting, etc.
Another reason is that there may be some options you need to pass to your module. This is rare, but it does happen. If you are loading them as modules already, then it's just a simple tweak to do change the settings, again, without having to reboot and re-test everything.
So, that's the reason we recommend you load them as modules. It's just gonna make life a bit easier the first time around, as you are trying to determine what you have. Once you know what driver is required, you can always go back into the kernel and compile it in statically, and be done with it. There's no reason to keep it as a module, unless you want to.
Finally, a quick note about the alsa-driver package. It's often said that it is unmaintained, and the reason for that is because I, personally, am the only one who is keeping it on life support. That is, I'm the maintainer, not the ALSA herd. It's only in the tree as a convenience to people who need to use it for whatever reason. Some of the reasons could be that you needed to see if the latest release from upstream is fixing some issues of yours, so you'd use the live ebuild. Or, you may want to use an older kernel but still keep the newer version of ALSA. Or whatever. The problem, though, is that I don't have the technical skills to troubleshoot your issues if something goes wrong. My solution every time is pretty much going to shrug and say "Sorry, that sucks. Try the live ebuild, or something else." It's not that I don't want to help, it's that in this case, I can't.
Anyway, that's it ... I hope that clears up a few issues. When I have time, I'll be revising the ALSA docs. No idea when that'll be though. Don't hold your breath. In the meantime, if you have issues, my recommendation is to post on the Gentoo Forums in the Multimedia forum and ask for some help, or there's always bugzilla. Chances are you'll get a response faster on the forums, though. Good luck, and God speed.
|
alsa 1.0.21 released (September 01, 2009, 13:33 UTC)
I caught the news yesterday via Phoronix that a new version of ALSA libraries and utilties came out. I went to go bump them in the portage tree, but Tony (chainsaw) already beat me to it. Thanks, man!
Looking at the detailed changelog, there are a lot of updates for the *hda cards, which is just what the world needed. I haven't ever had any problems with them myself, but they are the de facto chipset on desktop motherboards right now, and it's awesome to see support getting improved. Hopefully it'll fix some of the countless issues Gentoo users are experiencing.
|
August 31, 2009
History
When I looked at the state of graphical IMAP e-mail clients several years ago,
I was not really impressed. KMail from then-current KDE3 did not do a proper
job for me (numerous IMAP bugs like its inability to work as about every other
IMAP client when deleting messages, bug 26986 -- there were
more issues than that, but years have left my memories washed out a bit),
Thunderbird would crash for me every once a week, at least, and I just
happened to like KDE applications more than Gnome stuff, so I did not spend
much time looking at Evolution. Many MUAs looked like a classic generic
e-mail clients designed with POP3 in mind with IMAP added late in the
development cycle, while others supported wide range of IMAP features, yet
lacked in the GUI part of the problem. In short, using none of these
applications made me feel happy.
A programmer not feeling happy is a receipt for disaster. I was about to
finish my high school, so I had plenty of time at hand. I was experimenting
with Python, so that seemed like a natural implementation language, too. In
the end, I started a project called trojita whose remnants could
still be seen in an abandoned SVN
repo.
Coding in Python was fun. I tried several different approaches to the design
of my pet program, I was playing with technologies I had no experience with, I
even showed my "IMAP library" at my final exam as an example of a project I
made. It did not have much functionality, in fact, only the IMAP parser had
been completed, but it was an educative experience nonetheless and I passed the
exam.
After some time, however, I discovered Qt and C++ and felt in love. I
joyfully returned to the realm of statically-typed languages and suddenly felt
a lot better. I began porting my Python library to Qt/C++. It was not really a
port, rather a first complete rewrite of my project. Anyway, it did not take
long and the C++ version suddenly offered more functions than the old Python
branch, with unit tests as a nice added bonus.
Qt's Interview architecture, the Model/View classes, seemed like a decent
implementation of the MVC patter I was poking around to use. Several months
have passed, and suddenly trojita was able to show a tree of
mailboxes stored on a remote IMAP server, listing messages contained therein
and showing message bodies. I choose to finish the program as a part of my
bachelor's thesis, and ultimately, I succeeded.
The Code
So, in a few blogposts starting with this one I'm going to introduce a new Qt
IMAP e-mail client to the world. I hope I will get some attention and folks
looking at the code and trying to run the application. I'd love to get some
feedback on program design, code quality and general usability as well.
The code is hosted at Gitorious, and
a bachelor thesis about
Trojitá (PDF) (mirror)
which explains its design and compares it against several alternatives is
available, too. Perhaps the most interesting part is Chapter 3 which describes
the architecture of the application, and Chapter 4 in which I compare Trojitá to
several other MUAs on the market. All information about Trojitá are also
aggregated on Trojitá's homepage (any
web designer listening? :) ). Here is the obligatory screenshot:
Trojitá's Features
Some highlights of Trojitá are:
- A pure Qt4 application with no additional dependencies
- Robust IMAP core implemented using Qt's Model-View framework
- Standards compliance is a design goal
- Support for bandwidth-saving mode aimed at mobile users with expensive
connection
- IMAP over SSH -- instead of going over an SSL socket, the server could be
accessed via SSH
- On-demand body part loading
- Offline IMAP support (you can access data you already have; there's no
complete "offline mail access" yet, though)
- Safe dealing with HTML mail (actually more robust than Thunderbird's)
The thesis was completed several months ago. Since that time, I've removed
the dependency on std::tr1::shared_ptr and switched to Qt's
QSharedPointer which in turn requires Qt-4.5 or newer. There
wasn't much more changes since then, as I enjoyed quite a long vacation, but I
guess I can tell the development is getting faster again.
How to Use it
It's a fairly standard CMake setup:
git clone git://gitorious.org/trojita/trojita.git
cd trojita
mkdir _build
cd _build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
make -j4
./trojita
Please do join the #trojita channel on Freenode and tell me how you
like this application. I'm open to any suggestions and would love to hear any
feedback, too.
As you can see, this blog is a static HTML page, so you can't post any comments
here. However, I'm eager to answer any questions sent to my mail, both via e-mail and in subsequent blog
posts.
|
Gentoo Prefix/Windows (August 31, 2009, 16:02 UTC)
August 28, 2009
My podcast on LinuxCrazy (August 28, 2009, 13:02 UTC)
Hello all,
Yesterday (Thursday, 27 August 2009), David Abbott from LinuxCrazy, and Gentoo-PR interviewed me for his 62nd podcast. We discussed many aspects of Gentoo, including my involvement with the fora, documentation, project strengths, areas of concern, Openbox and LXDE, and more. This is a two-part podcast, and the first portion is an interview with Zachary (son of Gentoo user weirdedout) about one of his favourite Linux games, Warzone 2100. Thank you Zachary for your review of WZ2100! 
If you would like to listen to the podcast, it is available in Ogg format (preferred), or in MP3. The Ogg format is available here on the Z-Issue, while the Ogg and MP3 versions are both available on LinuxCrazy.
OGG format of the podcast (please right-click and hit "save as" to download a copy)
If you don't want to listen to the podcast, there is a transcription of most of it (not verbatim, but hits many of the key points) on the Gentoo Fora.
Thanks for the interview David!
|:| Zach |:|
|
August 27, 2009
All,
Many of you have, no doubt, learned of the recent loss to the Gentoo
community. Known fondly as fmccor, Mr. Ferris E. McCormick's death was tragic
and unexpected. His many contributions to the greater open source community
will always be remembered as well as his generous friendship. It is in due
honor to his life and good name that the Gentoo Foundation has donated a sum
of $500 to the Electronic Frontier Foundation (EFF). The board of trustees
believe that our donation is reflective of his wishes, given fmccor's
professional life as a lawyer, and that this gift will further the movements
he cared a great deal about, open source software and protecting our freedom.
The board would like to take this opportunity to encourage any and all
individuals that personally knew fmccor or were benefiting from his life long
contributions to donate, in kind and to the best of your ability, either to
the EFF, the Gentoo Foundation, or another organization that you feel
expresses these ideas.
|
August 26, 2009
Funtoo Halucinations (August 26, 2009, 16:10 UTC)
So I'm reading through my RSS feeds and stumble across this gem:
Ciaranm quoting something from the funtoo.org FAQ about how funtoo.org only works with Internet Explorer or something
So, like, I look at the Funtoo FAQ that is linked from that blog.
Read it.
Don't find any mention of Firefox
Do a fulltext search just in case
So now I'm wondering, wtf is happening?
Is this a fast edit from the funtoo people in under 30 minutes? I find that unlikely. Or is Ciaran hallucinating badly (as seen with
PMS and other works of fiction) and needs to have his medication adjusted?
I'd guess it's the usual FUD, and most likely ignoring it would be the "right" thing to do, but if you catch a kid urinating in the pool
you usually spank it in the hope of teaching it not to do it again.
|
August 25, 2009
common alsa issues (August 25, 2009, 17:18 UTC)
I started a thread on the Gentoo Forums the other week, trying to get users to post what are common issues that they run into collectively. I'm hoping to see if I can find some patterns and either update the documentation or write a FAQ. If you have anything to share, please do.
And for the record, here is my first line of defense that I will tell anyone when they have no sound / wrong driver issues:
- Use latest ALSA (and kernel) in the tree. In this case, it's 1.0.20, and we've cleaned up a lot of crap that was causing issues.
- Compile everything sound-related in the kernel as a module. Yes, everything. No, not just the stuff that you *think* you can statically compile in --- *ev-e-ry-thing.* Once you've done that, run alsaconf. If your card doesn't show up, it's either completely unsupported (unlikely) or you didn't pick the right drivers. Go back in and flip on more stuff. As modules.
- If the correct drivers are loaded (aplay -L works), and you have no sound, then your mixer levels are probably wrong.
Apologies for coming across so heavy-handed, but that's the approach that has always worked for me, and works for most everyone when I tell them to do that: latest kernel, latest ALSA, everything as modules, alsaconf, then mixer.
Edit: Just as a postscript, the reason for the bluntness is that I recently started taking a more active role in the ALSA herd. Normally, I would just do version bumps and leave it at that. But, I'm trying to get practical issues resolved, and the one common thread I see over and over and over again on the forums and IRC is people just going off on their own little path and stabbing in the dark to see if they can get their sound to work, and then acting surprised that some random configuration didn't work.
I want to very much find both the source of this disinformation and correct it, and make sure that setting up sound is a really simple process. The *problem* though, is that it's always been pretty extremely easy for me, and so I am having a really difficult time understanding *why* people are hitting these issues -- hence, the reason for the forum post asking people why they are running into problems, and what thoughts and conclusions lead to that direction. Once I figure that out, then I can go back and tweak the docs to clarify situations and attack the common confusion.
I keep getting the idea that we could use a really simplified version of the ALSA doc, one that is a quick basic howto get setup for people with one soundcard, and then include examples using the most popular hardware out there right now (intel-hda). Then, have a separate doc for more advanced issues, for people who need help and information on alsa plugins, or have multiple sound cards and things like that. I think that lumping them together into one, as it is now, makes it hard for people who just want to get up and running.
So, apologies if it feels like I'm browbeating here, but the reality is that I'm really motivated to streamline the process of getting sound in Linux. Nothing but love, yo.
|
I think I stumbled upon Linux Mint on DistroWatch, upon this screnshot:
Somehow I wanted to see that wallpaper on my desk. Finally I found the image and put it up my desk:
It didn’t take long to where I wanted a version without the mint logo on it. The logo is nice but I don’t like to look at logos all day long. So I contacted the wallpaper’s author Zwopper who sent me a no-logo version in both green and blue in no time also allowed me to share it with you under a CC-BY-SA-3.0 license here. As far as I understand they have not been published like that elsewhere before. Here they are.
Click the thumbnails for PNG downloads with 2560×1600 pixels size.
|
August 23, 2009
Progress Update (August 23, 2009, 09:39 UTC)
Well… I’ve been busy getting the boxes into shape ready for new stagebuilds and a heap of other activities.
I have Firefox 3.5 going on mipsel… albeit a little shakey. I’ve got 99% of KDE 4.3 going also, again, a few glitches. I have turned my attention for the time being to the SGI machines here, since the kernels on all of them are out of date… and the userland is in a bit of a mess. Particularly on the Indy… which hasn’t been touched in a couple of years (e2fsck complained the disk wasn’t checked in over 1000 days).
The Indy (R4600SC) needs a new kernel, as its current one is too unstable to do anything useful. I remember kernel 2.6 being a royal bitch on this machine, hopefully things have improved. The IP28 is up and running… old kernel and userland, but it’s not quite as bad as the Indy… at least it’s stable. The O2 is similarly suffering an old kernel, but at least parts of its userland are in reasonable shape.
The two Fulongs are also getting an overhaul which is badly needed. The Yeeloong too, is undergoing further work to get things running.
Tonight, I managed to figure out battery monitoring within KDE 4.3… the trick was to unmask the apm USE-flag and re-merge hal with this feature enabled. Now the system displays the battery status as it should… if only I could get NetworkManager working properly, then everything would be sweet there.
I have a couple of tracker bugs relating to this work… bug 282264 is a tracking bug for KDE 4.x related tasks, and bug 282265 pertains to the changes needed for in-tree Lemote system support.
I intend to do a bit of work on both as I run between Brisbane and Laidley using the Yeeloong as a test platform, so hopefully we will have something for public release soon. In addition, I’ll be doing stagebuilds for the Gentoo/MIPS port generally, once my systems are back online.
|
August 21, 2009
FROSCON (August 21, 2009, 09:48 UTC)
Hi y'all,
If you're unsure what to do this (22. and 23. of August) weekend and you're accidentally near Bonn or Cologne in Germania ...
FROSCON is happening again. And Gentoo will have a presence there.
So if you find the time, feel free to visit (and the 5Eur entrance fee are really worth it!) and meet us.
This year we have a booth and a dev room where we can demonstrate out superior slacking skills (and, of course,
the most awesome metadistribution ever!)
Experience from last years suggests a very nice, filled-with-fun, meeting of geeks, nerds and people that just like meeting other people.
There's a nice program filled with interesting speeches and discussion rounds,
lots 'o beer and quite likely some nice grilling or other kinds of food.
At the moment it looks like the weather will be good, so that'll make it even more fun. And if all that still doesn't convince you that you
have to be there ... well ... then you don't deserve it anyway!
Hope to see y'all there,
Patrick the bonsaikitten
|
August 20, 2009
I'm still trying to decide where I wanna go with my media browser/frontend solution -- if I'm going to write my own or keep hacking on MythVideo. I only have one really nagging issue left now, and that is that the file structure presented is static once you enter the "Watch Videos" menu. I'd like it to be dynamic (that is, upon entering a new folder, check the contents again) so that I can add stuff like symlinks to series that I'm currently watching, or whatever. Doing that is pretty tricky.
I spent a few hours last night digging through the code, trying to find out exactly how the code is operating and what it's doing. What I learned was that, well Myth was doing exactly what I thought it was -- it builds a file list upon first entering, and then it doesn't examine it at all until you re-enter the video browser through the main myth menu. (I wish I had a decent screenshot about now, it's a bit confusing if you don't know what I'm talking about.)
There's a couple of problems with this approach, in my mind. First of all, the time it takes to actually load the mythvideo plugin grows in relation to how much media you have that it needs to parse. That is, it iterates over *every* single file that is in your media storage, and adds it to one variable. It's essentially like running find on your filesystem, saving it into one variable, and then when browsing, just using that snapshot that you took.
The simpler way, in my opinion, would be to just refresh the directory structure and metadata for the directory you are in. While I was poking at it, one thing I tried was to get the directory scan to not go more than one level deep. That reduced the startup time from about 8 seconds to less than one. Nice.
Ideally, I'd like to change it so it just updates the directory scan as it enters a new one, progressively growing the variable as you jump around the directory tree, but I couldn't figure out how to do that in the code (and if someone wants to help, that'd be awesome). MythVideo calls fetchVideos() only when first entering, and not anytime after that. The real problem is that it in turn calls about eight other levels of functions that eventually get to scanning the directory tree. I could probably hack it together to pass the current directory I'm in and update the directory scan from there, but again, I'm so limited in my C++ skills, at this point it's just code and guess. So, I can find and explain the problem, but not fix it myself.
Fortunately, it's a minor wish list item of mine, and so it's not a show stopper. I can live with not being able to do it, and it's probably just a matter of me learning how to code a bit more that I could figure it out. On the plus side, I'm learning more about the internals of the code, and each time I go in there, I find a few small inefficiencies that I can cleanup myself, which is fun. Making progress, I suppose.
|
Just a short comparison after the initial report: The shipped Debian takes 60 seconds till the Gnome desktop appears, while the LXDE of my Gentoo installation needs 40 seconds. Of course less features (or cruft) is available with the latter, so no real benchmark. Also Ubuntu has formed a team to do a port to the Loongson CPU.
The kernel provided by Lemote is 2.6.31-rc5 and I used the attached configuration to succcessfully built and run the kernel on my Loongson 2F-based Yeeloong netbook.
CONFIG_MIPS=y CONFIG_MACH_LOONGSON=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_LEMOTE_YEELOONG2F=y CONFIG_CS5536=y CONFIG_SYS_HAS_MACH_PROM_INIT_CMDLINE=y CONFIG_CS5536_MFGPT=y CONFIG_UCA_SIZE=0x400000 CONFIG_RWSEM_GENERIC_SPINLOCK=y CONFIG_ARCH_SUPPORTS_OPROFILE=y CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_TIME=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_EARLY_PRINTK=y CONFIG_SYS_HAS_EARLY_PRINTK=y CONFIG_SYS_SUPPORTS_HOTPLUG_CPU=y CONFIG_I8259=y CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y CONFIG_IRQ_CPU=y CONFIG_BOOT_ELF32=y CONFIG_MIPS_L1_CACHE_SHIFT=5 CONFIG_CPU_LOONGSON2F=y CONFIG_CPU_LOONGSON2=y CONFIG_SYS_HAS_CPU_LOONGSON2F=y CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y CONFIG_64BIT=y CONFIG_PAGE_SIZE_16KB=y CONFIG_BOARD_SCACHE=y CONFIG_MIPS_MT_DISABLED=y CONFIG_CPU_HAS_WB=y CONFIG_CPU_HAS_SYNC=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_CPU_SUPPORTS_HIGHMEM=y CONFIG_SYS_SUPPORTS_HIGHMEM=y CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_SPARSEMEM_STATIC=y CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_ZONE_DMA_FLAG=0 CONFIG_VIRT_TO_BUS=y CONFIG_HAVE_MLOCK=y CONFIG_HAVE_MLOCKED_PAGE_BIT=y CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y CONFIG_HZ_1024=y CONFIG_SYS_SUPPORTS_ARBIT_HZ=y CONFIG_HZ=1024 CONFIG_PREEMPT=y CONFIG_SECCOMP=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_CONSTRUCTORS=y CONFIG_EXPERIMENTAL=y CONFIG_BROKEN_ON_SMP=y CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="-fauli" CONFIG_HAVE_KERNEL_GZIP=y CONFIG_HAVE_KERNEL_BZIP2=y CONFIG_HAVE_KERNEL_LZMA=y CONFIG_KERNEL_LZMA=y CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE_SYSCTL=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_TREE_RCU=y CONFIG_RCU_FANOUT=64 CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=15 CONFIG_GROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_RT_GROUP_SCHED=y CONFIG_USER_SCHED=y CONFIG_CGROUPS=y CONFIG_CGROUP_DEBUG=y CONFIG_CGROUP_NS=y CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y CONFIG_RESOURCE_COUNTERS=y CONFIG_CGROUP_MEM_RES_CTLR=y CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y CONFIG_MM_OWNER=y CONFIG_RELAY=y CONFIG_NAMESPACES=y CONFIG_UTS_NS=y CONFIG_IPC_NS=y CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_RD_GZIP=y CONFIG_SYSCTL=y CONFIG_ANON_INODES=y CONFIG_EMBEDDED=y CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y CONFIG_ELF_CORE=y CONFIG_PCSPKR_PLATFORM=y CONFIG_BASE_FULL=y CONFIG_FUTEX=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_AIO=y CONFIG_VM_EVENT_COUNTERS=y CONFIG_PCI_QUIRKS=y CONFIG_COMPAT_BRK=y CONFIG_SLUB=y CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_SYSCALL_WRAPPERS=y CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 CONFIG_MODULES=y CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_BLOCK=y CONFIG_BLOCK_COMPAT=y CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_CFQ=y CONFIG_DEFAULT_CFQ=y CONFIG_DEFAULT_IOSCHED="cfq" CONFIG_FREEZER=y CONFIG_HW_HAS_PCI=y CONFIG_PCI=y CONFIG_PCI_DOMAINS=y CONFIG_ISA=y CONFIG_MMU=y CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=y CONFIG_MIPS32_COMPAT=y CONFIG_COMPAT=y CONFIG_SYSVIPC_COMPAT=y CONFIG_MIPS32_O32=y CONFIG_MIPS32_N32=y CONFIG_BINFMT_ELF32=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_PM=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y CONFIG_HIBERNATION_NVS=y CONFIG_HIBERNATION=y CONFIG_PM_STD_PARTITION="/dev/sda2" CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_TABLE=y CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_LOONGSON2F_CPU_FREQ=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_PACKET_MMAP=y CONFIG_UNIX=y CONFIG_XFRM=y CONFIG_XFRM_USER=y CONFIG_XFRM_IPCOMP=y CONFIG_NET_KEY=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y CONFIG_ASK_IP_FIB_HASH=y CONFIG_IP_FIB_HASH=y CONFIG_IP_MULTIPLE_TABLES=y CONFIG_IP_ROUTE_MULTIPATH=y CONFIG_INET_AH=y CONFIG_INET_ESP=y CONFIG_INET_IPCOMP=y CONFIG_INET_XFRM_TUNNEL=y CONFIG_INET_TUNNEL=y CONFIG_INET_XFRM_MODE_TRANSPORT=y CONFIG_INET_XFRM_MODE_TUNNEL=y CONFIG_INET_XFRM_MODE_BEET=y CONFIG_INET_LRO=y CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" CONFIG_FIB_RULES=y CONFIG_WIRELESS=y CONFIG_CFG80211=y CONFIG_WIRELESS_OLD_REGULATORY=y CONFIG_WIRELESS_EXT=y CONFIG_WIRELESS_EXT_SYSFS=y CONFIG_LIB80211=y CONFIG_MAC80211=y CONFIG_MAC80211_DEFAULT_PS=y CONFIG_MAC80211_DEFAULT_PS_VALUE=1 CONFIG_MAC80211_RC_PID=y CONFIG_MAC80211_RC_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT_PID=y CONFIG_MAC80211_RC_DEFAULT="pid" CONFIG_MAC80211_LEDS=y CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=m CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" CONFIG_CONNECTOR=y CONFIG_PROC_EVENTS=y CONFIG_PNP=y CONFIG_BLK_DEV=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_CRYPTOLOOP=y CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=8192 CONFIG_EEPROM_93CX6=y CONFIG_HAVE_IDE=y CONFIG_SCSI=y CONFIG_SCSI_DMA=y CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_WAIT_SCAN=m CONFIG_ATA=y CONFIG_ATA_SFF=y CONFIG_PATA_AMD=y CONFIG_NETDEVICES=y CONFIG_NET_ETHERNET=y CONFIG_MII=y CONFIG_NET_PCI=y CONFIG_8139TOO=y CONFIG_8139TOO_PIO=y CONFIG_8139TOO_TUNE_TWISTER=y CONFIG_WLAN_80211=y CONFIG_RTL8187B=y CONFIG_INPUT=y CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 CONFIG_INPUT_EVDEV=y CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ATKBD=y CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y CONFIG_SERIO=y CONFIG_SERIO_I8042=y CONFIG_SERIO_LIBPS2=y CONFIG_VT=y CONFIG_CONSOLE_TRANSLATIONS=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y CONFIG_DEVKMEM=y CONFIG_SERIAL_NONSTANDARD=y CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_PCI=y CONFIG_SERIAL_8250_PNP=y CONFIG_SERIAL_8250_NR_UARTS=16 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_MANY_PORTS=y CONFIG_SERIAL_8250_FOURPORT=m CONFIG_SERIAL_8250_ACCENT=m CONFIG_SERIAL_8250_BOCA=m CONFIG_SERIAL_8250_EXAR_ST16C554=m CONFIG_SERIAL_8250_HUB6=m CONFIG_SERIAL_8250_SHARE_IRQ=y CONFIG_SERIAL_8250_RSA=y CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_UNIX98_PTYS=y CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=16 CONFIG_HW_RANDOM=y CONFIG_RTC=y CONFIG_RAW_DRIVER=m CONFIG_MAX_RAW_DEVS=256 CONFIG_DEVPORT=y CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_CHARDEV=y CONFIG_I2C_HELPER_AUTO=y CONFIG_HWMON=y CONFIG_SENSORS_PCF8591=y CONFIG_THERMAL=y CONFIG_THERMAL_HWMON=y CONFIG_SSB_POSSIBLE=y CONFIG_FB=y CONFIG_FIRMWARE_EDID=y CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_MODE_HELPERS=y CONFIG_FB_SM7XX=y CONFIG_FB_SM7XX_ACCEL=y CONFIG_FB_SM7XX_DUALHEAD=y CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_GENERIC=y CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y CONFIG_LOGO=y CONFIG_LOGO_LINUX_CLUT224=y CONFIG_SOUND=y CONFIG_SND=y CONFIG_SND_TIMER=y CONFIG_SND_PCM=y CONFIG_SND_HRTIMER=y CONFIG_SND_VERBOSE_PROCFS=y CONFIG_SND_VMASTER=y CONFIG_SND_AC97_CODEC=y CONFIG_SND_DRIVERS=y CONFIG_SND_AC97_POWER_SAVE=y CONFIG_SND_AC97_POWER_SAVE_DEFAULT=10 CONFIG_SND_PCI=y CONFIG_SND_CS5535AUDIO=y CONFIG_AC97_BUS=y CONFIG_HID_SUPPORT=y CONFIG_HID=y CONFIG_USB_HID=y CONFIG_USB_HIDDEV=y CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y CONFIG_USB=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y CONFIG_USB_DEVICEFS=y CONFIG_USB_SUSPEND=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_OHCI_HCD=m CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_UHCI_HCD=m CONFIG_USB_STORAGE=y CONFIG_MMC=m CONFIG_MMC_BLOCK=m CONFIG_MMC_BLOCK_BOUNCE=y CONFIG_NEW_LEDS=y CONFIG_LEDS_TRIGGERS=y CONFIG_LOONGSON_PLATFORM_DEVICES=y CONFIG_EC_KB3310B=y CONFIG_EXT2_FS=m CONFIG_EXT3_FS=y CONFIG_EXT3_DEFAULTS_TO_ORDERED=y CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y CONFIG_EXT4_FS=y CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_JBD=y CONFIG_JBD2=y CONFIG_FS_MBCACHE=y CONFIG_FS_POSIX_ACL=y CONFIG_FILE_LOCKING=y CONFIG_FSNOTIFY=y CONFIG_DNOTIFY=y CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y CONFIG_FAT_FS=m CONFIG_VFAT_FS=m CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="utf8" CONFIG_NTFS_FS=m CONFIG_NTFS_RW=y CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_SYSCTL=y CONFIG_PROC_PAGE_MONITOR=y CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_CONFIGFS_FS=m CONFIG_NETWORK_FILESYSTEMS=y CONFIG_CIFS=m CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y CONFIG_MSDOS_PARTITION=y CONFIG_NLS=y CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_CODEPAGE_850=y CONFIG_NLS_ISO8859_1=y CONFIG_NLS_ISO8859_15=y CONFIG_NLS_UTF8=y CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_FRAME_WARN=1024 CONFIG_TRACING_SUPPORT=y CONFIG_HAVE_ARCH_KGDB=y CONFIG_CMDLINE="" CONFIG_CRYPTO=y CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD=y CONFIG_CRYPTO_AEAD2=y CONFIG_CRYPTO_BLKCIPHER=y CONFIG_CRYPTO_BLKCIPHER2=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_PCOMP=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y CONFIG_CRYPTO_WORKQUEUE=y CONFIG_CRYPTO_AUTHENC=y CONFIG_CRYPTO_CBC=y CONFIG_CRYPTO_ECB=y CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_CRC32C=m CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_AES=y CONFIG_CRYPTO_ARC4=y CONFIG_CRYPTO_DES=y CONFIG_CRYPTO_DEFLATE=y CONFIG_BITREVERSE=y CONFIG_GENERIC_FIND_LAST_BIT=y CONFIG_CRC_CCITT=m CONFIG_CRC16=y CONFIG_CRC_ITU_T=m CONFIG_CRC32=y CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_DECOMPRESS_GZIP=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y CONFIG_NLATTR=y
|
Every one of us dumb workhorses called architecture developers has its own way of scripting all the commands necessary to stabilise/test a package on its architecture, but I would like to describe how I do it, for the curious. The bug list of the architecture (x86 in my case) with all keywording and stabilisation requests is the starting point here.
Normally I install the packages in a chroot and I follow the never-uninstall-a-package policy to catch file collisions, while others keep the system lean to find missing dependencies (they probably use the buildpkg feature of Portage to keep compile times for dependencies down). To put all needed packages in the package.keywords file, I use the Gentoo Arch Testing Tool (app-portage/gatt) which does that automatically. Compile test includes up to three runs: With all USE flags enabled, then all disabled and then finally what make.conf and the profile defines. The last iteration is then tested, either by starting the program and using it for some time (games usually get a longer testing period) or by building packages that depend upon the package to be stabilised. I have a little script that extracts that information from the tinderbox' rindex and determines which package is in stable and needs to be rebuilt. Manual work includes a short glance if USE flags are needed to activate the support for that package. Installing as most depending packages as possible makes sure all reverse dependencies still build, this sometimes leads to other stabilisation requests or bug reports blocking the stabilisation of the initial package.
After everything went successfully I tell Gatt to create a script in the /tmp/ directory which is shared with my main system. From there I call that script which is quite capable and there is an extensive manual for it.
That's how your package hits stable on x86 usually. Big things like KDE or Gnome are handled differently, the script is shorter:
- Install it with the package list provided by the team (normally that's the case)
- Test it
- Keyword all packages and add ChangeLog entries (without commit)
- Run QA checks with repoman over the whole category
- Run commit with --force to disable QA checks to speed up process (it still takes hours for KDE)
|
August 18, 2009
Before the netbook-boom called 'mini notebook', Lemote now promotes it as netbook (what it really is). The specialty of that little thing is the hardware: Not an Intel Atom or some AMD CPU, but a 900Mhz Mips chip. Honestly, after my disaster with something ARM-based (NSLU2, it still is bricked and will never be revived I think), I wanted something more end-user friendly and the Lemote is just that. Equipped with a full-fledged desktop installation (the Debian mipsel variant) it allows installing Gentoo with few problems. Chrooting and installing the stage tarball from Zhang Le gets you off quite fast. The provided kernel did not boot, but Le gave me a newer one, which worked just fine after creating some missing device files (console, tty* and pty*, see man mknod). Meanwhile I have compiled my own kernel and the system just runs with LXDE...so finally a possibility to have the third Gtk-based destop installed. Gnome on sol (the big iron desktop), Xfce on the main lappy (called terra) and LXDE now on mars. Performance is good, for surfing and mailing it is more than sufficient, compile times are ok (even GNU Emacs runs), but the battery is way too small (1.5 hours only, but a peak of 14W consumption, while having 12W during normal surf sessions).
The Loongson processor seems to me as the future of the Gentoo Mips port. Supporting the old SGI machines is nice but they will eventually die out, while Lemote actively works on new machines and supports Linux as its main platform (they don't have any other choice apart from the BSDs anyway). Ordering is really simple: Either use Lemote directly (and handle all customs yourself), use KD85 (what I did, really pleasing experience, shipped from Belgium) or Tekmote from the Netherlands.
Zhang Le (r0bertz) and Stuart Longland (redhatter) wrote enough about the Loongson processor and the Gentoo support in various entries on their blogs, so I won't go into more details.
|
Introducing to Gentoo-Quebec (August 18, 2009, 10:09 UTC)

Gentoo-quebec is a project which aims to meet people around gentoo stuffs.
At the origin it was created on 1st December 2007 per 5 guys
-Laurent Duchesne
-Sylvain Alain
-Patrick Blanchard
-Éric Langlois
-Mathieu Bouchard
Providing great documentations as PDF format (generated using LaTeX ) and excellents wiki howtos pages, this is the right place to share and learn experiences.
There is also an useful and powerful forum for our community, to get feedbacks and ask all your questions, don't worry admins didn't forget an english section .
Actually I help them when I've time enough, my areas of responsability are mostly fix or write articles in the wiki, and share my experiences (and learn too) on the forum.
Gentoo-quebec always search great users with good gentoo skills, or developer who want to share their knowledges (like zmedico with portage, thanks to him).
so because you finished to read this entry don't wait and join gentoo-quebec ! 
|
August 16, 2009
Well… after much building by one of the older Lemote systems, I finally have a Gentoo desktop with KDE 4.3.0 on the Lemote Yeeloong.
I’m still working on the rest of the KDE suite… and will have to track down the necessary bits and pieces for battery monitoring and other goodies… but it seems everything is working. It also is slightly more responsive on Gentoo than Debian (which I still have in a chroot).
This post is being written in Konqueror 4.3.0 on the said installation… it passes the Acid 2 test, but has a few stability glitches here and there… so far both the Acid 3 test, and Google Groups crashes it. I’ll sort this out later.
In short, this does mean I’ll be coaxing my O2 into making the same journey and making the necessary tree modifications in order to allow KDE 4.3 on Gentoo/MIPS.
|
I always thought that writting documentation is much more difficult than coding. This is because, writting documenation and guides, is kinda boring(?), requires a lot of our free time and it is not as fun as coding. All of these arguments IMHO are true but is documentation really needed?
During my six month Gentoo journey I faced a common problem: “I want to write a python/gnome/qt ebuild. How on earth am I suppose to do it??”
Looking through Gentoo docs I ‘ve found some guides about writting games and python ebuilds. Maybe there are more, I haven’t checked. Those guides are quite handy for anybody who wants to write a quick ebuild without making serious mistakes.
Eclasses usage is another tricky thing. Based on my experiense, I believe that the most difficult part is to understand how they work and when they should be used on an ebuild. E.g., a Qt4 ebuild doesn’t always require to inherit qt4 eclass because it might wants cmake functions to build and install. In this case, despite the fact that it is a pure Qt4 package, you need to inherit the cmake-utils eclass. That was a simple example but I believe you got the point
This blog post is a kind request to all fellow developers, to make some time and write proper ebuild guides ( and keep them updated based according to eclasses’ latest changes ) for the sake of developers and users. People tend to believe that ebuild writting is quite hard because of all the e-* functions ( wrappers ) and ebuild phases. Prove them wrong
ps: A Qt4 ebuild guide, can be found here
|
August 14, 2009
August 13, 2009
After talking with Ben (yngwin), I found that there really wasn't anyone working on documentation related to LXDE inside of Gentoo. So, I decided that I would write a HOWTO for getting it installed and configured. I finished the document this morning, and uploaded it to my Developer webspace. You may see a working copy of the document there, and if you want to see the xml, you have two options. Firstly, when looking at the finished copy, you append the following to the end of the URL:
?passthru=1
making the full URL:
http://dev.gentoo.org/~nathanzachary/documentation/lxde_1.0.xml?passthru=1
and that will show you the XML. Secondly, you can view Bug 281345, and click on the attachment. Hopefully the documentation team will pick up the guide in the near future, and commit it. The only holdup that I can foresee is that LXDE is still available only through the testing (~arch) branch.
|:| Zach |:|
|
I have made several changes to the Openbox HOWTO. There were many typographical errors that I didn't catch the first time around, and package links that weren't added. Here's a full list of the updates for version 1.4:
- In code listing 2.5, changed the $ to # as the operation requires root actions.
- Added a note to the 2.5 listing about becoming root before the command.
- In code listing 2.6, fixed the typographical error (7gt; instead of gt;).
- In code listing 2.6, made the
- In code listing 2.8, fixed the typographical error (extra > in closing tag).
- In code listing 2.8, fixed the typographical error (missing closing ").
- Added a link to the package information for conky before code listing 2.10.
- Added a link to the package information for feh after code listing 2.10.
- Added a link to the package information for nitrogen after code listing 2.10.
- Removed the library dependency bug reference for nitrogen.
- In terminals section, changed "customized" to "customised" for consistency.
- In file managers, fixed typographical error for Nautilus (a "bit" heavy).
If you would like to see the new document revisions before it gets committed to the official documentation repository, it is available on my Developer webspace. You may also view the XML for version 1.4 via Gentoo Bug 256693.
|:| Zach |:|
|
August 12, 2009
It is with sadness that we as Trustees bring forward this news that we have
recently received. Ferris Ellsworth McCormick, better known as fmccor, has
passed away unexpectedly on the 5th of August. His family does not wish to be
contacted. We have expressed our gratitude for his contributions on behalf of
the Community.
Ferris studied mathematics in college at Indiana University, graduating in 1968
with a Bachelor of Arts. Later he entered into the Law school at the University
of Michigan, earning his Juris Doctor degree in 1991.
He passed the bar in Michigan that same year and has continued to be an
actively certified Lawyer with the State of Michigan since then. He was also a
member of the Association for Computing Machinery (ACM).
Ferris joined Gentoo on April 16th 2004 as part of the sparc team and improved
sparc support for the entire open source community. Within a year he also
joined the Developer Relations team to help with mediation of any issues that
might come up between people. As time went on Ferris continued to expand and
assist Gentoo in many ways including assisting with the User Relations team and
growing to become the Strategic Manager of the sparc project. Finally, he
became a trustee and the Vice President of the Foundation assisting in getting
the foundation back into good standing.
While it is too late to say in person, the Foundation would like to thank
Ferris once again for all that he did for both Gentoo and the Open source
community. He will be missed.
Please join the community in eulogizing Ferris in our forums here.
|
|