2 Summary: Javascript based Runtime for Tizen
3 # Version: {TPK_VERSION}.{INTERNAL_API_REVISION}.{WRTJS_VERSION}
4 # The {INTERNAL_API_REVISION} is used to check compatibility with chromium-efl.
7 Group: Web Framework/Web Runtime
9 URL: https://www.tizen.org
10 Source: %{name}-%{version}.tar.gz
12 %define _appdir %TZ_SYS_RO_APP
13 %define _bindir %TZ_SYS_BIN
14 %define _xmldir %TZ_SYS_RO_PACKAGES
15 %define app_dir out/gen/app
16 %define crosswalk_extensions_service tizen-extensions-crosswalk-service
17 # The d2d is public feature
18 %if "%{?profile}" != "wearable" && "%{?_with_da_profile}" != "1"
22 # The nmt is public feature
23 # The category is public feature
24 %if "%{?profile}" != "tv" && "%{?profile}" != "wearable" && "%{?_with_da_profile}" != "1"
28 %define _use_category 0
29 %define _use_d2d_offload 1
32 BuildRequires: pkgconfig(chromium-efl)
34 %if "%{?profile}" != "tv" || 0%{?_use_nmt} || 0%{?_use_category}
36 BuildRequires: pkgconfig(dlog)
39 %if "%{?profile}" == "tv"
40 BuildRequires: app-signer
42 BuildRequires: squashfs
45 BuildRequires: hash-signer, zip
46 BuildRequires: pkgconfig(libtzplatform-config)
49 Web Runtime Engine based on Electron
51 %define _tizen_version %{tizen_version_major}%{tizen_version_minor}
52 %define _pkgid org.tizen.%{name}
53 %define __pkgid %{_pkgid}
55 # The tv profile has a different tpk generation policy.
56 # 2 types(update, upgrade) of tpk can be generated and used simultaneously.
57 # If tpktype is not defined and tizen version is less than 6.0, upgrade type
58 # is generated by default.
59 %if "%{?profile}" == "tv"
60 %if "%{?tpktype}" == "upgrade" || (0%{!?tpktype:1} && %{_tizen_version} < 60)
61 %define __pkgid %{_pkgid}-upgrade
65 # Generated app directory
66 %global GENERATED_APP_DIR /tmp/%{name}
67 # Directory for WRTjs tizen application package
68 %global WRTJS_APP_DIR %{TZ_SYS_RO_APP}/%{__pkgid}
74 # The "_repository" flag was changed to "_vd_cfg_target_repository"
75 # since tizen 4.0 product tv.
76 %if "%{?profile}" == "tv"
77 %define _manifestname %{_pkgid}-vd
78 # The onemain branch haven't defined _vd_cfg_target_repository.
79 # So, this hijack code is added to set the repo_name to "MuseM".
80 # Remove this code when _vd_cfg_target_repository is defined in onemain.
81 %if "%{?_vd_cfg_target_repository}"
82 %define repo_name %{_vd_cfg_target_repository}
84 %define repo_name MuseM
87 %define _manifestname %{_pkgid}
88 %define repo_name %{_repository}
91 %if "%{?profile}" != "tv"
92 %define _outdir $PWD/out
93 ./build/tools/gn gen %{_outdir}
94 ninja -C %{_outdir} wrt-loader
97 %if 0%{?_use_nmt} || 0%{?_use_category}
98 %if "%{?profile}" == "tv"
99 %define _outdir $PWD/out
100 ./build/tools/gn gen %{_outdir}
103 ninja -C %{_outdir} nmt
105 %if 0%{?_use_category}
106 ninja -C %{_outdir} category
110 ./build/tools/node ./node_modules/.bin/tsc
111 absolute_appdir=$PWD/%{app_dir}
112 (cd wrt_app/ && find . -type f ! -name '*.ts' -exec cp --parents {} ${absolute_appdir} \;)
115 %if "%{_vd_cfg_chip_vendor}" != "EMUL" && "%{?profile}" == "tv"
116 %define __package_signing 1
118 %define __package_signing 0
120 sed -e 's#@TIZEN_VERSION@#%{tizen_version_major}.%{tizen_version_minor}#g' \
121 -e 's#@WRTJS_VERSION@#%{version}#g' \
122 -e 's#@PACKAGE_ID@#%{__pkgid}#g' \
123 packaging/%{_manifestname}.xml.in \
124 > packaging/tizen-manifest-tpk.xml
127 %if 0%{?_use_d2d_offload}
128 # Create a self-signed certificates for signaling server
129 openssl genrsa -out key.pem 2048
130 openssl req -new -x509 -nodes -key key.pem -out cert.pem \
131 -subj "/CN=localhost" -days 9999
136 %define ARCHITECTURE armv7l
139 %define ARCHITECTURE aarch64
142 %define ARCHITECTURE ix86
145 %define ARCHITECTURE x86_64
148 %define _resourcedir /usr/share/wrt/app
149 install -d %{GENERATED_APP_DIR}
150 install -d %{buildroot}%{_bindir}
151 install -d %{buildroot}%{_datadir}/aul
152 install -d %{buildroot}%{_resourcedir}
153 install -d %{buildroot}%{WRTJS_APP_DIR}
155 mkdir -p %{buildroot}%{_datadir}/wrtjs
156 echo %{version} > %{buildroot}%{_datadir}/wrtjs/version
158 %if 0%{?__package_signing}
159 install -m 0644 tizen/downloadable/vd_sign/author-signature.xml %{buildroot}%{WRTJS_APP_DIR}
160 install -m 0644 tizen/downloadable/vd_sign/signature1.xml %{buildroot}%{WRTJS_APP_DIR}
163 %define tizen_sign_base %{WRTJS_APP_DIR}
164 %define tizen_sign_level platform
165 %define tizen_author_sign 1
166 %define tizen_dist_sign 1
170 %if "%{?profile}" == "tv"
171 ln -s %{_bindir}/wrt %{buildroot}%{_bindir}/wrt-loader
172 %if "%{_vd_cfg_product_type}" != "LFD"
173 install -m 0644 packaging/wrt_tv.loader %{buildroot}%{_datadir}/aul/wrt.loader
176 install -m 0755 %{_outdir}/wrt-loader %{buildroot}%{_bindir}
177 install -m 0644 packaging/wrt.loader %{buildroot}%{_datadir}/aul/
180 mkdir -p %{buildroot}%{_libdir}/%{crosswalk_extensions_service}
181 cp packaging/plugins.json %{buildroot}%{_libdir}/%{crosswalk_extensions_service}
182 cp -r %{app_dir}/* %{buildroot}%{_resourcedir}/
185 # The debugsources.list is needed by __spec_install_post to generate tpk file
186 # but it's missing in the build process. So, the temporary file is touched.
187 touch debugsources.list
188 %define _tpk_file_name %{__pkgid}-%{version}-v%{tizen_version_major}.%{tizen_version_minor}.%{repo_name}.%{ARCHITECTURE}.tpk
189 %define __tpk_install_post \
190 tizen/build/build_app.sh %{GENERATED_APP_DIR} wrtjs_tpk_root %{_tpk_file_name} tpk platform %{?profile}
191 %define __spec_install_post \
192 %{?__tpk_install_post} \
195 echo "No TPK generation"
199 %if "%{?tizen_profile_name}" == "tv"
200 %define _d2d_app_file_name device_home.tmg
201 %define _d2d_app_extension tmg
202 %define _d2d_install_path %{TZ_SYS_DATA}/device_home
203 install -m 0644 packaging/config_tv.xml.in device_home/config.xml
205 %define _d2d_app_file_name device_home.wgt
206 %define _d2d_app_extension wgt
207 %define _d2d_install_path %{_appdir}/.preload-rw-wgt
208 install -m 0644 packaging/config.xml.in device_home/config.xml
210 %if 0%{?_use_d2d_offload}
211 install -m 0644 key.pem device_home/signaling_server/gen/
212 install -m 0644 cert.pem device_home/signaling_server/gen/
214 tizen/build/build_app.sh %{buildroot} device_home %{_d2d_app_file_name} %{_d2d_app_extension} platform %{?profile}
216 install -d %{buildroot}/%{_d2d_install_path}
217 install -m 0755 %{buildroot}/%{_d2d_app_file_name} %{buildroot}/%{_d2d_install_path}/
218 rm -f %{buildroot}/%{_d2d_app_file_name}
222 install -m 0644 wrt_feature/nmt_service/node_modules/nmt/lib/%{ARCHITECTURE}/* "%{buildroot}"%{_libdir}/
223 install -d %{buildroot}%{_datadir}/wrt/feature/nmt_service/node_modules
224 install -m 0644 "%{_outdir}"/libnmt.node %{buildroot}%{_datadir}/wrt/feature/nmt_service/node_modules/
227 %if 0%{?_use_category}
228 install -d %{buildroot}%{_datadir}/wrt/feature/category_service/node_modules
229 install -d %{buildroot}%{_datadir}/wrt/feature/category_service/data
230 install -m 0644 "%{_outdir}"/libcategory.node %{buildroot}%{_datadir}/wrt/feature/category_service/node_modules/
231 install -m 0644 wrt_feature/category_service/data/* %{buildroot}%{_datadir}/wrt/feature/category_service/data/
235 export CHROMIUM_REVISION=
236 if [ -f "%{_datadir}/chromium-efl/version" ]; then
237 CHROMIUM_REVISION=$(cat %{_datadir}/chromium-efl/version | awk -F. '{print $2}')
239 CHROMIUM_REVISION="not installed"
241 export WRTJS_REVISION=$(echo %{version} | awk -F. '{print $2}')
243 echo -e "\033[32m*****************************************************"
244 echo -e "* chromium-efl revision : ${CHROMIUM_REVISION}"
245 echo -e "* wrtjs revision : ${WRTJS_REVISION}"
247 if [[ "${CHROMIUM_REVISION}" == "not installed" ]] || \
248 (( ${CHROMIUM_REVISION} == ${WRTJS_REVISION} )); then
249 echo -e "* Succeeded to check rpm versions"
250 echo -e "*****************************************************\033[m"
252 if (( ${CHROMIUM_REVISION} > ${WRTJS_REVISION} )); then
253 echo -e "\033[31m* You're trying to install too old wrtjs."
254 echo -e "* Please install wrtjs as revision $CHROMIUM_REVISION"
257 echo -e "\033[31m* You have too old chromium-efl."
259 echo -e "* please re-install chromium-efl as revision $WRTJS_REVISION first."
260 echo -e "*****************************************************\033[m"
265 %if "%{?_local_build}" == "1"
267 pkgcmd -un 9z6IujVul3
268 pkgcmd -i -t wgt -p %{_d2d_install_path}/%{_d2d_app_file_name}
278 %manifest packaging/wrtjs.manifest
281 %{_d2d_install_path}/%{_d2d_app_file_name}
283 %if "%{?tizen_profile_name}" != "tv"
284 %caps(cap_setgid,cap_sys_admin=ei) %{_bindir}/wrt-loader
286 %{_bindir}/wrt-loader
288 %if "%{_vd_cfg_product_type}" != "LFD"
289 %{_datadir}/aul/wrt.loader
291 %{_datadir}/wrtjs/version
292 %{_libdir}/%{crosswalk_extensions_service}/plugins.json
295 %{_libdir}/libmanager.so
296 %{_libdir}/libsentencepiece.so.0
297 %{_libdir}/libsr_odnmt.so
298 %{_libdir}/libsrcb_bpe.so
299 %{_libdir}/libsrcb_langid.so
300 %{_libdir}/libtransformer.so
301 %{_datadir}/wrt/feature/nmt_service/node_modules/libnmt.node
304 %if 0%{?_use_category}
305 %{_datadir}/wrt/feature/category_service/node_modules/libcategory.node
306 %{_datadir}/wrt/feature/category_service/data/*
310 %if 0%{?__package_signing}
311 %{WRTJS_APP_DIR}/author-signature.xml
312 %{WRTJS_APP_DIR}/signature1.xml