- Explicitly stat(2) if mkdir failed. errno detection doesn't work e.g.
on Solaris (PR 45289)
- Provide a stable order for package names that only differe in the base
name, not the version number.
Problem analysis from Anthony:
On Wednesday, at 23:52, Anthony Mallet wrote:
> # rm -rf ~tmp && mkdir ~/tmp
> # pkg_add -K ~/tmp/var/db/pkg -p ~/tmp /usr/pkgsrc/packages/All/digest-20080510.tgz
> # pkg_add -U -K ~/tmp/var/db/pkg -p ~/tmp /usr/pkgsrc/packages/All/digest-20080510.tgz
> pkg_delete: Couldn't remove package directory in `/home/tho/tmp/var/db/pkg/digest-20080510'
> Also, the dir var/db/pkg/digest-20080510.xxxxxxx is never cleaned.
>
> The problem apparently is that pkg_delete finds some stalled NFS entries
> (.nfs*) in the var/db/pkg/digest-20080510 dir, so it does not delete the
> directory. Is this due to pkg_add not correctly closing file descriptors before
> exec'ing pkg_delete? For instance, I really don't understand the logic in
> check_already_installed() (add/perform.c:375) regarding the open() of +CONTENTS
> which is almost never closed (and never used as well...). Shouldn't this be
> closed before running pkg_delete?
ktrace shows that the +CONTENTS file is open() by pkg_add, I believe this is in
check_already_installed(), add/perform.c:381. Then pkg_delete is run and when
it comes to deleting the pkgdir entry, it finds that .nfs file and aborts.
Bump version to 20110805
all depending packages have their dependencies satisfied by the new
package. Essentially, split off this particular behavior as a special
case of -f, so that -f works as before, unforced works as before, and
one can give -D to override exactly this check, leaving all other
checks intact.
The -D flag is in support of make replace, as the workflow for make
replace is that inter-package dependencies are sometimes violated (but
then one must replace the depending packages, which is what
pkg_rolling-replace does via the unsafe_depends flags).
Bump PKGTOOLS_VERSION.
Add missing break statement in option parsing of "pkg_add -C", riding
the version bump.
Discussed extensively on tech-pkg@ over the summer.
OK pkgsrc-pmc@.
- Recognize -C for pkg_add like the rest of the tools do
- Do the existing check for pkg_add -f, it makes the combination of
-f and -U a bit less surprising
- Fix option handling for CHECK_VULNERABILITIES (from spz@)
- Make end-of-life check the default. pkg_install.conf(5) can be used to
override the default. The existing admin -e & co continue to work as
before.
Extract dependencies of libarchive from the pkgconfig file and thereby
drop knowledge of the needed libraries.
At least some versions of HP-UX are known to not support %zu, add a
workaround. This is using the black list approach for now.
Recognize xz as compression type for pkg_create.
The first time an error is hit while fetching packages, try to reget
from the same position. This works around the server closing the
connection while fetching dependencies.
- Try to detect common forms of pkgdb corruption and issue a warning in
that case.
- Refactor the pkg_vulnerabilities logic to use the compression support
from libarchive. This reduces the amount zlib/bzip2 interaction to the
linkage.