[UWE] Generate tpk file for upgradable WRTjs
[platform/framework/web/wrtjs.git] / packaging / wrtjs.spec
1 Name:       wrtjs
2 Summary:    Javascript based Runtime for Tizen
3 Version:    1.0.0
4 Release:    1
5 Group:      Web Framework/Web Runtime
6 License:    Apache-2.0
7 URL:        https://www.tizen.org
8 Source:     %{name}-%{version}.tar.gz
9
10 %define app_dir out/gen/app
11 %define crosswalk_extensions_service tizen-extensions-crosswalk-service
12
13 BuildRequires: pkgconfig(chromium-efl)
14
15 %if "%{?profile}" != "tv"
16 BuildRequires: ninja
17 BuildRequires: pkgconfig(dlog)
18 %endif
19
20 %if 0%{?_use_tpk}
21 %if "%{?profile}" == "tv"
22 BuildRequires: app-signer
23 %endif
24 BuildRequires: hash-signer, zip
25 BuildRequires: pkgconfig(libtzplatform-config)
26 %endif
27
28 %description
29 Web Runtime Engine based on Electron
30
31 %define _tizen_version %{tizen_version_major}%{tizen_version_minor}
32 %define _pkgid org.tizen.%{name}
33 %if 0%{?_use_tpk}
34   # The tv profile has a different tpk generation policy.
35   # 2 types(update, upgrade) of tpk can be generated and used simultaneously.
36   # If tpktype is not defined and tizen version is less than 6.0, upgrade type
37   # is generated by default.
38   %if "%{?profile}" == "tv"
39     %if "%{?tpktype}" == "upgrade" || (0%{!?tpktype:1} && %{_tizen_version} < 60)
40       %define _tpkid %{_pkgid}-upgrade
41     %endif
42   %endif
43   %if 0%{!?_tpkid:1}
44   %define _tpkid %{_pkgid}
45   %endif
46
47   # WRTjs TPK install directory
48   %global WRTJS_TPK_DIR /tmp
49   # Directory for WRTjs tizen application package
50   %global WRTJS_APP_DIR  %{TZ_SYS_RO_APP}/%{_tpkid}
51 %endif
52
53 %prep
54 %setup -q
55
56 %build
57 # The "_repository" flag was changed to "_vd_cfg_target_repository"
58 # since tizen 4.0 product tv.
59 %if "%{?profile}" == "tv"
60   %define _manifestname %{_pkgid}-vd
61   # The onemain branch haven't defined _vd_cfg_target_repository.
62   # So, this hijack code is added to set the repo_name to "MuseM".
63   # Remove this code when _vd_cfg_target_repository is defined in onemain.
64   %if "%{?_vd_cfg_target_repository}"
65     %define repo_name %{_vd_cfg_target_repository}
66   %else
67     %define repo_name MuseM
68   %endif
69 %else
70   %define _manifestname %{_pkgid}
71   %define repo_name %{_repository}
72 %endif
73
74 %if "%{?profile}" != "tv"
75   %define _outdir $PWD/out
76   ./build/tools/gn gen %{_outdir}
77   ninja -C %{_outdir} wrt-loader
78 %endif
79
80 ./build/tools/node ./node_modules/.bin/tsc
81 absolute_appdir=$PWD/%{app_dir}
82 (cd wrt_app/ && find . -type f ! -name '*.ts' -exec cp --parents {} ${absolute_appdir} \;)
83
84 %if 0%{?_use_tpk}
85   %if "%{_vd_cfg_chip_vendor}" != "EMUL" && "%{?profile}" == "tv"
86     %define __package_signing 1
87   %else
88     %define __package_signing 0
89   %endif
90   sed -e 's#@TIZEN_VERSION@#%{tizen_version_major}.%{tizen_version_minor}#g' \
91       -e 's#@WRTJS_VERSION@#%{version}#g' \
92       -e 's#@PACKAGE_ID@#%{_tpkid}#g' \
93       packaging/%{_manifestname}.xml.in \
94       > packaging/tizen-manifest-tpk.xml
95 %endif
96
97 %install
98 %ifarch armv7l
99   %define ARCHITECTURE armv7l
100 %endif
101 %ifarch aarch64
102   %define ARCHITECTURE aarch64
103 %endif
104 %ifarch i586 i686
105   %define ARCHITECTURE ix86
106 %endif
107 %ifarch x86_64
108   %define ARCHITECTURE x86_64
109 %endif
110 %define _resourcedir /usr/share/wrt/app
111 install -d %{buildroot}%{_bindir}
112 install -d %{buildroot}%{_datadir}/aul
113 install -d %{buildroot}%{_resourcedir}
114 install -d %{buildroot}%{WRTJS_APP_DIR}
115
116 %if 0%{?__package_signing}
117   install -m 0644 tizen/downloadable/vd_sign/author-signature.xml %{buildroot}%{WRTJS_APP_DIR}
118   install -m 0644 tizen/downloadable/vd_sign/signature1.xml %{buildroot}%{WRTJS_APP_DIR}
119 %else
120   %define tizen_sign 1
121   %define tizen_sign_base %{WRTJS_APP_DIR}
122   %define tizen_sign_level platform
123   %define tizen_author_sign 1
124   %define tizen_dist_sign 1
125 %endif
126
127 %if "%{?profile}" == "tv"
128   ln -s %{_bindir}/wrt %{buildroot}%{_bindir}/wrt-loader
129   %if "%{_vd_cfg_product_type}" != "LFD"
130     %if "%{_vd_cfg_platform_type}" == "FULL_SMART"
131       install -m 0644 packaging/wrt_tv.loader %{buildroot}%{_datadir}/aul/wrt.loader
132     %endif
133     %if "%{_vd_cfg_platform_type}" == "ENTRY_SMART"
134       install -m 0644 packaging/wrt_tv_lite.loader %{buildroot}%{_datadir}/aul/wrt.loader
135     %endif
136   %endif
137 %else
138   install -m 0755 %{_outdir}/wrt-loader %{buildroot}%{_bindir}
139   install -m 0644 packaging/wrt.loader %{buildroot}%{_datadir}/aul/
140 %endif
141
142 mkdir -p %{buildroot}%{_libdir}/%{crosswalk_extensions_service}
143 cp packaging/plugins.json %{buildroot}%{_libdir}/%{crosswalk_extensions_service}
144 cp -r %{app_dir}/* %{buildroot}%{_resourcedir}/
145
146 %if 0%{?_use_tpk}
147   # The debugsources.list is needed by __spec_install_post to generate tpk file
148   # but it's missing in the build process. So, the temporary file is touched.
149   touch debugsources.list
150   %define _tpk_file_name %{_tpkid}-%{version}-v%{tizen_version_major}.%{tizen_version_minor}.%{repo_name}.%{ARCHITECTURE}
151   %define __tpk_install_post \
152       tizen/build/build_tpk.sh %{buildroot}%{WRTJS_APP_DIR} %{WRTJS_TPK_DIR} %{_tpk_file_name} %{_tpkid} %{?profile}
153   %define __spec_install_post \
154       %{?__tpk_install_post} \
155       %{nil}
156 %else
157   echo "No TPK generation"
158 %endif
159
160 %post
161
162 %postun
163
164 %clean
165 rm -fr %{buildroot}
166
167 %files
168 %manifest packaging/wrtjs.manifest
169 %license LICENSE
170 %if "%{?tizen_profile_name}" != "tv"
171   %caps(cap_setgid,cap_sys_admin=ei) %{_bindir}/wrt-loader
172 %else
173   %{_bindir}/wrt-loader
174 %endif
175 %if "%{_vd_cfg_product_type}" != "LFD"
176   %{_datadir}/aul/wrt.loader
177 %endif
178 %{_libdir}/%{crosswalk_extensions_service}/plugins.json
179 %{_resourcedir}/*
180 %if 0%{?__package_signing}
181   %{WRTJS_APP_DIR}/author-signature.xml
182   %{WRTJS_APP_DIR}/signature1.xml
183 %endif