botbrew

适用于Android的*nix工具和包管理。(*nix tools and package management for Android.)

  • 所有者: jyio/botbrew
  • 平台: Android
  • 許可證: MIT License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

BotBrew - *nix tools and package management for Android

This project compiles various *nix tools and makes Opkg packages suitable for installation on ARM devices running Android.

Prebuilt

If you just want to use prebuilt binaries, try the BotBrew GUI; or get a shell on your rooted Android device and run:

wget http://repo.botbrew.com/anise/bootstrap/install.sh -O-, su

Otherwise, keep reading to roll your own.

Prerequisites

The following Debian packages are required for using BotBrew. Actually, there may be more or fewer requirements depending on the software is to be built, but this is a reasonable starting point. If the build process halts for some reason, it might be calling for additional packages.

  • bash
  • make
  • git-core
  • mercurial
  • subversion
  • build-essential
  • autoconf
  • libtool
  • libglib2.0-dev
  • python
  • python-yaml
  • python-xcbgen 1.7
  • ruby1.9.1
  • xsltproc
  • file
  • fakeroot
  • flex
  • bison
  • gettext
  • intltool

In addition, the Android NDK (r7b recommended) is required.

Cookbook

BotBrew knows how to make

  • binutils
  • gcc
  • bzip2
  • curl
  • opkg
  • python
  • ruby
  • sqlite3
  • vim
  • dropbear
  • weechat
  • ... and more (have a look at the cookbook)

Some projects do not generate packages at all; instead, they provide libraries that allow other projects to be built. These may eventually be packaged as well, to facilitate on-board software development.

Configuration

Create a new file config.sh to define a couple of variables

  • G_MAINTAINER=your name and <email address> in RFC822 format
  • G_NDKPATH=absolute path to the NDK

config.sh is sourced by the botbrew script during execution.

Usage

First, navigate to BotBrew's top-most directory and extract a standalone toolchain from the NDK.

./botbrew toolchain

Then, navigate to the project directory of interest, within the cookbook.

../../botbrew recipe		# just shows basic information
../../botbrew recipe build		# builds the project, satisfying dependencies in the process
../../botbrew recipe package	# packages the project, building it first if necessary
../../botbrew recipe clean		# removes object files
../../botbrew recipe distclean	# removes object files, makefiles, and imports
../../botbrew recipe clobber	# removes everything

BotBrew could also generate a makefile. First, navigate to BotBrew's top-most directory.

./botbrew makefile > Makefile	# generates the makefile
make <project>			# builds <project>
make package-<project>		# packages <project>
make clean-<project>		# cleans <project>
make distclean-<project>		# distcleans <project>
make clobber-<project>		# clobbers <project>
make build-all			# builds all projects
make package-all			# packages all projects

With a makefile, it is possible to specify multiple targets at once and avoid manually changing directories. Since the makefile is basically an index of the BotBrew cookbook, it should be re-generated when projects are added to or removed from BotBrew. Makefile usage is optional.

Graphs

BotBrew is able to generate graphviz-formatted dependency graphs.

./botbrew graphbuild > graph.dot	# generates a graph of build-time dependencies
./botbrew graphinstall > graph.dot	# generates a graph of install-time dependencies

Packaging

BotBrew takes cues from Arch Linux. Just as Arch's PKGBUILD scripts direct the assembly of its packages, BotBrew's recipes (cookbook/*/recipe) control how its projects are built, cleaned, and packaged. Each method is handled by a shell function. In most cases, the maintainer only needs to override the build function. Defaults are used whenever there is no override. BotBrew provides functions that assist in downloading/unpacking/patching source code, and functions that apply various fixes and make cross-compilation easier. The Opkg packages themselves are controlled by YAML files (cookbook/*/package/*). Please have a look at some of the projects for packaging hints.

agcc.bash

agcc.bash is a wrapper around the NDK that behaves as gcc when invoked as agcc.bash or g++ when invoked as agcc-bash-g++. It is deprecated in favor of the standalone toolchain generated by the NDK.

主要指標

概覽
名稱與所有者jyio/botbrew
主編程語言C
編程語言C (語言數: 3)
平台Android
許可證MIT License
所有者活动
創建於2012-01-15 05:03:55
推送於2012-04-09 16:59:04
最后一次提交2012-04-09 12:58:56
發布數0
用户参与
星數89
關注者數11
派生數28
提交數152
已啟用問題?
問題數8
打開的問題數6
拉請求數0
打開的拉請求數1
關閉的拉請求數0
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?