69093e1fbc5996c9af7d3146df8169a06b46fe85
[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.0.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 "%{?tizen_profile_name}" != "tv" && "%{?profile}" != "wearable" && "%{?_with_da_profile}" != "1"
19   %define _use_d2d 1
20 %endif
21
22 BuildRequires: pkgconfig(chromium-efl)
23
24 %if "%{?profile}" != "tv"
25 BuildRequires: ninja
26 BuildRequires: pkgconfig(dlog)
27 %endif
28
29 %if 0%{?_use_tpk} || 0%{?_use_d2d}
30 %if "%{?profile}" == "tv"
31 BuildRequires: app-signer
32 %endif
33 BuildRequires: hash-signer, zip
34 %endif
35 BuildRequires: pkgconfig(libtzplatform-config)
36
37 %description
38 Web Runtime Engine based on Electron
39
40 %define _tizen_version %{tizen_version_major}%{tizen_version_minor}
41 %define _pkgid org.tizen.%{name}
42 %define __pkgid %{_pkgid}
43 %if 0%{?_use_tpk}
44   # The tv profile has a different tpk generation policy.
45   # 2 types(update, upgrade) of tpk can be generated and used simultaneously.
46   # If tpktype is not defined and tizen version is less than 6.0, upgrade type
47   # is generated by default.
48   %if "%{?profile}" == "tv"
49     %if "%{?tpktype}" == "upgrade" || (0%{!?tpktype:1} && %{_tizen_version} < 60)
50       %define __pkgid %{_pkgid}-upgrade
51     %endif
52   %endif
53 %endif
54 # Generated app directory
55 %global GENERATED_APP_DIR /tmp/%{name}
56 # Directory for WRTjs tizen application package
57 %global WRTJS_APP_DIR %{TZ_SYS_RO_APP}/%{__pkgid}
58
59 %prep
60 %setup -q
61
62 %build
63 # The "_repository" flag was changed to "_vd_cfg_target_repository"
64 # since tizen 4.0 product tv.
65 %if "%{?profile}" == "tv"
66   %define _manifestname %{_pkgid}-vd
67   # The onemain branch haven't defined _vd_cfg_target_repository.
68   # So, this hijack code is added to set the repo_name to "MuseM".
69   # Remove this code when _vd_cfg_target_repository is defined in onemain.
70   %if "%{?_vd_cfg_target_repository}"
71     %define repo_name %{_vd_cfg_target_repository}
72   %else
73     %define repo_name MuseM
74   %endif
75 %else
76   %define _manifestname %{_pkgid}
77   %define repo_name %{_repository}
78 %endif
79
80 %if "%{?profile}" != "tv"
81   %define _outdir $PWD/out
82   ./build/tools/gn gen %{_outdir}
83   ninja -C %{_outdir} wrt-loader
84 %endif
85
86 ./build/tools/node ./node_modules/.bin/tsc
87 absolute_appdir=$PWD/%{app_dir}
88 (cd wrt_app/ && find . -type f ! -name '*.ts' -exec cp --parents {} ${absolute_appdir} \;)
89
90 %if 0%{?_use_tpk}
91   %if "%{_vd_cfg_chip_vendor}" != "EMUL" && "%{?profile}" == "tv"
92     %define __package_signing 1
93   %else
94     %define __package_signing 0
95   %endif
96   sed -e 's#@TIZEN_VERSION@#%{tizen_version_major}.%{tizen_version_minor}#g' \
97       -e 's#@WRTJS_VERSION@#%{version}#g' \
98       -e 's#@PACKAGE_ID@#%{__pkgid}#g' \
99       packaging/%{_manifestname}.xml.in \
100       > packaging/tizen-manifest-tpk.xml
101 %endif
102
103 %if 0%{?_use_d2d}
104   %define _d2d_pkgid 9z6IujVul3
105   sed -e 's#@TIZEN_VERSION@#%{tizen_version_major}.%{tizen_version_minor}#g' \
106       -e 's#@WRTJS_VERSION@#%{version}#g' \
107       -e 's#@PACKAGE_ID@#%{_d2d_pkgid}#g' \
108       packaging/d2d_app.xml.in \
109       > packaging/%{_d2d_pkgid}.xml
110 %endif
111
112 %install
113 %ifarch armv7l
114   %define ARCHITECTURE armv7l
115 %endif
116 %ifarch aarch64
117   %define ARCHITECTURE aarch64
118 %endif
119 %ifarch i586 i686
120   %define ARCHITECTURE ix86
121 %endif
122 %ifarch x86_64
123   %define ARCHITECTURE x86_64
124 %endif
125
126 %define _resourcedir /usr/share/wrt/app
127 install -d %{GENERATED_APP_DIR}
128 install -d %{buildroot}%{_bindir}
129 install -d %{buildroot}%{_datadir}/aul
130 install -d %{buildroot}%{_resourcedir}
131 install -d %{buildroot}%{WRTJS_APP_DIR}
132
133 %if 0%{?_use_tpk}
134   %if 0%{?__package_signing}
135     install -m 0644 tizen/downloadable/vd_sign/author-signature.xml %{buildroot}%{WRTJS_APP_DIR}
136     install -m 0644 tizen/downloadable/vd_sign/signature1.xml %{buildroot}%{WRTJS_APP_DIR}
137   %else
138     %define tizen_sign 1
139     %define tizen_sign_base %{WRTJS_APP_DIR}
140     %define tizen_sign_level platform
141     %define tizen_author_sign 1
142     %define tizen_dist_sign 1
143   %endif
144 %endif
145
146 %if "%{?profile}" == "tv"
147   ln -s %{_bindir}/wrt %{buildroot}%{_bindir}/wrt-loader
148   %if "%{_vd_cfg_product_type}" != "LFD"
149     %if "%{_vd_cfg_platform_type}" == "FULL_SMART"
150       install -m 0644 packaging/wrt_tv.loader %{buildroot}%{_datadir}/aul/wrt.loader
151     %endif
152     %if "%{_vd_cfg_platform_type}" == "ENTRY_SMART"
153       install -m 0644 packaging/wrt_tv_lite.loader %{buildroot}%{_datadir}/aul/wrt.loader
154     %endif
155   %endif
156 %else
157   install -m 0755 %{_outdir}/wrt-loader %{buildroot}%{_bindir}
158   install -m 0644 packaging/wrt.loader %{buildroot}%{_datadir}/aul/
159 %endif
160
161 mkdir -p %{buildroot}%{_libdir}/%{crosswalk_extensions_service}
162 cp packaging/plugins.json %{buildroot}%{_libdir}/%{crosswalk_extensions_service}
163 cp -r %{app_dir}/* %{buildroot}%{_resourcedir}/
164
165 %if 0%{?_use_tpk}
166   # The debugsources.list is needed by __spec_install_post to generate tpk file
167   # but it's missing in the build process. So, the temporary file is touched.
168   touch debugsources.list
169   %define _tpk_file_name %{__pkgid}-%{version}-v%{tizen_version_major}.%{tizen_version_minor}.%{repo_name}.%{ARCHITECTURE}.tpk
170   %define __tpk_install_post \
171       tizen/build/build_app.sh %{GENERATED_APP_DIR} wrtjs_tpk_root %{_tpk_file_name} tpk %{?profile}
172   %define __spec_install_post \
173       %{?__tpk_install_post} \
174       %{nil}
175 %else
176   echo "No TPK generation"
177 %endif
178
179 %if 0%{?_use_d2d}
180   install -d %{buildroot}%{_appdir}/%{_d2d_pkgid}/bin
181   install -d %{buildroot}%{_appdir}/%{_d2d_pkgid}/res
182   install -d %{buildroot}%{_xmldir}
183   install -m 0644 packaging/%{_d2d_pkgid}.xml %{buildroot}%{_xmldir}/
184   cp -rf d2d_app %{buildroot}%{_appdir}/%{_d2d_pkgid}/res/wgt/
185   ln -sf %{_bindir}/wrt-service-launcher %{buildroot}%{_appdir}/%{_d2d_pkgid}/bin/%{_d2d_pkgid}.Service
186 %endif
187
188 %pre
189 if (( $(rpm -q chromium-efl | wc -l) > 1 )); then
190   echo -e "\033[31m*****************************************************"
191   echo -e "Please remove chromium-efl rpm(s) except for one:\n"
192   rpm -q chromium-efl
193   echo -e "*****************************************************\033[m"
194   exit 1
195 fi
196
197 export CHROMIUM_REVISION=$(rpm -q chromium-efl | awk -F. '{print $2}')
198 export WRTJS_REVISION=$(echo %{version} | awk -F. '{print $2}')
199 if [[ "${CHROMIUM_REVISION}" == "" ]]; then
200   CHROMIUM_REVISION="not installed"
201 fi
202
203 echo -e "\033[32m*****************************************************"
204 echo -e "* chromium-efl revision : ${CHROMIUM_REVISION}"
205 echo -e "* wrtjs revision        : ${WRTJS_REVISION}"
206 echo -e "*"
207 if [[ "${CHROMIUM_REVISION}" == "not installed" ]] || \
208     (( ${CHROMIUM_REVISION} == ${WRTJS_REVISION} )); then
209   echo -e "* Succeeded to check rpm versions"
210   echo -e "*****************************************************\033[m"
211 else
212   if (( ${CHROMIUM_REVISION} > ${WRTJS_REVISION} )); then
213     echo -e "\033[31m* You're trying to install too old wrtjs."
214     echo -e "* Please install wrtjs as revision $CHROMIUM_REVISION"
215     echo -e "* or"
216   else
217     echo -e "\033[31m* You have too old chromium-efl."
218   fi
219   echo -e "* please re-install chromium-efl as revision $WRTJS_REVISION first."
220   echo -e "*****************************************************\033[m"
221   exit 1
222 fi
223
224 %post
225
226 %postun
227
228 %clean
229 rm -fr %{buildroot}
230
231 %files
232 %manifest packaging/wrtjs.manifest
233 %license LICENSE
234 %if 0%{?_use_d2d}
235   %{_appdir}/%{_d2d_pkgid}
236   %{_xmldir}/%{_d2d_pkgid}.xml
237 %endif
238 %if "%{?tizen_profile_name}" != "tv"
239   %caps(cap_setgid,cap_sys_admin=ei) %{_bindir}/wrt-loader
240 %else
241   %{_bindir}/wrt-loader
242 %endif
243 %if "%{_vd_cfg_product_type}" != "LFD"
244   %{_datadir}/aul/wrt.loader
245 %endif
246 %{_libdir}/%{crosswalk_extensions_service}/plugins.json
247 %{_resourcedir}/*
248 %if 0%{?__package_signing}
249   %{WRTJS_APP_DIR}/author-signature.xml
250   %{WRTJS_APP_DIR}/signature1.xml
251 %endif