Are the sha1 hashtags for a security purpose, or somehow for specifying formula dependencies? In the example below (for libdc1394) can I modify the source url to my own patched version in a local file? Or is the hashtag preventing me from doing this as a handshake/security feature?
In the homebrew formula cookbook it says that "a Hash specifies a formula dependency with some additional information", so I am confused as to what the actual purpose of the hash is.
below is /usr/local/Library/Formula/libdc1394.rb:
require "formula"
class Libdc1394 < Formula
  homepage "http://damien.douxchamps.net/ieee1394/libdc1394/"
  url "https://downloads.sourceforge.net/project/libdc1394/libdc1394-2/2.2.2/libdc1394-2.2.2.tar.gz"
  sha1 "13958c3cd0709565b5e4a9012dcf2a9b710264e2"
  bottle do
    cellar :any
    sha1 "063e3babff63f462de1b7d053690ae3f0e250bcb" => :mavericks
    sha1 "52d23eb6514dfc5c9aa554bade7dac92deefec70" => :mountain_lion
    sha1 "9f703002e33433885f3f2cb9e4a4006585282a01" => :lion
  end
  depends_on "sdl"
  # fix issue due to bug in OSX Firewire stack
  # libdc1394 author comments here:
  # http://permalink.gmane.org/gmane.comp.multimedia.libdc1394.devel/517
  patch :DATA
  def install
    system "./configure", "--disable-dependency-tracking",
                          "--prefix=#{prefix}",
                          "--disable-examples",
                          "--disable-sdltest"
    system "make install"
  end
end
__END__
diff --git a/dc1394/macosx/capture.c b/dc1394/macosx/capture.c
index c7c71f2..8959535 100644
--- a/dc1394/macosx/capture.c
+++ b/dc1394/macosx/capture.c
@@ -150,7 +150,7 @@ callback (buffer_info * buffer, NuDCLRef dcl)
     for (i = 0; i < buffer->num_dcls; i++) {
         int packet_size = capture->frames[buffer->i].packet_size;
-        if ((buffer->pkts[i].status & 0x1F) != 0x11) {
+        if (buffer->pkts[i].status && (buffer->pkts[i].status & 0x1F) != 0x11) {
             dc1394_log_warning ("packet %d had error status %x",
                     i, buffer->pkts[i].status);
             corrupt = 1;
 
                        
It's common for open-source projects to specify MD5 or SHA hashes when they release software (especially in in binary form) so the user can make sure the software didn't get corrupted somehow during the download. I would assume Homebrew is just taking the precaution of verifying that the hashes match.
Note that the sentence you quoted from the cookbook is talking about Ruby's hash object type, which has nothing to do with MD5/SHA hashes (nor indeed with hashtags as found on social media) -- specifically as parameters to the
depends_onmethod. The given example linedepends_on "boost" => "with-icu"is one that takes a hash -- specifically a hash with a string value; in this case it means Homebrew would specifically invoke the optionwith-icuinside theboostformula when that formula got installed as a dependency.You certainly can put your own patched version of the required software into the formula, as long as you calculate your own hash from your version and specify it in the formula, or just take out the
sha1(ormd5, etc.) line entirely.