Stupidity in CFLAGS

Cardoe wrote this mid-afternoon:

Ok people (that means Gentoo users and some of your developers out there… you know who you are), quit being retarded about CFLAGS.

Example one:
CFLAGS="-march=pentium4 -mtune=pentium4 -O3 -mmmx -msse -msse2 -pipe -ffast-math"

Is equivalent to the following:
CFLAGS="-march=pentium4 -O3 -pipe -ffast-math"

Why?

Let me explain a few things. march stands for set minimum architecture to X so you’re setting the minimum architecture to produce code for to a Pentium 4. Well guess what, GCC knows that Pentium 4s have MMX, SSE, and SSE2 which means it will automatically use those technologies. Then lastly mtune stands for use whatever set minimum architecture but add in optimized code paths for this architecture. Well then if all your code is going to come out optimized for Pentium 4, what’s the point in asking GCC to provide code branches that are optimized for a Pentium 4!? The only purpose that does if you compile with the following CFLAGS.
CFLAGS="-march=i386 -mtune=pentium2 -pipe"

So now you’re code will support ALL x86 based processors but will take advantage of the power CMOV instruction available to the Pentium and higher. This CFLAG will actually make a difference.

So please, quit with the redundant CFLAGS. They’re stupid and pointless.

GTK+ USE flag hell Part 2

Cardoe wrote this around lunchtime:

So yesterday I posted about how I felt about the GTK+ USE flag situation. Today I’m going to revisit the issue a little bit. Here’s a link if you didn’t read the previous rant, GTK+ USE flag hell part 1.

Basically, Gentopia is going to take care of the USE flag changes. We’ll host all the ebuilds with the changed USE flags and then we’ll work on bringing the change to Portage. It makes sense because it allows us to develop outside of the Portage tree and to test software to make sure it’s solid. (You know… that whole Gentopia ideal.)

Just as a note for the KDE & QT people. Hopefully you’ll take note of this GTK+ USE flag situation because I think it’ll affect you guys as well when QT4 hits the streets and some packages upgrade and some don’t.

GTK+ USE flag hell

Cardoe wrote this terribly early in the morning:

Here’s the solution to the GTK+ USE flag issue. The final solution because I’m tired of all the debate and in-action on the mailing lists I am posting this here. I hope we can quickly discuss it and dismiss all issues with it and I can implement it this weekend while I am being mauled by the hurricane.

Remove entirely the “gtk” USE flag. It’s ambiguous and pointless. The proper USE flags should be gtk1 and gtk2. Turn off gtk1 for the desktop profile and leave gtk2 on in the desktop profile by default. As far as I’m concerned, GTK+ 1.x is depreciated and does not need to be pulled in needlessly.

What’s that mean? If you want any GTK+ support, you turn on gtk1 and gtk2 in your USE flags. If you only want GTK+ 2.x support, you turn on gtk2 in your USE flags and leave off gtk1. If you want only GTK+ 1.x support, you turn on the gtk1 and leave off gtk2. If you don’t want GTK+ on your system you leave both USE flags off. Simple. Easy to understand. No ambiguity.

Oh no what about GTK+ 3.x people say. Well first off, that’s a long way off. Do they even have a roadmap that shows breaking ABI & API compatibility? Not as far as I know. But plain and simple, you add a gtk3 USE flag and it’s pretty obvious.

What about when a package supports both? Well the USE flags sort it out pretty easy.

What about when a package supports both and both are turned on? Let’s take easytag for an example. Well guess what, the maintainer knows the package well. So he/she makes an educated judgment. For example, when easytag GTK+ 2.x support first hit the streets, it was pretty experimental so it would have been wise that the ebuild maintainer make GTK+ 1.x the default if both USE flags were on. However now that the GTK+ 2.x support is pretty solid, it would be wise for the maintainer to switch to GTK+ 2.x to be the default? Why because it looks better and presents Gentoo as a desktop and a functional userbase better. Because most users are going to have a GTK+ 2.x based desktop (i.e. Gnome 2.x) if they use GTK+ and as such will have configured it to their liking and suddenly easytag will conform to their visual layout that they are comfortable with. It won’t stick out like a sore thumb like GTK+ 1.x does.

I hope this covers all scenarios and we can start making this change ASAP because it needs to happen 2 years ago.

Any questions? Feel free to post a comment here and I’ll answer it.

Modular X

Cardoe wrote this in the early evening:

As some people might have heard, there is a new series of X coming out, the 6.9/7.0 version. Why dual version numbers? Simple. The 6.9 version will provide the same old xorg-x11 package that we’re used to today. The package that includes everything in one. However 7.0 will contain the same code but it will provide a new twist. 7.0 has been broken up into over 300 separate packages, each which is autotooled and provides only the small necessary part of X. Libraries have been separated from headers, which are now refereed to as protocols. Apps have been split out as well.

Why you ask? Because it’s much easier for developers to break into a small package then into a HUGE package like X. That has been a barrier for a lot of developers that would do work on X. Another reason, which is a very big one in my book, if there’s a bug found in the ATI driver that’s significant for example, they can just release a new version of the driver and all distros can upgrade an all is well. Previously, you would have to wait for a new version of X to be released or grab the fix from CVS and apply it and make a new X package with the fix. Which was often a HUGE process and a lot of times didn’t happen for several months.

This also eliminates the long compiles for many people. If fonts don’t change, no need to rebuild them all.

Where is Gentoo with this process? Donnie Berkholz or spyderous as most of us know him, has been busting his ass working on this for a while. He has brought all these packages to the Portage tree. However they are package.masked while they are being further developed. For the time being he has created two guides as well as two scripts for testers, and primarily Gentoo developers to update their package’s depends to the new modular requirements.

Migrating to Modular X Howto - I recommend reading this all the way down first to see if Modular X is right for you right now.
Porting your depends to Modular X - Remember this requires having set a PORT_LOGDIR in /etc/make.conf for linking_libs.sh and not removing ${WORKDIR} for included_headers.sh

Don’t be surprised if you receive pings from me on IRC or bug reports providing you with the depends I’ve run across. Don’t however, take this as the final solution to the depends. I’m not scouring everyone’s applications in depth, just using spyderous’ scripts (which are known to miss some stuff) and the results of what was necessary on my system to build. I encourage each developer to test for themselves.

This is what I’m talking about!

Cardoe wrote this in the early evening:

Perfect example of what the Project Gentopia team is talking about just happened early today. As I’ve said many times, our goal is to provide a test bed and development ground for the groundbreaking features coming to the users desktops. This is not an effort to step on devs toes, it’s an effort to improve Gentoo and software as a whole. Gentopia has provided numerous patches upstream to Gnome CVS and Freedesktop.org CVS in advance of up coming versions.

What did we do that I’m blogging about? We finally got HAL and DBUS into the Portage tree. While these new version are p.mask’d they are still going to form and important basis for the features you and I want to see on your KDE and/or Gnome desktop.

In addition to the HAL & DBUS updates today, we’ve provided the following today. We have provided a sprinkling of modular X dependencies to the Portage tree. Updates to Cairo & Glitz so now the latest Cairo supports Glitz. Some fix ups for Firefox/Mozilla/Thunderbird users using GTK+ 2.8.

This is not a post crying for credit. I couldn’t careless. It’s a post for those that say “What do you want to do with Gentopia?” This, develop the next generation/versions desktop applications for use on Gentoo. As we get more developers actually write more of this software ourselves. In fact, a couple Gnome (non-Gentoo developers) have gained interest in Gentoo as a result of our project and are interested in joining up. This can only mean more quality software on Gentoo boxes.

What is Gentopia?

Cardoe wrote this terribly early in the morning:

What is the idea and goal behind Gentopia you ask? It is to provide the Gentoo user community with a well integrated and functional desktop experience (please note that when I say “desktop experience” I am also including “laptop experience” in this statement) as provided by other distributions and take that desktop experience to the next level by encouraging work on the next generation of desktop functionality. As many of you know there is a wide array of Gentoo developers responsible for the applications covering a user’s desktop experience. All these developers have their own way of working through bugs and testing their segments of maintainer-ship. Some provide their own overlays and blog about it. Some provide their packages in a package.mask and write -dev & -core about it. However this leads to sections being tested independently and then bugs cropping up later. This is where Gentopia comes in.

Gentopia originates from Robert Love’s Project Utopia (this is why were denied the alias gentopia@gentoo.org and instead given utopia@gentoo.org). The idea is to bring this ideal to Gentoo rather then letting SUSE bask in a utopia of desktop usability. Gentopia is all about bringing that “shine and polish” to Gentoo and the Linux desktop environment. The first step is to bring this development work to a centralized location so more integration and focus can be made, this will in turn increase the testing before the ebuilds and software is placed in the Portage tree. Gentopia does not seek to replace/displace or remove focus from the Portage tree but instead looks to improve it.

We will encourage testing and development to happen. For example, right now the new dbus/hal’s are residing in Gentopia. These ebuilds will lay the ground work for the versions that will appear in the Portage tree when they are required by upstream software. The fixes and the integration work learned from these builds will improve the ebuilds that will eventually reside in the Portage tree. We look to build upon that and get more developers involved.

We’d love to see .NET based applications for the desktop, such as F-spot and Beagle (which already lives there) be developed in the Gentopia tree. As well as new Gnome and GTK+ releases working on the new Xorg and Cairo platforms. As well as the new QT and KDE work happening out there. All of this work to improve integration and communications between developers and groups and increase the testing done the software before it hits the live tree.

What we’d like to see. Gnome developers from the x86, amd64 and ppc arches as well as KDE from the x86, amd64 and ppc arches. This will allow for better keywording and more testing. Remember, the bottom line is proper development and improvement of the desktop experience across the board.

What do we need to accomplish this? Obviously Gentopia could not really reside in the Portage tree. That would be a lot of tinkering with the mask and it would be unnecessary. So we’ve established our own SVN repo, which we would like hosted @ Gentoo’s infra. But we noticed a bunch of bugs against Gentopia work were being filed in Gentoo’s Bugzilla, and that’s not really appropriate so we wrapped our SVN install with a Trac install for Bug tracking as well as the Wiki functionality to keep up on notes on what is being worked on. Again, increasing the communication of development. We would like all this hosted on Gentoo’s infrastructure (read: network) but are not requesting the compromise of lark by adding SVN+Trac on lark. We have even gone as far as to offer a completely separate box with which to host this on. The only thing that the box would need is access to ldap.gentoo.org so that we could authenticate Gentoo developers, rather then maintaining our own database for authentication.

Florida Lottery

Cardoe wrote this in the wee hours:

So some of us Floridians might have noticed the new Florida lottery machines that have been rolled out a few months ago. Only reason I noticed is cause my college job is working at a grocery store that has one. Well the other day the lottery office rep was in and rebooted the machine while I was standing there. And what pops up on the screen? Why it’s Linux!

It came up with the old style boot graphic that’s like 100×100 in the top left at the top with a frame buffer below. The graphic was a Monta Vista Linux logo. The kernel was version 2.4.17. The rep said it was proprietary and I couldn’t see it so she was kind of blocking everyone’s view. But I did also see it used ALSA for sound and used the intel8×0 sound driver. And it loaded a weird module at the end of boot. It said something about loading lottery module data…… libflorida.so. Who knows. Going to accidentally trip over the power cord at work sometime to get some more info. :-D

Gentopia is here!

Cardoe wrote this in the early evening:

So the cable guy came and everything should be setup. Only problem is that the cable modem is out in the living room and the Gentopia server is in my room (since it’s also my MythTV box) and there’s no wired connection to my room. So right now my laptop gets wireless and via a cross over cable connects to the Gentopia server. I have a acx100/111 based PCI card, specifically a Netgear WG311 card in there. But the box is a Dual P3 1ghz box so it uses SMP and the latest “stable” version of the acx100 driver is 0.2.0_pre8-pf57 which is not SMP (which I can confirm). I’ve spoken to the upstream devs that they actually have version 0.2.4 kind of out but it’s a hodpodge of code and does not load the firmware on my system. They don’t even use CVS or SVN, they make daily snapshots of their code and upload them to a server, at which point the two of them swap code and work like that. Dangerous if you ask me.

And to top this all off, I lost the wireless antenna when I moved. :(

But hopefully I’ll get the card working and get something antenna like and it won’t depend on my laptop.

What happened to Gentoo Experimental you ask? Well I’ve been trying to set it up with them, but they have been in the process of transfering their DNS and that kind of hit some roadblocks.

We’ll see if I keep hosting it or if I move it.

Gentopia…. Tomorrow!

Cardoe wrote this at around evening time:

Gentopia should return tomorrow. I have the box up and running and have done a couple of commits to it. The cable company claims they will be out tomorrow morning, we’ll see.

A box appeared at my door

Cardoe wrote this terribly early in the morning:

I got a package yesterday from FedEx and cracked it opened and found some fun toys from Genesi & Pegasos care of Gentoo Developer Pieter Van den Abeele.

This equipment is to work on ivtv and the related media-tv stuffs and keeping it up to par. However, since I’m a poor Gentoo developer (read: college student who barely makes enough to pay bills) I’m too broke currently to buy RAM, a PSU and a case for the equipment. So it might take a bit to get it up and running (read: Google AdSense ads go directly to getting this box up). I will be offering accounts to any developers that need access to PPC hardware. Now what hardware is this you ask?

Well, it’s a Pegasos Dual PPC board, is what it says. But here’s a picture…

Pegasos MB

It came with the following processor, labeled on the other side as GX744.

GX744 Processor

And last but not least, a new ivtv card. Pieter said it’s a PVR-150. But looking into it further it turns out its a PVR-150 Low Profile, neat. :) Now I’ll be able to work on ivtv 0.3.x into Portage.

PVR-150LP