Contributing to Optware ng

alllexx88 edited this page Dec 12, 2017 · 16 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 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.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.