add-helper
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Thu, 17 Apr 2025 08:20:47 +0000 (10:20 +0200)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Thu, 17 Apr 2025 09:09:18 +0000 (11:09 +0200)
Change-Id: If8eab0b5fe5e47dc83876d421ca51d366aba752e

packaging/sessiond.spec
src/tpkplugin/CMakeLists.txt
src/tpkplugin/helper.cpp [new file with mode: 0644]
src/tpkplugin/plugin.c [new file with mode: 0644]
src/tpkplugin/sessiond-update-skelimg.c [deleted file]

index 01463c9cfecfe2376a80c06209c1485227c41243..3daf1474b5426046c1236bdecbd633a35bfa10bf 100644 (file)
@@ -91,6 +91,7 @@ popd
 /etc/dbus-1/system.d/org.tizen.sessiond.conf
 /etc/package-manager/parserlib/libsessiond-update-skelimg.so
 /usr/share/parser-plugins/sessiond-update-skelimg.info
+/usr/libexec/sessiond-update-skelimg
 
 %files -n libsessiond
 %manifest sessiond.manifest
index e144b006dfdeed9a226e021f4805c5612010da8e..6f61505605d74b96cc599062f77f0c8258311a9f 100644 (file)
@@ -8,10 +8,16 @@ pkg_check_modules(deps REQUIRED
                   pkgmgr-info
                   )
 
-ADD_LIBRARY(libsessiond-update-skelimg SHARED sessiond-update-skelimg.c)
+ADD_LIBRARY(libsessiond-update-skelimg SHARED plugin.c)
 TARGET_COMPILE_OPTIONS(libsessiond-update-skelimg PUBLIC -fPIC ${deps_CFLAGS})
 TARGET_LINK_LIBRARIES(libsessiond-update-skelimg PRIVATE ${deps_LDFLAGS})
 
+ADD_EXECUTABLE(sessiond-update-skelimg helper.cpp)
+TARGET_COMPILE_OPTIONS(sessiond-update-skelimg PUBLIC -fPIC -fPIE ${deps_CFLAGS})
+TARGET_INCLUDE_DIRECTORIES(sessiond-update-skelimg PRIVATE ../service/src)
+TARGET_LINK_LIBRARIES(sessiond-update-skelimg PRIVATE ${deps_LDFLAGS})
+
 INSTALL(TARGETS libsessiond-update-skelimg LIBRARY DESTINATION /etc/package-manager/parserlib/)
+INSTALL(TARGETS sessiond-update-skelimg DESTINATION /usr/libexec/)
 INSTALL(FILES sessiond-update-skelimg.info DESTINATION /usr/share/parser-plugins/)
 
diff --git a/src/tpkplugin/helper.cpp b/src/tpkplugin/helper.cpp
new file mode 100644 (file)
index 0000000..795c3ce
--- /dev/null
@@ -0,0 +1,6 @@
+#include "fs_helpers.hpp"
+
+int main(int argc, char **argv)
+{
+       return 0;
+}
diff --git a/src/tpkplugin/plugin.c b/src/tpkplugin/plugin.c
new file mode 100644 (file)
index 0000000..25cfd51
--- /dev/null
@@ -0,0 +1,78 @@
+#include <stdio.h>
+#include <dlog.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <pkgmgr-info.h>
+#include <stdlib.h>
+
+#ifndef EXPORT_API
+#define EXPORT_API __attribute__((visibility("default")))
+#endif
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+#define LOG_TAG "SESSIOND_GEN_SKEL_IMG"
+
+int gen_skel(void) {
+       // No parameters passed, no need to call fork()+exec*() manually
+       // The logic for skel generation is in helper to make it possible to call it also manually during image build
+       return system("/usr/libexec/gen-skel-image");
+}
+
+EXPORT_API
+int PKGMGR_PARSER_PLUGIN_PRE_INSTALL(const char* packageId)
+{
+       return 0;
+}
+
+EXPORT_API
+int PKGMGR_PARSER_PLUGIN_INSTALL(xmlDocPtr docPtr, const char* packageId)
+{
+       return 0;
+}
+
+EXPORT_API
+int PKGMGR_PARSER_PLUGIN_POST_INSTALL(const char* packageId)
+{
+       SLOGD("Generate sessiond skel image for fast session add - triggered by %s package installation", packageId);
+       return gen_skel();
+}
+
+EXPORT_API
+int PKGMGR_PARSER_PLUGIN_UNINSTALL(xmlDocPtr docPtr, const char* packageId)
+{
+       return 0;
+}
+
+EXPORT_API
+int PKGMGR_PARSER_PLUGIN_PRE_UNINSTALL(const char* packageId)
+{
+       return 0;
+}
+
+EXPORT_API
+int PKGMGR_PARSER_PLUGIN_POST_UNINSTALL(const char* packageId)
+{
+       SLOGD("Generate sessiond skel image for fast session add - triggered by %s package deinstallation", packageId);
+       return gen_skel();
+}
+
+EXPORT_API
+int PKGMGR_PARSER_PLUGIN_PRE_UPGRADE(const char* packageId)
+{
+       return 0;
+}
+
+EXPORT_API
+int PKGMGR_PARSER_PLUGIN_UPGRADE(xmlDocPtr docPtr, const char* packageId)
+{
+       return 0;
+}
+
+EXPORT_API
+int PKGMGR_PARSER_PLUGIN_POST_UPGRADE(const char* packageId)
+{
+       SLOGD("Generate sessiond skel image for fast session add - triggered by %s package upgrade", packageId);
+       return gen_skel();
+}
diff --git a/src/tpkplugin/sessiond-update-skelimg.c b/src/tpkplugin/sessiond-update-skelimg.c
deleted file mode 100644 (file)
index a511bb4..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-#include <stdio.h>
-#include <dlog.h>
-#include <libxml/parser.h>
-#include <libxml/tree.h>
-#include <pkgmgr-info.h>
-#include <stdlib.h>
-
-#ifndef EXPORT_API
-#define EXPORT_API __attribute__((visibility("default")))
-#endif
-
-#ifdef LOG_TAG
-#undef LOG_TAG
-#endif
-#define LOG_TAG "SESSIOND_GEN_SKEL_IMG"
-
-#define IMGFILE "/etc/etc-skel-5001.img"
-
-int gen_skel(void) {
-
-       char *tmpfile = IMGFILE".tmp";
-       char *destfile = IMGFILE;
-
-       unlink(tmpfile);
-       int ret = system("/usr/sbin/mkfs.ext2 -E root_owner=5001:1000 -m0 -d /etc/skel /tmp/etc-skel-5001.img 10000");
-       if (ret == 0)
-               rename(tmpfile, destfile);
-       else
-               unlink(tmpfile);
-
-       return ret;
-}
-
-EXPORT_API
-int PKGMGR_PARSER_PLUGIN_PRE_INSTALL(const char* packageId)
-{
-       return 0;
-}
-
-EXPORT_API
-int PKGMGR_PARSER_PLUGIN_INSTALL(xmlDocPtr docPtr, const char* packageId)
-{
-       return 0;
-}
-
-EXPORT_API
-int PKGMGR_PARSER_PLUGIN_POST_INSTALL(const char* packageId)
-{
-       SLOGD("Generate sessiond skel image for fast session add - triggered by %s package installation", packageId);
-       return gen_skel();
-}
-
-EXPORT_API
-int PKGMGR_PARSER_PLUGIN_UNINSTALL(xmlDocPtr docPtr, const char* packageId)
-{
-       return 0;
-}
-
-EXPORT_API
-int PKGMGR_PARSER_PLUGIN_PRE_UNINSTALL(const char* packageId)
-{
-       return 0;
-}
-
-EXPORT_API
-int PKGMGR_PARSER_PLUGIN_POST_UNINSTALL(const char* packageId)
-{
-       SLOGD("Generate sessiond skel image for fast session add - triggered by %s package deinstallation", packageId);
-       return gen_skel();
-}
-
-EXPORT_API
-int PKGMGR_PARSER_PLUGIN_PRE_UPGRADE(const char* packageId)
-{
-       return 0;
-}
-
-EXPORT_API
-int PKGMGR_PARSER_PLUGIN_UPGRADE(xmlDocPtr docPtr, const char* packageId)
-{
-       return 0;
-}
-
-EXPORT_API
-int PKGMGR_PARSER_PLUGIN_POST_UPGRADE(const char* packageId)
-{
-       SLOGD("Generate sessiond skel image for fast session add - triggered by %s package upgrade", packageId);
-       return gen_skel();
-}