Skip to content

Contributing to Optware ng

alllexx88 edited this page Jun 17, 2016 · 17 revisions

This page briefly describes how you can contribute your patches to Optware-ng. For some starter guidelines on creating new packages see Adding a package to Optware ng

1. Setting up development environment

1.1. Build requirementsdocbo

Official Optware-ng build machine (see http://jenkins.nas-admin.org/view/Optware) runs 64bit Ubuntu 14.04LTS with following modifications:

  1. Additional packages installed: ant build-essential git subversion cvs openjdk-7-jre openjdk-7-jdk texinfo m4 libglib2.0-dev flex bison yasm libxml2-dev ruby intltool unicode-data rcs gperf python-mako scons itstool libxml2-utils icon-naming-utils g++-multilib doxygen libgdk-pixbuf2.0-dev txt2man xmlto xsltproc docbook docbook-xsl asciidoc gcj-jdk cmake libncurses5-dev libx11-dev fakechroot
  2. java 8 from oracle: sudo add-apt-repository ppa:webupd8team/java & sudo aptitude install oracle-java8-installer
  3. texinfo 4.13a built from source: http://ftp.gnu.org/gnu/texinfo/texinfo-4.13a.tar.gz
  4. This run as root for f in $(cd /usr/lib/x86_64-linux-gnu; ls *crt*.o); do ln -s x86_64-linux-gnu/${f} /usr/lib/${f}; done. This is needed for old emacs host build.

1.2. Fetching source

You can either clone Optware-ng sourcecode directly with git clone https://github.com/Optware/Optware-ng.git, or, if you plan to contribute to Optware-ng:

  1. Create yourself a github account, if you haven't got one already
  2. Fork Optware-ng repo
  3. Pull your fork with git clone https://github.com/<you>/Optware-ng.git
  4. Push your local changes to your fork
  5. Send pull request(s) to Optware-ng

1.3. Smartgit

I can highly recommend smartgit as a git client with good github support. See here for a simple way to install it on Ubuntu

2. Building individual packages or entire feeds

2.1. Configuring target and building toolchain

From your cloned Optware-ng source tree run these commands to setup a target:

$ make <platform>-target
$ cd <platform>; make directories toolchain ipkg-utils

where <platform> is one of these: https://github.com/Optware/Optware-ng/blob/master/Optware_targets_list

All further commands should be issued from <platform> dir.

2.2. Building, packaging and indexing individual package(s)

Official build machine currently has 10 Cores and runs builds with make -j10. Most of the Optware-ng packages respect -j make switch and build with as many parallel jobs as requested, so you can make paralleled builds as well by appending make command with -j<jobs>.

2.2.1. To build individual package(s) run:

$ make <package1> <package2> ...

2.2.2. To build (an) ipk(s):

$ make <package1>-ipk <package2>-ipk ...

2.2.3. To index built ipks:

$ make index

This will copy all built ipks to packages dir and index them (create Packages* indexes)

2.2.4. If you want to build entire feed:

$ make

This will first make ipks for all packages for the target, and then index them. After successful build feed will be available in packages dir.