[SignalingServer] Enable the d2d_offload flag
[platform/framework/web/wrtjs.git] / packaging / wrtjs.spec
1 Name:       wrtjs
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.
5 Version:    1.1.1
6 Release:    1
7 Group:      Web Framework/Web Runtime
8 License:    Apache-2.0
9 URL:        https://www.tizen.org
10 Source:     %{name}-%{version}.tar.gz
11
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"
19   %define _use_d2d 1
20 %endif
21
22 # The nmt is public feature
23 # The category is public feature
24 %if "%{?profile}" != "tv" && "%{?profile}" != "wearable" && "%{?_with_da_profile}" != "1"
25 %ifarch armv7l
26   %define _use_nmt 0
27 %endif
28   %define _use_category 0
29   %define _use_d2d_offload 1
30 %endif
31
32 BuildRequires: pkgconfig(chromium-efl)
33
34 %if "%{?profile}" != "tv" || 0%{?_use_nmt} || 0%{?_use_category}
35 BuildRequires: ninja
36 BuildRequires: pkgconfig(dlog)
37 %endif
38
39 %if "%{?profile}" == "tv"
40 BuildRequires: app-signer
41 %if 0%{?_use_d2d}
42 BuildRequires: squashfs
43 %endif
44 %endif
45 BuildRequires: hash-signer, zip
46 BuildRequires: pkgconfig(libtzplatform-config)
47
48 %description
49 Web Runtime Engine based on Electron
50
51 %define _tizen_version %{tizen_version_major}%{tizen_version_minor}
52 %define _pkgid org.tizen.%{name}
53 %define __pkgid %{_pkgid}
54 %if 0%{?_use_tpk}
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
62     %endif
63   %endif
64 %endif
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}
69
70 %prep
71 %setup -q
72
73 %build
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}
83   %else
84     %define repo_name MuseM
85   %endif
86 %else
87   %define _manifestname %{_pkgid}
88   %define repo_name %{_repository}
89 %endif
90
91 %if "%{?profile}" != "tv"
92   %define _outdir $PWD/out
93   ./build/tools/gn gen %{_outdir}
94   ninja -C %{_outdir} wrt-loader
95 %endif
96
97 %if 0%{?_use_nmt} || 0%{?_use_category}
98 %if "%{?profile}" == "tv"
99   %define _outdir $PWD/out
100   ./build/tools/gn gen %{_outdir}
101 %endif
102 %if 0%{?_use_nmt}
103   ninja -C %{_outdir} nmt
104 %endif
105 %if 0%{?_use_category}
106   ninja -C %{_outdir} category
107 %endif
108 %endif
109
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} \;)
113
114 %if 0%{?_use_tpk}
115   %if "%{_vd_cfg_chip_vendor}" != "EMUL" && "%{?profile}" == "tv"
116     %define __package_signing 1
117   %else
118     %define __package_signing 0
119   %endif
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
125 %endif
126
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
132 %endif
133
134 %install
135 %ifarch armv7l
136   %define ARCHITECTURE armv7l
137 %endif
138 %ifarch aarch64
139   %define ARCHITECTURE aarch64
140 %endif
141 %ifarch i586 i686
142   %define ARCHITECTURE ix86
143 %endif
144 %ifarch x86_64
145   %define ARCHITECTURE x86_64
146 %endif
147
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}
154
155 mkdir -p %{buildroot}%{_datadir}/wrtjs
156 echo %{version} > %{buildroot}%{_datadir}/wrtjs/version
157 %if 0%{?_use_tpk}
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}
161   %else
162     %define tizen_sign 1
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
167   %endif
168 %endif
169
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
174   %endif
175 %else
176   install -m 0755 %{_outdir}/wrt-loader %{buildroot}%{_bindir}
177   install -m 0644 packaging/wrt.loader %{buildroot}%{_datadir}/aul/
178 %endif
179
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}/
183
184 %if 0%{?_use_tpk}
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} \
193       %{nil}
194 %else
195   echo "No TPK generation"
196 %endif
197
198 %if 0%{?_use_d2d}
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
204 %else
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
209 %endif
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/
213 %endif
214   tizen/build/build_app.sh %{buildroot} device_home %{_d2d_app_file_name} %{_d2d_app_extension} platform %{?profile}
215
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}
219 %endif
220
221 %if 0%{?_use_nmt}
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/
225 %endif
226
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/
232 %endif
233
234 %pre
235 export CHROMIUM_REVISION=
236 if [ -f "%{_datadir}/chromium-efl/version" ]; then
237   CHROMIUM_REVISION=$(cat  %{_datadir}/chromium-efl/version | awk -F. '{print $2}')
238 else
239   CHROMIUM_REVISION="not installed"
240 fi
241 export WRTJS_REVISION=$(echo %{version} | awk -F. '{print $2}')
242
243 echo -e "\033[32m*****************************************************"
244 echo -e "* chromium-efl revision : ${CHROMIUM_REVISION}"
245 echo -e "* wrtjs revision        : ${WRTJS_REVISION}"
246 echo -e "*"
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"
251 else
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"
255     echo -e "* or"
256   else
257     echo -e "\033[31m* You have too old chromium-efl."
258   fi
259   echo -e "* please re-install chromium-efl as revision $WRTJS_REVISION first."
260   echo -e "*****************************************************\033[m"
261   exit 1
262 fi
263
264 %post
265 %if "%{?_local_build}" == "1"
266 %if 0%{?_use_d2d}
267   pkgcmd -un 9z6IujVul3
268   pkgcmd -i -t wgt -p %{_d2d_install_path}/%{_d2d_app_file_name}
269 %endif
270 %endif
271
272 %postun
273
274 %clean
275 rm -fr %{buildroot}
276
277 %files
278 %manifest packaging/wrtjs.manifest
279 %license LICENSE
280 %if 0%{?_use_d2d}
281   %{_d2d_install_path}/%{_d2d_app_file_name}
282 %endif
283 %if "%{?tizen_profile_name}" != "tv"
284   %caps(cap_setgid,cap_sys_admin=ei) %{_bindir}/wrt-loader
285 %else
286   %{_bindir}/wrt-loader
287 %endif
288 %if "%{_vd_cfg_product_type}" != "LFD"
289   %{_datadir}/aul/wrt.loader
290 %endif
291 %{_datadir}/wrtjs/version
292 %{_libdir}/%{crosswalk_extensions_service}/plugins.json
293
294 %if 0%{?_use_nmt}
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
302 %endif
303
304 %if 0%{?_use_category}
305   %{_datadir}/wrt/feature/category_service/node_modules/libcategory.node
306   %{_datadir}/wrt/feature/category_service/data/*
307 %endif
308
309 %{_resourcedir}/*
310 %if 0%{?__package_signing}
311   %{WRTJS_APP_DIR}/author-signature.xml
312   %{WRTJS_APP_DIR}/signature1.xml
313 %endif