Code Monkey home page Code Monkey logo

bakery's Introduction

Baker smurf Welcome to the Bakery

The "bakery" is a framework to download, unpack, patch, and build external software. It is a "ports" system designed to be used by software projects targeting end users.

The Problem

When writing software targeting end users, it's often desirable to leverage 3rd party open source libraries or tools. Once the decision is made to do so, the challenge becomes, how do you handle the logistics of turning the third party libraries into something that you can use in your project? How do different developers all ensure they're using the same external libraries? How do you retain the ability to reproduce old builds? How do you debug, patch and contribute back to the projects you benefit from?

If you take a step back, you might realize that all of these problems have been solved repeatedly, by projects like the FreeBSD ports collection, macports, pkgsrc, the Debian package management system, etc, etc, etc. So the problem has been solved twelve times to tuesday, however, what this author has failed to find is a ports system specifically designed to generate libraries for use in software projects, that is why the bakery exists.

Feature Overview

  • Cross platform (tier 1 platforms are Linux, MacOSX, and Windows)
  • Written completely in ruby using a small set of bundled build tools (for patching and unpacking)
  • Support for multiple build types (i.e. "Debug" and "Release")
  • "receipt" mechanism and "check" phase to allow for validation of build output
  • user scoped machine local package cache to allow efficient switching between package versions (particularly useful for efficient switching between software tags and branches)
  • terse yet expressive recipe file format (in ruby)
  • support for source local ports ("recipes" that you write or alter and are not hosted in the bakery)

Adding Ports ("recipes")

Use some software that's not currently in the bakery? Please visit the Bakers Guide (BakersGuide.md)

Placing Orders

Starting a new project or have an existing project where managing 3rd party source is unwieldy? Using the bakery is simple:

  • git submodule OR copy the bakery into your source tree
  • write an "order", a configuration file saying which ports to build
  • at the time someone checkouts out the repo, they should run the ruby script which contains your order and invokes the bakery.

bakery's People

Contributors

garymd avatar lloyd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

browserplus

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.