sqitchers / homebrew-sqitch

Homebrew Formulas for Sqitch
22 stars 10 forks source link

Complete rewrite of the Sqitch Homebrew formula #38

Closed theory closed 5 years ago

theory commented 5 years ago

This change depends on the Sqitch bundle branch, which adds a new build command, ./Build bundle, to bundle Sqitch and all of its prereqs into a single directory. This is actually the preferred way to do Homebrew builds, as opposed to the old approach, which installed all the dependencies into the system Perl @INC directories, outside the management scope of Homebrew.

This revision also removes the engine-specific sqitch_* formulas, replacing them with --with-{engine}-support options to the Sqitch formula. This ensures that additional Perl dependencies are also included in the single Sqitch Homebrew directory (or "Cellar", in Homebrew parlance). It also means that support for multiple engines can be included at once, e.g.:

brew install sqitch --with-postgres-support --with-mysql-support --with-sqlite-support

Database dependencies supported by Homebrew, including Postgres, MySQL, SQLite, and libiodbc, are all included as recommended dependencies for the --with-{engine}-support options that require them. This allows one to install alternative manually, if one likes.

Database dependencies not supported by Homebrew, including Oracle, Vertica, Snowflake, Firebird, and Exasol, are now detected via new Requirement classes. Packages required to build Sqitch, such as the Oracle Instant Client, will cause the installation to abort if they're not detected. Dependencies not required to build Sqitch, but required to use them for the specified engine, will not cause a build to file if they're not found, but a brief report will be shown following installation so the user has an idea what to do next.