NASA Insignia
Site Title

Moving to all 64-bit applications

macOS 10.15, "Catalina", released in October 2019, is Apple's first 64-bit-only operating system. To get ready for this transition, you need identify all 32-bit only applications and programs and upgrade them.

Double-clickable (Aqua) programs

You have probably already been seeing messages like the following for a few years (introduced in 10.13?):
not optimized screen shot

This message (above) is not up to Apple's usual clarity standards, but what it really means is that this particular version of this application is 32-bit only, and needs to be upgraded. These apps otherwise ran fine all the way through 10.14.6 (Mojave).

How to find a list of applications and their 32- or 64-bit status

  1. Go to Apple Menu → About this Mac → System Report
  2. Click on 'Applications' in the 'Software' section in the left sidebar.

The resulting display will show a "64-bit (Intel)" column (you may need to make window wider to see it), with each application listed as "Yes" or "No".

If you click on the 64-bit column to sort by No/Yes, you will indeed see the 32-bit ("No") applications grouped together. However, if you have multiple copies of certain items, it won't be readily apparent that you already have a newer 64-bit version.

Thus, it is advised to also click on the 'Application Name' column to indeed sort by name, so you can see multiple copies of a given application grouped together, and check their status that way.

Getting updated versions of applications

You have multiple ways to get newer versions:
  • Contact ASD System to get a new copy of "ASD Standard Apps". Every application included there has been updated, except for ones for which no update has been released. (There are just a handful of those.)
  • Use Self Service.app (Jamf) to update to newer versions. For example, MS Office 2011 will no longer work, but Office 2019/O365 is available via Self Service.
  • In a given application, look for a menu that has a "Check for Updates" option (the "Sparkle" framework), and see if you can download a newer version that way.
  • You will have to buy newer software in some cases (e.g., Adobe Creative Suite CS4?).
  • Check whether you use the listed 32-bit parts. As an example, IDL 8.5's main idl command line is fine as a 64-bit item, but some of the GUI components are not. If you only use the command line, you're fine. And if you need a newer version of IDL (we have up to 8.7), please contact ASD System.

Command-line programs

How to check the status of command-line programs

The UNIX file command will tell you information about files, directories, symbolic links, sockets, and more. In this context, it can return information about the kind of executable. Note that

  • "Mach-O executable i386" is a Mac Intel 32-bit executable
  • "Mach-O 64-bit executable x86_64" is a Mac Intel 64-bit one
  • "Mach-O executable ppc" is for something really old (PowerPC Mac executable, for 2006 and prior Macs)

Example:

% file ~/bin/my_really_old_program
/Users/dfriedla/bin/my_really_old_program: Mach-O executable i386

You may see one other type, for a 'universal' executable which has binary code for two different architectures in the same file:

% file /opt/X11/bin/xprop:           Mach-O universal binary with 2 architectures: [i386:Mach-O executable i386] [x86_64:Mach-O 64-bit executable x86_64]
/opt/X11/bin/xprop (for architecture i386):	Mach-O executable i386
/opt/X11/bin/xprop (for architecture x86_64):	Mach-O 64-bit executable x86_6

As long it shows x86_64, it is fine.

You can check multiple files at once, e.g.:

% file /path/to/binary_A /path/to/other_dir/binary_B ~/bin/binary_C
or
% file ~/bin/*

Using file to check double-clickable applications

It is possible to use file to check an application, but you can't just feed it the name or path of the application, because the name is just a directory. Instead, you have to dig into the Contents/MacOS directory and find the name of the actual executable (not the parent 'bundle').

Useful tip: You can drag an object from any Finder window (or the Desktop) into a Terminal (not xterm) window and it will fill in the path for you.

How to do this:

  1. In a Terminal window, type file and a space.
  2. Locate the application in the Finder
  3. Drag the Application to the Terminal window. The full path should appear, followed by a space.
  4. Delete the space and add /Contents/MacOS/ (you can use Tab for file completion to help you here).
  5. Hit Tab (twice in bash) after the last slash to show you the list of files there. Then type the rest of the name ("Fetch" in the below example) and hit Return.

Example:

% file /Applications/Extra_Applications/Fetch\ 5.7\ UB/Fetch.app/Contents/MacOS/
Fetch*            SFTPSocksConnect* SSH Helper*       libFetch.dylib*   
% file /Applications/Extra_Applications/Fetch\ 5.7\ UB/Fetch.app/Contents/MacOS/Fetch
/Applications/Extra_Applications/Fetch 5.7 UB/Fetch.app/Contents/MacOS/Fetch: Mach-O executable i386

 

A better command-line approach for checking for non-64-bit applications

I have written a python script, magic_app_info.py, that can very thoroughly check any specific area that you point it towards.

(This script makes it far less tedious than the technique in the above 'Using file to check double-clickable applications' section.)

To use it, right-click on the above link to grab the script. Then, from Terminal, change its permissions to make it executable:

chmod a+x ~/Downloads/magic_app_info.py
(assuming you saved it to ~/Downloads. Adjust as necessary.)

You run it by simply specifying a folder or application

~/Downloads/magic_app_info.py /Applications 
You can also type the name of the script, as above, hit space, and then drag-and-drop a folder or application from the Finder into the Terminal window.

You can also specify more than one element on the command line.

The script will run, identifying every executable it runs across (and skip various other file types), and will conclude with a numbered printout of everything it found.

Don't be concerned at all about "ASD Standard Apps" — I have a new all-64-bit version ready to distribute.

How to update command-line programs

Most likely, you are going to have to recompile these. You want to check this fairly soon, in case the program won't build in a 64-bit environment. You may need to check Makefiles, in case it is hard-coded to add a "-m32" flag for a 32-bit build, or see if a README file has information about these issues. Again, please contact ASD System for assistance.

Virtual Machines

If you have some critical piece of software which simply cannot be updated, it may be possible to run it in a 'virtual machine' environment with an earlier version of macOS. Details for this are still being worked out. But this is really a last-ditch option.


David Friedlander
7 Oct 2019, updated 14 Feb 2020 (new script)