Skip to content

Latest commit

 

History

History
160 lines (113 loc) · 4.11 KB

getting-started.md

File metadata and controls

160 lines (113 loc) · 4.11 KB

Getting Started

Prerequisites

The following dependencies are needed to compile/build/run.

  • gcc/g++
  • gstreamer 1.0 and its relatives
  • glib 2.0
  • meson >= 0.42

Install via PPA repository (Debian/Ubuntu)

The nnstreamer releases are at a PPA repository. In order to install it, use:

$ sudo apt-add-repository ppa:nnstreamer
$ sudo apt install nnstreamer

Clean build with pdebuild (Ubuntu 16.04/18.04)

Use the nnstreamer PPA to resolve additional build-dependencies (tensorflow/tensorflow-lite).

Install build tools if needed:

$ sudo apt install pbuilder debootstrap devscripts

The following example configuration is for Ubuntu 16.04:

$ cat ~/.pbuilderrc
DISTRIBUTION=xenial
COMPONENTS="main restricted universe multiverse"
OTHERMIRROR="deb http://archive.ubuntu.com/ubuntu xenial-backports universe | deb [trusted=yes] http://ppa.launchpad.net/nnstreamer/ppa/ubuntu xenial main"
$ sudo ln -s  ~/.pbuilderrc /root/.pbuilderrc
$ sudo pbuilder create

Run pdebuild to build and get the package.

$ pdebuild
$ ls -al /var/cache/pbuilder/result/*.deb

Refer to PbuilderHowto for more about pdebuild.

Linux Self-Hosted Build

Approach 1. Build with Debian/Ubuntu tools

Clone the needed repositories

$ git clone https://github.com/myungjoo/SSAT ssat
$ git clone https://git.tizen.org/cgit/platform/upstream/tensorflow
$ git clone https://github.com/nnsuite/nnstreamer

Alternatively, you may simply download binary packages from PPA (ssat and tensorflow):

$ sudo apt-add-repository ppa:nnstreamer
$ sudo apt install ssat tensorflow-dev tensorflow-lite-dev libprotobuf-dev

Fix tensorflow for it to build properly

You may skip this if you have downloaded binary packages from PPA.

There is a shell script call at tensorflow/contrib/lite/Makefile that may fail, depending on the shell you're using. The best is to replace the ARCH detection macro (it is named renamed to HOST_ARCH on tensorflow upstream) from:

ARCH := $(shell if [[ $(shell uname -m) =~ i[345678]86 ]]; then echo x86_32; else echo $(shell uname -m); fi)

to:

ARCH := $(shell uname -m | sed -e 's/i[3-8]86/x86_32/')

Build .deb packages

Installing required dependencies:

$ for i in ssat tensorflow nnstreamer; do \
  (cd $i && sudo mk-build-deps --install debian/control && sudo dpkg -i *.deb || break); \
  done

Creating the .deb packages:

$ export DEB_BUILD_OPTIONS="parallel=$(($(cat /proc/cpuinfo |grep processor|wc -l) + 1))"
$ for i in ssat tensorflow nnstreamer; do \
  (cd $i && time debuild -us -uc || break); \
  done

If there is a missing package, debuild will tell you which package is missing. If you haven't configured debuild properly, yet, you will need to add -uc -us options to debuild.

Install the generated *.deb files

The files will be there at the parent dir. E. g. at nnbuilder/.. directory.

In order to install them (should run as root):

$ sudo apt install ./ssat_*.deb ./tensorflow-lite-dev_*.deb ./tensorflow-dev_*.deb
$ sudo apt install ./nnstreamer_0.1.0-1rc1_amd64.deb

If you need nnstreamer development package:

#apt install ./nnstreamer-dev_0.1.0-1rc1_amd64.deb

Approach 2. Build with meson

Install the required packages.

$ sudo apt install meson ninja-build

Build at the git repo root directory, this will install nnstreamer plugins and related files.

$ meson build
$ ninja -C build install
  • Installed nnstreamer plugins to {prefix}/{libdir}/gstreamer-1.0
  • Installed subplugins and libraries to {prefix}/{libdir}
  • Installed common header files to {prefix}/{includedir}

Tizen

First install the required packages.

$ sudo apt install gbs

Generates .rpm packages:

$ gbs build

gbs build will execute unit testing as well unlike cmake build.