makall

Don't take it personally

Running Elev8, a JavaScript bindings for EFL, on Tizen Developer Device

with 4 comments

Elev8 is the next gen JavaScript runtime for EFL. It is based on Google’s V8 engine (hence the name), and includes a module that allows creating Elementary apps in a declarative way, greatly reducing the amount of code necessary to build the UI for your application. – acidx

Here we’ll use Tizen’s SBS (Scratchbox Build System) to compile libv8 and elev8. To make the process of installing and uninstalling packages to the device easier, we’ll use alien to convert a tarball to a debian package.

Pre-requisites

  1. Scratchbox Build System installed and its targets created:
  2. Alien (http://joeyh.name/code/alien/):
    • # apt-get install alien

The Recipe

Git clone V8 as in https://developers.google.com/v8/build

Compile v8 on SBS arm target

cd v8
make dependencies
sbs -e make arm.release library=shared

Create libv8 deb file

mkdir -p tmp/usr/lib
cp out/arm.release/obj.target/tools/gyp/libv8.so tmp/usr/lib/
cp -r include tmp/usr
cd tmp/
tar -czf ../libv8.tar.gz .
cd -
fakeroot alien libv8.tar.gz

Install libv8 on SBS arm target

sbs -et dpkg -i libv8_1-2_all.deb

Send libv8 to and install it on Tizen device

sdb push libv8_1-2_all.deb root/
sdb shell dpkg -i root/libv8_1-2_all.deb
cd ..

Install efl-dev and elementary packages on SBS arm target

sbs -et apt-get -y install efl-dev libelm-dev

Get Elev8 from enlightenment svn repository:

svn checkout http://svn.enlightenment.org/svn/e/trunk/PROTO/elev8
cd elev8
sbs -e ./autogen.sh --prefix=/usr
sbs -e make
sbs -e make install DESTDIR=$(pwd)/tmp

Create elev8 deb file

cd tmp
tar -czf ../elev8.tar.gz .
cd -
fakeroot alien elev8.tar.gz

Send elev8 to and install it on Tizen device

sdb push elev8_1-2_all.deb root/
sdb shell dpkg -i root/elev8_1-2_all.deb
cd ..

Running

sdb shell elev8 /usr/share/elev8/data/javascript/anim.js

Elev8 anim.js example

Under the /usr/shar/elev8/data/javascript folder are a lot of examples that you can use as reference. As Elev8 was first made to run on the desktop, some examples may look weird on the device for now, but they give you some idea of how easy writing EFL JavaScripts applications for Tizen will be.

And of course you can run you own code, to do it just send the file to the device and call it from sdb.

sdb push infinigag.js /root/
sdb shell elev8 /root/infinigag.js

Elev8 infinigag.js example

To uninstall

sdb shell apt-get remove elev8 libv8
Advertisements

Written by mello

June 20, 2012 at 6:28 pm

Posted in Elev8, Tizen

Tagged with , , , ,

4 Responses

Subscribe to comments with RSS.

  1. […] my last post I ran Elev8 on the Tizen Developer Device. This device is ARM based, so the entire build was done […]

    • Newer version of v8 can not be compiled successfully with Tizen SBS. The make process stops at

      ../src/platform-linux.cc:202:2: error: #error “Your version of GCC does not report the FP ABI compiled for.” “Please report it on this issue” “http://code.google.com/p/v8/issues/detail?id=2140”

      Near the line 202 one will see

      bool OS::ArmUsingHardFloat() {
      // GCC versions 4.6 and above define __ARM_PCS or __ARM_PCS_VFP to specify
      // the Floating Point ABI used (PCS stands for Procedure Call Standard).
      // We use these as well as a couple of other defines to statically determine
      // what FP ABI used.
      // GCC versions 4.4 and below don’t support hard-fp.
      // GCC versions 4.5 may support hard-fp without defining __ARM_PCS or
      // __ARM_PCS_VFP.

      #define GCC_VERSION (__GNUC__ * 10000 \
      + __GNUC_MINOR__ * 100 \
      + __GNUC_PATCHLEVEL__)
      #if GCC_VERSION >= 40600
      #if defined(__ARM_PCS_VFP)
      return true;
      #else
      return false;
      #endif

      #elif GCC_VERSION < 40500
      return false;

      #else
      #if defined(__ARM_PCS_VFP)
      return true;
      #elif defined(__ARM_PCS) || defined(__SOFTFP) || !defined(__VFP_FP__)
      return false;
      #else
      #error "Your version of GCC does not report the FP ABI compiled for." \
      "Please report it on this issue" \
      "http://code.google.com/p/v8/issues/detail?id=2140&quot;
      #endif
      #endif
      #undef GCC_VERSION
      }

      SBS uses GCC 4.5.3, unfortunately. I had to hardcode "return false;" there.

      markovtsev

      August 6, 2012 at 12:13 pm

    • Latest Tizen is shipped without dpkg. So use “rpm -i” instead of “dpkg -i”. Of course, you must build rpm packages instead of deb-s. That is a tricky part, simply running

      fakeroot alien -r libv8.tar.gz

      will result in error “Arch dependent binaries in noarch package”. The solution is as follows:

      fakeroot alien -r –generate libv8.tar.gz
      cd libv8-1
      fakeroot rpmbuild –buildroot=’/home/markhor/Development/Tizen/v8/libv8-1′ -bb –target armv7l ‘libv8-1-2.spec’
      cd ..

      In other words, since alien does not have an option to set the target arch, we do it manually.

      markovtsev

      August 6, 2012 at 1:18 pm

  2. […] this plataform based in v8, for the old instalation use the post in makall blog in this moment make is […]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: