Skip to content

Contributing to Optware ng

Florian Heigl edited this page Apr 7, 2019 · 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 requirements

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

  1. Additional packages:

    sudo apt install ant bc build-essential git subversion cvs 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 p7zip-full lzip po4a
  2. OpenJDK-7:

    sudo add-apt-repository --yes ppa:openjdk-r/ppa && sudo apt update
    sudo apt install openjdk-7-jdk openjdk-7-jre
  3. Java 8 (from Oracle):

    sudo add-apt-repository --yes ppa:webupd8team/java && sudo apt update
    sudo apt install oracle-java8-installer
  4. texinfo 4.13a (built and installed from source):

    mkdir -p /tmp/texinfo && cd /tmp/texinfo
    curl -O http://ftp.gnu.org/gnu/texinfo/texinfo-4.13a.tar.gz
    tar xvf texinfo-4.13a.tar.gz
    cd texinfo-4.13
    ./configure && make && sudo make install
  5. library fix-up (using symbolic links; needed for old emacs host build):

    for f in $(cd /usr/lib/x86_64-linux-gnu; ls *crt*.o); do
       sudo ln -s x86_64-linux-gnu/${f} /usr/lib/${f}
    done

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.