The Big Upgrade

28 February 2022 by Lincoln Ramsay

I finally got a new laptop. It’s a MacBook Pro 14″.

It’s been as hassle to get it going, but I had several things going against me…

  1. My old machine never upgraded to Catalina, so I never had to worry about 32-bit binaries. It turns out I still had quite a few of them!
  2. Just like the last time Apple changed processors, Rosetta is amazing, but it’s not a complete solution.

For some time now, I’ve been dragging my OS from machine to machine, so much that I wouldn’t be surprised to find a powerpc binary somewhere on here still. I was a bit concerned that I wouldn’t be able to easily move onto the new machine but thankfully there was a “restore from x86 Time Machine” process.

Actually, it turns out dragging my whole backup was maybe not a great idea. The sheer amount of cruft I have accumulated over many decades is astounding. So many barely-remembered binaries (no longer working), strange folders in Library, etc. I found a non-functioning install of homebrew in /usr/local which prevented me from installing a current version in /opt/homebrew.

This isn’t a review of the machine itself. I might do that later. For now, this is just some notes I’ve been making as I setup the machine.

It took sooooo looooong to install XCode.

Update It turns out I didn’t even need XCode, since I’m not doing iOS development, just compiling things with ye olde command line tools. Yay, one giant hog off my system.

A bunch of games died. I was expecting that since games were one of the major issues when Catalina came out. Most of these games predate my owning of a gaming PC. If I do want to play them again, I’ll just get the PC version I guess.

Many apps needed updates, some automatic, some manual. Many more apps just didn’t work but I seem to have found replacements for all the things I care about. I’m free of 32-bit apps but nowhere near free of Intel apps.

I spent a lot of time trying to find and remove cruft. At one point I accidentally removed a bunch of cups files and broke printing. Luckily I’d just done a Time Machine backup so I was fine.

LibreOffice 7.3 (fresh) cannot print. Only blank paper comes out of the printer. LibreOffice 7.2 (still) works.

Cyberduck crashes on exit. FileZilla seems to be fine. I only use FTP for wireless transfers to/from my phone.

Android Studio has a native version but I had to download it. It didn’t tell me this until after I had updated it.

HAXM is dead. Only 2 of my 4 Android Emulator devices could be converted to ARMv8 images. Strangely, I still cannot get the Android 12 image to run, even though it’s the one that I’d most expect to work, seeing how it’s the current released version. I had the same issue on the old PC but figured it was because I couldn’t update the emulator.

Update Setting the emulator to use automatic OpenGL ES Renderer and API level fixed it. Details over here.

I had a very old ndk that Android Studio didn’t even recognize anymore. So I blew it away and installed the latest “side by side” ndk.

iTunes-LAME is dead. I don’t think I used it that often. It was annoying me anyway because it shoves music into the wrong place. I can do LAME via Audacity or Terminal anyway.

iTunes is gone but thankfully Music is almost the same. Most importantly for me, this means that my Android music player app can still integrate with it. For some reason, I had great trouble getting the UI scripting permission to stick to the “make Music export a playlist as XML” AppleScript app. But it turns out Terminal has that permission and running osascript from the Terminal uses Terminal’s permissions. I virtually never invoked it from the UI anyway, since I like to see the logs.

Viewing a playlist in Music wastes about HALF THE SCREEN on a stupid banner. WTF Apple?! Apparently it’s great on a 27″ iMac but I have a 14″ laptop screen. iTunes could do this just fine.

Music in songs mode Music in playlist mode

The MP3Gain app stopped working, but I never directly used it anyway. I have a perl script that runs aacgain for all files in the iTunes Music folder. I did need a new aacgain binary.

I just about fell off my chair when my Qt 4 apps continued to work. Not only that, I can re-compile them (as long as I hack the target version in the Makefile)! I guess this has to be at least partly because I rebuilt Qt 4 myself, back when 10.11 broke it. This let me keep some of my old apps going for a while, which was nice (since it let me focus on other things first). I have since updated them all to Qt 6.

I hadn’t even thought about trying to continue with PySide/Qt 4 for my wallpaper app since cleaning out old python versions and cruft was one of the things I did. I’d already converted the wallpaper app over to PySide 2/Qt 5 for an Ubuntu 20.04 system so I figured I’d go with that, but pip refused to install PySide 2 and I couldn’t find a “but I have Rosetta, it’ll be fine” switch. So my wallpaper app made the jump to PySide 6/Qt 6. In theory, it can fall back to PySide 2/Qt 5 (tested) or PySide/Qt4 (untested).

My media viewer app stopped doing video, probably because of the ancient VLC 1 libs it was using. So I finally upgraded it from Qt 4/VLC 1 to Qt 6/VLC 3 and it’s good again.

I have an app that had a copy of QtSingleApplication. I’ve now ported that over to Qt 6.

My biggest pain was my TV downloading app. It’s a sprawling beast with a server component that does the download + transcode from the Humax box (previously a TiVo), and a UI component for choosing what to download, as well as copying files from the server to the laptop. There’s a TV guide viewer so I can see what’s coming up, and a few other bits and pieces. One of the reasons I had stuck with Qt 4 for so long is that I was using some QML in the UI and Qt 5 significantly changed how QML works. The media viewer port introduced me to Qt’s “window to widget” wrapper, which allows embedding windows within widget-based UIs. It’s useful for QML, since it doesn’t force use of OpenGL rendering the way QQuickWidget does.

All in all, I was kinda surprised at the ease of upgrading ancient Qt apps to a significantly newer Qt. Makes me wonder why I put it off for so long.