I hate RPM packaging.

One of my side duties at work is preparing a disk that (ab)uses our upgrade process to flash the bios on the raid controllers every time IBM releases yet another attempt to make it work right. In the past, what I’ve had to do is make a RPM that installs a couple of “.ufi” files that the %post part of the RPM then uses the arcconf program that’s already on the system to flash the ROMs with. That was fine and dandy, until IBM decided that instead of distributing a ufi file, they’d distribute an ELF binary that included within it the ufi file, the arcconf program, and some other cruft like a script to run it and instructions. Fine, I thought, rather than bothering to unravel all the crap, I’d just package the executable into the RPM and run it in the %post. And it didn’t work. After much sweating and swearing, I finally got it working.

Did you know that the rpmbuild process automatically does a “strip” on any ELF binaries it finds? I didn’t. Did you know that IBM’s packaging of a binary file inside an ELF binary doesn’t work if you strip the file? I didn’t. Did you know that the command to tell rpmbuild to NOT strip the file is almost completely undocumented and obscure to the point of pointlessness? I didn’t. Did you know that the best reference for building RPMs, “Maximum RPM” is no longer available on rpm.org, and the replacement doesn’t have an index or a search function? I didn’t.

Am I annoyed? You bet.

For the benefit of future searchers, here’s how you keep RPM from stripping your binaries. You put the following in your rpm spec file, preferably near the top:

# This stops RPM from stripping the .bin files, which breaks them.
%define __os_install_post \
/usr/lib/rpm/redhat/brp-compress \
/usr/lib/rpm/brp-python-bytecompile \
/usr/lib/rpm/redhat/brp-java-repack-jars \
%{nil}

Intuitive, eh?

Kill me now. Or better yet, kill him now. With fire.

A guy moved into a nearby cube a few weeks ago. Just now I had to go over to tell him to “keep the humming down a bit”, because it was getting increasingly loud and atonal. So now he’s started drumming.

How long do you think it will be before he starts using his speaker phone to talk to somebody two cubes over?

I’m getting flashbacks to Blue Lobster and Global Crossing.

Sleep Study

I had a sleep study last night. I very nearly had two at two different centers, but we got that straightened out and I only had to be in one place at a time.

I arrived at 7:30pm, and was shown to world’s most boring and utilitarian hotel room. It had a TV with basic cable, but no WiFi, so StackOverflow was deprived of my brilliance for the night. Around 9:30 the technician came in and started drawing on my head and attaching electrodes. As well as ones around my head, there were ones under my eyes to measure eye movement, ones on my legs to measure “restless leg syndrome”, ones under my chin to measure teeth grinding, a couple of straps around my chest to measure breathing, and others on my chest for the ECG. The wiring bundle was about a 2 or 3 centimeters in diameter. And then, just to make sure I couldn’t sleep, they hooked up a nasal cannula with another tube that sat on my upper lip to measure my breathing, and a pulse-oximeter for my finger.

With all that on, it was time to try to sleep. And believe me, I tried. Besides the wires that pulled every time I moved, and the hoses in my nose, I also had to contend with a narrow single bed and a not very comfortable mattress. I was actually surprised when I woke up one time during the night because I had thought I wouldn’t sleep at all. Turns out I did, just not well or long.

They kicked me out of bed at 6am, and here it is 7:08 and I’m using the WiFi at Panera to try to catch up, but what I really want to do is go home and sleep. Unstudied.

Busy day (Busy? I just spent 4 hours burying the cat!)

Let’s see, today I

  • Fixed a bug that I’ve been working on for over a week (which I would have fixed in a day if the China team hadn’t put in a kluge to hide the most visible symptom). Oh, and the root cause was a module that the China team had written violating a basic assumption of my pre-existing gui code.
  • Had a job interview at Paychex which went pretty well, but included a strange little math test at the end which was fun but I’m not sure how relevant it is.
  • Went for a paddle – I meant to make six miles, but I only managed four because my shoulder is bugging me.
  • Got a call from the sleep clinic at Sleep Insights “reminding” me that I had a consult appointment at 11:20 am tomorrow, which is kind of strange because I had a sleep study at a completely different sleep clinic tomorrow evening.

I thought about writing more on each of those things, but I figured my blog is boring enough without the help. So if you really need more details, comment and I’ll inflict more detail on you.