KDE/X11 3.2.0

Just a quick update, the KDE builds have been going well, I've been doing a bunch of cleanup on the info files, and making scripts to make it easier to manage 10.2-gcc3.3 and 10.3 concurrently (I actually generate the info files from a "common" set.) I'll probably be all finished up this weekend, and will be ready for a release along with the source, if things continue as they are. (yay)

And so, I'll leave you with this:

<RangerRick> now I know... uhh... a mac address
<Sortova> sshh
<Sortova> Everyone will want one

[Update:]
Made more progress over the weekend, all that's left to do is make sure upgrading over the previous binaries works, and clean up some new dependencies, and I'm set. I also think I've fixed Qt so it works better with qmake projects.

Share on Facebook

Preliminary KDE 3.2 Tarballs Released to Packagers

Unless showstopper bugs are found, the tarballs released to packagers will be KDE 3.2.0 final (feature plan). I'm taking a break from working on KDE/Mac stuff long enough to get final Fink packages put together. I've got up to kdebase built and I'll be continuing getting things cleaned up in preparation for release.
If I'm lucky, I'll be able to do a simultaneous release of the info files with the tarballs. If not, well, it won't be too much later. =)

Share on Facebook

Misconceptions about Fink

So there's this big thread on the Apple SciTech list about Fink which seems to be complaining about a number of things that are either design features that people don't understand, or outright FUD about things that Fink supposedly breaks that has nothing to do with Fink.

For example, in this post, he says:


Be aware that if you link against Fink libraries, you are not writing code for
MacOS X. You are writing code for Fink. The resulting code will not run on a
vanilla MacOS X system, which in my humble view is a 'really bad idea' (TM).

There's nothing wrong with linking against Fink libraries. If you want to include them in your own project, you can use install_name_tool to relocate the library for use in your own projects so that you don't need to work with the /sw directory yourself. The problem happens when you don't do this (e.g. Virex installing libs in /sw!). This is not Fink's problem, this is a problem with not understanding the Mac OS X development environment, and how library paths work on Darwin.

If you can't just move the libraries because the software you're using from Fink relies on other support files (config files and such), you can still take advantage of the porting work we've done by using our patches and building from source yourself. Our goal is to make it easier for people to run traditional UNIX software on the Mac. We understand that not everyone wants the full Fink infrastructure, which is why everything we do is available in "source" form, as a patch, and an info file that you can examine to see how the porting was done. No one is locking you into using Fink, Fink is a convenience.

There were also a number of posts about /usr/local. There are a couple of very good reason Fink (or any other 3rd-party project) should not use /usr/local:

  1. /usr/local is in the default library and include search path. If you put something in /usr/local, you are damning anyone doing their own development on the system to linking against your stuff. GCC looks for things in /usr/local by default. If your project sticks something in /usr/local that it depends on, but never updates, people will find that down the road, something else has broken.
  2. /usr/local is for the local system administrator. The only person who should be putting things in /usr/local is the person who runs the system. That way they know it's there, and if there are problems with it being in the default GCC path, they will know to fix them. 3rd-party projects traditionally belong in /opt. If I was part of the Fink project I'd have suggested putting it in /opt/fink instead of /sw as that is the proper place for 3rd-party packagers to put things. But I wasn't, and changing from /sw to /opt/fink now would break many systems, so I have no objections to leaving it as-is, the net result is the same.

The same general rules apply to working with frameworks. You should never put your framework in /System/Library/Frameworks, that's equivalent to writing stuff to /usr/lib -- it's reserved for Apple. If you make your own projects, put it in ~/Library/Frameworks, or, the equivalent to /usr/local for frameworks: /Library/Frameworks.

In this post, he refers to "GCC bugs" and problems with Virex that just don't make sense:


[ x] Other, Fink has caused problems for program writers (like gcc), I can point to at least one GCC bug which is caused by how fink sets some environment variable while building and also how dlcompat was installed but now longer need for 10.3.

...

[X ] Other, I do not use Fink because of the problems I see it cause with other people and developers such as virex and really with GCC which is where I always see the most problems (but then again I am GCC developer and I believe in installing by source and by hand).

There are a number of things I think he could be referring to:

  • The "GCC bug" he's referring to could be the fault of OpenOffice's (IMHO) horrible behavior of installing an old dlcompat into /usr/local that's incompatible with Panther. Panther now includes Pogma's dlcompat code in libSystem, and if you have old headers lying around it will cause problems. This is exactly why you should not ever install stuff in /usr/local as a 3rd-party packager.
  • Another possible problem is if he's got a Fink that was built on 10.2 before we were Panther-aware; if he followed the upgrade instructions he would no longer have any stray dlcompat headers (if, in fact, that was the issue).
  • Another possibility is he's referring to Fink's prebinding system. At one point, Fink's prebinding setup would add environment variables to force prebinding to everyone's shell if they use Fink. That was a bug (my bug, in fact), and has been fixed for months.
  • The Virex problem is not Fink's problem, but Virex's. As mentioned earlier, instead of properly relocating the libraries they used from Fink into their bundle (using install_name_tool), they just unpacked software into /sw directly. There is no way I can even imagine of thinking this would be OK. /sw is a known directory for Fink stuff; if they knew enough to link against it, they should have known better than to overwrite it. This has since been fixed, and is, I believe, a non-issue.
  • He could have even been referring to something else. We take compilation bugs (especially anything that breaks GCC, or working with software outside of Fink) very seriously. If I'd gotten an e-mail about broken GCC issues, I would have looked into it immediately. I don't recall any such message to our lists or bug reporter (granted, we get thousands of messages a month, perhaps I just missed it).

And this is the most obvious FUD, right here:


My only problem with fink is that it has not been updated for Panther. It had been a no-brainer for years and then suddenly I was back in the old UNIX land of mysterious command line errors. I found after poking that lot's of stuff required hand patching (pdl, perl-pgplot etc) because fink had a hardwired '5.8.0' search path and Panther ended up at 5.8.1. I suspect a lot of the fink developers had a different version on the Panther beta. This was in Nov/December so maybe it has been fixed. I guess Apple should not have changed it, but then why does fink need to hard code stuff like this?

My earliest post about running Fink on Panther was early October. By late October things were generally working and shortly after that we had our first officially supported test release for 10.3. Support (and available packages) rapidly increased and we now have a binary distribution for 10.3-specific packages that fixes most of the issues encountered in the 0.6.x series on Mac OS X. Making the move to Panther was hard. Many things broke, and it meant splitting our time between 2 different systems, since this is the first time we've supported 2 different Mac OS X releases simultaneously. (When Jaguar came out, we immediately dropped 10.1 support.)

I've got no problems with legitimate concerns with Fink. We don't do everything perfectly. I do have problems with comments that can't be called anything other than FUD.

Share on Facebook

TriLUG Installfest

I'm at the TriLUG installfest and things are crazy! There's gotta be at least 50 or 60 people here; they had to go steal more tables and chairs from the room next door... I wish I'd remembered to bring my camera, I'd have taken some pictures.
Kudos to Wake Technical Community College for donating the space (and likely an immence draw of electricity =); it appears to be a rousing success...

Share on Facebook

Fun with App Bundles

So it turns out a lot of the launch problems we were having were not, in fact, caused by fork (although the fork can still cause issues). To set up KDEDIRS and PATH and such, we had been making the app bundle contain a shell script that calls the binaries, but behind the scenes, the shell script was still calling, say, /opt/kde/bin/kcmshell. Qt, however, can only figure out where it's at if it's called from inside an app bundle.

The fix was to make a hidden directory containing app bundles of everything, even things that aren't necessarily GUI apps, and putting that first in the path. This lets Qt find itself, and it has the happy side-effect that I can put a property file inside the bundle that makes those apps not show up in the dock (yay!).

So I'm in the process of uploading new binaries right now. I'll probably end up not having everything ready for download until tomorrow, since I'm getting about 40k/s and it's nearly a gig and a half of data. =) From here on out, I suspect the only thing we'll have to work on for a while is kdelibs, most everything is pretty stable except for problems that can be fixed in everything by fixing up kdelibs (key accelerators, etc.).

[Update:] All of the binaries have been uploaded and the WebDAV installer may work again on panther, since all of the pre/postflight scripts are gone. Give it a shot, and let me know if things are any better. (Hmm, like the eye doctor. Better? Or worse? Better? Or worse?)

There's also a torrent available containing all of the dmg files, although I can't say how long it will stay up (since the files change so often, it'll be pointless pretty soon... =)

Share on Facebook

KDE/Mac Status

So it may seem like things are pretty quiet, but actually a lot has been happening behind the scenes. Unfortunately, for now there's a lot of research that has to be done before noticable progress will happen.

  1. I've been looking into how authentication and the keychain work. It seems that kdesu can be replaced with OSX's authorization framework. KWallet has a pretty nice-looking API that is abstract enough that it appears it should be relatively easy to reimplement the backend portion with calls to OSX's keychain.
  2. Tanner has been looking into the mess that is KKey. It's currently a twisty maze of x11-specific stuff; it looks like it could be refactored into a very lightweight set of calls to Qt's key handling. *crosses fingers*
  3. I've been doing more research into how KDE starts other programs, and their interaction, as well as talking with an Apple engineer on how to get around the issue where fork loses mach ports (and thus the GUI).
  4. Benjamin Meyer (aka IceFox) has started a revolution in bringing up getting high-quality versions of the KDE icons for 3.2. He's also working on building as much as he can so he can show off our current status at LinuxWorld Expo.

All of this will eventually bear fruit but it makes it seem like nothing's really going on. I assure you, we're getting places. I'll let you know when something happens. =)

Share on Facebook

Binary Updates

There's a whole bunch of new binaries on kde.opendarwin.org. A number of things wanting plugins don't work, I think it's because I caught kdelibs in the midst of an important update; I'm doing a new build to see if that helps.
[Update:] forgot to mention, the new binaries put stuff in /Applications/KDE instead. If you have one of the earlier packages that had it as a symlink, you may want to delete /Applications/KDE before installing all this stuff.
Also, the wiki has moved. The old one was pretty un-featureful. The new one's pretty spiffy.

Share on Facebook

Damn.

If you didn't notice, there was the start of a new binary release up on the binary site.
Unfortunately, it looks like kdelibs has broken enough things that it's pretty much unusuable right now for anything reasonable complex (ie, kwrite works, that's about it...)
Guess I'll have to give kdelibs another shot tomorrow; I think I'm going to have to revert to the Jan. 6th patch and then make only a few changes from what I've done now. I'll keep you posted, there's a *lot* of great changes that you could be playing with if only I hadn't screwed up kdelibs. =)

Share on Facebook

JACK for OSX

There is now a stable release of JACK for Mac OS X. JACK is an audio system and low-latency audio server that was initially developed on Linux, and aims to be portable, well, everywhere.
Previously, there was an OSX port of JACK using PortAudio, but it was incomplete and you lose a lot of the low-latency advantages of JACK by going through an intermediary.
This is excellent news! A lot of very nice Linux audio apps used only JACK because it's basically the only pro-quality audio implementation there.

Share on Facebook

One… MILLION Hits

Since the initial slashdotting on the 30th, I've gotten over...

Dr. Evil
One... MILLION Hits.

Considering I got 2-3,000 a day before then, that's pretty insane.

But cool. =)

Share on Facebook