URL: https://www.tizen.org
Source0: %{name}-%{version}.tar.gz
Source1001: %{name}.manifest
+Source1002: wrt.loader
BuildRequires: libcap-devel, libasound-devel, python, ninja, nodejs, nodejs-npm
# It's added to accelerate generating ninja files.
> %{_out}/packaging/%{_pkgid}.xml
install -m 0644 %{_out}/packaging/%{_pkgid}.xml %{buildroot}%{_xmldir}
+# Loader script file
+mkdir -p %{buildroot}%{_datadir}/aul/
+cp %{SOURCE1002} %{buildroot}%{_datadir}/aul/
+
mkdir -p %{buildroot}/usr/apps/org.tizen.electron-efl/bin/
install -d %{buildroot}/%{_icondir}
install -d %{buildroot}/%{_libdir}
-install -m 0644 packaging/%{_pkgid}.png %{buildroot}/%{_icondir}
-install -m 0755 %{_out}/libnode.so %{buildroot}/%{_libdir}
-install -m 0755 %{_out}/electron %{buildroot}/usr/apps/org.tizen.electron-efl/bin
-install -m 0755 wrt/build/script/run_was_tizen.sh %{buildroot}/usr/apps/org.tizen.electron-efl/bin
+install -d %{buildroot}/%{_bindir}
+install -m 0644 packaging/%{_pkgid}.png %{buildroot}/%{_icondir}
+install -m 0755 %{_out}/libnode.so %{buildroot}/%{_libdir}
+install -m 0755 %{_out}/wrt-loader %{buildroot}/%{_bindir}
+install -m 0755 %{_out}/electron %{buildroot}/usr/apps/org.tizen.electron-efl/bin
+install -m 0755 wrt/build/script/run_was_tizen.sh %{buildroot}/usr/apps/org.tizen.electron-efl/bin
# install resource.
mkdir -p %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl/wrt_release
-install -m 0755 %{_out}/resources/default_app.asar %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl
-install -m 0755 %{_out}/resources/electron.asar %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl
+install -m 0755 %{_out}/resources/default_app.asar %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl
+install -m 0755 %{_out}/resources/electron.asar %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl
-cp -rf wrt/wrt_support %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl
-cp -rf wrt/node_modules %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl
-cp -rf wrt/package.json wrt/src/ wrt/static %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl/wrt_release
+ln -s /usr/apps/org.tizen.electron-efl/bin/electron %{buildroot}%{_bindir}/wrt
+ln -s /usr/apps/org.tizen.electron-efl/bin/electron %{buildroot}%{_bindir}/wrt-client
+ln -s /usr/apps/org.tizen.electron-efl/bin/electron %{buildroot}%{_bindir}/xwalk_runtime
+cp -rf wrt/wrt_support %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl
+cp -rf wrt/node_modules %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl
+cp -rf wrt/package.json wrt/src/ wrt/static %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl/wrt_release
./wrt/build/node_modules/grunt-electron-installer/node_modules/asar/bin/asar p \
%{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl/wrt_release %{_out}/resources/app.asar
-install -m 0755 %{_out}/resources/app.asar %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl
+install -m 0755 %{_out}/resources/app.asar %{buildroot}/opt/usr/home/owner/data/org.tizen.electron-efl
%post
# Owner account can't write /opt/usr/home/owner/data/org.tizen.electron-efl
%{_icondir}/%{_pkgid}.png
%{_libdir}/libnode.so
%{_xmldir}/%{_pkgid}.xml
+%attr(755,root,root) %{_bindir}/wrt
+%attr(755,root,root) %{_bindir}/wrt-client
+%attr(755,root,root) %{_bindir}/wrt-loader
+%attr(755,root,root) %{_bindir}/xwalk_runtime
+%attr(644,root,root) %{_datadir}/aul/wrt.loader
--- /dev/null
+/*
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <dlfcn.h>
+#include "base/logging.h"
+
+// loader file must have "User" execute label, because launchpad daemon runs
+// with "System::Privileged" label.
+int main(int argc, char* argv[]) {
+ LOG(INFO) << "Begin wrt-loader";
+ void* handle = dlopen("/usr/apps/org.tizen.electron-efl/bin/electron", RTLD_NOW);
+ if (!handle) {
+ LOG(ERROR) << "Failed to load electorn";
+ return false;
+ }
+
+ typedef int (*MAIN_FUNC)(int argc, char* argv[]);
+
+ MAIN_FUNC real_main = reinterpret_cast<MAIN_FUNC>(dlsym(handle, "main"));
+ if (!real_main) {
+ LOG(ERROR) << "Failed to load real_main";
+ return false;
+ }
+
+ int ret = real_main(argc, argv);
+ dlclose(handle);
+
+ return ret;
+}