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 "
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 ""
122PKG_POSTINSTALL_START,
137 std::string collection;
138 std::string description;
139 std::string signature;
144 std::string contributors;
145 std::string packager;
146 std::string maintainer;
151 std::set< std::pair<std::string,time_t> > dependencies;
152 std::set<std::string> alias;
153 std::set<std::string> set;
154 std::set<std::string> categories;
155 std::set<std::string> files;
157typedef std::map<std::string, pkginfo_t> packages_t;
158typedef std::map<std::string, std::string> alias_t;
185 explicit Pkgdbh(
const std::string& name);
189 virtual void parseArguments(
int argc,
char** argv);
190 virtual void run(
int argc,
char** argv) {};
191 virtual void run() {};
193 virtual void printHelp()
const {};
195 virtual void progressInfo();
196 virtual void treatErrors(
const std::string& s)
const;
199 void print_version()
const;
200 int getNumberOfPackages();
201 std::set<std::string> getListOfPackageName();
203 bool checkPackageNameExist(
const std::string& name)
const;
204 bool checkDependency(
const std::string& name);
205 void setDependency();
206 void resetDependency();
208 unsigned int getFilesNumber();
209 unsigned int getInstalledFilesNumber();
210 std::set<std::string> getFilesList();
215 std::set<std::string> getFilesOfPackage(
const std::string& packageName);
216 int getListOfPackageNames(
const std::string& path);
217 std::pair<std::string, pkginfo_t> getInfosPackage(
const std::string& packageName);
226 const std::string& packageName);
229 void addPackageFilesRefsToDB(
const std::string& name,
232 bool checkPackageNameUptodate(
const std::pair<std::string,
234 bool checkPackageNameBuildDateSame(
const std::pair<std::string,
235 time_t>& dependencieNameBuild);
240 void removePackageFiles(
const std::string& name);
241 void removePackageFiles(
const std::string& name,
242 const std::set<std::string>& keep_list);
247 void removePackageFilesRefsFromDB(
const std::string& name);
248 void removePackageFilesRefsFromDB(std::set<std::string> files,
249 const std::set<std::string>& keep_list);
250 std::set<std::string> getConflictsFilesList(
const std::string& name,
254 std::pair<std::string, pkginfo_t> openArchivePackage(
const std::string& filename);
255 std::set< std::pair<std::string, time_t> > getPackageDependencies(
const std::string& filename);
256 void extractAndRunPREfromPackage(
const std::string& filename);
257 void installArchivePackage(
const std::string& filename,
258 const std::set<std::string>& keep_list,
259 const std::set<std::string>& non_install_files);
264 void moveMetaFilesPackage(
const std::string& name,
pkginfo_t& info);
267 void readRulesFile();
268 void getInstallRulesList(
const std::vector<rule_t>& rules,
269 rule_event_t event, std::vector<rule_t>& found)
const;
270 bool checkRuleAppliesToFile(
const rule_t& rule,
271 const std::string& file);
273 void getFootprintPackage(std::string& filename);
275 std::string m_packageArchiveName;
276 std::string m_packageName;
277 std::string m_packageArchiveVersion;
278 std::string m_packageArchiveRelease;
279 std::string m_packageArchiveCollection;
280 std::string m_packageVersion;
281 std::string m_packageRelease;
282 std::string m_packageCollection;
283 std::string m_utilName;
286 std::vector<rule_t> m_actionRules;
287 std::set< std::pair<std::string, int> > m_postInstallList;
288 alias_t m_listOfAlias;
290 packages_t m_listOfInstPackages;
291 packages_t m_listOfDepotPackages;
293 std::set<std::pair<std::string,std::set<std::string> > > m_listOfInstalledPackagesWithDeps;
295 action m_actualAction;
300 void runLastPostInstall();
302 std::set<std::string> m_runtimeLibrariesList;
303 std::set<std::string> m_filesList;
304 std::set<std::string> m_packageNamesList;
305 unsigned int m_filesNumber;
306 unsigned int m_installedFilesNumber;
316 Db_lock(
const std::string& m_root,
bool exclusive);
321 struct sigaction m_sa;
325void assertArgument(
char** argv,
int argc,
int index);
326void rotatingCursor();
Definition: libcards.h:1662
Definition: libcards.h:1530
void buildSimpleDatabase()
Definition: pkgdbh.cxx:506
void buildSimpleDependenciesDatabase()
Definition: pkgdbh.cxx:475
void buildCompleteDatabase(const bool &silent)
Definition: pkgdbh.cxx:572
void buildDatabase(const bool &progress, const bool &simple, const bool &all, const bool &files, const std::string &packageName)
Definition: pkgdbh.cxx:361
Definition: libcards.h:1483
Definition: libcards.h:1524