Change the generated omnibus.rb to use a default homepage that includes the protocol

Ensure that software fetched via the PathFetcher are cached correctly

Downgrade FPM to ~> 0.4 - FPM 1.0.0+ uses FFI to attach to some libc functions. This fails on RHEL 5 & 6. As we don’t need a bleeding edge FPM the easiest fix is to just downgrade to the most recent pre-1.0.0 version.

Always print backtraces when errors occur

Do not sent ldd/otool to the same file - first steps in allowing parallel builds

Only rescue Omnibus::Error when invoked through the CLI - this will allow other bugs to actually raise at the Ruby level

Refactor the algorithm for git caching to take into account overrides and missing versions

Fetch all software at the start of the build - this fixes a bug where a build would fail halfway through because of a tiny typo of GitHub outage. Now, all required software is downloaded before the build starts, lowering the feedback time for a failure due to networking issues

Use the fetcher’s version_for_cache method directly, falling back to 0.0.0 (and a warining) if no version is given

Potentially breaking changes

Merged Package and Artifact into the same class and updated API - this was considered an internal API so it is not a violation of semver

Use a common class for Omnibus exceptions - if you were rescuing Omnibus::Error, you might be rescuing all exceptions now

Use a cleanroom object when evaluating the DSL - prior to this release, Omnibus did not declare a public API. Project and software definitions had unrestricted access to the entire project.rb and software.rb methods respectively. This poses two problems - first, it makes it impossible to guarantee a public DSL API over a public (code) API. Second, it permits a developer to change the behavior of project.rb or software.rb accidentially, simply by defining a new method. The introducing of a cleanroom fixes both these bugs, however, it was impossible to know what was formerly considered a public API. Thus, it is possible that a previously-relied-on method is now unavaiable using the cleanroom. Please open an issue if you encounter such a case.

Remove mixlib-config - if you were relying on mixlib-config as a transitive dependency, it is no longer available

Remove the ability to use an overrides file - this was for internal use only and was never exposed as a public API. However, if you dug into the code and found it, it has now been removed. For BC purposes, the value still exists in the configuration object, but is essentially a no-op

Move project loading from INFO to DEBUG

Truncate platforms to short versions

All paths are represented internally as Unix-style paths - previously Omnibus would try to intelligently build your paths differently on Windows for the purposes of shelling out to the system. This proved to be unmaintainable and makes Ruby very unhappy in most circumsatances. As such, we have exposed the windows_safe_path method in the Builder DSL that will convert a string to a “Windows-safe path”. This is only needed when shelling out to the system.

There are a number of new and awesome changes, as well as some “potentially breaking changes”. Please review the changelog carefully and upgrade in an isolated environment first.

As an added bonus, omnibus-ruby is now dead! That’s right, the repository now lives at opscode/omnibus to alleviate any confusion. The old clojure repo has been retained in a branch for historical purposes, but is no longer supported.