31 #include "archive_utils.h" 32 #include "file_utils.h" 40 #include <ext/stdio_filebuf.h> 44 #define PKG_DB_DIR "var/lib/pkg/DB/" 45 #define PKG_FILES "/files" 46 #define PKG_META "META" 47 #define PKG_RECEPT "Pkgfile" 48 #define PKG_README "README" 49 #define PKG_PRE_INSTALL ".PRE" 50 #define PKG_POST_INSTALL ".POST" 52 #define PKG_REJECTED "var/lib/pkg/rejected" 53 #define PKGADD_CONF "var/lib/pkg/pkgadd.conf" 54 #define PKGADD_CONF_MAXLINE 1024 56 #define LDCONFIG "sbin/ldconfig" 57 #define LDCONFIG_CONF "etc/ld.so.conf" 58 #define LDCONFIG_CONF_ARGS "-r " 59 #define SHELL "bin/sh" 62 #define INSTALL_INFO "usr/bin/install-info" 63 #define INSTALL_INFO_ARGS "--info-dir=usr/share/info " 66 #define UPDATE_ICON "usr/bin/gtk-update-icon-cache" 67 #define UPDATE_ICON_ARGS "-f -t " 70 #define COMPILE_SCHEMAS "usr/bin/glib-compile-schemas" 71 #define COMPILE_SCHEMAS_ARGS "" 74 #define UPDATE_DESKTOP_DB "usr/bin/update-desktop-database" 75 #define UPDATE_DESKTOP_DB_ARGS "-q " 78 #define UPDATE_MIME_DB "usr/bin/update-mime-database" 79 #define UPDATE_MIME_DB_ARGS "-n " 82 #define GDK_PIXBUF_QUERY_LOADER "usr/bin/gdk-pixbuf-query-loaders" 83 #define GDK_PIXBUF_QUERY_LOADER_ARGS "--update-cache" 86 #define GIO_QUERYMODULES "usr/bin/gio-querymodules" 87 #define GIO_QUERYMODULES_ARGS "usr/lib/gio/modules" 90 #define QUERY_IMMODULES_3 "usr/bin/gtk-query-immodules-3.0" 91 #define QUERY_IMMODULES_3_ARGS "--update-cache" 94 #define QUERY_IMMODULES_2 "usr/bin/gtk-query-immodules-2.0" 95 #define QUERY_IMMODULES_2_ARGS "--update-cache" 98 #define MKFONTDIR "usr/bin/mkfontdir" 99 #define MKFONTDIR_ARGS "" 102 #define MKFONTSCALE "usr/bin/mkfontscale" 103 #define MKFONTSCALE_ARGS "" 106 #define FC_CACHE "usr/bin/fc-cache" 107 #define FC_CACHE_ARGS "" 117 PKG_PREINSTALL_START,
122 PKG_POSTINSTALL_START,
138 std::string collection;
139 std::string description;
140 std::string signature;
145 std::string contributors;
146 std::string packager;
147 std::string maintainer;
152 std::set< std::pair<std::string,time_t> > dependencies;
153 std::set<std::string> alias;
154 std::set<std::string> files;
156 typedef std::map<std::string, pkginfo_t> packages_t;
157 typedef std::map<std::string, std::string> alias_t;
184 explicit Pkgdbh(
const std::string& name);
188 virtual void parseArguments(
int argc,
char** argv);
189 virtual void run(
int argc,
char** argv) {};
190 virtual void run() {};
192 virtual void printHelp()
const {};
194 virtual void progressInfo();
195 virtual void treatErrors(
const std::string& s)
const;
198 void print_version()
const;
199 int getNumberOfPackages();
200 std::set<std::string> getListOfPackageName();
202 bool checkPackageNameExist(
const std::string& name)
const;
203 bool checkDependency(
const std::string& name);
204 void setDependency();
205 void resetDependency();
207 unsigned int getFilesNumber();
208 unsigned int getInstalledFilesNumber();
209 std::set<std::string> getFilesList();
214 std::set<std::string> getFilesOfPackage(
const std::string& packageName);
215 int getListOfPackageNames(
const std::string& path);
216 std::pair<std::string, pkginfo_t> getInfosPackage(
const std::string& packageName);
225 const std::string& packageName);
228 void addPackageFilesRefsToDB(
const std::string& name,
231 bool checkPackageNameUptodate(
const std::pair<std::string,
233 bool checkPackageNameBuildDateSame(
const std::pair<std::string,
234 time_t>& dependencieNameBuild);
239 void removePackageFiles(
const std::string& name);
240 void removePackageFiles(
const std::string& name,
241 const std::set<std::string>& keep_list);
246 void removePackageFilesRefsFromDB(
const std::string& name);
247 void removePackageFilesRefsFromDB(std::set<std::string> files,
248 const std::set<std::string>& keep_list);
249 std::set<std::string> getConflictsFilesList(
const std::string& name,
253 std::pair<std::string, pkginfo_t> openArchivePackage(
const std::string& filename);
254 std::set< std::pair<std::string, time_t> > getPackageDependencies(
const std::string& filename);
255 void extractAndRunPREfromPackage(
const std::string& filename);
256 void installArchivePackage(
const std::string& filename,
257 const std::set<std::string>& keep_list,
258 const std::set<std::string>& non_install_files);
263 void moveMetaFilesPackage(
const std::string& name,
pkginfo_t& info);
266 void readRulesFile();
267 void getInstallRulesList(
const std::vector<rule_t>& rules,
268 rule_event_t event, std::vector<rule_t>& found)
const;
269 bool checkRuleAppliesToFile(
const rule_t& rule,
270 const std::string& file);
272 void getFootprintPackage(std::string& filename);
274 std::string m_packageArchiveName;
275 std::string m_packageName;
276 std::string m_packageArchiveVersion;
277 std::string m_packageArchiveRelease;
278 std::string m_packageArchiveCollection;
279 std::string m_packageVersion;
280 std::string m_packageRelease;
281 std::string m_packageCollection;
282 std::string m_utilName;
285 std::vector<rule_t> m_actionRules;
286 std::set< std::pair<std::string, int> > m_postInstallList;
287 alias_t m_listOfAlias;
289 packages_t m_listOfInstPackages;
290 packages_t m_listOfDepotPackages;
292 std::set<std::pair<std::string,std::set<std::string> > > m_listOfInstalledPackagesWithDeps;
294 action m_actualAction;
299 void runLastPostInstall();
301 std::set<std::string> m_runtimeLibrariesList;
302 std::set<std::string> m_filesList;
303 std::set<std::string> m_packageNamesList;
304 unsigned int m_filesNumber;
305 unsigned int m_installedFilesNumber;
315 Db_lock(
const std::string& m_root,
bool exclusive);
320 struct sigaction m_sa;
324 void assertArgument(
char** argv,
int argc,
int index);
325 void rotatingCursor();
Definition: libcards.h:1456
Definition: libcards.h:1496
void buildSimpleDependenciesDatabase()
Definition: pkgdbh.cxx:464
void buildSimpleDatabase()
Definition: pkgdbh.cxx:494
void buildCompleteDatabase(const bool &silent)
Definition: pkgdbh.cxx:560
void buildDatabase(const bool &progress, const bool &simple, const bool &all, const bool &files, const std::string &packageName)
Definition: pkgdbh.cxx:355
Definition: libcards.h:1634
Definition: libcards.h:1502