dpkg 1.21.11
|
#include <config.h>
#include <compat.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <dpkg/i18n.h>
#include <dpkg/dpkg.h>
#include <dpkg/dpkg-db.h>
#include <dpkg/pkg.h>
#include <dpkg/pkg-queue.h>
#include <dpkg/db-ctrl.h>
#include <dpkg/db-fsys.h>
#include <dpkg/triglib.h>
#include "main.h"
Data Structures | |
struct | trigcyclenode |
struct | trigcycleperpkg |
Functions | |
void | trigproc_populate_deferred (void) |
Populate the deferred trigger queue. More... | |
void | trigproc_run_deferred (void) |
void | trig_activate_packageprocessing (struct pkginfo *pkg) |
void | trigproc_reset_cycle (void) |
void | trigproc (struct pkginfo *pkg, enum trigproc_type type) |
void | trigproc_install_hooks (void) |
void trig_activate_packageprocessing | ( | struct pkginfo * | pkg | ) |
References dbg_triggersdetail, debug(), pkginfo::installed, pkg_infodb_get_file(), pkg_name(), pnaw_always, trig_cicb_statuschange_activate(), trig_parse_ci(), and TRIGGERSCIFILE.
Referenced by deferred_configure().
void trigproc | ( | struct pkginfo * | pkg, |
enum trigproc_type | type | ||
) |
References pkginfo::clientdata, dbg_triggers, debug(), DEP_CHECK_DEFER, DEPEND_TRY_CYCLES, DEPEND_TRY_TRIGGERS, DEPEND_TRY_TRIGGERS_CYCLES, dependencies_ok(), enqueue_package(), ensure_package_clientdata(), findbreakcycle(), internerr, pkg_list::pkg, pkg_name(), PKG_STAT_TRIGGERSAWAITED, PKG_STAT_TRIGGERSPENDING, pkg_status_name(), pnaw_always, sincenothing, pkginfo::status, pkginfo::trigpend_head, TRIGPROC_TRY_QUEUED, perpackagestate::trigprocdeferred, and VARBUF_INIT.
void trigproc_install_hooks | ( | void | ) |
References trig_override_hooks().
Referenced by archivefiles(), and packages().
void trigproc_populate_deferred | ( | void | ) |
Populate the deferred trigger queue.
When dpkg is called with a specific set of packages to act on, we might have packages pending trigger processing. But because there are frontends that do not perform a final «dpkg –configure –pending» call (i.e. apt), the system is left in a state with packages not fully installed.
We have to populate the deferred trigger queue from the entire package database, so that we might try to do opportunistic trigger processing when going through the deferred trigger queue, because a fixed apt will not request the necessary processing anyway.
XXX: This can be removed once apt is fixed in the next stable release.
References pkg_hash_iter_new(), pkg_hash_iter_next_pkg(), PKG_STAT_TRIGGERSAWAITED, PKG_STAT_TRIGGERSPENDING, PKG_WANT_HOLD, PKG_WANT_INSTALL, pkginfo::status, pkginfo::trigpend_head, and pkginfo::want.
void trigproc_reset_cycle | ( | void | ) |
void trigproc_run_deferred | ( | void | ) |
References dbg_triggers, debug(), and pkg_queue_is_empty().