[chef] Omnibus v3.2.0


Chronological Thread 
  • From: Seth Vargo < >
  • To:
  • Subject: [chef] Omnibus v3.2.0
  • Date: Wed, 23 Jul 2014 13:28:14 -0400

Ohai Chefs,

After 3 release candidates, I am excited to announce that omnibus v3.2.0 has hit the shelves!

Here is the high-level changeset. For a complete listing, you can review the full diff here: https://github.com/opscode/omnibus/compare/v3.1.1...v3.2.0

- Make build commands output during `log.info` instead of `log.debug`
- Refactor Chef Sugar into an includable module, permitting DSL methods in both Software and Project definitions
- Refactor `omnibus release` into a non-S3-specific backend "publisher"
- Add support for specifying a dir glob to the `publish` command to upload multiple packages
- "Package" is now a public API
- Generate a real omnibus configuration file (no more `omnibus.rb.example`)
- Add a releaser for Artifactory
- Add additional information to package metdata (such as shasums)
- Remove uses of Omnibus.config and use the Config object directly
- Add the ability to define multiple `software_gems` in the config
- Add the ability to define `local_software_paths` in the config
- Add the ability to disable git caching in the config
- Omnibus.load_configuration now requires a file path
- Add new API for loading a project - `Project.load`
- Add new API for loading a software - `Software.load`
- Add publish APIs for dirtying the git cache
- Add test coverage for the "public" API
- Add validation to `source` in software DSL
- Add logging to the Packager class
- Add functional tests for builders
- Update generator templates to use the new APIs
- Upgrade to Ohai 7.2
- Improve YARDoc

### Deprecations
- Remove deprecated `Omnibus.configure` method
- Deprecate `Omnibus.config.value` in favor of `Config.value` instead
- Deprecate `Omnibus.project_root` in favor of `Config.project_root`
- Deprecate [DSL] `platform` in favor of `Ohai['platform']`
- Deprecate [DSL] `platform_family` in favor of `Ohai['platform_family']`
- Deprecate [DSL] `platform_version` in favor of `Ohai['platform_version']`
- Deprecate [DSL] `build_dir` in favor of `Config.build_dir`
- Deprecate [DSL] `cache_dir` in favor of `Config.cache_dir`
- Deprecate [DSL] `source_dir` in favor of `Config.source_dir`
- Deprecate [DSL] `config` in favor of `Config` (capitalized)
- Deprecate `Ohai.value` in favor of `Ohai['value']`
- Deprecate `Project#install_path` in favor of `Project.install_dir`
- Deprecate [DSL] `install_path` in favor of `install_dir`
- Rename `Config.install_path_cache_dir` to `git_cache_dir`
- Fix a bug in the deprecations where a hardcoded output was used instead of a dynamic variable

### DSL Changes
- Add `with_embedded_path` to software
- Add `with_standard_compiler_flags` to software
- Add `package_scripts_path` to project
- Add builder DSL methods for `mkdir`, `touch`, `delete`, `copy`, `move`, `link`, and `sync`

### Bug fixes
- Fix a small typo in the project generator (come -> some)
- Update sample software definition for libpng to 1.5.18
- Improved logging output
- Include Chef Sugar in both software and project DSLs
- Documentation updates and typographical fixes
- 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
- Remove nested git directories before incremental caching occurs
- Intelligently parse the project's homepage because Ruby's native URI implementation is buggy
- 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
- Require `net/http`, `net/https`, and `net/ftp` in the base fetcher module
- Use -R, not -W1 on FreeBSD's compile flags
- Expand all paths relative to the project_root
- Unset all Ruby, Bundler, amd Gem-related environment variables before shelling out
- Various documentation fixes and updates

### 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.

If you experience any problems, please open an issue on the GitHub repository (https://github.com/opscode/omnibus/issues).

Happy Bussing,
Seth
@sethvargo

Attachment: smime.p7s
Description: S/MIME cryptographic signature



  • [chef] Omnibus v3.2.0, Seth Vargo, 07/23/2014

Archive powered by MHonArc 2.6.16.

§