pkgsrc/mk/flavor
gdt 7ce50f298b Repair regression in "make replace" in DESTDIR case.
"make replace" is defined to replace a package with a newer version,
and update depdending packages to depend on the new version.  It has
long been understood that this is not always safe, with the responses
being "tell people to be careful" and the unsafe_depends variable
scheme and pkg_rolling-replace.  In the DESTDIR case, make replace is
implemented by pkg_add -U.  Usually, this is fine - even if the
ABI/shlib majors have changed, the package is replaced, and then a
later make replace of unsafe_depends=YES packages, either manually or
via pkg_rolling-replace, will bring the system to where it should be.
However, there are pinned dependencies on osabi where the depending
package will not accept the new version, and that causes pkg_add -U to
fail.  This is incorrect, as a) those packages don't depend on the
osabi exact version any more than packages depending on jpeg depeend
on the particular shlib major, yet jpeg dependencies aren't pinned.
And, osabi changing version is not necessarily an ABI change -
consider 5.0_STABLE just before 5.1RC1 and just after, where only the
version string changed.

Therefore, add -f to pkg_add -U so that the update will succeed.
2010-06-12 00:53:43 +00:00
..
pkg Repair regression in "make replace" in DESTDIR case. 2010-06-12 00:53:43 +00:00
bsd.flavor-vars.mk Made the .include directives simpler, since the directory of the 2008-01-04 01:46:24 +00:00
bsd.flavor.mk Simpler .include lines. 2007-10-31 12:07:13 +00:00
README Add support for using USE_DESTDIR=yes and replace together. 2009-06-09 08:40:27 +00:00

$NetBSD: README,v 1.7 2009/06/09 08:40:27 joerg Exp $

= Introduction =

A package flavor is a packaging system that is supported by pkgsrc.
Currently, there is only one (the native pkgsrc tools), but maybe we can
support RPM, dpkg or the Solaris native packages someday. It can also be
used to test new variants of the packaging tools.

= Interface =

== Variables usable at load-time ==

A package system flavor must define the following variables so that they
can be used when loading Makefiles. (That is, no references to undefined
variables.)

=== Legacy ===

* PKG_DBDIR (TODO: Make the other parts of pkgsrc independent of that
  variable; this should go away.)

=== Packaging commands ===

The following variables all refer to shell commands, which must accept
some command line options that are detailed in the respective man pages.
(TODO: Find out which command line options are really used and which
ones are useful. Document them.)

* PKG_ADD
* PKG_ADMIN
* PKG_CREATE
* PKG_DELETE
* PKG_INFO
* PKG_VIEW
* LINKFARM
* PKG_BEST_EXISTS

The following variables must be defined so that they can be used in
shell commands. They may contain references to all other variables.

* PKG_FILELIST_CMD

XXX: Why isn't this variable in the previous list?

== Make targets ==

The following make targets must be implemented:

* _flavor-check-vulnerable
* _flavor-deinstall
* _flavor-show-depends
* _flavor-install-dependencies
* bootstrap-depends
* _flavor-register
* tarup (XXX: This doesn't sound like a target that should be defined
  here.)
* tarup-pkg
* package-install
* _flavor-replace
* _flavor-destdir-replace
* _flavor-undo-replace

= Bugs =

The name "flavor" is badly chosen, especially since flavor is such a
broad term that OpenBSD ports collection has chosen to implement
something entirely different using the same name. (This has happended
before pkgsrc has chosen to use this word, though, so no blame on them.)