🍺 The missing package manager for macOS (or Linux)

Overview

Homebrew

GitHub release

Features, usage and installation instructions are summarised on the homepage. Terminology (e.g. the difference between a Cellar, Tap, Cask and so forth) is explained here.

What Packages Are Available?

  1. Type brew formulae for a list.
  2. Or visit formulae.brew.sh to browse packages online.
  3. Or use brew search --desc <keyword> to browse packages from the command line.

More Documentation

brew help, man brew or check our documentation.

Troubleshooting

First, please run brew update and brew doctor.

Second, read the Troubleshooting Checklist.

If you don't read these it will take us far longer to help you with your problem.

Contributing

We'd love you to contribute to Homebrew. First, please read our Contribution Guide and Code of Conduct.

We explicitly welcome contributions from people who have never contributed to open-source before: we were all beginners once! We can help build on a partially working pull request with the aim of getting it merged. We are also actively seeking to diversify our contributors and especially welcome contributions from women from all backgrounds and people of colour.

A good starting point for contributing is running brew audit --strict with some of the packages you use (e.g. brew audit --strict wget if you use wget) and then read through the warnings, try to fix them until brew audit --strict shows no results and submit a pull request. If no formulae you use have warnings you can run brew audit --strict without arguments to have it run on all packages and pick one.

Alternatively, for something more substantial, check out one of the issues labeled help wanted in Homebrew/brew or Homebrew/homebrew-core.

Good luck!

Donations

Homebrew is a non-profit project run entirely by unpaid volunteers. We need your funds to pay for software, hardware and hosting around continuous integration and future improvements to the project. Every donation will be spent on making Homebrew better for our users.

Please consider a regular donation through GitHub Sponsors or Patreon.

Alternatively, if you'd rather make a one-off payment:

  • Donate with PayPal
  • Donate by USA $ check from a USA bank:
    • Make check payable to "Software Freedom Conservancy, Inc." and place "Directed donation: Homebrew" in the memo field. Checks should then be mailed to:
      • Software Freedom Conservancy, Inc. 137 Montague ST STE 380 BROOKLYN, NY 11201 USA
  • Donate by wire transfer: contact [email protected] for wire transfer details.

Homebrew is a member of the Software Freedom Conservancy which provides us with an ability to receive tax-deductible, Homebrew earmarked donations (and many other services). Software Freedom Conservancy, Inc. is a 501(c)(3) organization incorporated in New York, and donations made to it are fully tax-deductible to the extent permitted by law.

Security

Please report security issues to our HackerOne.

Who We Are

Homebrew's Project Leader is Mike McQuaid.

Homebrew's Project Leadership Committee is Issy Long, Jonathan Chang, Markus Reiter, Misty De Meo and Sean Molenaar.

Homebrew's Technical Steering Committee is Bo Anderson, FX Coudert, Michka Popoff, Mike McQuaid and Rylan Polster.

Homebrew's Linux maintainers are Daniel Nachun, Dawid Dziurla, Issy Long, Jonathan Chang, Michka Popoff and Shaun Jackman.

Homebrew's other current maintainers are Alexander Bayandin, Caleb Xu, Carlo Cabrera, Claudia Pellegrino, Dustin Rodrigues, Eric Knibbe, Maxim Belkin, Miccal Matthews, Nanda H Krishna, Randall, Sam Ford, Steve Peters, Thierry Moisan, Tom Schoonjans, VΓ­tor GalvΓ£o and rui.

Former maintainers with significant contributions include Jan Viljanen, JCount, commitay, Dominyk Tiller, Tim Smith, Baptiste Fontaine, Xu Cheng, Martin Afanasjew, Brett Koonce, Charlie Sharpsteen, Jack Nagel, Adam Vandenberg, Andrew Janke, Alex Dunn, neutric, Tomasz Pajor, Uladzislau Shablinski, Alyssa Ross, ilovezfs, Chongyu Zhu and Homebrew's creator: Max Howell.

Community

License

Code is under the BSD 2-clause "Simplified" License. Documentation is under the Creative Commons Attribution license.

Sponsors

Our macOS continuous integration infrastructure is hosted by MacStadium's Orka.

Powered by MacStadium

Secure password storage and syncing is provided by 1Password for Teams.

1Password

Homebrew is a member of the Software Freedom Conservancy.

Software Freedom Conservancy

Homebrew is generously supported by Substack, GitHub, Randy Reddig, embark-studios, Realist.ai and many other users and organisations via GitHub Sponsors.

SubstackGitHub

Issues
  • macOS 11 Big Sur compatibility on Apple Silicon

    macOS 11 Big Sur compatibility on Apple Silicon

    Latest news on native ARM compatibility

    • (2020-12-26) We currently have 3168 formulas bottled for Apple Silicon in homebrew-core. At this point, the table below is probably not really relevant anymore (except for historical reference) and the best way to know if a formula is working is β€œdoes it have an ARM bottle” (a :arm64_big_sur line in the bottle block).
    • (2020-12-04) A fellow maintainer has been setting up ARM-based Macs as CI nodes for Homebrew. That means Apple Silicon bottles are coming soon. Bottle-building may start next week, which is a few weeks earlier than we thought. Expect bottling to drag along. It definitely won’t be finished in 2020. Homebrew remains unsupported on Apple Silicon, and will become supported once enough bottles are built and once everything feels stable enough.
    • (2020-11-18) Added Major blockers section for a quick overview.
    • (2020-11-18) Issue with mkmf in Ruby.framework resolved (FB7836181). All brew commands that depend on that gem, e.Β g. brew audit, seem to work now.
    • (2020-11-15) Issues with code signing now resolved thanks to @fxcoudert, @mistydemeo and others.
    • (2020-11-15) There won’t be any support for native ARM Homebrew installations for months to come. See both https://github.com/Homebrew/brew/issues/7857#issuecomment-727561399 about CI infrastructure and https://github.com/Homebrew/brew/issues/7857#issuecomment-687068494 about GCC for details.
    • (2020-11-15) Native ARM Homebrew installations are only going to be supported at /opt/homebrew (once support arrives). See https://github.com/Homebrew/brew/issues/7857#issuecomment-727561968 for details.

    A detailed description of the proposed feature

    This is an overview of compatibility issues and work items related to native ARM Homebrew installations on macOS 11.0 (Big Sur). Homebrew doesn’t support it right now but we need to track and triage those items nonetheless.

    The motivation for the feature

    macOS 11.0 (Big Sur) has been released to the public, and our goal is for Homebrew to support it.

    How the feature would be relevant to at least 90% of Homebrew users

    In the long run, more than 90Β % of Homebrew (macOS) users are going to run Apple Silicon hardware.

    What alternatives to the feature have been considered

    No alternatives.


    Major blockers

    • [ ] Set up ARM-based CI infrastructure
    • [ ] Have Homebrew’s CI build arm64_big_sur bottles
    • [ ] go (waiting for upstream version 1.16)
    • [ ] rust (waiting for upstream version 1.49 or backport to 1.47/1.48)
    • [ ] ghc (help wanted)
    • [ ] qt (help wanted)
    • [ ] openjdk (waiting for upstream version 16; work in progress to integrate OpenJDKΒ 16 preview as stop-gap)
    • [ ] gcc (work in progress, see https://github.com/Homebrew/brew/issues/7857#issuecomment-687068494)
    • [ ] Others (see https://github.com/Homebrew/brew/issues/7857#issuecomment-723470734)

    Status of core formulae

    | Formula | Works1
    on 11.0 | Comments | |:------- |:----------------------------:|:-------- | | ack | πŸ₯‡ | | | adns | πŸ₯‡ | | | adwaita-icon-theme | | | | aircrack-ng | | | | ansible | | | | ant | | Re-check when openjdk works | | aom | πŸ₯‡ | Patched for now | | apache-spark | | | | apr-util | πŸ₯‡ | | | apr | πŸ₯‡ | | | argon2 | πŸ₯‡ | | | arpack | | | | asciidoc | πŸ₯‡ | | | asdf | | | | aspell | πŸ₯‡ | | | atk | | | | augeas | πŸ₯‡ | | | autoconf | πŸ₯‡ | | | autojump | | | | automake | πŸ₯‡ | | | aws-elasticbeanstalk | πŸ₯‡ | | | aws-iam-authenticator | | Re-check when go works | | awscli | ⚠️ | Build fails with a distutils.errors.DistutilsClassError, see logs.
    Possibly related to setuptools: https://github.com/pypa/setuptools/pull/2231 | | azure-cli | πŸ₯‡ | | | bash-completion | πŸ₯‡ | | | bash | ⚠️ | make says, redefinition of 'sys_siglist' with a different type: 'char *[32]' vs 'const char *const [32]'. Logs | | bat | | Re-check when rust works | | bazel | | Re-check when [email protected] works | | bdw-gc | | | | berkeley-db | πŸ₯‡ | | | binutils | πŸ₯‡ | | | bison | πŸ₯‡ | | | blueutil | πŸ₯‡ | | | boost | πŸ₯‡ | Patched for now | | brotli | πŸ₯‡ | | | c-ares | πŸ₯‡ | | | cabal-install | | Re-check when ghc works | | cairo | πŸ₯‡ | | | cargo-c | | Builds in rust prereleases; will work when a stable Rust with Apple Silicon support ships | | carthage | πŸ₯‡ | Patched for now | | cask | | Re-check when emacs works | | ccache | πŸ₯‡ |

    Used to work, no longer builds. Logs

    Says:

    invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size

    | | ceres-solver | | | | certbot | πŸ₯‡ | | | cfitsio | πŸ₯‡ | | | cgal | | Re-check when qt works | | circleci | | Re-check when go works | | clang-format | πŸ₯‡ | | | cloc | πŸ₯‡ | | | cmake | πŸ₯‡ | | | cocoapods | ⚠️ | Error Unrecognized Mach-O load command: 0x80000034 in ffi_c.bundle | | colordiff | πŸ₯‡ | | | composer | πŸ₯‡ | | | consul | | Re-check when go works | | coreutils | πŸ₯‡ | | | cscope | πŸ₯‡ | | | ctags | πŸ₯‡ | | | cunit | πŸ₯‡ | | | curl | πŸ₯‡ | | | curl-openssl | πŸ₯‡ | | | cython | πŸ₯‡ | | | dav1d | πŸ₯‡ | | | daemontools | πŸ₯‡ | | | deno | | Re-check when llvm and rust work | | dep | | Re-check when go works | | dialog | πŸ₯‡ | Patched for now | | direnv | | Re-check when go works | | dnsmasq | πŸ₯‡ | | | docbook-xsl | πŸ₯‡ | | | docbook | πŸ₯‡ | | | docker | | Re-check when go works | | docker-completion | πŸ₯‡ | | | docker-machine | | Re-check when go works | | doctl | | Re-check when go works | | dos2unix | πŸ₯‡ | | | doxygen | πŸ₯‡ | | | duti | πŸ₯‡ | Patched for now. PR also submitted upstream. | | eigen | πŸ₯‡ | | | elasticsearch | | Re-check when gradle and openjdk work | | elixir | | Re-check when erlang works | | emacs | | Re-check when gnutls works | | epsilon | πŸ₯‡ | | | epstool | | Re-check when ghostscript works | | erlang | ⚠️ | Either we need to backport https://github.com/erlang/otp/pull/2700 or wait for upstream release 23.1.
    Same with https://github.com/erlang/otp/pull/2687. | | exiftool | πŸ₯‡ | | | expat | πŸ₯‡ | | | fastlane | πŸ₯‡ | | | fd | | Re-check when rust works | | ffmpeg | | Re-check when gnutls, libbluray and several other dependencies work | | fftw | | Re-check when gcc and open-mpi work | | fig2dev | | Re-check when ghostscript and netpbm work | | figlet | πŸ₯‡ | | | findutils | πŸ₯‡ | | | fish | πŸ₯‡ | | | flac | πŸ₯‡ | | | fltk | | | | fontconfig | πŸ₯‡ | Patched for now | | fontforge | | | | freetds | πŸ₯‡ | | | freetype | πŸ₯‡ | | | freexl | ⚠️ | Build error: implicitly declaring library function 'printf' Logs | | frei0r | πŸ₯‡ | | | fribidi | πŸ₯‡ | | | fswatch | | | | fzf | | | | gawk | πŸ₯‡ | | | gcal | πŸ₯‡ | | | gcc | ⚠️ |

    @Iains has some work in progress on https://github.com/iains/gcc-darwin-arm64 to port the GCC backend to Apple Silicon.

    Mind that Apple Silicon support is going to require GCCΒ 11 even in the best case. The first stable release of GCC 11 may come out in mid-2021 or later. If you absolutely require a stable GCC, or any formula that depends on it, you may want to hold off your Apple Silicon Mac purchase decisions until it’s clear if or when GCC will support it.

    For limited testing on Apple Silicon, Homebrew may consider shipping an unstable GCCΒ 11 but that’s yet to be decided.

    | | gdal | | Re-check when expat, freexl, geos, hdf5 and a dozen of other dependencies work | | gdbm | πŸ₯‡ | | | gdb | | | | gdk-pixbuf | | | | gd | πŸ₯‡ | | | geckodriver | | | | geos | ⚠️ | Squeals about duplicate symbol BasicSegmentString in inlines.o vs. libnoding.a. Logs | | gettext | πŸ₯‡ | | | gflags | | | | ghc | ⚠️ | Re-check when https://github.com/Homebrew/homebrew-core/pull/57892 is merged | | [email protected] | | | | ghostscript | ⚠️ | Re-check when https://github.com/Homebrew/homebrew-core/pull/58493 is merged | | giflib | πŸ₯‡ | | | git | ⚠️ | Lots of Undefined symbols for architecture arm64. Possibly related to libintl and pcre2. Logs | | git-flow | | | | git-gui | | | | git-lfs | | | | gitlab-runner | | | | gl2ps | | | | glew | | | | glib-networking | | | | glib | πŸ₯‡ | | | glog | | | | glpk | | | | gmp | πŸ₯‡ | | | gnu-getopt | πŸ₯‡ | | | gnu-sed | πŸ₯‡ | | | gnu-tar | πŸ₯‡ | | | gnupg | | Re-check when gnutls works | | gnuplot | | | | gnutls | | Re-check pending | | gobject-introspection | πŸ₯‡ | | | go | ⚠️ |

    Bootstrapped go (x86_64) is killed at build time. Logs

    Re-check when upstream 1.16 is released

    | | gpatch | πŸ₯‡ | | | gpgme | | | | gradle | | Re-check when openjdk works | | grafana | | | | graphicsmagick | | | | graphite2 | πŸ₯‡ | | | graphviz | | Re-check when gts works | | grep | πŸ₯‡ | | | groonga | πŸ₯‡ | | | groovy | | | | grpc | | | | gsettings-desktop-schemas | | | | gsl | | | | gst-plugins-bad | | | | gstreamer | | | | gtk+3 | | | | gtk+ | | | | gtk-mac-integration | | | | gts | | Re-check when netpbm works | | guile | πŸ₯‡ | Fixed | | harfbuzz | πŸ₯‡ | | | hdf5 | | Re-check when gcc works | | helm | | Re-check when go works | | [email protected] | | Re-check when glide and go work | | hicolor-icon-theme | | | | highlight | πŸ₯‡ | | | htop | πŸ₯‡ | | | httpd | πŸ₯‡ | | | httpie | πŸ₯‡ | | | hub | | Re-check when go works | | hugo | | Re-check when go works | | hwloc | πŸ₯‡ | | | icu4c | πŸ₯‡ | | | ideviceinstaller | πŸ₯‡ | | | ilmbase | πŸ₯‡ | | | [email protected] | πŸ₯‡ | | | imagemagick | | Re-check when ghostscript, libheif and libomp work | | inetutils | πŸ₯‡ | | | ios-deploy | πŸ₯‡ | | | ios-webkit-debug-proxy | πŸ₯‡ | | | iperf3 | πŸ₯‡ | | | ipython | πŸ₯‡ | | | isl | πŸ₯‡ | | | itstool | πŸ₯‡ | | | jansson | πŸ₯‡ | | | jasper | πŸ₯‡ | | | jemalloc | πŸ₯‡ | | | jenkins | | Re-check when [email protected] works | | jenkins-lts | | Re-check when openjdk[email protected] works | | jenv | πŸ₯‡ | | | jmeter | | | | jpeg | πŸ₯‡ | | | jq | πŸ₯‡ | | | json-c | πŸ₯‡ | | | jupyterlab | | Re-check when pandoc works | | kafka | | Re-check when openjdk (or some other form of Java) and zookeeper work | | kops | | | | kotlin | | Re-check when openjdk (or some other form of Java) works | | krb5 | πŸ₯‡ | Patched for now. Patch submitted to upstream issue tracker. | kubectx | | | | kubernetes-cli | | Re-check when go works | | kustomize | | | | lame | πŸ₯‡ | | | ldns | | | | leptonica | πŸ₯‡ | | | libarchive | | | | libassuan | πŸ₯‡ | | | libass | πŸ₯‡ | | | libb2 | | | | libbluray | | Re-check when openjdk (or some other form of Java) works | | libcbor | | | | libcerf | | | | libcroco | | | | libdap | | | | libde265 | ⚠️ | ARM assembly/macros/directives fail at build time. Re-check needed with the correct triple. Logs | | libepoxy | | | | libevent | πŸ₯‡ | | | libev | πŸ₯‡ | | | libexif | | | | libffi | πŸ₯‡ | Patched for now, awaiting upstream patches: https://github.com/libffi/libffi/pull/565 | | libfido2 | | | | libgcrypt | πŸ₯‡ | | | libgeotiff | | | | libgit2 | πŸ₯‡ | | | libgpg-error | πŸ₯‡ | | | libheif | | Re-check when libde265 works | | libiconv | πŸ₯‡ | | | libidn2 | πŸ₯‡ | | | libidn | πŸ₯‡ | | | libilbc | πŸ₯‡ | | | libimobiledevice | πŸ₯‡ | | | libksba | πŸ₯‡ | | | liblqr | πŸ₯‡ | | | libmagic | πŸ₯‡ | | | libmaxminddb | πŸ₯‡ | | | libmetalink | πŸ₯‡ | | | libmpc | πŸ₯‡ | | | libnet | | | | libogg | πŸ₯‡ | | | libomp | ⚠️ | make install fails while trying to make sense of x86_64 assembly for Linux. Logs | | libp11 | | | | libplist | πŸ₯‡ | | | libpng | πŸ₯‡ | | | libpq | πŸ₯‡ | | | libpsl | | | | librdkafka | | | | libressl | | | | librsvg | | | | libsamplerate | πŸ₯‡ | | | libscrypt | πŸ₯‡ | | | libsmi | πŸ₯‡ | | | libsndfile | πŸ₯‡ | | | libsodium | πŸ₯‡ | | | libsoup | | | | libsoxr | πŸ₯‡ | | | libspatialite | | | | libspiro | | | | libssh | πŸ₯‡ | | | libssh2 | πŸ₯‡ | | | libtasn1 | πŸ₯‡ | | | libtermkey | | | | libtiff | πŸ₯‡ | | | libtool | πŸ₯‡ | | | libuninameslist | | | | libunistring | πŸ₯‡ | | | libusb-compat | | | | libusbmuxd | πŸ₯‡ | | | libusb | πŸ₯‡ | | | libuv | πŸ₯‡ | | | libvidstab | πŸ₯‡ | | | libvirt | | | | libvorbis | πŸ₯‡ | | | libvpx | πŸ₯‡ | | | libvterm | | | | libwebsockets | | | | libxml2 | πŸ₯‡ | | | libxslt | | | | libyaml | πŸ₯‡ | | | libzip | πŸ₯‡ | | | little-cms2 | πŸ₯‡ | | | llvm | πŸ₯‰ | Builds if OpenMP is disabled. Stable builds don't work, but HEAD does and 11.0.0 will be compatible. | | lua | πŸ₯‡ | | | [email protected] | πŸ₯‡ | | | luajit | ⚠️ | Fails with 2.0.5 but should work when upstream 2.1.0 is released. | | luarocks | πŸ₯‡ | | | lynx | πŸ₯‡ | Patched for now | | lz4 | πŸ₯‡ | | | lzo | πŸ₯‡ | | | macvim | | | | mad | ⚠️ | Configure error: /bin/ksh ./config.sub -apple-darwin20.0.0 failed Logs | | make | | | | mariadb | | Re-check when groonga works | | mas | πŸ₯‡ | Fixed | | maven | | Re-check when openjdk works | | mbedtls | | | | mcrypt | | | | mecab | πŸ₯‡ | | | mecab-ipadic | πŸ₯‡ | | | memcached | | | | mercurial | πŸ₯‡ | | | meson | πŸ₯‡ | | | metis | | | | midnight-commander | | | | minikube | | | | minizip | πŸ₯‡ | | | mitmproxy | | | | mkcert | | | | mkvtoolnix | | | | mono | | | | mosh | | | | mpfr | πŸ₯‡ | | | mpv | | | | msgpack | πŸ₯‡ | | | mtr | | | | mujs | | | | mutt | | | | mysql | ⚠️ | The build proceeds to completion but mysqld_safe fails with syntax error near unexpected token 'then' in line 831. | | [email protected] | ⚠️ | make errors out after building the target event_extra. Logs | | [email protected] | ⚠️ | Builds but mysqld_safe fails: syntax error near unexpected token 'then' in line 804. | | mysql-client | πŸ₯‡ | | | nano | πŸ₯‡ | | | nasm | πŸ₯‡ | | | ncdu | | | | ncurses | πŸ₯‡ | | | neofetch | | | | neovim | ⚠️ | Upstream PR in progress: https://github.com/neovim/neovim/pull/12624 | | netcdf | | | | netpbm | | Re-check when subversion works | | nettle | πŸ₯‡ | Patched for now | | nghttp2 | πŸ₯‡ | | | nginx | πŸ₯‡ | | | ninja | πŸ₯‡ | | | nmap | πŸ₯‡ | Fixed | | node | πŸ₯‡ |

    Patched for now.

    See also https://github.com/nodejs/node/issues/34043 and https://github.com/nodejs/TSC/issues/886 for upstream progress.

    | | [email protected] | | | | [email protected] | πŸ₯‡ | | | node-build | | | | nodebrew | | | | npth | πŸ₯‡ | | | nspr | πŸ₯‡ | | | nss | ⚠️ | Build fails while loading softokn3. Logs | | ntfs-3g | | | | numpy | | | | nvm | | | | ocaml | | Upstream PR merged, see https://github.com/ocaml/ocaml/pull/9699.
    4.10 backport in progress, see https://github.com/ocaml/ocaml/pull/10026.
    4.10 formula-patches PR: https://github.com/Homebrew/formula-patches/pull/318| | octave | | | | oniguruma | πŸ₯‡ | | | opam | | | | open-mpi | | Re-check when gcc works | | openblas | | | | openconnect | | | | opencore-amr | | | | opencv | | | | openexr | πŸ₯‡ | | | openjdk | ⚠️ | Needs to be ported (logs). See also related JEP draft: MacOS/AArch64 Port | | [email protected] | | | | openjpeg | πŸ₯‡ | | | openldap | πŸ₯‡ | | | openssh | | | | openssl aka [email protected] | πŸ₯‡ |

    Patched for now.

    Works well enough until the upstream fix is released.

    | | openvpn | πŸ₯‡ | | | opusfile | πŸ₯‡ | | | opus | πŸ₯‡ | | | orc | | | | p11-kit | πŸ₯‡ | | | p7zip | πŸ₯‡ | | | packer | | Re-check when go works | | pandoc | | Re-check when cabal-install and ghc work | | pango | πŸ₯‡ | Patched for now | | parallel | πŸ₯‡ | | | pcre2 | πŸ₯‡ | Note: JIT disabled for now. See https://github.com/Homebrew/homebrew-core/pull/57419 | | pcre | πŸ₯‡ | Note: JIT disabled for now. See https://github.com/Homebrew/homebrew-core/pull/57410 | | perl | πŸ₯‡ | Patched for now | | [email protected] | ⚠️ | Seems more difficult to fix than php. Might want to triage as 🚫. | | [email protected] | ⚠️ | Seems more difficult to fix than php. Might want to triage as 🚫. | | php | πŸ₯‡ | Fixed | | pinentry | πŸ₯‡ | | | pipenv | πŸ₯‡ | | | pixman | πŸ₯‡ | | | pkcs11-helper | πŸ₯‡ | | | pkg-config | πŸ₯‡ | | | plantuml | | | | poppler | | Re-check when nss and qt work | | popt | πŸ₯‡ | | | portaudio | πŸ₯‡ | | | postgis | | Re-check when gdal, geos, gpp and sfcgal work | | postgresql | πŸ₯‡ | | | [email protected] | | | | [email protected] | | | | [email protected] | | | | pre-commit | πŸ₯‡ | | | proj | πŸ₯‡ | | | protobuf | πŸ₯‡ | | | protobuf-c | πŸ₯‡ | | | pstoedit | | | | pstree | πŸ₯‡ | | | pulumi | | | | putty | πŸ₯‡ | | | py3cairo | | | | pyenv | ⚠️ | Bash crashes due to code signature error when trying to load pyenv-realpath.dylib as a builtin. Log | | pyenv-virtualenv | | | | pygobject3 | | | | pyqt | | | | [email protected].7 | ⚠️ | Patch https://github.com/python/cpython/pull/21249 fails. Re-check when upstream arm64 support stabilises. | | [email protected] | πŸ₯‰ |

    Patched for now but brew test fails.

    Re-check after https://github.com/Homebrew/homebrew-core/pull/64872 is merged.

    | | python aka [email protected] | πŸ₯‰ |

    brew test currently fails.

    Re-check after https://github.com/Homebrew/homebrew-core/pull/64869 is merged.

    | | qemu | | | | qhull | | | | qrupdate | | | | qt | ⚠️ | Fails running find_sdk.py late in the build. (logs, full make log) | | rabbitmq | | Re-check when erlang works | | rav1e | | Re-check when cargo-c and rust work | | rbenv | | | | rclone | | | | readline | πŸ₯‡ | | | redis | πŸ₯‡ | Patched for now | | rename | | | | ripgrep | | | | rsync | | | | rtmpdump | πŸ₯‡ | | | rubberband | | | | ruby-build | | | | [email protected] | | | | ruby | πŸ₯‡ | | | rust | ⚠️ | Upstream tracking issue: https://github.com/rust-lang/rust/issues/73908 | | rustup-init | | | | s-lang | | | | s3cmd | | | | sbcl | | | | sbt | | | | scala | | | | scrcpy | | | | screenresolution | πŸ₯‡ | | | sdl2 | | | | sdl | πŸ₯‡ | | | sfcgal | | Re-check when cgal works | | shared-mime-info | πŸ₯‡ | | | shellcheck | | Re-check when cabal-install, [email protected] and pandoc work | | sip | | | | skaffold | | | | snappy | πŸ₯‡ | | | socat | | | | source-highlight | πŸ₯‡ | | | sox | | Re-check when mad works | | spandsp | πŸ₯‡ | | | speedtest-cli | | | | speex | πŸ₯‡ | | | sphinx-doc | πŸ₯‡ | | | sqlite | πŸ₯‡ | | | sqlmap | | | | srt | ⚠️ | Fails with 'GLES/gl.h' file not found during make install. Logs | | ssh-copy-id | | | | sshfs | | | | sshpass | | | | sshuttle | | | | starship | | | | stoken | | | | subversion | πŸ₯‰ | Works but brew test fails. Logs. | | suite-sparse | | | | sundials | | | | swagger-codegen | | | | swiftformat | | | | swiftlint | πŸ₯‡ | | | swig | πŸ₯‡ | | | szip | πŸ₯‡ | | | tbb | πŸ₯‡ | Patched for now | | tcl-tk | | | | telnetd | πŸ₯‡ | | | telnet | πŸ₯‡ | | | terraform | | Re-check when go works | | terragrunt | | | | tesseract | πŸ₯‡ | | | texinfo | πŸ₯‡ | | | tfenv | | | | tflint | | | | thefuck | πŸ₯‡ | | | theora | πŸ₯‡ | | | the_silver_searcher | | | | tidy-html5 | πŸ₯‡ | | | tig | | | | tmux | πŸ₯‡ | | | tomcat | | | | tor | πŸ₯‡ | | | tree | πŸ₯‡ | | | uchardet | | | | unar | πŸ₯‡ | | | unbound | πŸ₯‡ | | | unibilium | | | | unixodbc | πŸ₯‡ | | | unrar | πŸ₯‡ | | | utf8proc | πŸ₯‡ | | | v8 | | | | vala | | Re-check when graphviz works | | valgrind | | | | vapoursynth | | | | vault | | | | vde | | | | vim | πŸ₯‡ | | | vips | | | | watchman | | | | watch | | | | webp | πŸ₯‡ | | | wget | πŸ₯‡ | | | wimlib | | | | winetricks | | | | wireshark | | | | wxmac | | | | x264 | πŸ₯‡ | Patched for now | | x265 | πŸ₯‡ | | | xcodegen | ⚠️ | Not compatible with Xcode 12.
    Re-check with upstream version > 2.17.0 once released. | | xerces-c | | | | xmlto | πŸ₯‡ | | | xvid | πŸ₯‡ | | | xxhash | πŸ₯‡ | | | xz | πŸ₯‡ | | | yara | πŸ₯‡ | | | yarn | πŸ₯‡ | | | yasm | πŸ₯‡ | Note: doesn’t support ARM targets | | youtube-dl | πŸ₯‡ | | | yq | | Re-check when go works | | zeromq | πŸ₯‡ | | | zimg | πŸ₯‡ | | | zlib | πŸ₯‡ | | | zookeeper | | Re-check when ant works | | zsh | πŸ₯‡ | | | zsh-autosuggestions | πŸ₯‡ | | | zsh-completions | πŸ₯‡ | | | zsh-syntax-highlighting | πŸ₯‡ | | | zstd | πŸ₯‡ | |

    Source
    curl -sLS \
      'https://formulae.brew.sh/api/analytics/install/90d.json' \
      | jq -r '.items
        | map(select (.formula | contains("/") | not) | .formula)[:512]
        | sort
        | [""] + map("`\(.)`")
        | map([., "", ""] | @csv)
        | .[]
        ' \
      | pandoc -f csv -t gfm \
      | sed -e 's/\\`/`/g'
    ___

    1 For Works on 11.0, the key is:

    • πŸ₯‡brew install -s succeeds on Apple Silicon. The software works well enough natively.
    • πŸ₯ˆ The formula has been updated with depends_on :arch => [:x86_64, :build]. The software works well enough on Rosetta.
    • πŸ₯‰ The formula has known issues on macOSΒ 11, though most features work. The issues are described in the Comments field.
    • 🚫 The formula has been updated with depends_on :arch => :x86_64. The software has been deemed to work on Intel only (for now).
    • ⚠️ The formula has been found to need more analysis/work.
    discussion help wanted in progress outdated 
    opened by claui 864
  • Add helper class for Python virtualenvs

    Add helper class for Python virtualenvs

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same change?
    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [x] Have you written new tests for your changes? Here's an example.
    • [x] Have you successfully run brew tests with your changes locally?

    This PR proposes a new class for interacting with Python virtualenvs which enables a new way to write formulas for Python applications.

    This approach resolves a few problems with the existing approach:

    • UX: Installing applications with this method yields clearer and much less code than the current method. If we trust pip to talk to pypi, we can pass a list of requirements instead of using resources, which means even less code.
    • Functional: In order that installing an application which uses Python packages does not disturb the global Python environment, we presently install packages and their dependencies into a Cellar-only prefix and write wrapper scripts that set PYTHONPATH to help Python find the installed tools. This generally works, with caveats. One is that namespace packages don't work very well, requiring formula authors to add touch foo/"__init__.py" manually. Another is PYTHONPATH propagates to child processes, which makes it difficult for a script installed with python2 to launch another script written in python3, since the Python 2 packages in PYTHONPATH may be incompatible. This has been a problem for e.g. Ansible. Virtualenvs do not have either problem.

    This is functionally similar to pipsi. I expect this approach to work in general but I'll plan to ask some people in the Python packaging community for review.

    Some highlights for review:

    • Where is the right place to store the virtualenv package's URL and hash? Should we just package a tarball in the Homebrew repository?
    • Is the hack I'm using to make sure that pip is invoked with Formula#system appropriate? I don't really like separating Virtualenv#create! from Virtualenv#initialize but we need an opportunity to monkeypatch the singleton class. :p I think I like this better than teaching the Virtualenv class about formula objects because they don't otherwise interact. Should this happen in Language::Python or is it more logical to write a Formula#python_virtualenv method that handles the hackery?
    • Can we usefully define tests for this class? (An example would be helpful!)
    • Does this belong in the evolution process?

    Some work to do:

    • Make sure we do what we can to ensure that these don't break on revision or patch-level bumps for python3 virtualenvs -- python2 virtualenvs should be created against system Python and should be rock-solid

    Thoughts welcome!

    opened by tdsmith 130
  • pkg-config files on >=10.14 assume headers in /usr/include

    pkg-config files on >=10.14 assume headers in /usr/include

    Please note we will close your issue without comment if you delete, do not read or do not fill out the issue checklist below and provide ALL the requested information. If you repeatedly fail to use the issue template, we will block you from ever submitting issues to Homebrew again.

    • [x] are reporting a bug others will be able to reproduce and not asking a question. If you're not sure or want to ask a question do so on our Discourse: https://discourse.brew.sh
    • [x] ran a brew command and reproduced the problem with multiple formulae? If it's a problem with a single, official formula (not cask) please file this issue at Homebrew/homebrew-core: https://github.com/Homebrew/homebrew-core/issues/new/choose. If it's a brew cask problem please file this issue at https://github.com/Homebrew/homebrew-cask/issues/new/choose. If it's a tap (e.g. Homebrew/homebrew-php) problem please file this issue at the tap.
    • [x] ran brew update and can still reproduce the problem?
    • [x] ran brew doctor, fixed all issues and can still reproduce the problem?
    • [x] ran brew config and brew doctor and included their output with your issue?
    % brew doctor
    Please note that these warnings are just used to help the Homebrew maintainers
    with debugging if you file an issue. If everything you use Homebrew for is
    working fine: please don't worry or file an issue; just ignore this. Thanks!
    
    Warning: The following directories do not exist:
    /usr/local/sbin
    
    You should create these directories and change their ownership to your account.
      sudo mkdir -p /usr/local/sbin
      sudo chown -R $(whoami) /usr/local/sbin
    % brew config
    HOMEBREW_VERSION: 1.7.6-143-gc6acab6
    ORIGIN: https://github.com/Homebrew/brew
    HEAD: c6acab66feb63743fe69b38dab7dc7b90710e838
    Last commit: 2 hours ago
    Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
    Core tap HEAD: 537f3703aa41c550edbaaf28dd280c6ec929f946
    Core tap last commit: 34 minutes ago
    HOMEBREW_PREFIX: /usr/local
    HOMEBREW_DEV_CMD_RUN: 1
    CPU: octa-core 64-bit kabylake
    Homebrew Ruby: 2.3.7 => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
    Clang: 10.0 build 1000
    Git: 2.17.1 => /Applications/Xcode.app/Contents/Developer/usr/bin/git
    Curl: 7.54.0 => /usr/bin/curl
    macOS: 10.14-x86_64
    CLT: 10.0.0.0.1.1535735448
    Xcode: 10.0
    XQuartz: 2.7.11 => /opt/X11
    

    To help us debug your issue please explain:

    • What you were trying to do (and why) I tried to build a package which uses pkg-config from Homebrew.

    • What happened (include command output) I met an error when build:

    fatal error: 'libxml/tree.h' file not found
    #include <libxml/tree.h>
             ^~~~~~~~~~~~~~~
    1 error generated.
    

    It looks like pkg-config from Homebrew is not providing the correct include directory of libs shipping with macOS(Xcode and CLI tools). As the release note of Xcode 10, header files which were under /usr/include no longer exists and been moved to Xcode: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include and CLI tools: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include.

    output:

    % which pkg-config
    /usr/local/bin/pkg-config
    
    % pkg-config --cflags --libs "libxml-2.0 > 2.6.17"
    -I/usr/include/libxml2 -lxml2
    
    % pkg-config --variable pcfiledir "libxml-2.0 > 2.6.17"
    /usr/local/Homebrew/Library/Homebrew/os/mac/pkgconfig/10.14
    
    % cat /usr/local/Homebrew/Library/Homebrew/os/mac/pkgconfig/10.14/libxml-2.0.pc 
    prefix=/usr
    exec_prefix=${prefix}
    libdir=${exec_prefix}/lib
    includedir=${prefix}/include
    modules=1
    
    Name: libXML
    Version: 2.9.4
    Description: libXML library version2.
    Requires:
    Libs: -L${libdir} -lxml2
    Libs.private: -lz -lpthread -licucore -lm
    Cflags: -I${includedir}/libxml2
    

    I tested only with libxml2 but I believe this issue affect all libs which have pkg-config file from Homebrew Library/Homebrew/os/mac/pkgconfig/10.14, they are: libcurl.pc, libexslt.pc, libxml-2.0.pc, libxslt.pc, sqlite3.pc, zlib.pc.

    • What you expected to happen
    % pkg-config --cflags --libs "libxml-2.0 > 2.6.17"
    

    should gives the correct path to the header files under Xcode or CLI tools.

    • Step-by-step reproduction instructions (by running brew commands)
    1. brew install pkg-config
    2. pkg-config --cflags --libs "libxml-2.0 > 2.6.17"
    help wanted outdated 
    opened by railwaycat 122
  • Emit warnings for mistyped options :

    Emit warnings for mistyped options : "brew commands --options"

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same change?
    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [x] Have you written new tests for your changes? Here's an example.
    • [x] Have you successfully run brew tests with your changes locally?

    For the Homebrew command commands: Previously, when running brew commands --SomeInvalidOption, the command would run without notifying the user that he/she has typed an invalid option. This PR resolves that and now when a brew commands is run with an invalid option, the command does not execute and it notifies the user that he/she has typed an invalid option.

    Some example test cases after the changes are described below.

    run: brew commands --include-aliases --blah --blah2 output:

    Error: Invalid options provided: 
    --blah
    --blah2
    Valid options are: 
    --quiet
    --include-aliases
    

    run: brew commands --include-aliases output: runs smoothly as it would before

    run: brew commands --quiet output: runs smoothly as it would before

    run: brew commands --quite output:

    Error: Invalid options provided: 
    --quite
    Valid options are: 
    --quiet
    --include-aliases
    
    do not merge outdated 
    opened by raza15 113
  • /usr/local/Homebrew migration tracking issue

    /usr/local/Homebrew migration tracking issue

    If you were directed to report your errors here by brew update please post a comment if your error is different to a previously mentioned comment and otherwise "Subscribe" to this issue rather than posting πŸ‘ or "me too" etc.

    Thanks and sorry for the inconvenience.

    bug 
    opened by MikeMcQuaid 100
  • `brew orphaned`

    `brew orphaned`

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same change?
    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [x] Have you written new tests for your changes? Here's an example.
    • [x] Have you successfully run brew tests with your changes locally?

    This builds on @MikeMcQuaid's work in #1813 by adding a brew unused that will list kegs that were installed implicitly, but are no longer required by any explicitly installed kegs.

    It takes a conservative approach, since I assume a common thing for people to do will be to uninstall all the kegs listed as unused. Specifically, if an install receipt doesn't specify whether a keg was installed by request or not (because it's too old), it will assume it was.

    I haven't implemented the --ignore-promotions flag @ilovezfs posits in https://github.com/Homebrew/brew/pull/1813#issuecomment-272811547, but it would be very easy to implement in future with this foundation β€” we'd just pass a custom Proc to Keg.unused.

    Something I'd like other people's thoughts on is what the output should be. Currently, each keg it detects to be "unused" is outputted by name and version. This seems the most readable option, but it would be nice to have something that could be passed to brew uninstall so brew would immediately support an autoremove equivalent in brew uninstall $(brew unused). One solution here would be to add a --full-paths option or similar that would output the full keg path rather than name and version. This could, perhaps, be automatically enabled for non-TTY output?

    in progress outdated 
    opened by alyssais 96
  • Simplify bottling for taps

    Simplify bottling for taps

    Without a BrewTestBot (or similar), it's labor intensive for tap maintainers to build bottles, publish them on Bintray, and update the formula with the bottle DSL. This could potentially be achieved on Travis CI using the brew test-bot and brew pull --bottle commands.

    I've hacked together a partial solution by making changes only to Homebrew/brew-test-bot, but I'm looking for feedback from the experts to find a better solution (e.g. @MikeMcQuaid @sjackman).

    I think there are two main points to discuss:

    • best workflow without a TestBot user
    • code refactoring in Homebrew/brew

    Once we arrive at a solution, it can be added to brew tap-new and documented.

    Suggested workflow

    • Encrypted env vars: cannot upload bottles from forked PRs
    • I suggest uploading bottles from master branch builds (i.e. test builds), since this is the point at which they are "accepted" into the tap
    • In the absence of a TestBot user, I suggest using the owner's account as the TestBot user (creating testing-#{build_id} tags and branches)
    • Exploit the new Travis CI stages, so that bottles are built and uploaded for each OS version in the first stage, and if all jobs complete successfully then a second stage runs brew pull --bottle

    Code refactoring

    Here are some variables that need to be edited to upload bottles and push formula changes:

    • bintray-org (brew test-bot and brew pull --bottle)
    • HOMEBREW_BINTRAY_USER (brew test-bot)
    • HOMEBREW_BINTRAY_KEY (brew test-bot)
    • git-name (brew test-bot)
    • git-email (brew test-bot)
    • test-bot-user (brew pull --bottle)
    • BottleSpecification::DEFAULT_DOMAIN (to get correct root_url)

    These are currently passed as cmdline arguments or env vars, which could instead be properties of the tap object (perhaps read from a .brew-tap.yml file in the tap repo). Of course, the HOMEBREW_BINTRAY_KEY will need to remain an encrypted env var.

    These lines also hardcode where to find bottle patches. If we're going to support Travis CI push builds, then we'd need something similar.

    outdated 
    opened by davidchall 96
  • Require analytics opt-in rather than make it a blind default

    Require analytics opt-in rather than make it a blind default

    I'm not sure if this was discussed but there are going to be companies and government agencies that have a problem with data being sent out without explicit permission. I understand and appreciate the desire to collect the information but this introduces a problem for some people. Ideally this would have been an opt-in on upgrade and an opt-in on install.

    opened by bcardarella 87
  • MBP M1 fails to 'brew update' and 'brew upgrade'

    MBP M1 fails to 'brew update' and 'brew upgrade'

    Bug report

    Please note we will close your issue without comment if you delete, do not read or do not fill out the issue checklist below and provide ALL the requested information. If you repeatedly fail to use the issue template, we will block you from ever submitting issues to Homebrew again.

    • [x] ran brew update and can still reproduce the problem?
    • [x] ran brew doctor, fixed all issues and can still reproduce the problem?
    • [x] ran brew config and brew doctor and included their output with your issue?

    What you were trying to do (and why)

    Every time i try to install with brew install something it gives me the following warning and error. When i try to update or upgrade it gave me only the warning and the error. Trying 'brew install git' or 'brew reinstall git' doesn't solved.

    What happened (include command output)

    brew upgrade (the same output with brew update) fails with this warning and error.

    [email protected] ~ % brew upgrade Warning: git 2.30.0 is already installed and up-to-date To reinstall 2.30.0, runbrew reinstall git/opt/homebrew/Library/Homebrew/cmd/update.sh: line 18: 6334 Killed: 9 "$GIT_EXECUTABLE" "[email protected]" /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18: 6342 Killed: 9 "$GIT_EXECUTABLE" "[email protected]" /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18: 6343 Killed: 9 "$GIT_EXECUTABLE" "[email protected]" /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18: 6361 Killed: 9 "$GIT_EXECUTABLE" "[email protected]" /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18: 6362 Killed: 9 "$GIT_EXECUTABLE" "[email protected]" /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18: 6380 Killed: 9 "$GIT_EXECUTABLE" "[email protected]" /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18: 6381 Killed: 9 "$GIT_EXECUTABLE" "[email protected]" ==> Homebrew has enabled anonymous aggregate formula and cask analytics. Read the analytics documentation (and how to opt-out) here: https://docs.brew.sh/Analytics No analytics have been recorded yet (or will be during thisbrew` run).

    Error: Failure while executing; git config --replace-all homebrew.analyticsmessage true was terminated by uncaught signal KILL.

    `

    Command output
    `[email protected] ~ % brew update
    Warning: git 2.30.0 is already installed and up-to-date
    To reinstall 2.30.0, run `brew reinstall git`
    /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18:  6947 Killed: 9               "$GIT_EXECUTABLE" "[email protected]"
    /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18:  6963 Killed: 9               "$GIT_EXECUTABLE" "[email protected]"
    /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18:  6975 Killed: 9               "$GIT_EXECUTABLE" "[email protected]"
    Error: Fetching /opt/homebrew failed!
    Fetching /opt/homebrew/Library/Taps/homebrew/homebrew-cask failed!
    Fetching /opt/homebrew/Library/Taps/homebrew/homebrew-core failed!
    /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18:  6986 Killed: 9               "$GIT_EXECUTABLE" "[email protected]"
    /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18:  6994 Killed: 9               "$GIT_EXECUTABLE" "[email protected]"
    /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18:  6995 Killed: 9               "$GIT_EXECUTABLE" "[email protected]"
    /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18:  7013 Killed: 9               "$GIT_EXECUTABLE" "[email protected]"
    /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18:  7014 Killed: 9               "$GIT_EXECUTABLE" "[email protected]"
    /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18:  7032 Killed: 9               "$GIT_EXECUTABLE" "[email protected]"
    /opt/homebrew/Library/Homebrew/cmd/update.sh: line 18:  7033 Killed: 9               "$GIT_EXECUTABLE" "[email protected]"
    ==> Homebrew has enabled anonymous aggregate formula and cask analytics.
    Read the analytics documentation (and how to opt-out) here:
      https://docs.brew.sh/Analytics
    No analytics have been recorded yet (or will be during this `brew` run).
    

    Error: Failure while executing; git config --replace-all homebrew.analyticsmessage true was terminated by uncaught signal KILL. `

    What you expected to happen

    I expect it updates and upgrade what i have installed πŸ˜…

    Step-by-step reproduction instructions (by running brew commands)

    brew update or brew upgrade on apple silicon macbook pro (the same error is given with brew install but the installation goes fine)

    Output of brew config and brew doctor commands

    [email protected] ~ % brew config
    HOMEBREW_VERSION: >=2.5.0 (shallow or no git repository)
    ORIGIN: (none)
    HEAD: (none)
    Last commit: never
    Core tap ORIGIN: (none)
    Core tap HEAD: (none)
    Core tap last commit: never
    Core tap branch: (none)
    HOMEBREW_PREFIX: /opt/homebrew
    HOMEBREW_CASK_OPTS: []
    HOMEBREW_MAKE_JOBS: 8
    Homebrew Ruby: 2.6.3 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
    CPU: octa-core 64-bit arm_firestorm_icestorm
    Clang: 12.0 build 1200
    Git: N/A
    Curl: 7.64.1 => /usr/bin/curl
    macOS: 11.1-arm64
    CLT: 12.3.0.0.1.1607026830
    Xcode: 12.3
    Rosetta 2: false
    [email protected] ~ % brew doctor
    Please note that these warnings are just used to help the Homebrew maintainers
    with debugging if you file an issue. If everything you use Homebrew for is
    working fine: please don't worry or file an issue; just ignore this. Thanks!
    
    Warning: Git could not be found in your PATH.
    Homebrew uses Git for several internal functions, and some formulae use Git
    checkouts instead of stable tarballs. You may want to install Git:
      brew install git
    
    
    bug outdated stale 
    opened by AlbertoPimpo 85
  • brew.sh: enable autoupdate for Homebrew developers

    brew.sh: enable autoupdate for Homebrew developers

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same change?
    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [x] Have you written new tests for your changes? Here's an example.
    • [x] Have you successfully run brew tests with your changes locally?

    Autoupdate has been working well for me/opt-in folks for a while so lets enable it for Homebrew developers to test before we enable it for everyone.

    CC @Homebrew/maintainers

    opened by MikeMcQuaid 81
  • Formula fuzzy search and did you mean

    Formula fuzzy search and did you mean

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same change?
    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [ ] Have you written new tests for your changes? Here's an example.
    • [x] Have you successfully run brew style with your changes locally?
    • [x] Have you successfully run brew typecheck with your changes locally?
    • [ ] Have you successfully run brew tests with your changes locally?

    This PR improves brew search command by adding approximately matching formula names (which is useful for mistyped formula names) and adds "Did you mean ..." for mistyped formula names (will be useful for cases like https://github.com/Homebrew/brew/issues/11526):

    Before

    $ brew search ripgrip
    Error: No formulae or casks found for "ripgrip".
    
    $ brew info ripgrip
    Error: No available formula or cask with the name "ripgrip".
    ==> Searching for a previously deleted formula (in the last month)...
    Error: No previously deleted formula found.
    
    $ brew install ripgrip
    ==> Searching for similarly named formulae...
    Error: No similarly named formulae found.
    Error: No available formula or cask with the name "ripgrip".
    ==> Searching for a previously deleted formula (in the last month)...
    Error: No previously deleted formula found.
    ==> Searching taps on GitHub...
    Error: No formulae found in taps.
    

    After

    $ brew search ripgrip
    ==> Formulae
    ripgrep                                                                                       pipgrip
    
    $ brew info ripgrip
    Error: No available formula or cask with the name "ripgrip". Did you mean ripgrep or pipgrip?
    ==> Searching for a previously deleted formula (in the last month)...
    Error: No previously deleted formula found.
    
    $ brew install ripgrip
    ==> Searching for similarly named formulae...
    These similarly named formulae were found:
    ripgrep                                                                                       pipgrip
    To install one of them, run (for example):
      brew install ripgrep
    Error: No available formula or cask with the name "ripgrip". Did you mean ripgrep or pipgrip?
    ==> Searching for a previously deleted formula (in the last month)...
    Error: No previously deleted formula found.
    ==> Searching taps on GitHub...
    Error: No formulae found in taps.
    

    I use did_you_mean gem for it (it bundled with ruby since ruby 2.6 and promoted to default gems in ruby 2.7). To make it possible to use it I had to remove it from a list of disabled options, here's a test of how it affects performance (I've chosen HOMEBREW_NO_ANALYTICS=1 brew info docker command, please let me know if this is not representative enough):

    $ hyperfine --warmup=1 --parameter-list opts "--disable=did_you_mean\,rubyopt","--disable=rubyopt" "HOMEBREW_RUBY_DISABLE_OPTIONS={opts} HOMEBREW_NO_ANALYTICS=1 brew info docker"
    Benchmark #1: HOMEBREW_RUBY_DISABLE_OPTIONS=--disable=did_you_mean,rubyopt HOMEBREW_NO_ANALYTICS=1 brew info docker
      Time (mean Β± Οƒ):      1.181 s Β±  0.023 s    [User: 568.1 ms, System: 594.0 ms]
      Range (min … max):    1.166 s …  1.244 s    10 runs
     
    Benchmark #2: HOMEBREW_RUBY_DISABLE_OPTIONS=--disable=rubyopt HOMEBREW_NO_ANALYTICS=1 brew info docker
      Time (mean Β± Οƒ):      1.185 s Β±  0.011 s    [User: 569.6 ms, System: 595.8 ms]
      Range (min … max):    1.176 s …  1.209 s    10 runs
     
    Summary
      'HOMEBREW_RUBY_DISABLE_OPTIONS=--disable=did_you_mean,rubyopt HOMEBREW_NO_ANALYTICS=1 brew info docker' ran
        1.00 Β± 0.02 times faster than 'HOMEBREW_RUBY_DISABLE_OPTIONS=--disable=rubyopt HOMEBREW_NO_ANALYTICS=1 brew info docker'
    

    The fuzzy search itself works fast enough and takes ~0.02s per query:

    require 'benchmark'
    Formula.fuzzy_search("warmup")
    
    n = 100
    Benchmark.bm do |x|
      %w[dacker ripgrip ffmpeg].each do |query|
        x.report(query) { n.times { Formula.fuzzy_search(query) } }
      end
    end
    
           user     system      total        real
    dacker  1.849516   0.005940   1.855456 (  1.859904)
    ripgrip  2.068515   0.007299   2.075814 (  2.083107)
    ffmpeg  1.983525   0.015574   1.999099 (  2.016743)
    

    Things to be sorted out:

    • Despite it works in brew (for me), tests can't find did_you_mean gem (need to check if we use different sets of gems for brew and tests). Any suggestions are welcome here πŸ™‚
    An error occurred while loading spec_helper.
    Hint: Install the `did_you_mean` gem in order to provide suggestions for similarly named files.
    Failure/Error: require "did_you_mean"
    
    LoadError:
      cannot load such file -- did_you_mean
    

    ToDo (could be sorted out in the following PRs):

    • Add support for casks
    • Add support for formula renames/aliases
    • Add support for cli commands / add Did you mean for "Error: Unknown command"
    waiting for feedback 
    opened by bayandin 1
  • Homebrew is producing bottles with problematic binstubs

    Homebrew is producing bottles with problematic binstubs

    As of #11537, we're now producing binstubs which contain brew --prefix instead of the absolute path. This has unexpectedly introduced problems when using one of those bottles as a dependency when building formulae from source. Given the following:

    • When building a formula from source, it may need to run binaries from its dependencies, and
    • When building a formula from source, superenv guards the install method from having brew in its PATH,

    Formulae can no longer safely call the binaries of their own dependencies during their build if those binaries are Homebrew-produced binstubs. This happened in the wild with the homebrew-sass tap, whose dart dependency uses Homebrew-produced binstubs. It lead to the following error when calling any of them:

    /usr/local/opt/dart/bin/pub: line 2: brew: command not found
    /usr/local/opt/dart/bin/pub: line 2: /dart/2.13.3/libexec/bin/pub: No such file or directory
    /usr/local/opt/dart/bin/pub: line 2: exec: /dart/2.13.3/libexec/bin/pub: cannot execute: No such file or directory
    

    I think the goal of ensuring we're not encoding Homebrew paths in scripts is good, but it's not safe to put calls to brew in them. Let's work out another prefix-independent way we can safely write these calls.

    While we work to figure out an alternate solution, I'd like to back this change out ASAP. Otherwise, we're going to start shipping bottles that will cause issues when we depend on them in building bottles from other packages.

    cc @alebcay

    opened by mistydemeo 7
  • livecheck/strategy/sparkle: check minimumSystemVersion for compatibility

    livecheck/strategy/sparkle: check minimumSystemVersion for compatibility

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same change?
    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [ ] Have you written new tests for your changes? Here's an example.
    • [x] Have you successfully run brew style with your changes locally?
    • [ ] Have you successfully run brew typecheck with your changes locally?
    • [ ] Have you successfully run brew tests with your changes locally?

    Helps close Homebrew/homebrew-cask#107112

    The issue in the above PR was that the bartender Cask Sparkle feed included a macOS Monterey-only (Beta) release, which shows up in livecheck. The only way to identify this variant would be to check the sparkle:minimumSystemVersion (or livecheck a different url/strategy):

    <item>
      <title>Version 4.1.0</title>
      <sparkle:minimumSystemVersion>12.0.0</sparkle:minimumSystemVersion>
      <sparkle:releaseNotesLink>https://macbartender.com/B2/updates/4-1-00/rnotes.html</sparkle:releaseNotesLink>
      <pubDate>June 11, 2021 09:45:00 +0000</pubDate>
      <enclosure url="https://macbartender.com/B2/updates/4-1-00/Bartender%204.zip" sparkle:version="41000" sparkle:shortVersionString="4.1.0" length="10447378" type="application/octet-stream" sparkle:dsaSignature="MCwCFE6EG2iwK+LJpIADGYEn+9MueX4AAhR73iaPOonRsW9U5wa6GuKhIpZ0Xw==" />
    </item>
    

    A possible demerit from adding this would be that trying to update a Cask by checking brew livecheck on older macOS may no longer work.

    On-the-other-hand, this also means brew livecheck output should align with brew bump-cask-pr in the case that there is an if MacOS.version <= section.


    Example on macOS Big Sur: Before:

    ❯ brew livecheck bartender
    bartender : 4.0.48,40048 ==> 4.1.0,41000
    

    After:

    ❯ brew livecheck bartender
    bartender : 4.0.48,40048 ==> 4.0.48,40048
    
    waiting for feedback 
    opened by cho-m 2
  • Bottle: keep track of original filename

    Bottle: keep track of original filename

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same change?
    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [ ] Have you written new tests for your changes? Here's an example.
    • [x] Have you successfully run brew style with your changes locally?
    • [ ] Have you successfully run brew typecheck with your changes locally?
    • [ ] Have you successfully run brew tests with your changes locally?

    This fixes brew bottle --json when working with bottles using the older, pre-GitHub Packages filename format. The current version gets a bit confused because, although it's able to instantiate a formula and a produce a new destination filename for it, it still tries to perform file operations on the "new" file without having actually renamed it. Since the caller has access to the filename on disk, I've updated it to pass in both the filename and the formula so that the filename on disk can be used where necessary.

    opened by mistydemeo 3
  • Try homebrew curl on unhandled SSL protocol.

    Try homebrew curl on unhandled SSL protocol.

    Needed for some formulas like theora.

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same change?
    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [N/A] Have you written new tests for your changes? Here's an example.
    • [x] Have you successfully run brew style with your changes locally?
    • [x] Have you successfully run brew typecheck with your changes locally?
    • [x] Have you successfully run brew tests with your changes locally?

    opened by jameshilliard 10
  • build(deps-dev): bump sorbet from 0.5.6274 to 0.5.6442 in /Library/Homebrew

    build(deps-dev): bump sorbet from 0.5.6274 to 0.5.6442 in /Library/Homebrew

    Bumps sorbet from 0.5.6274 to 0.5.6442.

    Release notes

    Sourced from sorbet's releases.

    sorbet 0.5.6441.20210611162956-ccb9ae577

    To use Sorbet add this line to your Gemfile:

    gem 'sorbet', '0.5.6441', :group => :development
    gem 'sorbet-runtime', '0.5.6441'
    

    sorbet 0.5.6440.20210610170418-a84ad5d07

    To use Sorbet add this line to your Gemfile:

    gem 'sorbet', '0.5.6440', :group => :development
    gem 'sorbet-runtime', '0.5.6440'
    

    sorbet 0.5.6439.20210610134407-6767f90d0

    To use Sorbet add this line to your Gemfile:

    gem 'sorbet', '0.5.6439', :group => :development
    gem 'sorbet-runtime', '0.5.6439'
    

    sorbet 0.5.6438.20210610150003-6af2ced1f

    To use Sorbet add this line to your Gemfile:

    gem 'sorbet', '0.5.6438', :group => :development
    gem 'sorbet-runtime', '0.5.6438'
    

    sorbet 0.5.6437.20210609143555-6bea97fef

    To use Sorbet add this line to your Gemfile:

    gem 'sorbet', '0.5.6437', :group => :development
    gem 'sorbet-runtime', '0.5.6437'
    

    sorbet 0.5.6436.20210609113256-83856fd21

    To use Sorbet add this line to your Gemfile:

    gem 'sorbet', '0.5.6436', :group => :development
    gem 'sorbet-runtime', '0.5.6436'
    

    sorbet 0.5.6435.20210608121507-26f675d3d

    To use Sorbet add this line to your Gemfile:

    gem 'sorbet', '0.5.6435', :group => :development
    gem 'sorbet-runtime', '0.5.6435'
    

    sorbet 0.5.6434.20210608115223-fd8d97814

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies ruby 
    opened by dependabot[bot] 1
  • workflows/tests.yml: don't report coverage on Linux

    workflows/tests.yml: don't report coverage on Linux

    • [x] Have you followed the guidelines in our Contributing document?
    • [x] Have you checked to ensure there aren't other open Pull Requests for the same change?
    • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
    • [ ] Have you written new tests for your changes? Here's an example.
    • [ ] Have you successfully run brew style with your changes locally?
    • [ ] Have you successfully run brew typecheck with your changes locally?
    • [ ] Have you successfully run brew tests with your changes locally?

    This PR removes code coverage checks on Linux in the tests workflow. The Linux tests are completed earlier and once there coverage is reported, they're almost always ❌ with a negative delta of ~5% (in the PRs I've seen). Once the macOS tests are done, this changes – to either βœ… or ❌ depending on the "actual" coverage impact.

    I'm not too familiar with this but I'm assuming this is because fewer tests are run on Linux. We might as well stop reporting coverage on Linux since this is a recurring issue, and the macOS results are what we see/use in the end.

    in progress 
    opened by nandahkrishna 8
  • sorbet-runtime-stub is deprecated

    sorbet-runtime-stub is deprecated

    DEPRECATED: This gem should not be used anymore.

    As of June 2021, sorbet-runtime-stub is no more maintained and no further versions will be published.

    We decided to stop supporting this gem for multiple reasons:

    • It's not feature complete (missing T::Struct support and other Sorbet delicacies)
    • It's hard to keep up-to-date with the real sorbet-runtime
    • It provides a false sense of security for the users

    You should include sorbet-runtime and disable the checks you don't want to apply in production env.

    If you're in the Shopify org, take a look at https://github.com/shopify/shopify-types.

    opened by Bo98 0
  • Don't run update casks with `:latest` when the installer hasn't changed

    Don't run update casks with `:latest` when the installer hasn't changed

    Provide a detailed description of the proposed feature

    When running brew upgrade --greedy, if the installer for a cask using version :latest has not changed since the last successful install. An example of how this might be done is to compare the hash of the installer before and after the download and only installing if they don't match.

    What is the motivation for the feature?

    Installing casks that use version :latest each time brew upgrade --greedy when the installer is unchanged is unnecessary, time consuming, resource consuming, as well as potentially interrupting the user's workflow if they relaunch the application, thinking there's new updates.

    How will the feature be relevant to at least 90% of Homebrew users?

    Prevent issues stated in "motivation"

    What alternatives to the feature have been considered?

    • Installing casks that use version :latest each time brew upgrade --greedy when the installer is unchanged - see "motivation"
    • Checking each individual application's website if a new version is released and then updating only those who have a new release - absurdly inconvenient
    cask features help wanted 
    opened by Logicer16 3
  • `brew uninstall` warns about uninstalling build dependencies for casks

    `brew uninstall` warns about uninstalling build dependencies for casks

    brew config output

    HOMEBREW_VERSION: 3.1.10-2-gdbdc4f1
    ORIGIN: https://github.com/Homebrew/brew
    HEAD: dbdc4f1a7e34ebe5a3b07a4a15c7fb2300aeac5d
    Last commit: 2 hours ago
    Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
    Core tap HEAD: faa3ad34e3d114d3071cd3207e42d7a52758c6c5
    Core tap last commit: 47 minutes ago
    Core tap branch: master
    HOMEBREW_PREFIX: /usr/local
    HOMEBREW_BAT: set
    HOMEBREW_BOOTSNAP: set
    HOMEBREW_CASK_OPTS: []
    HOMEBREW_DEVELOPER: set
    HOMEBREW_EDITOR: vim
    HOMEBREW_FORCE_BREWED_CURL: set
    HOMEBREW_FORCE_BREWED_GIT: set
    HOMEBREW_GITHUB_API_TOKEN: set
    HOMEBREW_GITHUB_PACKAGES_TOKEN: set
    HOMEBREW_GITHUB_PACKAGES_USER: Rylan12
    HOMEBREW_MAKE_JOBS: 4
    HOMEBREW_NO_AUTO_UPDATE: set
    HOMEBREW_PRY: set
    Homebrew Ruby: 2.6.3 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
    CPU: quad-core 64-bit broadwell
    Clang: 12.0.5 build 1205
    Git: 2.32.0 => /usr/local/opt/git/bin/git
    Curl: 7.77.0 => /usr/local/opt/curl/bin/curl
    macOS: 11.3-x86_64
    CLT: 12.5.0.22.9
    Xcode: N/A
    

    brew doctor output

    Your system is ready to brew.
    

    • [X] I ran brew update and am still able to reproduce my issue.
    • [X] I have resolved all warnings from brew doctor and that did not fix my problem.

    What were you trying to do (and why)?

    Uninstall automake because it showed up in brew autoremove -n and I don't need it anymore

    What happened (include all command output)?

    $ brew uninstall automake
    Warning: /usr/local/Cellar/automake/1.16.3_1 is required by mactex-no-gui, which is currently installed.
    You can silence this warning with:
      brew uninstall --ignore-dependencies automake
    Uninstalling /usr/local/Cellar/automake/1.16.3_1... (131 files, 3.4MB)
    

    mactext-no-gui doesn't depend directly on automake:

    $ brew deps --tree mactex-no-gui
    mactex-no-gui
    └── ghostscript
        β”œβ”€β”€ fontconfig
        β”‚   └── freetype
        β”‚       └── libpng
        β”œβ”€β”€ freetype
        β”‚   └── libpng
        β”œβ”€β”€ jbig2dec
        β”œβ”€β”€ jpeg
        β”œβ”€β”€ libidn
        β”œβ”€β”€ libpng
        β”œβ”€β”€ libtiff
        β”‚   └── jpeg
        β”œβ”€β”€ little-cms2
        β”‚   β”œβ”€β”€ jpeg
        β”‚   └── libtiff
        β”‚       └── jpeg
        └── openjpeg
            β”œβ”€β”€ libpng
            β”œβ”€β”€ libtiff
            β”‚   └── jpeg
            └── little-cms2
                β”œβ”€β”€ jpeg
                └── libtiff
                    └── jpeg
    

    But it does show up as a build dependency through jbig2dec (a runtime dependency of ghostscript):

    $ brew deps --tree mactex-no-gui --include-build
    mactex-no-gui
    └── ghostscript
        β”œβ”€β”€ pkg-config
        β”œβ”€β”€ fontconfig
        β”‚   β”œβ”€β”€ pkg-config
        β”‚   └── freetype
        β”‚       └── libpng
        β”œβ”€β”€ freetype
        β”‚   └── libpng
        β”œβ”€β”€ jbig2dec
        β”‚   β”œβ”€β”€ autoconf
        β”‚   β”‚   └── m4
        β”‚   β”œβ”€β”€ automake
        β”‚   β”‚   └── autoconf
        β”‚   β”‚       └── m4
        β”‚   └── libtool
        β”‚       └── m4
    ...
    

    It looks like this happens whenever a cask is installed that depends on a formula that has a build dependency on the formula being uninstalled. This happens even if the cask dependency is built from a bottle (meaning the formula being uninstalled isn't ever needed). Here's a basic case of what I believe causes a problem:

    $ brew deps --tree --include-build CASK
    CASK
    └── FORMULA
        └── foo
    

    Where foo is a build dependency of FORMULA which is a runtime dependecy of CASK.

    What did you expect to happen?

    automake to uninstall without a warning

    Step-by-step reproduction instructions (by running brew commands)

    brew install automake vv # vv is quicker to install than `mactex-no-gui`
    brew uninstall automake
    
    bug help wanted 
    opened by Rylan12 1
Releases(3.1.12)
Owner
Homebrew
The missing package manager for macOS (or Linux)
Homebrew
Brew & manage PHP versions in pure PHP at HOME

PHPBrew Read this in other languages: English, PortuguΓͺs - BR, ζ—₯本θͺž, δΈ­ζ–‡. phpbrew builds and installs multiple version php(s) in your $HOME directory. W

PHPBrew 4.7k Jun 10, 2021
virtPHP is a tool to create isolated PHP environments.

virtPHP is a tool for creating and managing multiple isolated PHP environments on a single machine. It's like Python's virtualenv, but for PHP. virtPH

VirtPHP 538 Apr 9, 2021