📦 Bundler for non-Ruby dependencies from Homebrew, Homebrew Cask and the Mac App Store. Ruby homebrew tap bundle cmd Ruby MIT 230 3,638 2 (2 issues need help) 0 Updated Apr 19, 2021. Adventures in Homebrewing in Ann Arbor and Taylor MI near Detroit offers home brewing supplies including beer brewing, wine making and homebrew kegging supplies as well as commercial beverage equipment.
brew tap
adds more repositories to the list of formulae that brew
tracks, updates,and installs from. By default, tap
assumes that the repositories come from GitHub,but the command isn’t limited to any one location.
Homebrew Kegerators with Single, Dual or Triple Tap Towers for dispensing Homebrew Kegs. Dispense Homebrew with ease and Save Money at Home! We Are Keystone Homebrew. If you can dream it, we can help you brew it at Keystone Homebrew. As one of the largest, full-service homebrew and wine making supply stores in the area, we have all of the equipment you need to achieve the perfect liquid satisfaction.
The brew tap
command
brew tap
without arguments lists the currently tapped repositories. Forexample:
brew tap <user/repo>
makes a clone of the repository athttps://github.com/user/homebrew-repo. After that,brew
will be able to work onthose formulae as if they were in Homebrew’s canonical repository. You caninstall and uninstall them withbrew [un]install
, and the formulae areautomatically updated when you runbrew update
. (See below for detailsabout howbrew tap
handles the names of repositories.)brew tap <user/repo> <URL>
makes a clone of the repository at URL.Unlike the one-argument version, URL is not assumed to be GitHub, and itdoesn’t have to be HTTP. Any location and any protocol that Git can handle isfine.brew tap --repair
migrates tapped formulae from a symlink-based todirectory-based structure. (This should only need to be run once.)brew untap user/repo [user/repo user/repo ...]
removes the given taps. Therepositories are deleted andbrew
will no longer be aware of their formulae.brew untap
can handle multiple removals at once.
Repository naming conventions and assumptions
On GitHub, your repository must be named
homebrew-something
in order to usethe one-argument form ofbrew tap
. The prefix ‘homebrew-‘ is not optional.(The two-argument form doesn’t have this limitation, but it forces you togive the full URL explicitly.)When you use
brew tap
on the command line, however, you can leave out the‘homebrew-‘ prefix in commands.That is,
brew tap username/foobar
can be used as a shortcut for the longversion:brew tap username/homebrew-foobar
.brew
will automatically addback the ‘homebrew-‘ prefix whenever it’s necessary.
Formula with duplicate names
If your tap contains a formula that is also present inhomebrew/core, that’s fine,but it means that you must install it explicitly by default.
Whenever a brew install foo
command is issued, brew
will find which formulato use by searching in the following order:
- core formulae
- other taps
If you need a formula to be installed from a particular tap, you can use fullyqualified names to refer to them.
You can create a tap for an alternative vim
formula. The behaviour will be:
As a result, we recommend you give formulae a different name if you want to makethem easier to install. Note that there is (intentionally) no way of replacingdependencies of core formulae with those from taps.
Some Terminology and Background¶
Homebrew is a fantastic package manager written in ruby. A package in Homebrew is built with a formula, and all formula-based packages can be and must be capable of being built from source1. Since many FOSS projects use git these days, you can even specify the git repository and how to build from it in the homebrew formula.
For example:
would git clone the latest gcc sources and build gcc using the formula provided in Homebrew.
Homebrew is also very flexible and secure as it doesn't need root privileges for its packages.
Homebrew can turn a build into a re-distributable Bottle. Homebrew works on both Linux and Mac and hosts its core repository at https://github.com/Homebrew/homebrew-core.
Lastly, Homebrew has taps which are third party formula repositories that a user can install from.
Why Make a Homebrew Tap?¶
Recently, Bluespec open sourced their BlueSpec Verilog Compiler(bsc) 2. I wanted to build a homebrew formula and submit it to homebrew-core. Homebrew has strict requirements for formula they accept to homebrew-core.
The one that got me in trouble is:
If the source for the software to be built is hosted on GitHub, a canonical 3 versioned/git-tagged Github release tarball must be used as the source for the build of the formula.
Homebrew Tap Handles
Basically, as of the time of the writing of this article, the BSC maintainers do not have a Github release.
If I can't contribute a formula to homebrew core, I can still create my own tap.
Making a Tap and Bottle¶
I created my own tap at bracketmaster/homebrew-rtl which contains some formulas for building FOSS RTL and FPGA tools such as NextPnr and bsc.
To install these formulas, I do:
You may notice that homebrew poured bottles instead of building bsc from source. You may also notice the bottles are hosted using Github Releases.
Homebrew Tap Handles
Basically, I created a versioned release on Github with all the tarred sources for various formulas4 I also uploaded the bottles brew generated when building my formulas the first go round.
Generating your first brew bottle is easy. For example wit NextPnr:
Where root-url
is the Github Releases url you plan to upload the bottle to.
Homebrew Tap Handles
You should see a file in your current directory that looks something along the lines of nextpnr-1.0.catalina.bottle.tar.gz
.
Homebrew Tap
Go ahead and upload that to your Github Releases and paste the bottle do/end
stanza into your homebrew ruby formula.
Brew List Taps
I specify formula-based packages because Hombrew also supports the installation of Casks which in MacOS are MacOS native 'apps' that end in
.app
such asChrome.app
. ↩Anounced here to be open sourced on January 31, 2020. Interestingly enough, at the time of the writing of this article, https://bluespec.com still does not have a link on their website pointing to the source code location. But, after scouring around on the internet, this Reddit post notes that the source is located here. ↩
Canonical basically means that the Github Repo is not a fork. ↩
Worth noting that as of this writing, Github does provide a URL API that allows you to download a repository as a tar. But the provided tarball doesn't contain submodules or the
.git
which is a problem for software that builds version info from the git commit. Also worth noting that Github releases also use this same URL API. ↩