Pre-compiled gmic CLI bundle for OSX ready for testing

After the success of @Carmelo_DrRaw with the gmic-qt plugin bundle, I have learned from him and tried to build a gmic command-line-interface bundle.

Under http://karo03.bplaced.net/gmic/git/gmic-cli.tgz a directory gmic-cli with gmic and library folder libs should allow to run gmic without any other packages, except of course XQuartz, in a terminal. I would appreciate testings.

Unpack the archive into any folder dir and add its path in PATH variable by export PATH=dir/gmic-cli:$PATH .

gmic up version
should show

[gmic]-0./ Start G’MIC interpreter.
[gmic]-0./ Update commands from the latest definition file on the G’MIC server.

gmic: GREYC’s Magic for Image Computing.

    Version 2.4.1 (pre-release #181020), Copyright (c) 2008-2018, David Tschumperle. 
    (https://gmic.eu)

[gmic]-0./ End G’MIC interpreter.

1 Like

looks like either gio2 wants an older avcodec or avcodec wants a newer gio2.

dyld: Library not loaded: @rpath/libgio-2.0.0.dylib
  Referenced from: /Users/tune/Downloads/gmic-cli/libs/libavcodec.58.18.100.dylib
  Reason: Incompatible library version: libavcodec.58.18.100.dylib requires version 5801.0.0 or later, but libgio-2.0.0.dylib provides version 5401.0.0

Thank you for the info. How I detest these problems.

I have built a and tested it on Mojave. The libs are from Macport, latest upgrade!

Don’t know how to handle this!

May I suggest to put your build scripts on GitHub, and use Travis for the build jobs? Then it will be easy to fix things together. I will be more than happy to guide you through the process, if needed.
I usually take dependencies from homebrew, because of the binary packages that are faster to install (the time allocated for Travis jobs is limited).

Once the machinery is in place, you can setup crown jobs on Travis that automatically recompile the code and upload the package back to github…

Thank you for the suggestion. I am not a large GitHub user and to talk about my scripts is actually an exaggeration. I did only, mostly blindly taken from your scripts, inside the gmic source

export CC=“gcc -mmacosx-version-min=10.8 -fno-stack-protector -march=nocona -mno-sse3 -mtune=generic”
export CXX=“g++ -mmacosx-version-min=10.8 -fno-stack-protector -march=nocona -mno-sse3 -mtune=generic”
make -B cli “SUBLIBS=-lX11”
makedir /tmp/gmic-cli
cp gmic /tmp/gmic-cli/
cd /tmp/gmic-cli
/usr/local/bin/dylibbundler -b -od -x gmic -cd -p “@rpath” > /dev/null
install_name_tool -add_rpath “@loader_path/libs” gmic
cd …
tar czf gmic-cli.tgz gmic-cli

Should I put your instructions on github? It looks quite easy in this case. The only thing that would help me is a list of required dependencies…

Wow, that would be great.

The list of dependencies ? Do you mean the libraries listed in my gmic built:

otool -L gmic

/usr/local/bin/gmic:

/opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)

/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.200.5)

/opt/local/lib/libfftw3.3.dylib (compatibility version 9.0.0, current version 9.8.0)

/opt/local/lib/libfftw3_threads.3.dylib (compatibility version 9.0.0, current version 9.8.0)

/opt/local/lib/libcurl.4.dylib (compatibility version 10.0.0, current version 10.0.0)

/opt/local/lib/libpng16.16.dylib (compatibility version 52.0.0, current version 52.0.0)

/opt/local/lib/libjpeg.9.dylib (compatibility version 13.0.0, current version 13.0.0)

/opt/local/lib/libtiff.5.dylib (compatibility version 9.0.0, current version 9.0.0)

/opt/local/lib/libX11.6.dylib (compatibility version 10.0.0, current version 10.0.0)

/opt/local/lib/libIlmImf-2_2.23.dylib (compatibility version 24.0.0, current version 24.0.0)

/opt/local/lib/libHalf.23.dylib (compatibility version 24.0.0, current version 24.0.0)

/opt/local/lib/libopencv_dnn.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_ml.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_objdetect.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_shape.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_stitching.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_superres.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_videostab.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_calib3d.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_features2d.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_highgui.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_videoio.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_imgcodecs.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_video.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_photo.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_imgproc.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_flann.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/opt/local/lib/libopencv_core.3.4.dylib (compatibility version 3.4.0, current version 3.4.1)

/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.4)

or do you mean the result of your dylibbundler program?

I think the final result for instance what ends up in ls -la libs

otool -L gmic is listing the gmic dependencies, keeping in mind some of the dependencies have subdependencies, etc.

Thank you, ls -la libs is the result of the dylibbundler program which should have resolved all dependencies. Seemingly there is some circling during the resolving of dependencies in that program!

@HIRAM I have under Mojave no problem. What version of MacOS are you using and is there another package manager involved?

As you can see pretty much everything is compiled to run on Mojave, I’m on Sierra. This often happens when bundling with managed packages from MacPorts or Homebrew. Yes dependency resolution is a complex matrix problem so recursion is definitely involved there. As far as the avcodec goes, you might want to try downgrading back to FFmpeg v3.4.

for f in *; do echo file=$f; sudo otool -l $f | grep -A4 'LC_BUILD_VERSION\|LC_VERSION_MIN_MACOSX'; done

file=libHalf.23.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libIex-2_2.23.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libIexMath-2_2.23.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libIlmImf-2_2.23.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libIlmThread-2_2.23.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libImath-2_2.23.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libX11.6.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libXau.6.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libXdmcp.6.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libavcodec.58.18.100.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libavformat.58.12.100.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libavresample.4.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libavutil.56.14.100.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libbluray.2.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libbz2.1.0.6.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libcairo.2.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libcroco-0.6.3.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libcrypto.1.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libcurl.4.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libexpat.1.6.8.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libffi.6.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libfftw3.3.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libfftw3_threads.3.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libfontconfig.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libfreetype.6.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libfribidi.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libgdk_pixbuf-2.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libgio-2.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libglib-2.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libgmodule-2.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libgmp.10.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libgnutls.30.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libgobject-2.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libgraphite2.3.2.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libgthread-2.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libharfbuzz.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libhogweed.4.4.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libiconv.2.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libidn2.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libintl.8.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libjasper.5.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libjpeg.9.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=liblzma.5.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libmodplug.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libmp3lame.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libnettle.6.4.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libogg.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_calib3d.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_core.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_dnn.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_features2d.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_flann.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_highgui.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_imgcodecs.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_imgproc.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_ml.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_objdetect.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_photo.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_shape.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_stitching.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_superres.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_video.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_videoio.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopencv_videostab.3.4.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopenjp2.2.3.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libopus.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libp11-kit.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libpango-1.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libpangocairo-1.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libpangoft2-1.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libpcre.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libpixman-1.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libpng16.16.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libpsl.5.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=librsvg-2.2.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libsoxr.0.1.2.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libspeex.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libssl.1.0.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libswresample.3.1.100.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libswscale.5.1.100.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libtasn1.6.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libtheoradec.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libtheoraenc.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libtiff.5.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libunistring.2.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libuuid.16.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libvorbis.0.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libvorbisenc.2.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libvpx.5.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libwebp.7.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libx264.152.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libx265.165.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libxcb.1.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libxml2.2.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14
file=libz.1.2.11.dylib
       cmd LC_BUILD_VERSION
   cmdsize 32
  platform macos
       sdk 10.14
     minos 10.14

That is a bit above my level. Still I must confess, I have reinstalled MacPorts after upgrading to Mojave, hence… Downgrading in MacPorts is afaik not possible. To build all new similar to partha.com 's approach for Gimp & plugins is far beyond my possibilities. I don’t know if it is possible to build MacPorts packages with minos=10.8

Possibly the problem could be resolved or reduced using the program optool mentioned and used by @Carmelo_DrRaw to correct or change versions of libraries? Actually I could not try optool, there are missing header files!

Unfortunately this can only be used for the case of the GIMP plug-in, which uses run-time libraries that are different from compile-time ones.

In the CLI version we need to do things properly, i.e. recursively pick and fix all dependent libraries, which is what I am trying to do right now (see here). However, there seems to be something strange with the OpenCV libraries provided by Homebrew, that I am still investigating. Currently macdylibbundler stops before copying all dependencies.

Hmm I don’t see that. Some time ago I built gmic cli against the libraries bundeled in the Gimp app. Perhaps one can consider that as an independent plugin. Of course several things didn’t work like opencv or net access, at least everything not built in Gimp.

The behavior of macdylibbundler is difficult, with MacPorts libraries it finished properly…

One big benefit of using github+Travis is the availability of the osx_image: xcode6.4 based on OS X 10.10. Anything built in that environment with that sdk should work for 10.10+.

This is actually an advantage only in theory, because:

  • this old image will be removed very soon
  • a lot of homebrew packages do not have bottles for such old system, and compiling from sources is not an option

For the moment I only encountered backward compatibility problems with Qt and I had to roll back the homebrew package to Qt-5.9

Another trial of gmic-cli.tgz (http://karo03.bplaced.net/gmic/git/gmic-cli.tgz) with downgraded ffmpeg (3.4.1) is put on my server. No change in SDK 10.14 and minos 10.14, however.

Under Mojave this gmic is working! Maybe there is another trial possible?

Still no luck under 10.10.5:

dyld: Library not loaded: /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
  Referenced from: /Users/aferrero/Downloads/gmic-cli 8/libs/libavcodec.57.107.100.dylib
  Reason: image not found

I do not have the CoreImage framework on my system…

Thank you @Carmelo_DrRaw for the test. Most probably CoreImage framework started with 10.11 sdk.

I will not try further the next time. Maybe you come to a solution with your approach.

Many of the binary homebrew packages also depend on MacOS >= 10.11
Looks like one needs to compile a certain number of packages from sources…

I’ll keep working on this, but it will take longer than I was hoping.

@KaRo @HIRAM
I am happy to say that I did quite some progress on this topic, and I have now a working version of gmic-cli for MacOs 10.9 and later. However, it comes without opencv support for the moment.

The code is built on TravisCI and uploaded on GitHub: Release Continuous build · aferrero2707/gmic-osx · GitHub

The main problem I had to face is the availability of binary packages that are compatible with MacOS versions earlier than the one being used for the builds. I have discovered that most of the bottles that homebrew provides for High Sierra (the system used for my Travis CI jobs) are only compatible with MacOS 10.13 and later, which is too restrictive.

After some thinking and researching I ended up making my own bottles, built with the following additional compiler flags:

-mmacosx-version-min=10.8 -march=nocona -mno-sse3 -mtune=generic

Those bottles are also created under TravisCI, using the same OSX image as the one used to compile GMIC, to guarantee as much as possible the consistency of the builds.
The repository with the custom homebrew formulas is here: GitHub - aferrero2707/homebrew-bottles: Custom bottles for building universal bundles on Travis CI. It should be expanded to include other common packages that do not provide enough backward compatibility… requests are welcome.

What do you think? Could you test the gmic-cli package and let me know if it works for you as well?

Here is a screenshot taken on my 10.10.5 system:

2 Likes