From 2079a0d62992824c1df3176dbb6b59f7bdb6f7f3 Mon Sep 17 00:00:00 2001 From: Mateusz Bruno-Kaminski Date: Tue, 25 Oct 2016 14:39:03 +0200 Subject: [PATCH] [Test] Missing plugins.json in test package [Details] Rewritten webapi-plugins-devel-test. The plugins.json file is being created. Change-Id: Ibcd5219bf59d8049a0a81c1e5f95f8ea6ba7c310 Signed-off-by: Mateusz Bruno-Kaminski --- doc/html/index.html | 100 ++++++--- doc/src/assets/webapi-plugins-devel-test.zip | Bin 11686 -> 14691 bytes .../assets/webapi-plugins-devel-test/LICENSE.MIT | 8 + .../packaging/webapi-plugins.spec | 43 +++- .../webapi-plugins-devel-test/src/test/test.gyp | 2 +- .../src/test/test_extension.cc | 2 +- .../webapi-plugins-devel-test/src/tizen-wrt.gyp | 1 + .../src/tool/desc_gentool.cc | 223 +++++++++++++++++++++ .../webapi-plugins-devel-test/src/tool/tool.gyp | 25 +++ .../webapi-plugins.manifest | 5 + doc/src/devel_package.md | 70 +++++-- doc/src/index.md | 1 + 12 files changed, 422 insertions(+), 58 deletions(-) create mode 100644 doc/src/assets/webapi-plugins-devel-test/LICENSE.MIT mode change 100755 => 100644 doc/src/assets/webapi-plugins-devel-test/packaging/webapi-plugins.spec create mode 100644 doc/src/assets/webapi-plugins-devel-test/src/tool/desc_gentool.cc create mode 100644 doc/src/assets/webapi-plugins-devel-test/src/tool/tool.gyp create mode 100644 doc/src/assets/webapi-plugins-devel-test/webapi-plugins.manifest diff --git a/doc/html/index.html b/doc/html/index.html index 58ba589..cf82f40 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -35,43 +35,49 @@ 0.1.0 2015-05-15 Initial Draft -Wojciech Kosowicz
w.kosowicz@samsung.com +Wojciech Kosowicz
w.kosowicz@samsung.com 0.2.0 2015-05-22 Extended version -Pawel Kaczmarek
p.kaczmarek3@samsung.com +Pawel Kaczmarek
p.kaczmarek3@samsung.com 0.2.1 2015-06-01 Proofreading -Rafal Galka
r.galka@samsung.com +Rafal Galka
r.galka@samsung.com 0.3.0 2015-06-08 Supplemented C++ implementation guide -Rafal Galka
r.galka@samsung.com +Rafal Galka
r.galka@samsung.com 0.4.0 2015-06-16 Guideline -Pawel Kaczmarek
p.kaczmarek3@samsung.com +Pawel Kaczmarek
p.kaczmarek3@samsung.com 0.5.0 2015-06-18 Devel package -Pawel Kaczmarek
p.kaczmarek3@samsung.com +Pawel Kaczmarek
p.kaczmarek3@samsung.com 0.5.1 2015-06-24 Add info about WAPIOven.py -Pawel Kaczmarek
p.kaczmarek3@samsung.com +Pawel Kaczmarek
p.kaczmarek3@samsung.com + + +0.6.0 +2016-10-28 +update devel package for tizen 3.0 +Annie Park
hj.na.park@samsung.com @@ -294,11 +300,9 @@ lacks of keyword FunctionOnly.

tools/skeleton_generator/ directory and run the python command:

$ python WAPIOven.py -d <stub code destination directory name> <widl directory/pluginname>.widl
 
-

If tizen.widl is needed, add tizen.widl you can use stub generator located in -tools/skeleton_generator/ directory and run the python command:

-
$ python WAPIOven.py -d <stub code destination directory name> <widl directory/pluginname>.widl <widl directory/>tizen.widl
-
-

Path to WAPIOven.py:

+

If tizen.widl is needed, add tizen.widl

+
$ python WAPIOven.py -d <stub code destination directory name> <widl directory/pluginname>.widl <widl directory/>tizen.widl
+

Path to WAPIOven.py:

$ tools/skeleton_generator/WAPIOven.py
 

You need to install jinja2 for WAPIOven.py:

@@ -672,39 +676,55 @@ Requires: dbus-1 dlog glib-2.0 Libs: -L${libdir} -ltizen_common Cflags: -I${includedir}

Creating custom web device plugins module

-

To create custom web device plugins module webapi-plugins.spec, tizen-wrt.gyp and src files are needed. +

To create custom web device plugins module webapi-plugins.spec, tizen-wrt.gyp, webapi-plugins.manifest and src files are needed. Skeleton below shows the required structure of test module.

├── packaging
 │   └── webapi-plugins.spec
 └── src
 │   ├── test
-│   ├── test_api.js
-│   ├── test_extension.cc
-│   ├── test_extension.h
-│   ├── test.gyp
-│   ├── test_instance.cc
-│   └── test_instance.h
-└── tizen-wrt.gyp
+│   |   ├── test_api.js
+│   |   ├── test_extension.cc
+│   |   ├── test_extension.h
+│   |   ├── test.gyp
+│   |   ├── test_instance.cc
+│   |   └── test_instance.h
+│   ├── tool
+│   |   ├── desc_gentool.cc
+│   |   └── tool.gyp
+|   └── tizen-wrt.gyp
+└── webapi-plugins.manifest
 

webapi-plugins.spec source:

-
%define _manifestdir %{TZ_SYS_RW_PACKAGES}
+
%bcond_with wayland
+
+%define _manifestdir %{TZ_SYS_RW_PACKAGES}
 %define _desktop_icondir %{TZ_SYS_SHARE}/icons/default/small
 
 %define crosswalk_extensions tizen-extensions-crosswalk
 
+%define crosswalk_extensions_path %{_libdir}/%{crosswalk_extensions}
+
 Name:       webapi-plugins-test
 Version:    0.1
 Release:    0
 License:    Apache-2.0 and BSD-2.0 and MIT
 Group:      Development/Libraries
-Summary:    Tizen Web APIs implemented
+Summary:    Tizen Test Web APIs
 Source0:    %{name}-%{version}.tar.gz
 
+%ifarch %{arm} aarch64
+# ARM
+%define tizen_is_emulator           0
+%else
+# I586
+%define tizen_is_emulator           1
+%endif
+
 BuildRequires: ninja
 BuildRequires: pkgconfig(webapi-plugins)
 
 %description
-Tizen Test Web APIs.
+Tizen Test Web APIs
 
 %prep
 %setup -q
@@ -712,19 +732,36 @@ Tizen Test Web APIs.
 %build
 
 export GYP_GENERATORS='ninja'
-GYP_OPTIONS="--depth=. -Dtizen=1 -Dextension_build_type=Debug -Dextension_host_os=%{tizen_profile_name} -Dprivilege_engine=%{tizen_privilege_engine}"
-GYP_OPTIONS="$GYP_OPTIONS -Ddisplay_type=x11"
+GYP_OPTIONS="--depth=. -Dtizen=1 -Dextension_build_type=Debug -Dextension_host_os=%{profile} -Dprivilege_engine=%{tizen_privilege_engine}"
+GYP_OPTIONS="$GYP_OPTIONS -Ddisplay_type=%{display_type}"
+GYP_OPTIONS="$GYP_OPTIONS -Dcrosswalk_extensions_path=%{crosswalk_extensions_path}"
+
+# feature flags
+GYP_OPTIONS="$GYP_OPTIONS -Dtizen_is_emulator=%{?tizen_is_emulator}"
 
 /usr/include/webapi-plugins/tools/gyp/gyp $GYP_OPTIONS src/tizen-wrt.gyp
 
 ninja -C out/Default %{?_smp_mflags}
 
 %install
-mkdir -p %{buildroot}%{_libdir}/%{crosswalk_extensions}
-install -p -m 644 out/Default/libtizen*.so %{buildroot}%{_libdir}/%{crosswalk_extensions}
+
+# Extensions.
+mkdir -p %{buildroot}%{crosswalk_extensions_path}
+install -p -m 644 out/Default/libwebapis*.so %{buildroot}%{crosswalk_extensions_path}
+
+# execute desc_gentool
+LD_LIBRARY_PATH=$LD_LIBRARY_PATH:%{buildroot}%{crosswalk_extensions_path} out/Default/desc_gentool \
+  %{crosswalk_extensions_path} \
+  %{buildroot}%{crosswalk_extensions_path} > webapis-plugins.json
+
+# temporary plugins description for lazy loading
+install -p -m 644 webapis-plugins.json %{buildroot}%{crosswalk_extensions_path}/webapis-plugins.json
+
 
 %files
-%{_libdir}/%{crosswalk_extensions}/libtizen*.so
+%{crosswalk_extensions_path}/libwebapis*.so
+%{crosswalk_extensions_path}/webapis-plugins.json
+%manifest webapi-plugins.manifest
 

tizen-wrt.gyp source:

{
   'includes':[
@@ -736,6 +773,7 @@ install -p -m 644 out/Default/libtizen*.so %{buildroot}%{_libdir}/%{crosswalk_ex
       'target_name': 'extensions',
       'type': 'none',
       'dependencies': [
+        'tool/tool.gyp:*',
         'test/test.gyp:*',
       ],
       'conditions': [],
@@ -749,7 +787,7 @@ install -p -m 644 out/Default/libtizen*.so %{buildroot}%{_libdir}/%{crosswalk_ex
   ],
   'targets': [
     {
-      'target_name': 'tizen_test',
+      'target_name': 'webapis_test',
       'type': 'loadable_module',
       'sources': [
         'test_api.js',
@@ -774,8 +812,8 @@ install -p -m 644 out/Default/libtizen*.so %{buildroot}%{_libdir}/%{crosswalk_ex
 Custom web device plugins module test is placed in src/ directory and contains all required files.
 Please see Plugin structure chapter for more details.

To install custom web device plugins module webapi-plugins-xxx.rpm and webapi-plugins-devel-xxx.rpm must be installed first. -After build and installation webapi-plugins-devel-test tizen.test namespace should be available.

-
var test = tizen.test.ping();
+After build and installation webapi-plugins-test webapis.test namespace should be available.

+
var test = webapis.test.ping();
 console.log(test); // Hello!
 
diff --git a/doc/src/assets/webapi-plugins-devel-test.zip b/doc/src/assets/webapi-plugins-devel-test.zip index b940fb5c202181628db722e408cd7631fc4a70a3..52201f4e4cfb3dfa443187035bfd6e26dbfe1ac2 100644 GIT binary patch literal 14691 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 diff --git a/doc/src/assets/webapi-plugins-devel-test/LICENSE.MIT b/doc/src/assets/webapi-plugins-devel-test/LICENSE.MIT new file mode 100644 index 0000000..f1aebff --- /dev/null +++ b/doc/src/assets/webapi-plugins-devel-test/LICENSE.MIT @@ -0,0 +1,8 @@ +MIT License +Copyright (c) 2015 Samsung Electronics Co, Ltd. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/doc/src/assets/webapi-plugins-devel-test/packaging/webapi-plugins.spec b/doc/src/assets/webapi-plugins-devel-test/packaging/webapi-plugins.spec old mode 100755 new mode 100644 index 8bddfb4..c992a8a --- a/doc/src/assets/webapi-plugins-devel-test/packaging/webapi-plugins.spec +++ b/doc/src/assets/webapi-plugins-devel-test/packaging/webapi-plugins.spec @@ -1,21 +1,33 @@ +%bcond_with wayland + %define _manifestdir %{TZ_SYS_RW_PACKAGES} %define _desktop_icondir %{TZ_SYS_SHARE}/icons/default/small %define crosswalk_extensions tizen-extensions-crosswalk +%define crosswalk_extensions_path %{_libdir}/%{crosswalk_extensions} + Name: webapi-plugins-test Version: 0.1 Release: 0 License: Apache-2.0 and BSD-2.0 and MIT Group: Development/Libraries -Summary: Tizen Web APIs implemented +Summary: Tizen Test Web APIs Source0: %{name}-%{version}.tar.gz +%ifarch %{arm} aarch64 +# ARM +%define tizen_is_emulator 0 +%else +# I586 +%define tizen_is_emulator 1 +%endif + BuildRequires: ninja BuildRequires: pkgconfig(webapi-plugins) %description -Tizen Test Web APIs. +Tizen Test Web APIs %prep %setup -q @@ -23,16 +35,33 @@ Tizen Test Web APIs. %build export GYP_GENERATORS='ninja' -GYP_OPTIONS="--depth=. -Dtizen=1 -Dextension_build_type=Debug -Dextension_host_os=%{tizen_profile_name} -Dprivilege_engine=%{tizen_privilege_engine}" -GYP_OPTIONS="$GYP_OPTIONS -Ddisplay_type=x11" +GYP_OPTIONS="--depth=. -Dtizen=1 -Dextension_build_type=Debug -Dextension_host_os=%{profile} -Dprivilege_engine=%{tizen_privilege_engine}" +GYP_OPTIONS="$GYP_OPTIONS -Ddisplay_type=%{display_type}" +GYP_OPTIONS="$GYP_OPTIONS -Dcrosswalk_extensions_path=%{crosswalk_extensions_path}" + +# feature flags +GYP_OPTIONS="$GYP_OPTIONS -Dtizen_is_emulator=%{?tizen_is_emulator}" /usr/include/webapi-plugins/tools/gyp/gyp $GYP_OPTIONS src/tizen-wrt.gyp ninja -C out/Default %{?_smp_mflags} %install -mkdir -p %{buildroot}%{_libdir}/%{crosswalk_extensions} -install -p -m 644 out/Default/libtizen*.so %{buildroot}%{_libdir}/%{crosswalk_extensions} + +# Extensions. +mkdir -p %{buildroot}%{crosswalk_extensions_path} +install -p -m 644 out/Default/libwebapis*.so %{buildroot}%{crosswalk_extensions_path} + +# execute desc_gentool +LD_LIBRARY_PATH=$LD_LIBRARY_PATH:%{buildroot}%{crosswalk_extensions_path} out/Default/desc_gentool \ + %{crosswalk_extensions_path} \ + %{buildroot}%{crosswalk_extensions_path} > webapis-plugins.json + +# temporary plugins description for lazy loading +install -p -m 644 webapis-plugins.json %{buildroot}%{crosswalk_extensions_path}/webapis-plugins.json + %files -%{_libdir}/%{crosswalk_extensions}/libtizen*.so +%{crosswalk_extensions_path}/libwebapis*.so +%{crosswalk_extensions_path}/webapis-plugins.json +%manifest webapi-plugins.manifest diff --git a/doc/src/assets/webapi-plugins-devel-test/src/test/test.gyp b/doc/src/assets/webapi-plugins-devel-test/src/test/test.gyp index 93b73b7..26d41d9 100644 --- a/doc/src/assets/webapi-plugins-devel-test/src/test/test.gyp +++ b/doc/src/assets/webapi-plugins-devel-test/src/test/test.gyp @@ -4,7 +4,7 @@ ], 'targets': [ { - 'target_name': 'tizen_test', + 'target_name': 'webapis_test', 'type': 'loadable_module', 'sources': [ 'test_api.js', diff --git a/doc/src/assets/webapi-plugins-devel-test/src/test/test_extension.cc b/doc/src/assets/webapi-plugins-devel-test/src/test/test_extension.cc index 8832847..0e62ef9 100755 --- a/doc/src/assets/webapi-plugins-devel-test/src/test/test_extension.cc +++ b/doc/src/assets/webapi-plugins-devel-test/src/test/test_extension.cc @@ -26,7 +26,7 @@ common::Extension* CreateExtension() { } TestExtension::TestExtension() { - SetExtensionName("tizen.test"); + SetExtensionName("webapis.test"); SetJavaScriptAPI(kSource_test_api); } diff --git a/doc/src/assets/webapi-plugins-devel-test/src/tizen-wrt.gyp b/doc/src/assets/webapi-plugins-devel-test/src/tizen-wrt.gyp index fc15ca5..6370937 100755 --- a/doc/src/assets/webapi-plugins-devel-test/src/tizen-wrt.gyp +++ b/doc/src/assets/webapi-plugins-devel-test/src/tizen-wrt.gyp @@ -8,6 +8,7 @@ 'target_name': 'extensions', 'type': 'none', 'dependencies': [ + 'tool/tool.gyp:*', 'test/test.gyp:*', ], 'conditions': [], diff --git a/doc/src/assets/webapi-plugins-devel-test/src/tool/desc_gentool.cc b/doc/src/assets/webapi-plugins-devel-test/src/tool/desc_gentool.cc new file mode 100644 index 0000000..b6fda30 --- /dev/null +++ b/doc/src/assets/webapi-plugins-devel-test/src/tool/desc_gentool.cc @@ -0,0 +1,223 @@ +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +static std::string prefix_ = "libwebapis"; +static std::string postfix_ = ".so"; +static std::vector apinamespaces = {"tizen", "xwalk", "webapis"}; + +typedef common::Extension *(*CreateExtensionFunc)(void); + +struct module_description { + std::string name; + std::string lib; + std::vector entries; +}; + + +static XW_Extension ext = 0; +static std::map descriptions; + +#ifndef JSON_MINIFY + #define PRINT_TAB() std::cout << "\t" +#else + #define PRINT_TAB() +#endif + +void print_json() { + std::cout << "[" << std::endl; + for (const auto& kv : descriptions) { + const module_description &desc = kv.second; + + std::string::size_type n = desc.name.find('.'); + std::string ns = + n == std::string::npos ? desc.name : desc.name.substr(0, n); + + if (std::find(apinamespaces.begin(), apinamespaces.end(), ns) == + apinamespaces.end()) { + continue; + } + + PRINT_TAB(); + std::cout << "{" << std::endl; + PRINT_TAB(); + PRINT_TAB(); + std::cout << "\"name\":\"" << desc.name << "\"," << std::endl; + PRINT_TAB(); + PRINT_TAB(); + std::cout << "\"lib\":\"" << desc.lib << "\"," << std::endl; + PRINT_TAB(); + PRINT_TAB(); + std::cout << "\"entry_points\": ["; + for (std::vector::size_type i=0; iname = name; + }, + [](XW_Extension extension, const char* api) {}, + [](XW_Extension extension, XW_CreatedInstanceCallback created, + XW_DestroyedInstanceCallback destroyed) {}, + [](XW_Extension extension, XW_ShutdownCallback shutdown_callback) {}, + [](XW_Instance instance, void* data) {}, + [](XW_Instance instance) -> void* { return nullptr; } + }; + return &coreInterface1; + } + + if (!strcmp(name, XW_INTERNAL_ENTRY_POINTS_INTERFACE_1)) { + static const XW_Internal_EntryPointsInterface entryPointsInterface1 = { + [](XW_Extension extension, const char** entries) { + module_description *desc = &descriptions[extension]; + for (int i=0; entries[i]; i++) { + desc->entries.push_back(std::string(entries[i])); + } + } + }; + return &entryPointsInterface1; + } + + if (!strcmp(name, XW_MESSAGING_INTERFACE_1)) { + static const XW_MessagingInterface_1 messagingInterface1 = { + [](XW_Extension extension, XW_HandleMessageCallback handle_message) { + }, + [](XW_Instance instance, const char* message) { + } + }; + return &messagingInterface1; + } + + if (!strcmp(name, XW_INTERNAL_SYNC_MESSAGING_INTERFACE_1)) { + static const XW_Internal_SyncMessagingInterface syncMessagingInterface1 = { + [](XW_Extension extension, XW_HandleSyncMessageCallback handle_sync_msg) { + }, + [](XW_Instance instance, const char* reply){ + } + }; + return &syncMessagingInterface1; + } + + if (!strcmp(name, XW_INTERNAL_RUNTIME_INTERFACE_1)) { + static const XW_Internal_RuntimeInterface_1 runtimeInterface1 = { + [](XW_Extension extension, const char* key, char* value, size_t vlen) { + } + }; + return &runtimeInterface1; + } + + if (!strcmp(name, XW_INTERNAL_PERMISSIONS_INTERFACE_1)) { + static const XW_Internal_PermissionsInterface_1 permissionsInterface1 = { + [](XW_Extension extension, const char* api_name) -> int { + return XW_ERROR; + }, + [](XW_Extension extension, const char* perm_table) -> int { + return XW_ERROR; + } + }; + return &permissionsInterface1; + } + + return NULL; +} + +int main(int argc, char* argv[]) { + if (argc < 3) { + std::cerr << "Need tizen crosswalk path" << std::endl; + return -1; + } + std::string lib_path = argv[1]; + if (lib_path.empty()) { + std::cerr << "Invalid libpath for tec." << std::endl; + return -1; + } + + std::string tec_path = argv[2]; + if (tec_path.empty()) { + std::cerr << "Invalid tizen crosswalk path" << std::endl; + return -1; + } + + struct dirent** namelist; + int num_entries = scandir(tec_path.c_str(), &namelist, NULL, alphasort); + if( num_entries >= 0 ) { + for( int i = 0; i < num_entries; ++i ) { + std::string fname = namelist[i]->d_name; + + if (fname.size() >= prefix_.size() + postfix_.size() && + !fname.compare(0, prefix_.size(), prefix_) && + !fname.compare(fname.size() - postfix_.size(), postfix_.size(), + postfix_)) { + std::string so_path = tec_path + "/" + fname; + void *handle = dlopen(so_path.c_str(), RTLD_LAZY); + if (handle == NULL) { + std::cerr << "cannot open " << so_path << std::endl; + char* error = dlerror(); + std::cerr << "Error >>" << ((error == NULL) ? "NULL" : error) << std::endl; + return -1; + } + + XW_Initialize_Func initialize = reinterpret_cast( + dlsym(handle, "XW_Initialize")); + + if (!initialize) { + std::cerr << "Can not loading extension " << fname << std::endl; + } else { + ext++; + descriptions[ext] = module_description(); + descriptions[ext].lib = lib_path + "/" + fname; + int ret = initialize(ext, get_interface); + if (ret != XW_OK) { + std::cerr << "Error loading extension " << fname << std::endl; + } + } + + // some Shared libraries have static finalizer. + // __attribute__((destructor)) this gcc extension makes finalizer. + // if close it, it can makes segfault. + // True, It's shared object's problem. but we can't fix it. + // so don't close it in only this tool. just finish process. + // + // dlclose(handle); + } + free(namelist[i]); + } + free(namelist); + print_json(); + } else { + perror("scandir"); + if( errno == ENOENT ) + std::cerr << "path not exist : " << tec_path << std::endl; + return -1; + } + + // it would be need for ignore loaded libraries destructor + _exit(0); +} diff --git a/doc/src/assets/webapi-plugins-devel-test/src/tool/tool.gyp b/doc/src/assets/webapi-plugins-devel-test/src/tool/tool.gyp new file mode 100644 index 0000000..ed978ce --- /dev/null +++ b/doc/src/assets/webapi-plugins-devel-test/src/tool/tool.gyp @@ -0,0 +1,25 @@ +{ + 'target_defaults': { + 'variables': {'packages': ['dlog']}, + 'includes': [ + '/usr/include/webapi-plugins/src/common/pkg-config.gypi' + ] + }, + 'targets' : [ + { + 'target_name': 'desc_gentool', + 'cflags': [ + '-std=c++0x', + '-Wall' + ], + 'link_settings': {'libraries': [ '-ldl'], }, + 'include_dirs': [ + '/usr/include/webapi-plugins/src/' + ], + 'type': 'executable', + 'sources': [ + 'desc_gentool.cc' + ] + } + ] +} diff --git a/doc/src/assets/webapi-plugins-devel-test/webapi-plugins.manifest b/doc/src/assets/webapi-plugins-devel-test/webapi-plugins.manifest new file mode 100644 index 0000000..f5a44ec --- /dev/null +++ b/doc/src/assets/webapi-plugins-devel-test/webapi-plugins.manifest @@ -0,0 +1,5 @@ + + + + + diff --git a/doc/src/devel_package.md b/doc/src/devel_package.md index 601cb3e..c6b9e4c 100644 --- a/doc/src/devel_package.md +++ b/doc/src/devel_package.md @@ -38,7 +38,7 @@ Cflags: -I${includedir} ### Creating custom web device plugins module -To create custom web device plugins module ```webapi-plugins.spec```, ```tizen-wrt.gyp``` and ```src``` files are needed. +To create custom web device plugins module ```webapi-plugins.spec```, ```tizen-wrt.gyp```, ```webapi-plugins.manifest``` and ```src``` files are needed. Skeleton below shows the required structure of test module. ```sh @@ -46,35 +46,51 @@ Skeleton below shows the required structure of test module. │ └── webapi-plugins.spec └── src │ ├── test -│ ├── test_api.js -│ ├── test_extension.cc -│ ├── test_extension.h -│ ├── test.gyp -│ ├── test_instance.cc -│ └── test_instance.h -└── tizen-wrt.gyp +│ | ├── test_api.js +│ | ├── test_extension.cc +│ | ├── test_extension.h +│ | ├── test.gyp +│ | ├── test_instance.cc +│ | └── test_instance.h +│ ├── tool +│ | ├── desc_gentool.cc +│ | └── tool.gyp +| └── tizen-wrt.gyp +└── webapi-plugins.manifest ``` webapi-plugins.spec source: ``` +%bcond_with wayland + %define _manifestdir %{TZ_SYS_RW_PACKAGES} %define _desktop_icondir %{TZ_SYS_SHARE}/icons/default/small %define crosswalk_extensions tizen-extensions-crosswalk +%define crosswalk_extensions_path %{_libdir}/%{crosswalk_extensions} + Name: webapi-plugins-test Version: 0.1 Release: 0 License: Apache-2.0 and BSD-2.0 and MIT Group: Development/Libraries -Summary: Tizen Web APIs implemented +Summary: Tizen Test Web APIs Source0: %{name}-%{version}.tar.gz +%ifarch %{arm} aarch64 +# ARM +%define tizen_is_emulator 0 +%else +# I586 +%define tizen_is_emulator 1 +%endif + BuildRequires: ninja BuildRequires: pkgconfig(webapi-plugins) %description -Tizen Test Web APIs. +Tizen Test Web APIs %prep %setup -q @@ -82,19 +98,36 @@ Tizen Test Web APIs. %build export GYP_GENERATORS='ninja' -GYP_OPTIONS="--depth=. -Dtizen=1 -Dextension_build_type=Debug -Dextension_host_os=%{tizen_profile_name} -Dprivilege_engine=%{tizen_privilege_engine}" -GYP_OPTIONS="$GYP_OPTIONS -Ddisplay_type=x11" +GYP_OPTIONS="--depth=. -Dtizen=1 -Dextension_build_type=Debug -Dextension_host_os=%{profile} -Dprivilege_engine=%{tizen_privilege_engine}" +GYP_OPTIONS="$GYP_OPTIONS -Ddisplay_type=%{display_type}" +GYP_OPTIONS="$GYP_OPTIONS -Dcrosswalk_extensions_path=%{crosswalk_extensions_path}" + +# feature flags +GYP_OPTIONS="$GYP_OPTIONS -Dtizen_is_emulator=%{?tizen_is_emulator}" /usr/include/webapi-plugins/tools/gyp/gyp $GYP_OPTIONS src/tizen-wrt.gyp ninja -C out/Default %{?_smp_mflags} %install -mkdir -p %{buildroot}%{_libdir}/%{crosswalk_extensions} -install -p -m 644 out/Default/libtizen*.so %{buildroot}%{_libdir}/%{crosswalk_extensions} + +# Extensions. +mkdir -p %{buildroot}%{crosswalk_extensions_path} +install -p -m 644 out/Default/libwebapis*.so %{buildroot}%{crosswalk_extensions_path} + +# execute desc_gentool +LD_LIBRARY_PATH=$LD_LIBRARY_PATH:%{buildroot}%{crosswalk_extensions_path} out/Default/desc_gentool \ + %{crosswalk_extensions_path} \ + %{buildroot}%{crosswalk_extensions_path} > webapis-plugins.json + +# temporary plugins description for lazy loading +install -p -m 644 webapis-plugins.json %{buildroot}%{crosswalk_extensions_path}/webapis-plugins.json + %files -%{_libdir}/%{crosswalk_extensions}/libtizen*.so +%{crosswalk_extensions_path}/libwebapis*.so +%{crosswalk_extensions_path}/webapis-plugins.json +%manifest webapi-plugins.manifest ``` tizen-wrt.gyp source: @@ -109,6 +142,7 @@ tizen-wrt.gyp source: 'target_name': 'extensions', 'type': 'none', 'dependencies': [ + 'tool/tool.gyp:*', 'test/test.gyp:*', ], 'conditions': [], @@ -125,7 +159,7 @@ test.gyp source: ], 'targets': [ { - 'target_name': 'tizen_test', + 'target_name': 'webapis_test', 'type': 'loadable_module', 'sources': [ 'test_api.js', @@ -153,9 +187,9 @@ Custom web device plugins module test is placed in ```src/``` directory and cont Please see [Plugin structure](#plugin-structure) chapter for more details. To install custom web device plugins module ```webapi-plugins-xxx.rpm``` and ```webapi-plugins-devel-xxx.rpm``` must be installed first. -After build and installation webapi-plugins-devel-test ```tizen.test``` namespace should be available. +After build and installation webapi-plugins-test ```webapis.test``` namespace should be available. ```javascript -var test = tizen.test.ping(); +var test = webapis.test.ping(); console.log(test); // Hello! ``` diff --git a/doc/src/index.md b/doc/src/index.md index 46e1e57..12d50f4 100644 --- a/doc/src/index.md +++ b/doc/src/index.md @@ -10,6 +10,7 @@ | 0.4.0 | 2015-06-16 | Guideline | Pawel Kaczmarek
| | 0.5.0 | 2015-06-18 | Devel package | Pawel Kaczmarek
| | 0.5.1 | 2015-06-24 | Add info about WAPIOven.py | Pawel Kaczmarek
| +| 0.6.0 | 2016-10-28 | update devel package for tizen 3.0 | Annie Park
| ## Overview This document should be used as a guideline for developers who are creating web -- 2.7.4