GithubHelp home page GithubHelp logo

dcreager / buzzy Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 0.0 2.32 MB

OS-agnostic package builder

License: BSD 3-Clause "New" or "Revised" License

Python 1.78% Shell 9.07% CMake 2.38% C 52.54% Makefile 2.78% M4 0.07% HTML 25.98% CSS 0.62% C++ 1.26% Ruby 0.05% Ragel 2.45% Perl 0.93% Terra 0.03% Perl 6 0.06%

buzzy's Introduction

Buzzy package manager

Build Status

Buzzy is a package manager that isn't tied to one particular operating system or distribution. It's useful for third-party software developers that would like to provide native binary packages for the software that they write, without having to maintain separate packaging scripts for a multitude of operating systems, distributions, and versions.

Buzzy is currently alpha software, and only supports the following operating systems:

  • Arch Linux
  • RedHat Enterprise Linux 5 and 6
  • Mac OS X (using Homebrew)

We plan to add support for other Linux distributions and operating systems.

Buzzy is written in C, with all of its library dependencies included in the source repository. Then means that you don't need any language runtimes to build, install, or use Buzzy. (This is especially useful, since we don't have to worry about juggling language versions across different operating systems. I'm looking at you, Python on RHEL5!)

Installing Buzzy

We use Buzzy to build native packages of Buzzy itself. (It would be kind of lame of us not to, don't you think?) You can find binary package releases at our Github releases page. So the easiest way to install Buzzy is to download one of those binaries and install it using your normal package manager. Buzzy (purposefully) has no runtime dependencies, so the single binary is all you need.

Buzzy supports installing packages on a Mac using Homebrew. If you have Homebrew installed, you can install Buzzy using the following command:

$ brew install https://raw.github.com/dcreager/buzzy/master/spec/buzzy.rb

Building Buzzy

Presumably, your platform is one that Buzzy can build native packages for. (Otherwise, what's the point of installing Buzzy?) You can build your own native Buzzy package in two stages.

First, follow a standard CMake setup to build a "bootstrap" copy of Buzzy:

$ mkdir .build
$ cd .build
$ cmake ..
$ make

Then use this bootstrap copy to build and install a proper native package of Buzzy:

$ src/buzzy install

Overview

A Buzzy package is a platform-agnostic description of a piece of software. It usually includes instructions for downloading and building the software from source, but doesn't have to โ€” Buzzy packages can also refer to packages that are available in your native package database.

Unlike most package managers, you do not have an arbitrary scripting language to work with when writing a Buzzy package description. Instead, a recipe is a declarative description of the software package, encoded in a YAML file.

Buzzy automatically translates this descriptive description of the software into one or more platform-specific packages. Different platforms might have different rules for how many packages are created for a recipe, and will certainly have different rules and customs for translating the descriptive recipe instructions into the native packaging format. Where possible, we use native system packages to satisfy recipe dependencies, rather that building our own custom copies of software that's already provided by the native package manager.

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.