diff options
Diffstat (limited to 'Library/Contributions/example-formula.rb')
| -rw-r--r-- | Library/Contributions/example-formula.rb | 66 | 
1 files changed, 58 insertions, 8 deletions
| diff --git a/Library/Contributions/example-formula.rb b/Library/Contributions/example-formula.rb index b33689b41..e48199f39 100644 --- a/Library/Contributions/example-formula.rb +++ b/Library/Contributions/example-formula.rb @@ -30,8 +30,8 @@ class ExampleFormula < Formula    version "1.2-final"    # For integrity and security, we verify the hash (`openssl dgst -sha1 <FILE>`) -  # You may also use sha256 if the software uses sha256 on their homepage. -  # Leave it empty at first and `brew install` will tell you the expected. +  # You may also use sha256 if the software uses sha256 on their homepage. Do not use md5. +  # Either generate the sha locally or leave it empty & `brew install` will tell you the expected.    sha1 "cafebabe78901234567890123456789012345678"    # Stable-only dependencies should be nested inside a `stable` block rather than @@ -48,6 +48,7 @@ class ExampleFormula < Formula    # Optionally, specify a repository to be used. Brew then generates a    # `--HEAD` option. Remember to also test it.    # The download strategies (:using =>) are the same as for `url`. +  # "master" is the default branch and doesn't need stating with a :branch conditional    head "https://we.prefer.https.over.git.example.com/.git"    head "https://example.com/.git", :branch => "name_of_branch", :revision => "abc123"    head "https://hg.is.awesome.but.git.has.won.example.com/", :using => :hg # If autodetect fails. @@ -89,6 +90,8 @@ class ExampleFormula < Formula    # Bottles are pre-built and added by the Homebrew maintainers for you.    # If you maintain your own repository, you can add your own bottle links.    # https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Bottles.md +  # You can ignore this block entirely if submitting to Homebrew/Homebrew, It'll be +  # handled for you by the Brew Test Bot.    bottle do      root_url "http://mikemcquaid.com" # Optional root to calculate bottle URLs      prefix "/opt/homebrew" # Optional HOMEBREW_PREFIX in which the bottles were built. @@ -154,7 +157,7 @@ class ExampleFormula < Formula    depends_on :arch => :x86_64 # If this formula only build on intel x86 64bit.    depends_on :arch => :ppc # Only builds on PowerPC?    depends_on :ld64 # Sometimes ld fails on `MacOS.version < :leopard`. Then use this. -  depends_on :x11 # X11/XQuartz components. +  depends_on :x11 # X11/XQuartz components. Non-optional X11 deps should go in Homebrew/Homebrew-x11    depends_on :osxfuse # Permits the use of the upstream signed binary or our source package.    depends_on :tuntap # Does the same thing as above. This is vital for Yosemite and above.    depends_on :mysql => :recommended @@ -166,6 +169,8 @@ class ExampleFormula < Formula    # If any Python >= 2.7 < 3.x is okay (either from OS X or brewed):    depends_on :python +  # to depend on Python >= 2.7 but use system Python where possible +  depends_on :python if MacOS.version <= :snow_leopard    # Python 3.x if the `--with-python3` is given to `brew install example`    depends_on :python3 => :optional @@ -188,7 +193,7 @@ class ExampleFormula < Formula    end    fails_with :clang do -    build 425 +    build 600      cause "multiple configure and compile errors"    end @@ -271,6 +276,19 @@ class ExampleFormula < Formula      args << "--some-new-stuff" if build.head? # if head is used instead of url.      args << "--universal-binary" if build.universal? +    # If there are multiple conditional arguments use a block instead of lines. +    if build.head? +      args << "--i-want-pizza" +      args << "--and-a-cold-beer" if build.with? "cold-beer" +    end + +    # If a formula presents a user with a choice, but the choice must be fulfilled: +    if build.with? "example2" +      args << "--with-example2" +    else +      args << "--with-example1" +    end +      # The `build.with?` and `build.without?` are smart enough to do the      # right thing with respect to defaults defined via `:optional` and      # `:recommended` dependencies. @@ -282,12 +300,12 @@ class ExampleFormula < Formula      # break if they remember that exact path. In contrast to that, the      # `$(brew --prefix)/opt/formula` is the same path for all future      # versions of the formula! -    args << "--with-readline=#{Formula["readline"].opt_prefix}/lib" if build.with? "readline" +    args << "--with-readline=#{Formula["readline"].opt_prefix}" if build.with? "readline"      # Most software still uses `configure` and `make`.      # Check with `./configure --help` what our options are.      system "./configure", "--disable-debug", "--disable-dependency-tracking", -                          "--prefix=#{prefix}", +                          "--disable-silent-rules", "--prefix=#{prefix}",                            *args # our custom arg list (needs `*` to unpack)      # If your formula's build system is not thread safe: @@ -305,7 +323,30 @@ class ExampleFormula < Formula      # Overwriting any env var:      ENV["LDFLAGS"] = "--tag CC" - +    # Is the formula struggling to find the pkgconfig file? Point it to it. +    # This is done automatically for `keg_only` formulae. +    ENV.prepend_path "PKG_CONFIG_PATH", "#{Formula["glib"].opt_lib}/pkgconfig" + +    # Need to install into the bin but the makefile doesn't mkdir -p prefix/bin? +    bin.mkpath +    # A custom directory? +    mkdir_p share/"example" +    # And then move something from the buildpath to that directory? +    mv "ducks.txt", share/"example/ducks.txt" +    # No "make", "install" available? +    bin.install "binary1" +    include.install "example.h" +    lib.install "example.dylib" +    man1.install "example.1" +    man3.install "example.3" +    # All that README/LICENSE/NOTES/CHANGELOG stuff? Use "metafiles" +    prefix.install_metafiles +    # Maybe you'd like to remove a broken or unnecessary element? +    # Empty directories will be removed by Homebrew automatically post-install! +    rm "bin/example" +    rm_rf "share/pointless" + +    # If there is a "make", "install" available, please use it!      system "make", "install"      # We are in a temporary directory and don't have to care about cleanup. @@ -423,11 +464,20 @@ class ExampleFormula < Formula      <plist version="1.0">      <dict>        <key>Label</key> -      <string>#{plist_name}</string> +        <string>#{plist_name}</string> +      <key>ProgramArguments</key> +      <array> +        <string>#{bin}/example</string> +        <string>--do-this</string> +      </array>        <key>RunAtLoad</key>        <true/>        <key>KeepAlive</key>        <true/> +      <key>StandardErrorPath</key> +      <string>/dev/null</string> +      <key>StandardOutPath</key> +      <string>/dev/null</string>      </plist>      EOS    end | 
