From 9ce7d542afafc3f9f9b38076f1c52096593d4397 Mon Sep 17 00:00:00 2001 From: Jinkun Jang Date: Wed, 13 Mar 2013 01:50:42 +0900 Subject: [PATCH] Tizen 2.1 base --- CMakeLists.txt | 83 ++ LICENSE.APLv2 | 202 +++ NOTICE | 3 + data/.readme | 0 data/configuration | 1 + icons/icon.png | Bin 0 -> 6197 bytes icons/splash.png | Bin 0 -> 161582 bytes inc/InstallerDefs.h | 260 ++++ lib/.readme | 0 manifest.xml | 25 + osp-installer.manifest | 13 + packaging/osp-installer.spec | 68 + plugin/CMakeLists.txt | 23 + plugin/osp-installer-plugin.cpp | 266 ++++ res/0123456789.oap | Bin 0 -> 427294 bytes res/0123456789.zip | Bin 0 -> 427294 bytes res/etc/.readme | 0 res/icons/default/small/icon_application.png | Bin 0 -> 2113 bytes res/images/.readme | 0 res/locale/en_US.po | 17 + src/Context/DrmLicense.cpp | 36 + src/Context/DrmLicense.h | 45 + src/Context/InstallationContext.cpp | 530 ++++++++ src/Context/InstallationContext.h | 197 +++ src/Context/InstallationContextData.cpp | 255 ++++ src/Context/InstallationContextData.h | 157 +++ src/Installer/DirectoryInstaller.cpp | 191 +++ src/Installer/DirectoryInstaller.h | 58 + src/Installer/GuestInstaller.cpp | 79 ++ src/Installer/GuestInstaller.h | 55 + src/Installer/IDEInstaller.cpp | 79 ++ src/Installer/IDEInstaller.h | 55 + src/Installer/Installer.cpp | 204 +++ src/Installer/Installer.h | 62 + src/Installer/PackageInstaller.cpp | 85 ++ src/Installer/PackageInstaller.h | 55 + src/Installer/PreloadedInstaller.cpp | 156 +++ src/Installer/PreloadedInstaller.h | 55 + src/Installer/RestorationInstaller.cpp | 79 ++ src/Installer/RestorationInstaller.h | 55 + src/Manager/ConfigurationManager.cpp | 796 +++++++++++ src/Manager/ConfigurationManager.h | 67 + src/Manager/InstallerManager.cpp | 1053 +++++++++++++++ src/Manager/InstallerManager.h | 105 ++ src/Manager/PermissionManager.cpp | 278 ++++ src/Manager/PermissionManager.h | 52 + src/Manager/SignatureManager.cpp | 413 ++++++ src/Manager/SignatureManager.h | 71 + src/Step/DrmStep.cpp | 158 +++ src/Step/DrmStep.h | 70 + src/Step/IInstallationStep.cpp | 30 + src/Step/IInstallationStep.h | 49 + src/Step/LicenseStep.cpp | 102 ++ src/Step/LicenseStep.h | 62 + src/Step/ManifestXmlStep.cpp | 140 ++ src/Step/ManifestXmlStep.h | 62 + src/Step/PackageCheckStep.cpp | 154 +++ src/Step/PackageCheckStep.h | 62 + src/Step/SignatureStep.cpp | 211 +++ src/Step/SignatureStep.h | 73 + src/Step/SystemCheckStep.cpp | 134 ++ src/Step/SystemCheckStep.h | 66 + src/Step/UninstallStep.cpp | 292 ++++ src/Step/UninstallStep.h | 70 + src/Step/UnpackStep.cpp | 358 +++++ src/Step/UnpackStep.h | 78 ++ src/Util/InstallerUtil.cpp | 600 +++++++++ src/Util/InstallerUtil.h | 76 ++ src/XmlHandler/ManifestGenerator.cpp | 857 ++++++++++++ src/XmlHandler/ManifestGenerator.h | 74 ++ src/XmlHandler/ManifestHandler.cpp | 1403 ++++++++++++++++++++ src/XmlHandler/ManifestHandler.h | 173 +++ src/XmlHandler/Parser/ManifestAccountsParser.cpp | 272 ++++ src/XmlHandler/Parser/ManifestAccountsParser.h | 69 + .../Parser/ManifestAppControlsParser.cpp | 398 ++++++ src/XmlHandler/Parser/ManifestAppControlsParser.h | 76 ++ src/XmlHandler/Parser/ManifestLiveboxesParser.cpp | 243 ++++ src/XmlHandler/Parser/ManifestLiveboxesParser.h | 70 + src/XmlHandler/Parser/ManifestParser.cpp | 77 ++ src/XmlHandler/Parser/ManifestParser.h | 60 + src/XmlHandler/PrivilegeHandler.cpp | 406 ++++++ src/XmlHandler/PrivilegeHandler.h | 61 + src/XmlHandler/SignatureHandler.cpp | 222 ++++ src/XmlHandler/SignatureHandler.h | 72 + src/XmlHandler/XmlAttribute.cpp | 116 ++ src/XmlHandler/XmlAttribute.h | 54 + src/XmlHandler/XmlHandler.cpp | 472 +++++++ src/XmlHandler/XmlHandler.h | 106 ++ src/XmlHandler/XmlWriter.cpp | 200 +++ src/XmlHandler/XmlWriter.h | 62 + src/backend/backend.cpp | 258 ++++ 91 files changed, 14932 insertions(+) create mode 100755 CMakeLists.txt create mode 100755 LICENSE.APLv2 create mode 100755 NOTICE create mode 100644 data/.readme create mode 100644 data/configuration create mode 100644 icons/icon.png create mode 100644 icons/splash.png create mode 100755 inc/InstallerDefs.h create mode 100644 lib/.readme create mode 100755 manifest.xml create mode 100644 osp-installer.manifest create mode 100755 packaging/osp-installer.spec create mode 100755 plugin/CMakeLists.txt create mode 100644 plugin/osp-installer-plugin.cpp create mode 100644 res/0123456789.oap create mode 100644 res/0123456789.zip create mode 100644 res/etc/.readme create mode 100644 res/icons/default/small/icon_application.png create mode 100644 res/images/.readme create mode 100644 res/locale/en_US.po create mode 100644 src/Context/DrmLicense.cpp create mode 100755 src/Context/DrmLicense.h create mode 100755 src/Context/InstallationContext.cpp create mode 100755 src/Context/InstallationContext.h create mode 100755 src/Context/InstallationContextData.cpp create mode 100755 src/Context/InstallationContextData.h create mode 100755 src/Installer/DirectoryInstaller.cpp create mode 100644 src/Installer/DirectoryInstaller.h create mode 100755 src/Installer/GuestInstaller.cpp create mode 100644 src/Installer/GuestInstaller.h create mode 100755 src/Installer/IDEInstaller.cpp create mode 100644 src/Installer/IDEInstaller.h create mode 100755 src/Installer/Installer.cpp create mode 100644 src/Installer/Installer.h create mode 100644 src/Installer/PackageInstaller.cpp create mode 100644 src/Installer/PackageInstaller.h create mode 100755 src/Installer/PreloadedInstaller.cpp create mode 100644 src/Installer/PreloadedInstaller.h create mode 100755 src/Installer/RestorationInstaller.cpp create mode 100644 src/Installer/RestorationInstaller.h create mode 100755 src/Manager/ConfigurationManager.cpp create mode 100755 src/Manager/ConfigurationManager.h create mode 100755 src/Manager/InstallerManager.cpp create mode 100755 src/Manager/InstallerManager.h create mode 100755 src/Manager/PermissionManager.cpp create mode 100644 src/Manager/PermissionManager.h create mode 100755 src/Manager/SignatureManager.cpp create mode 100644 src/Manager/SignatureManager.h create mode 100755 src/Step/DrmStep.cpp create mode 100644 src/Step/DrmStep.h create mode 100644 src/Step/IInstallationStep.cpp create mode 100644 src/Step/IInstallationStep.h create mode 100755 src/Step/LicenseStep.cpp create mode 100644 src/Step/LicenseStep.h create mode 100755 src/Step/ManifestXmlStep.cpp create mode 100644 src/Step/ManifestXmlStep.h create mode 100755 src/Step/PackageCheckStep.cpp create mode 100644 src/Step/PackageCheckStep.h create mode 100755 src/Step/SignatureStep.cpp create mode 100755 src/Step/SignatureStep.h create mode 100755 src/Step/SystemCheckStep.cpp create mode 100644 src/Step/SystemCheckStep.h create mode 100755 src/Step/UninstallStep.cpp create mode 100644 src/Step/UninstallStep.h create mode 100755 src/Step/UnpackStep.cpp create mode 100644 src/Step/UnpackStep.h create mode 100755 src/Util/InstallerUtil.cpp create mode 100755 src/Util/InstallerUtil.h create mode 100755 src/XmlHandler/ManifestGenerator.cpp create mode 100755 src/XmlHandler/ManifestGenerator.h create mode 100755 src/XmlHandler/ManifestHandler.cpp create mode 100755 src/XmlHandler/ManifestHandler.h create mode 100755 src/XmlHandler/Parser/ManifestAccountsParser.cpp create mode 100755 src/XmlHandler/Parser/ManifestAccountsParser.h create mode 100755 src/XmlHandler/Parser/ManifestAppControlsParser.cpp create mode 100755 src/XmlHandler/Parser/ManifestAppControlsParser.h create mode 100755 src/XmlHandler/Parser/ManifestLiveboxesParser.cpp create mode 100755 src/XmlHandler/Parser/ManifestLiveboxesParser.h create mode 100755 src/XmlHandler/Parser/ManifestParser.cpp create mode 100755 src/XmlHandler/Parser/ManifestParser.h create mode 100755 src/XmlHandler/PrivilegeHandler.cpp create mode 100644 src/XmlHandler/PrivilegeHandler.h create mode 100755 src/XmlHandler/SignatureHandler.cpp create mode 100644 src/XmlHandler/SignatureHandler.h create mode 100755 src/XmlHandler/XmlAttribute.cpp create mode 100755 src/XmlHandler/XmlAttribute.h create mode 100755 src/XmlHandler/XmlHandler.cpp create mode 100755 src/XmlHandler/XmlHandler.h create mode 100755 src/XmlHandler/XmlWriter.cpp create mode 100644 src/XmlHandler/XmlWriter.h create mode 100755 src/backend/backend.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..8b88653 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,83 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) + +SET (this_target osp-installer) + +SET(CMAKE_EXECUTABLE_SUFFIX "") +SET(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/output") + +INCLUDE_DIRECTORIES( + inc + src/Context + src/Installer + src/Manager + src/XmlHandler + src/XmlHandler/Parser + src/Step + src/Util + /usr/include/glib-2.0 + /usr/lib/glib-2.0/include + /usr/include/dlog + /usr/include/pkgmgr + /usr/include/appfw + /usr/include/osp + /usr/include/osp/app + /usr/include/osp/base + /usr/include/osp/io + /usr/include/osp/security + /usr/include/osp/system + /usr/include/libxml2 + /usr/include/system + /usr/include/drm-intel +) + +SET (${this_target}_SOURCE_FILES + src/Context/DrmLicense.cpp + src/Context/InstallationContext.cpp + src/Context/InstallationContextData.cpp + src/Installer/DirectoryInstaller.cpp + src/Installer/GuestInstaller.cpp + src/Installer/IDEInstaller.cpp + src/Installer/Installer.cpp + src/Installer/PackageInstaller.cpp + src/Installer/PreloadedInstaller.cpp + src/Installer/RestorationInstaller.cpp + src/Manager/ConfigurationManager.cpp + src/Manager/InstallerManager.cpp + src/Manager/PermissionManager.cpp + src/Manager/SignatureManager.cpp + src/Step/DrmStep.cpp + src/Step/IInstallationStep.cpp + src/Step/LicenseStep.cpp + src/Step/ManifestXmlStep.cpp + src/Step/PackageCheckStep.cpp + src/Step/SignatureStep.cpp + src/Step/SystemCheckStep.cpp + src/Step/UninstallStep.cpp + src/Step/UnpackStep.cpp + src/XmlHandler/ManifestGenerator.cpp + src/XmlHandler/ManifestHandler.cpp + src/XmlHandler/SignatureHandler.cpp + src/XmlHandler/XmlAttribute.cpp + src/XmlHandler/XmlHandler.cpp + src/XmlHandler/XmlWriter.cpp + src/XmlHandler/PrivilegeHandler.cpp + src/XmlHandler/Parser/ManifestParser.cpp + src/XmlHandler/Parser/ManifestAccountsParser.cpp + src/XmlHandler/Parser/ManifestAppControlsParser.cpp + src/XmlHandler/Parser/ManifestLiveboxesParser.cpp + src/backend/backend.cpp + src/Util/InstallerUtil.cpp + ) + +ADD_EXECUTABLE (${this_target} ${${this_target}_SOURCE_FILES}) + +SET(CMAKE_C_FLAGS "${OSP_DEBUG_FLAGS} ${OSP_OPT_FLAGS} ${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} ${OSP_COMPILER_FLAGS}") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") +SET(CMAKE_CXX_FLAGS "${OSP_DEBUG_FLAGS} ${OSP_OPT_FLAGS} ${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} ${OSP_COMPILER_FLAGS}") + +TARGET_LINK_LIBRARIES(${this_target} "-L/usr/lib/osp -losp-appfw -lxml2 -lpkgmgr_installer -lpkgmgr_parser -lglib-2.0 -lapp2ext" -Wl,--allow-shlib-undefined) +TARGET_LINK_LIBRARIES(${this_target} "-L/usr/lib -ldrm-service-core-intel") + +ADD_SUBDIRECTORY(plugin) + +INSTALL(TARGETS ${this_target} DESTINATION bin) diff --git a/LICENSE.APLv2 b/LICENSE.APLv2 new file mode 100755 index 0000000..d645695 --- /dev/null +++ b/LICENSE.APLv2 @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/NOTICE b/NOTICE new file mode 100755 index 0000000..0e0f016 --- /dev/null +++ b/NOTICE @@ -0,0 +1,3 @@ +Copyright (c) Samsung Electronics Co., Ltd. All rights reserved. +Except as noted, this software is licensed under Apache License, Version 2. +Please, see the LICENSE.APLv2 file for Apache License terms and conditions. diff --git a/data/.readme b/data/.readme new file mode 100644 index 0000000..e69de29 diff --git a/data/configuration b/data/configuration new file mode 100644 index 0000000..e20ce50 --- /dev/null +++ b/data/configuration @@ -0,0 +1 @@ ++/opt/apps/org.tizen.cmtamb4mtv \ No newline at end of file diff --git a/icons/icon.png b/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8169106bf19143547c5bbd481e45208be9e4a1aa GIT binary patch literal 6197 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 T4LD?+00000NkvXXu0mjfCHK^V literal 0 HcmV?d00001 diff --git a/icons/splash.png b/icons/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..74749595c03e773192d0a31c27cd6426fa2d931f GIT binary patch literal 161582 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