dpkg 1.22.7-3-g89f48
|
#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. | |
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(), deferred_remove(), and process_archive().
void trigproc | ( | struct pkginfo * | pkg, |
enum trigproc_type | type | ||
) |
References _, pkginfo::clientdata, dbg_triggers, debug(), DEP_CHECK_DEFER, DEP_CHECK_HALT, DEPEND_TRY_CYCLES, DEPEND_TRY_TRIGGERS, DEPEND_TRY_TRIGGERS_CYCLES, dependencies_ok(), enqueue_package(), ensure_package_clientdata(), f_noact, findbreakcycle(), pkginfo::installed, internerr, log_action(), maintscript_postinst(), modstatdb_note(), trigpend::name, trigpend::next, notice(), ohshit(), pkg_list::pkg, pkg_name(), pkg_set_status(), PKG_STAT_HALFCONFIGURED, PKG_STAT_INSTALLED, PKG_STAT_TRIGGERSAWAITED, PKG_STAT_TRIGGERSPENDING, pkg_status_name(), pnaw_always, pnaw_nonambig, post_postinst_tasks(), sincenothing, pkginfo::status, trig_clear_awaiters(), pkginfo::trigpend_head, trigproc_reset_cycle(), TRIGPROC_TRY_DEFERRED, TRIGPROC_TRY_QUEUED, perpackagestate::trigprocdeferred, varbuf::used, varbuf_add_char(), varbuf_add_str, varbuf_destroy(), VARBUF_INIT, varbuf_reset(), varbuf_str(), vdew_nonambig, pkgbin::version, and versiondescribe().
Referenced by process_queue(), and trigproc_run_deferred().
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_free(), 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 pkginfo::clientdata, dbg_triggers, debug(), ehflag_bombout, ehflag_normaltidy, ensure_package_clientdata(), pkg_name(), pkg_queue_is_empty(), pkg_queue_pop(), pnaw_nonambig, pop_error_context(), print_error_perpackage(), push_error_context_jump(), trigproc(), TRIGPROC_TRY_DEFERRED, and perpackagestate::trigprocdeferred.
Referenced by archivefiles(), and packages().