Homebrew / homebrew-core

🍻 Default formulae for the missing package manager for macOS (or Linux)
https://brew.sh
BSD 2-Clause "Simplified" License
13.75k stars 12.44k forks source link

Unbottled Formulae on Monterey (Intel and ARM) #94212

Closed carlocab closed 1 year ago

carlocab commented 2 years ago

Update from @danielnachun: This is a final list of the formulae which remain unbottled on both Intel and ARM Monterey which are not deprecated, disabled, :all, or versioned formulae.

Build failure


Below is a list of the most-installed formulae (ranked according to install events in the last 90 days) that have no bottles on Monterey (both Intel and ARM).

We should try to get these bottled where we can. Some of these still have no Big Sur bottles -- if they don't, this should be reported upstream for assistance.

A number of these will have no bottles because they have unbottled dependencies. You can check with:

brew unbottled --tag=monterey octave
brew unbottled --tag=arm64_monterey octave
Both Intel and ARM

``` Formula Install Events (90d) hyperkit 18752 mcrypt 8283 elasticsearch 6658 logstash 1803 docker-machine-driver-xhyve 1624 truncate 1241 ipmitool 1233 pgloader 1183 winexe 1104 percona-toolkit 976 grace 860 ddcctl 856 infer 853 xhyve 823 mermaid-cli 790 bluetoothconnector 704 libbs2b 676 mlt 654 hbase 645 volatility 643 libstfl 638 rtorrent 632 gsmartcontrol 617 chisel 599 freeradius-server 562 pdf2htmlex 549 multitail 548 lilypond 537 apollo-cli 492 fakeroot 489 httping 487 glade 483 audacious 464 buildapp 455 pdflib-lite 440 ical-buddy 437 gdcm 428 ki 408 easy-tag 404 pgrouting 398 gwyddion 374 allegro 373 questdb 366 xctool 348 modd 328 suricata 302 kamel 300 idris2 298 clair 297 ecl 296 termshark 285 libfaketime 278 rakudo-star 257 tnftpd 246 libdv 246 nedit 241 needle 234 mpfi 234 purescript 231 subliminal 229 clojure-lsp 225 moc 224 platypus 222 subversion@1.8 200 latexml 191 ddd 186 balena-cli 182 mysql++ 180 kotlin-language-server 177 mytop 176 sonarqube-lts 171 cadaver 162 singular 160 gmt@5 160 dynare 157 paperkey 156 insect 146 osm2pgrouting 144 apache-archiva 143 xsane 140 sf-pwgen 136 itk 136 pig 134 pth 133 innotop 129 afsctool 125 alot 117 synfig 116 jumanpp 115 tcc 113 lesstif 112 vera++ 104 i2p 102 openmodelica 100 libzdb 95 gtranslator 93 druid 90 virtualpg 89 lanraragi 88 carla 82 healpix 81 ocp 80 dsh 80 mmseqs2 78 itpp 78 eiffelstudio 77 bluepill 76 libdshconfig 74 alluxio 74 pulp 70 mesos 69 makepkg 69 beast 68 gabedit 66 nvi 65 juman 63 json-fortran 62 ringojs 60 xcprojectlint 59 montage 59 manticoresearch 59 ivtools 59 inlets 58 klee 57 envoy@1.18 56 qt-percona-server 55 pev 55 inspectrum 55 hatari 55 libiptcdata 54 drafter 54 ompl 52 nailgun 52 gjs 52 coreos-ct 51 libtensorflow@1 50 e2tools 50 libtecla 48 pkcrack 45 extract_url 45 pushpin 43 compface 43 acl2 43 minuit2 40 aida-header 39 xsd 38 soci 38 lightning 38 stellar-core 37 cassandra@2.1 37 bareos-client 37 ht 36 libglademm 35 aterm 33 libmusicbrainz 32 plowshare 30 gnuplot@4 30 geomview 30 ship 29 libopennet 29 cstore_fdw 28 pcb 27 libetonyek 27 jing-trang 27 flowgrind 27 rsstail 25 gssh 25 qmmp 24 trafficserver 23 pike 23 libmrss 23 huexpress 23 flactag 23 falcon 23 rex 22 ngircd 22 libxdiff 22 libgtop 21 garmintools 21 corectl 20 classads 20 cmusfm 19 adplug 19 voro++ 18 yamdi 17 rlog 17 libident 17 docker2aci 17 braid 17 opentsdb 15 metaproxy 15 harbour 15 vrpn 14 tpp 14 scrollkeeper 14 liquigraph 14 ibex 14 flac123 14 omega 13 mikutter 13 echoprint-codegen 13 c10t 13 xlispstat 12 sdf 12 nmh 12 ganglia 12 ekhtml 12 clipsafe 12 yamcha 11 xshogi 10 xlslib 10 sec 10 psc-package 10 glulxe 10 ekg2 10 tarsnap-gui 9 mruby-cli 9 libgetdata 9 genstats 9 eventql 9 wv2 8 udis86 8 texapp 8 solid 8 pgdbf 8 libodfgen 8 git-remote-hg 8 gel 8 couchdb-lucene 8 bas55 8 ogmtools 7 objfw 7 mecab-unidic-extended 7 lib3ds 7 fbi-servefiles 7 dbxml 7 cubelib 7 appscale-tools 7 ```

carlocab commented 2 years ago

These formulae are missing only ARM bottles on Monterey:

ARM only

``` Formula Install Events (90d) openjdk@8 48311 gdb 38948 upx 19486 mono 19335 node@10 12189 v8@3.15 6202 mysql@5.6 6110 git-annex 1837 chezscheme 1028 mit-scheme 1021 redis@4.0 601 sslyze 588 blast 572 redis@3.2 448 pympress 414 openttd 361 hmmer 354 joplin-cli 323 unicorn 314 acpica 275 appstream-glib 262 gnu-smalltalk 255 kibana@6 247 gdbgui 245 sqliteodbc 241 kite 237 scriptcs 235 ipmiutil 228 lepton 209 systemc 206 gexiv2 203 gegl 198 cryptol 179 cquery 176 ginac 167 datalad 164 librest 161 afl-fuzz 159 geocode-glib 153 ghc@9 149 mlton 147 clozure-cl 138 bigloo 138 cp2k 134 minizinc 130 gnome-recipes 124 hashlink 114 dar 112 spades 104 nwchem 104 pjproject 97 io 91 stella 89 mlkit 89 osm-gps-map 88 geogram 88 cucumber-ruby 86 cln 85 dc3dd 83 fq 82 rig 75 hsd 75 sigrok-cli 74 odin 74 efl 71 raxml-ng 67 dvm 67 box2d 66 luvit 65 julius 65 tracker 57 streamripper 52 openslp 48 nacl 48 mupen64plus 48 libgweather 48 openfast 47 libchamplain 47 grin-wallet 45 wput 44 libdbi 41 mercury 40 b2sum 40 jpeg-archive 39 speech-tools 38 abricate 37 xlearn 35 boringtun 35 cf-tool 33 blastem 33 valabind 32 agedu 32 nu 31 mvtools 30 redex 29 picat 29 libpcl 29 cpu_features 29 blaze 29 clucene 27 ssdb 25 luaradio 25 tidyp 24 libcpuid 23 zydis 22 sdlpop 22 mongrel2 22 chakra 22 xplanet 20 biosig 20 awsweeper 20 teleconsole 19 snap7 19 rp 17 lincity-ng 16 cmix 16 virgil 13 lcdproc 13 hyperestraier 13 libsquish 12 sgrep 11 s2geometry 11 mplayershell 11 fibjs 11 sagittarius-scheme 10 intercal 10 dnscrypt-wrapper 10 bde 10 libsmf 9 gpsim 9 dgen 8 ctail 8 bic 7 ```

carlocab commented 2 years ago

These formulae are missing only Intel bottles on Monterey:

Intel only - [x] `terraform@0.13` (Installs: 1670) disabled 9bc3544f70cb4522f726c92551fc5d46b753f8c3 - [x] `go@1.15` (Installs: 1990) disabled ee55e2d7a3f8644311dc4c9878990e22270d06fa - [x] `go@1.14` (Installs: 1101) disabled b892fd315b729d5966fa414b8a3a21fe653761db - [x] `go@1.13` (Installs: 1128) disabled 95bb4426b36c8f2e09f233942a5db9617ec880c2 - [x] `gcc@10` (Installs: 1942) - [x] `gcc@9` (Installs: 3717) - [x] `gcc@8` (Installs: 1474) - [x] `gcc@7` (Installs: 1466) - [x] `gcc@6` (Installs: 1332) - [x] `minimal-racket` (Installs: 1397) - [x] `ansible@2.8` - #98441 - [x] `truffle` - #98286 - [x] `signal-cli` - #98284 - [x] `gradio` - #98295 - [x] `nexus` - #98124 - [x] `openalpr` - Doesn't build with `tesseract >= 5` - [x] `cassandra@2.2` - Python 2: #96018 - [x] `cassandra@3` - Python 2
luca-drf commented 2 years ago

Not sure if this is the right place for this (if it isn't, I'm sorry, please point me to the right place) but I've noticed that macvim 8.2-172 Monterey x86_64 bottle (sha256:82b452d795bab0b1771eab28210e4a342b723724d3a90ed54f411e948cf26e37) seems to have a build bug where LSMinimumSystemVersion is set to 12.2 resulting in Monterey smaller revisions to refuse to start the app. The program actually works fine when launched from command line with mvim.

Brew info:

macvim: stable 8.2-172 (bottled), HEAD
GUI for vim, made for macOS
https://github.com/macvim-dev/macvim
Conflicts with:
  vim (because vim and macvim both install vi* binaries)
/usr/local/Cellar/macvim/8.2-172 (2,314 files, 43.8MB) *
  Poured from bottle on 2022-02-08 at 15:43:38
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/macvim.rb

Brew config:

HOMEBREW_VERSION: 3.3.14
ORIGIN: https://github.com/Homebrew/brew
HEAD: 8a787e45ff45583fb245030757296548f82c1cbd
Last commit: 3 days ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: 0899794b825ce71cfe9869e2428ea0c7b3a1958c
Core tap last commit: 66 minutes ago
Core tap branch: master
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CASK_OPTS: []
HOMEBREW_CORE_GIT_REMOTE: https://github.com/Homebrew/homebrew-core
HOMEBREW_DISPLAY: /private/tmp/com.apple.launchd.2jhModqlWg/org.macosforge.xquartz:0
HOMEBREW_MAKE_JOBS: 8
Homebrew Ruby: 2.6.8 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
CPU: octa-core 64-bit kabylake
Clang: 13.0.0 build 1300
Git: 2.35.1 => /usr/local/bin/git
Curl: 7.77.0 => /usr/bin/curl
macOS: 12.1-x86_64
CLT: 13.2.0.0.1.1638488800
Xcode: 13.2.1

Building locally worked fine for me (brew install --build-from-source macvim)

Many thanks!

SMillerDev commented 2 years ago

That seems pretty normal, since 12.2 is the most recent Monterey version. You should update your OS.

luca-drf commented 2 years ago

That seems pretty normal, since 12.2 is the most recent Monterey version. You should update your OS.

Is there any particular reason why that bottle shouldn't work on 12.1 and the minumum revision was set to 12.2 a part from "12.2 is the most recent Monterey version"?

SMillerDev commented 2 years ago

We always build against the newest possible dependencies. That means we'll keep our build OS up to date as well. If a build hardcodes an minimal OS version somewhere that means you'll have to keep your OS up to date to keep up with brew.

It might also just be a bug in the build script for macvim that it requires a minor version match on macOS 11+. Either way, brew did exactly what it's been doing since forever here.

carlocab commented 2 years ago

You can check the log for the MacVim formula to be sure, but I don't think we've made any changes to it that's made it require the latest version of macOS. Upstream will likely know more about this issue than we do.

danielnachun commented 2 years ago

I think we can update these lists now because we've bottled qt@5 for Intel Monterey and that was the main reason some bottles were missing for Intel Monterey but not ARM.

I can also see that a decent number of formulae missing bottles only on ARM are blocked by openjdk@8, which Azul has successfully built for ARM on macOS: https://www.azul.com/downloads/?package=jdk. I don't know if they'd be willing to help us fix our build but it might be worth reaching out.

I can also see some other formulae missing ARM bottles which are deprecated or should be deprecated because they are unmaintained.

It's also worth mentioning that the biggest blocker by far for Monterey bottling across both architectures is openjdk@11, which we haven't updated yet because the patch for ARM support is a lot of work to update. Once that is merged we'll be able to make a lot more progress on Monterey bottling in general.

Bo98 commented 2 years ago

can also see that a decent number of formulae missing bottles only on ARM are blocked by openjdk@8, which Azul has successfully built for ARM on macOS: https://www.azul.com/downloads/?package=jdk. I don't know if they'd be willing to help us fix our build but it might be worth reaching out.

We're approaching the point where I'd like to see OpenJDK 8 phased out as a dependency. The amount of patches that would have to be backported for arm64 macOS is likely large - it already is for OpenJDK 11 and has shown to be a maintenance burden.

This is also not Monterey specific anyway.

danielnachun commented 2 years ago

That's a very fair point. I did a cursory check of the dependents of openjdk@8, and of those which are not already deprecated or disabled, all but a handful appear to be unmaintained. We should probably start deprecating all openjdk@8 dependents unless they are actively maintained and there is a clear upstream plan to migrate at least to openjdk@11.

MikeMcQuaid commented 2 years ago

We're approaching the point where I'd like to see OpenJDK 8 phased out as a dependency. The amount of patches that would have to be backported for arm64 macOS is likely large - it already is for OpenJDK 11 and has shown to be a maintenance burden.

Seems reasonable to me 👍🏻

YinianFan commented 2 years ago

Not sure if this is the right place for this (if it isn't, I'm sorry, please point me to the right place). I got problem with installing redis@3.2 on arm64 Monterey as there is no bottle available. Then I tried to manually install redis 3.2 but failed to make on arm64 OS Monterey. Don't know how to install redis 3.2 on my mac with OS Monterey.

danielnachun commented 2 years ago

I'll start working on a "deprecate or update formulae that depend on openjdk@8" issue like I did for Python 2, which was quite successful.

danielnachun commented 2 years ago

I think we should also give serious consideration to deprecating or updating formulae that depend on gtk+ (GTK2). GTK2 is EOL as of the release of GTK4: https://blog.gtk.org/2020/12/16/gtk-4-0/. The gtkglext formula is unbottled on Linux because pangox doesn't work with the X/OpenGL stack, and is heavily patched on macOS (it is unbottled on Monterey due to a flat_namespace audit failure).

A number of formulae that currently depend on gtk+ actually support GTK3 or even GTK4 and should be migrated. Those which do not support a newer GTK version should either have the GUI disabled if it is optional or be deprecated. I can make another tracking issue for this as well if desired.

cho-m commented 2 years ago

It's also worth mentioning that the biggest blocker by far for Monterey bottling across both architectures is openjdk@11, which we haven't updated yet because the patch for ARM support is a lot of work to update. Once that is merged we'll be able to make a lot more progress on Monterey bottling in general.

openjdk@11 has backported ARM patch into development branch for upcoming 11.0.15. I've switched PR #87638 to use that version (11.0.15+5) for ARM and it successfully builds/tests.

Bo98 commented 2 years ago

I think we should also give serious consideration to deprecating or updating formulae that depend on gtk+ (GTK2). GTK2 is EOL as of the release of GTK4: https://blog.gtk.org/2020/12/16/gtk-4-0/. The gtkglext formula is unbottled on Linux because pangox doesn't work with the X/OpenGL stack, and is heavily patched on macOS (it is unbottled on Monterey due to a flat_namespace audit failure).

A number of formulae that currently depend on gtk+ actually support GTK3 or even GTK4 and should be migrated. Those which do not support a newer GTK version should either have the GUI disabled if it is optional or be deprecated. I can make another tracking issue for this as well if desired.

In general yes: dependents of EOL/deprecated formulae should be migrated or deprecated too if there's no upstream activity. This also applies to PCRE1, but that's an example of something that can't really be rushed - I expect migration of dependents for that will not be completed this year.

For SDL 1.2, we have a migration path of sdl12_compat - though ideally we'd wait for a bug fix release or two first since that compat layer is very new.

OpenJDK 8 is a bit special as OpenJDK 8 itself is still supported for another 3 years - so the formula is not being deprecated anytime soon. It's just a bit of a personal desire that dependents should move on from this 8-year-old version of OpenJDK and allow us to reduce the dependency trees of x86_64-only formulae.

triallax commented 2 years ago

Note that insect does not depend on psc-package anymore, see https://github.com/Homebrew/homebrew-core/pull/106311.

Bo98 commented 2 years ago

I strongly encourage deprecating mcrypt. It's abandonware security software, which is a very good reason for deprecation.

Unfortunately, rdup is still using it...

SMillerDev commented 2 years ago

Rdup has 0 installs the last month, let's just deprecate that too. Last release was 6,5 years ago

iMichka commented 2 years ago

rdup and mcrypt: #114108