Umbrella Project: Chef Foundation
Project State: Active
Issues Response Time Maximum: 14 days
Pull Request Response Time Maximum: 14 days
Omnibus Toolchain creates a native platform package that contains the entire required toolchain used for building Omnibus projects created by Chef Software, Inc. It may work with other projects, but that is not guaranteed.
Currently it supports the following operating systems:
- Solaris 11 (SPARC and x86, builds on 11.2 for SPARC)
 - AIX 7 (POWER6 and later)
 - Debian Linux (and derivatives like Ubuntu and Mint) on a variety of platforms (arm64 armhf ppc ppc64le x86 amd64)
 - RHEL/CentOS/Fedora Linux on a variety of platforms (ppc64 ppc64le i686 x86_64)
 - Mac OS X 10.9+
 - FreeBSD 9, 10
 - Windows 2012R2 / 2016
 
Converge time when creating omnibus builders using the omnibus cookbook is relatively long and not conducive to speedy development cycles.
This assumes that you have a sane build toolchain (gcc, make, etc) already installed on the machine, via the native operating system's package manager, or built from source on non-GNU based platforms (Solaris, AIX). If your platform is already supported by chef, you can use the build-essential cookbook. Otherwise, the required tools are spelled out in the docs folder on a per OS basis and can be used as guidance for porting to a new OS/Platform.
For best results: multiple cores and at least 10GB of RAM (at least two of which are physical, the rest can be swap) are recommended. This process does a lot of compiling and will be very wall clock and system time consuming.
NOTICE: Cross-compiling is not supported. Omnibus toolchain requires your environment to "appear" native to what you want packages produced for. This means that running in an emulated (VirtualBox, QEMU, etc) environment works, but a cross-compile environment does not.
Check out the docs folder for the specific steps to build and install on your operating system distribution. Platform specific notes are included in the operating system distribution documentation if they are required.
Once the inital toolchain is installed (see Installation) you can build this project using the following commands:
$ export PATH=/opt/omnibus-toolchain/embedded/bin:$PATH
$ bundle install --without development
$ bundle exec omnibus build omnibus-toolchainAfter the build completes packages will be available in the pkg/ folder.
You can clean up all temporary files generated during the build process with
the clean command:
$ bundle exec omnibus clean omnibus-toolchainAdding the --purge purge option removes ALL files generated during the
build including the project install directory (/opt/omnibus-toolchain) and
the package cache directory (/var/cache/omnibus/pkg):
$ bundle exec omnibus clean omnibus-toolchain --purgeFull help for the Omnibus command line interface can be accessed with the
help command:
$ bundle exec omnibus helpWhen building on windows, 'tar (child): Cannot connect to C: resolve failed' will fail the build. Open ../omnibus/fetchers/net_fetcher.rb:246 and remove first part of if condition at extract method.
Astute observers will notice there is an 'angry-omnibus-toolchain' definition. This is a software def that allows you to build the omnibus-toolchain in place using the omnibus-toolchain. Since the namespace is the same, a separate package is used for the purpose of CI.
Copyright 2015-2016 Chef Software, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.