Menu

Reduce-Snapshot_6547.dmg does not work on macOS 10.15.7

Developers
2023-03-15
2023-03-27
  • Tilda A. Steiner

    Dear Developers,

    thanks for your recent upgrade of Reduce.

    Unfortunately the most recent Snapshot_6547.dmg as of 2023-03-08 does not run on macOS 10.15.7 and probably also not on macOS 10.13.6 anymore.

    So I wonder, if support for these systems has ended or if the lastest version(s) of Reduce will still be made available for these "legacy" systems, as was the case with up tp Snapshot_6339.dmg.

    Cheers
    Tilda

     
    • Arthur Norman

      Arthur Norman - 2023-03-16

      This reply is not just aimed at the original poster bu at all users with
      Macintoshes, in the hope that experts in Mac develpoment will try
      installing and building and feeling back some of their expertise!

      First of all APOLOGIES. Making snapshots can sometimes be a bit fraught
      and this time for the Mac the main thing we were trting to do was to
      provide "universal" builds (ie x86+arm). That meant that the snapshot
      could not be built on the ancient x86-Mac we had previously been using
      since it is old enough that Apple do not support installing a new enough
      OS to install a new enough Xcode to do universal builds.
      The mac that the latest snapshot was built on runs Big Sur (11.7.4) abd
      being a mid-2014 machine it can not be upgraded beyond that - which will
      gradually give pain in the future! Apple seem to say that 10.15
      (Catalina) will not be supported beyond November 30 2022.

      Have you tried "redpsl" as well as "redcsl" since it may work better!

      As Reduce developers we do not have access to many Macintosh machines and
      eg for me I use Windows and Linux (and indeed possibly the Raspberry pi)
      more. A number of years ago I had set up some Mac VMs on my macbook so I
      could install previous releases of MacOS for testing, but that ended up
      using more of the disc space than I could tolerate and was amazingly
      cumbersome, but one of the MacOS updates seemed to make that really hard
      to do. I now see that on an ARM Mac there are potentially nice ways to
      virualise previous ARM-based releases of MacOS but the disc space issue
      remains and anyway that would not help with the x86 variations! I would
      hope that Reduce maintained compatibility with as many machines as
      possible, so ceasing to support 10.15 was not deliverate and since I do
      not have access to a machine running it was something I was unaware of.

      There are a few possibilities that may help you! We MAY be able to fire up
      the archaic snapshot builder and make a .dmg of a current Reduce
      specifically for older Macs. I can not give you a time-frame for that and
      it happens that I set off on a trip later today. You can of course fetch
      and reinstall an older snapshot. I think we are not terribly likely to put
      a lot of effort into working out what Apple changed that led to the
      incompatibility you observe, but hypothetically we might!
      Or if you are either brave or feel you already have the right skills you
      can build Reduce from source on your machine - if you achieve that you
      have the very best way of keeping up to date. So I will sketch what that
      involves in case you wish to try.

      (1) Ensure you have Xcode installed with its command-line tools.

      (2) Install macports. [web search for info on that!]
      If you are an existing "brew" user then we have less of a canned path but
      all should be possible and if you got it all going we would really like to
      hear!

      (3) sudo port install subversion
      svn co svn://svn.code.sf.net/p/reduce-algebra/code/trunk \
      reduce-algebra
      That should fetch all the Reduce code into a new directory called
      "reduce-algebra"

      (4) cd reduce-algebra
      sudo scripts/macports-setup.sh
      This is AMAZINGLY tedious and it fetches and installs all the build tools
      and libraries etc that Reduce needs. This only has to be done once! Well
      subsequently every so often you go
      sudo port selfupdate
      sudo port upgrade outdated
      but those steps are much more modest!
      [If you are trying to use "brew" than the above script may give a hint
      about what packages are needed. It would be really nice if somebody made
      a "scripts/brew-setup.sh" in similar style and contributed it!]

      (5) cd reduce-algebra
      ./configure --with-csl [or --with-psl]
      make
      bin/redcsl [or --with-psl] run Reduce!!
      Again the FIRST time you do the "make" step it takes longer than
      subsequent updates and on an older machine you may notice that quite a
      lot. So "patience".

      Now of course the reality is that those steps are SUPPOSED to work and
      indeed be fairly simple to explain, but glitches can arise. So maybe
      going "script fifth-attempt.log" ahead of the try would make sense so you
      get a full log since working out which message is the key problem can be
      hard until you build up experience! I will not be able to advise while I
      am budy doing other things for a bit, but maybe others will and/or I can
      join in when I get home again!

      Arthur

      On Wed, 15 Mar 2023, Tilda A. Steiner wrote:

      Dear Developers,

      thanks for your recent upgrade of Reduce.

      Unfortunately the most recent Snapshot_6547.dmg as of 2023-03-08 does
      not run on macOS 10.15.7 and probably also not on macOS 10.13.6 anymore.

      So I wonder, if support for these systems has ended or if the lastest
      version(s) of Reduce will still be made available for these "legacy"
      systems, as was the case with up tp Snapshot_6339.dmg.

      Cheers
      Tilda

       
  • Tilda A. Steiner

    Dear Arthur,

    thanks for your fast reply and both the detailed eplanations as well as the instructions on how to compile reduce from sources. Yet, at the moment I do not feel brave enough to do so on my own.

    I noticed that there is an older version of Reduce (2021-11-19) on MacPorts. I asked Mark Brethen, their maintainer, if there are plans to update the port to the latest Snapshot. If so, this might be good news for Reduce users working on older macOS computers.

    Cheers
    Tilda

     
    • Jeffrey H. Johnson

      Another alternative you might try ...

      I've recently introduced a Homebrew tap for macOS - see https://github.com/reduce-algebra/homebrew-reduce-algebra

      While Homebrew follows Apple's support schedule, dropping support for a release when Apple declares it EOL, they do not actively remove the support. They currently state that "macOS 11 (Big Sur) or higher is best and supported, 10.11 (El Capitan) – 10.15 (Catalina) are unsupported but may work and 10.10 (Yosemite) and older will not run Homebrew at all."

      So, no promises, but you might want to give it a try. It will compile Reduce from sources for you, but everything is fully automatic, so you don't have to be scared. It will either work, or it won't. :)

      First, install Homebrew - see https://brew.sh/ - and then:

      brew tap reduce-algebra/reduce-algebra

      brew install --verbose reduce

      This takes about 40 minutes on my machine (which already has all the prerequisites installed and configured.) You system will likely take considerably longer, especially the first time. There are some points where it might seem hung, especially building the documentation, but just be patient.

      While I can't make any promises that this will work on anything but macOS 13, macOS 12, and macOS 11, you might be successful.

      If it does work for you, please let me know, and I'll make a note of it or try to fix your problem if I can.

      Edit: This should work just fine with MacPorts installed (although it is not necessary), but I would recommend you remove any Reduce version installed via MacPorts before trying it via Homebrew. Also, I'm not sure M1 support is working yet, but that is likely not relevant for you.

       

      Last edit: Jeffrey H. Johnson 2023-03-18
  • Tilda A. Steiner

    Dear Jeffrey,

    thanks for your suggestions. I have MacPorts installed on my computers and quite happy with it. I am a bit hesitant to install homebrew in addition to that. I'm not sure if it really is a good idea to have the two different package managers on one system.

    Cheers
    Tilda

     
  • Jeffrey H. Johnson

    Hi Tilda,

    On supported macOS systems, the current MacPorts and current Homebrew coexist on the same system without any hassles. It's also not difficult to prefer a package system or the over if they both install something (for example, there are legitimate reasons you might prefer the MacPorts gnuplot package over Homerew, or vice-versa). Of course, on a "legacy" macOS <11 system, things might not work as well.

    Homebrew does allow multiple user-level installations, although this is explicitly an unsupported configuration (and you can't ask the upstream for help) but if you want to try it, it is "safe" to your computer. I have a helper script that I created called localbrew.sh that makes this easier to manage. You can also get rid of it all with a rm -rf $HOME/.localbrew if it doesn't work for you. I do regularly test this method of installation, using Intel macOS.

    If you want to try it:

    cd ~ && curl -fsSLO https://raw.githubusercontent.com/johnsonjh/localbrew/master/localbrew.sh && chmod a+x localbrew.sh && ./localbrew.sh

    This will create a somewhat isolated Homebrew installation in $HOME/.localbrew, and start a sub-shell in that environment. If you have used Python's virtualenv, it should feel familiar.

    Running the localbrew.sh script should result in output similar to this:

    Cloning into '/Users/user/.localbrew'...
    (...)
    Updating files: 100% (3020/3020), done.
    * Updating ...
    ==> Tapping homebrew/core
    Cloning into '/Users/user/.localbrew/Library/Taps/homebrew/homebrew-core'...
    (...)
    Tapped 3 commands and 6582 formulae (6,936 files, 609.7MB).
    ==> Fetching bash
    (...)
    [localbrew] Using Homebrew prefix: $HOME/.localbrew
    [localbrew] Using PATH: $HOME/.localbrew/bin:$HOME/.localbrew/sbin:/usr/bin:/bin:/usr/sbin:/sbin
    [localbrew] machine:~ user$

    At this point, I'd recommend you exit and then re-run ./localbrew.sh (which ensures you are running the most up-to-date bash):

    [localbrew] machine:~ user$ exit

    $ ./localbrew.sh
    [localbrew] Using Homebrew prefix: $HOME/.localbrew
    [localbrew] Using PATH: $HOME/.localbrew/bin:$HOME/.localbrew/sbin:/usr/bin:/bin:/usr/sbin:/sbin
    [localbrew] machine:~ user$

    Now you can install reduce (or reduce-current if you prefer) from the tap as usual:

    [localbrew] machine:~ user$ brew tap reduce-algebra/reduce-algebra
    ==> Tapping reduce-algebra/reduce-algebra
    (...)
    Tapped 2 formulae (22 files, 262.4KB).

    [localbrew] machine:~ user$ time brew install reduce --verbose --display-times
    ==> Fetching dependencies for reduce-algebra/reduce-algebra/reduce: brotli, pkg-config, libpng, freetype, fontconfig, gettext, jpeg-turbo, giflib, highway, imath, lz4, xz, zstd, libtiff, little-cms2, openexr, webp, jpeg-xl, libvmaf, aom, libavif, gd, libcerf, lua, ninja, mpdecimal, ca-certificates, openssl@1.1, readline, sqlite, python@3.11, meson, pcre2, glib, util-macros, xtrans, xorgproto, libxau, libxdmcp, libxcb, libx11, libxext, libxrender, lzo, pixman, cairo, fribidi, graphite2, icu4c, harfbuzz, pango, qt@5, gnuplot, libffi, libxfixes, libxcursor, libxft, libxi, libxrandr, and libiconv ...
    (...)

    This will take some time - the dependency list is larger than the standard installation because more packages will be built from source, and all those build prerequisites will also be installed (all into ~/.localbrew).

    The whole process took 102 minutes on my virtualized CI system, so I'd expect a decent real machine to finish in 45-55 minutes. After it finishes, you can test it by running the standard commands (i.e. reduce, redcsl, rfpsl, etc.) from the [localbrew] shell prompt.

    More conveniently, you run it directly via full path, i.e. $HOME/.localbrew/bin/reduce, $HOME/.localbrew/bin/redcsl, $HOME/.localbrew/bin/rfpsl, etc. without needing to start localbrew.sh. You probably would need to set your PATH too if you want to use the localbrew Gnuplot - I'd have to verify that.

    (Of course, you probably want XQuartz (https://www.xquartz.org), for Reduce's GUI and graphical Gnuplot output, if you don't have it already.)

    Updates will be significantly faster; just run ./localbrew.sh and then brew update && brew upgrade --verbose at any time.

    If you have a fast Internet connection, running brew cleanup -s --prune=all after installation will recover about 600MB of disk space, with the tradeoff that some packages will need to be downloaded and extracted again for upgrades. The size of my $HOME/.localbrew directory ends up about 2.5GB, or 1.9GB after the cleanup.

    There are quite a few package managers for macOS (Fink, Nix, MacPorts, Homebrew, and others...) and Homebrew was (IMHO) really buggy for some time, but now (again, IMHO only) has surpassed MacPorts in keeping up-to-date, package quality, and ease of use. I'm actually not a regular macOS user, but I contribute regularly to Homebrew since it's become the de facto standard macOS package manager. When I do use a Mac, I want all my usual tools working and I only want to install one package manager.

    It's worth mentioning that on Apple Silicon machines, the Reduce package built from my Homebrew tap should be faster (possibly significantly faster) than the upstream Universal package because it will build a 100%-native ARM64 LTO-tuned program, using the very latest compiler and latest macOS SDK, fully optimized for the running macOS version. I've not verified the localbrew.sh method on an M1 yet, but M1 support in general now seems to be working well.

    You might still not want to try it (and I've not tested on macOS 10.x either), but this post might help others who do but don't want a regular Homebrew installation.

    -- Jeff

     

    Last edit: Jeffrey H. Johnson 2023-03-18
    • Tilda A. Steiner

      Dear Jeffrey,

      thanks for your in-depth instructions on how to setup Homebrew locally and install Reduce.

      You got me convinced to give Homebrew a go. As it can peacefully coexist with MacPorts on supported systems, I guess this will have to wait till I replace my old macintoshes in a year or two.

      Cheers
      Tilda

       
      • Jeffrey H. Johnson

        Tilda,

        No problem!

        The biggest reason I prefer using Homebrew is for easy automatic updates, so I hope others find it useful. Ironically, my main Linux machine is running Reduce 5689 (from 2021), so perhaps I should focus on Linuxbrew support, or creating a Yum/DNF RPM repository next!

        I also updated the documentation on the web page at https://github.com/reduce-algebra/homebrew-reduce-algebra to make it a bit more clear that that repository serves two related but distinct purposes, allowing Homebrew users to install REDUCE and keep it updated via brew, and allowing binary REDUCE distributions, which will not require Homebrew to run, to be built using Homebrew as an alternative to MacPorts.

        I've built the latest packages for macOS 10.13 using Clang 15.0.7 (which is considerably newer than the Clang 10 included in XCode 10.1), so this may provide some performance benefits benefits.

         
  • Eberhard Schruefer

    After a quite big struggle with our old snapshot-builder I managed to create a snapshot that might work on older Mac's. Please try it out.

    The snapshot is now on sourceforge and is named Reduce-legacy_snapshot_6550.dmg

    Eberhard

     
  • Tilda A. Steiner

    Dear Eberhard,

    thank you very much for your work. I installed the legacy-snapshot_6550.dmg on macOS 10.15.7, and it seems to be working fine: both all the csl apps and psl when called from within a TeXmacs session. I guess it will probably also run on macOS 10.13.6. I will let you know if it doesn't.

    Cheers
    Tilda

     
    • Jeffrey H. Johnson

      I’ve also managed to produce a new (unofficial) legacy build (this one actually done on a 10.13 system) …

      It’s available at https://github.com/reduce-algebra/homebrew-reduce-algebra/releases/download/Reduce_6547-x86_64-mac_10.13_highsierra-darwin17.7.0/Reduce_6547-x86_64-mac_10.13_highsierra-darwin17.7.0.dmg

      The bad news: getting my Homebrew-based localbrew setup working on High Sierra was not for the faint of heart (and will only get degrade over time as there are no more updates for the operating system or toolchains.) Increasing the optimization level or enabling LTO, even with the latest Xcode available for this system, which is 10.1, results in a linker crash. As a result, the build targets all Intel processors generically, and uses standard optimizations.

      The good news: it was done via localbrew, so the build environment is transportable. If anyone wants to reproduce this for themselves on their own system, I can provide the whole build environment as a (rather large) archive.

      Also, it might be possible to build newer versions of LLVM and Clang for better results, but really, these systems should be upgraded (or retired) soon.

      I’ll add any new builds to https://github.com/reduce-algebra/homebrew-reduce-algebra/wiki/Package-Building

      --
      Jeffrey H. Johnson
      trnsz@pobox.com

      On Tue, Mar 21, 2023, at 3:08 PM, Tilda A. Steiner wrote:

      Dear Eberhard,

      thank you very much for your work. I installed the legacy-snapshot_6550.dmg on macOS 10.15.7, and it seems to be working fine: both all the csl apps and psl when called from within a TeXmacs session. I guess it will probably also run on macOS 10.13.6. I will let you know if it doesn't.

      Cheers
      Tilda

       

Log in to post a comment.