---
name: "OpenBSD::PkgCfl"
section: "3p"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["openbsd"]
url: "https://new.carta.tech/OpenBSD::PkgCfl"
---

# OpenBSD::PkgCfl(3p)

"pkg\_create(1)" "@conflict" handling

## NAME

OpenBSD::PkgCfl - "[pkg\_create(1)](/pkg_create/1.md)" "@conflict" handling

## SYNOPSIS

```
    use OpenBSD::PkgCfl;
    $clist = OpenBSD::PkgCfl->make_conflicts_list($plist);
    @cfls = $clist->conflicts_with(@pkgnames);
    OpenBSD::PkgCfl::register($plist, $state);
    OpenBSD::PkgCfl::unregister($plist, $state);
    @cfls = OpenBSD::PkgCfl::find_all($plist, $state);
```

## DESCRIPTION

`"OpenBSD::PkgCfl"` is the canonical interface to packing-list conflict handling.

Conflict information can be extracted from a packing-list (see OpenBSD::PackingList) through the `"OpenBSD::PkgCfl"` class method. The result is an opaque object `$clist` that can be queried to find out which package names conflict with the packing-list.   A query of the form `"$clist->conflicts_with(@pkgnames)"` will extract from the list the package names that actually conflict with the packing-list.

Most handling of conflict information happens through the higher level interface: `"OpenBSD::PkgCfl::register"`, `"OpenBSD::PkgCfl::unregister"` and `"OpenBSD::PkgCfl::find_all"`.  Package tools usually handle installed packages, and this interface automatically takes the initial set of installed packages into account. The `"register"` and `"unregister"` functions must be used to add and remove a packing-list from the set of installed packages, where conflict information is concerned.

The `"find_all"` function can be used to find out about all possible conflicts a new packing-list will entail, before actually adding the package.

The extra argument `$state` is a hash used to record system-wide options. In this case, it acts as a hidden object that records all conflict information. The hash key `"conflict_list"` is reserved for that purpose.
