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;
151 std::set< std::pair<std::string,time_t> > dependencies;
152 std::set<std::string> alias;
153 std::set<std::string> files;
155 typedef std::map<std::string, pkginfo_t> packages_t;
156 typedef std::map<std::string, std::string> alias_t;
183 explicit Pkgdbh(
const std::string& name);
187 virtual void parseArguments(
int argc,
char** argv);
188 virtual void run(
int argc,
char** argv) {};
189 virtual void run() {};
191 virtual void printHelp()
const {};
193 virtual void progressInfo();
194 virtual void treatErrors(
const std::string& s)
const;
197 void print_version()
const;
198 int getNumberOfPackages();
199 std::set<std::string> getListOfPackageName();
200 bool checkPackageNameExist(
const std::string& name)
const;
201 unsigned int getFilesNumber();
202 unsigned int getInstalledFilesNumber();
203 std::set<std::string> getFilesList();
208 std::set<std::string> getFilesOfPackage(
const std::string& packageName);
209 int getListOfPackageNames(
const std::string& path);
210 std::pair<std::string, pkginfo_t> getInfosPackage(
const std::string& packageName);
217 const std::string& packageName);
220 void addPackageFilesRefsToDB(
const std::string& name,
223 bool checkPackageNameUptodate(
const std::pair<std::string,
225 bool checkPackageNameBuildDateSame(
const std::pair<std::string,
226 time_t>& dependencieNameBuild);
231 void removePackageFiles(
const std::string& name);
232 void removePackageFiles(
const std::string& name,
233 const std::set<std::string>& keep_list);
238 void removePackageFilesRefsFromDB(
const std::string& name);
239 void removePackageFilesRefsFromDB(std::set<std::string> files,
240 const std::set<std::string>& keep_list);
241 std::set<std::string> getConflictsFilesList(
const std::string& name,
245 std::pair<std::string, pkginfo_t> openArchivePackage(
const std::string& filename);
246 std::set< std::pair<std::string, time_t> > getPackageDependencies(
const std::string& filename);
247 void extractAndRunPREfromPackage(
const std::string& filename);
248 void installArchivePackage(
const std::string& filename,
249 const std::set<std::string>& keep_list,
250 const std::set<std::string>& non_install_files);
255 void moveMetaFilesPackage(
const std::string& name,
pkginfo_t& info);
258 void readRulesFile();
259 void getInstallRulesList(
const std::vector<rule_t>& rules,
260 rule_event_t event, std::vector<rule_t>& found)
const;
261 bool checkRuleAppliesToFile(
const rule_t& rule,
262 const std::string& file);
264 void getFootprintPackage(std::string& filename);
266 std::string m_packageArchiveName;
267 std::string m_packageName;
268 std::string m_packageArchiveVersion;
269 std::string m_packageArchiveRelease;
270 std::string m_packageArchiveCollection;
271 std::string m_packageVersion;
272 std::string m_packageRelease;
273 std::string m_packageCollection;
274 std::string m_utilName;
277 std::vector<rule_t> m_actionRules;
278 std::set< std::pair<std::string, int> > m_postInstallList;
279 alias_t m_listOfAlias;
281 packages_t m_listOfInstPackages;
282 packages_t m_listOfDepotPackages;
284 action m_actualAction;
289 void runLastPostInstall();
291 std::set<std::string> m_runtimeLibrariesList;
292 std::set<std::string> m_filesList;
293 std::set<std::string> m_packageNamesList;
294 unsigned int m_filesNumber;
295 unsigned int m_installedFilesNumber;
304 Db_lock(
const std::string& m_root,
bool exclusive);
309 struct sigaction m_sa;
313 void assertArgument(
char** argv,
int argc,
int index);
314 void rotatingCursor();
Definition: libcards.h:1450
Definition: libcards.h:1489
void buildSimpleDatabase()
Definition: pkgdbh.cxx:479
void buildCompleteDatabase(const bool &silent)
Definition: pkgdbh.cxx:538
void buildDatabase(const bool &progress, const bool &simple, const bool &all, const bool &files, const std::string &packageName)
Definition: pkgdbh.cxx:363
Definition: libcards.h:1617
Definition: libcards.h:1495