Running Elev8, a JavaScript bindings for EFL, on Tizen Developer Device
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
- Scratchbox Build System installed and its targets created:
- 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
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
To uninstall
sdb shell apt-get remove elev8 libv8
[…] my last post I ran Elev8 on the Tizen Developer Device. This device is ARM based, so the entire build was done […]
Running Elev8 on Tizen Emulator « makall
July 3, 2012 at 4:31 pm
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"
#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
[…] this plataform based in v8, for the old instalation use the post in makall blog in this moment make is […]
Using multiple windows in elev8 « franzolin's blog
September 6, 2012 at 2:13 pm