pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/38272: PKG_TOOLS_BIN may need reevaluation after installation of pkg_install



>Number:         38272
>Category:       pkg
>Synopsis:       PKG_TOOLS_BIN may need reevaluation after installation of 
>pkg_install
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Mar 21 20:50:00 +0000 2008
>Originator:     Gavan Fantom
>Release:        NetBSD 4.0_BETA2
>Organization:
>Environment:
>Description:
Nowadays, pkg_install is pulled in as a bootstrap dependency instead of forcing 
a build failure.

Unfortunately, if the upgrade of pkg_install is from a version which was 
previously installed in /usr/sbin, pkgsrc will continue to use package tools 
from /usr/sbin until the next invocation of make.

This stems from the fact that PKG_TOOLS_BIN is set in platform/NetBSD.mk like 
this:

.if exists(${LOCALBASE}/sbin/pkg_info)
PKG_TOOLS_BIN?=         ${LOCALBASE}/sbin
.else
PKG_TOOLS_BIN?=         /usr/sbin
.endif

At the time that platform/NetBSD.mk is parsed, there is no 
${LOCALBASE}/sbin/pkg_info, so PKG_TOOLS_BIN is correctly set to /usr/sbin.

However, the change to making the update of pkg_install into a dependency 
rather than a separate incovation of make means that PKG_TOOLS_BIN will stay as 
/usr/sbin for the rest of the current invocation of make.

This will only affect NetBSD, since at present all other platforms define 
PKG_TOOLS_BIN to always be ${LOCALBASE}/sbin.

While I have been testing this using pkg_comp so that I don't have to trash the 
tools on a machine I care about, I believe this will equally apply with vanilla 
pkgsrc.
>How-To-Repeat:
Install NetBSD (a version with pkg_info which doesn't understand -E)
Install pkgsrc
Build a package
Watch as pkg_install is installed as a dependency, but the build subsequently 
fails because it thinks that pkg_install isn't installed due to it using the 
old pkg_info which doesn't understand -E.
Build the same package again
Watch as the package successfully builds

Of course, pkg_comp makes this easier.

>Fix:
Ensure that PKG_TOOLS_BIN gets reevaluated appropriately.
I can't think of a way of doing this within BSD make (although my make foo has 
got a little rusty of late). Perhaps we need a framework for continuing 
execution within a new make process.



Home | Main Index | Thread Index | Old Index