yak shaving time again

Working on old packages in Cooker always leads to interesting bouts of yak shaving. The latest goes like this...

I'm working through the few remaining 2007.1-era packages in main. I got to libgfortran1 - an old major of libgfortran, which came from GCC 4.1.x. It's still around because some apps haven't been rebuilt against libgfortran2, the newer major.

So I start working on these. I hit ghemical, which builds fine on i586 but fails on x86-64 due to a bunch of 'undefined references to (various bits of libSC)' errors.

I determine that hacking a bunch of extra parameters onto the GCC command line at this point of the build fixes the problem, but that's obviously not the right fix, so it's time to go hunting...

In the end it turns out that what's happening is ghemical is running the command 'sc-config' to find the compiler parameters needed by libSC. On i586, sc-config returns the correct parameters. On x86-64, it doesn't.

After some more poking and much head-scratching, I notice that sc-config is simply a shell script. The top of it defines a variable called 'libdir'. Even on x86-64, this was set to /usr/lib . For Mandriva, this is not correct; our x86-64 edition uses /usr/lib64 as the library directory.

So I do a quick hack to the script and verify that yes, if I set libdir to be /usr/lib64 on x86-64, sc-config immediately starts returning all the correct parameters. So I go hunting through the libSC source and find out exactly how that libdir setting is created, patch that, rebuild, and success! sc-config works, so ghemical builds properly, so one more dependency on libgfortran1 is gone...

...and after several dozen things like this, we can finally remove the old package :)


No comments.