ports/110693: Port does not rebuild newer version if work dir of old versions are not removed

Yoshihiro Ota ota at j.email.ne.jp
Fri Mar 23 05:00:11 UTC 2007


>Number:         110693
>Category:       ports
>Synopsis:       Port does not rebuild newer version if work dir of old versions are not removed
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Mar 23 05:00:11 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Yoshihiro Ota
>Release:        7.0-CURRENT
>Organization:
>Environment:
latest port tree
>Description:
Port installs older version/revision if you don't cleanup your work directories.

Even if port revision number increases after updaing ports tree, the previous revision is installed since *_COOKIEs only use port's name only.

In my case, I did csup and then 'cd /usr/ports/x11/gnome && make install' everyday until it finishes.  It took about a week to install all dependencies.  During the period some ports were updated and version number or revision number were increased.  In one of the run-depend chains, it required the newest port, but port build system didn't rebuild it because an old version was already built and was there.

I do not run 'make clean' because it takes very long time.  Instead, I have WRKDIRPREFIX set and have one filesystem assigned for port work areas so that I can use newfs to wipe out everything.
>How-To-Repeat:
This could be done with any ports, but, for example,

% cd /usr/ports/ports-mgmt/pkg_tree
% make install
% vi Makefile -- increase PORTREVISION from 1 to 2.
% make {de,re}install OR portupgrade -wW pkg_tree

This installs the old (revision 1) version but installed package has revision 2.
>Fix:


Patch attached with submission follows:

--- Mk/bsd.port.mk.orig	Wed Mar  7 01:58:20 2007
+++ Mk/bsd.port.mk	Wed Mar  7 21:18:46 2007
@@ -2088,12 +2088,13 @@
 REINPLACE_CMD?=	${SED} ${REINPLACE_ARGS}
 
 # Names of cookies used to skip already completed stages
-EXTRACT_COOKIE?=	${WRKDIR}/.extract_done.${PORTNAME}.${PREFIX:S/\//_/g}
-CONFIGURE_COOKIE?=	${WRKDIR}/.configure_done.${PORTNAME}.${PREFIX:S/\//_/g}
-INSTALL_COOKIE?=	${WRKDIR}/.install_done.${PORTNAME}.${PREFIX:S/\//_/g}
-BUILD_COOKIE?=		${WRKDIR}/.build_done.${PORTNAME}.${PREFIX:S/\//_/g}
-PATCH_COOKIE?=		${WRKDIR}/.patch_done.${PORTNAME}.${PREFIX:S/\//_/g}
-PACKAGE_COOKIE?=	${WRKDIR}/.package_done.${PORTNAME}.${PREFIX:S/\//_/g}
+COOKIE_SUFFIX?=	${PORTNAME}-${PORTVERSION}_${PORTREVISION}.${PREFIX:S/\//_/g}
+EXTRACT_COOKIE?=	${WRKDIR}/.extract_done.${COOKIE_SUFFIX}
+CONFIGURE_COOKIE?=	${WRKDIR}/.configure_done.${COOKIE_SUFFIX}
+INSTALL_COOKIE?=	${WRKDIR}/.install_done.${COOKIE_SUFFIX}
+BUILD_COOKIE?=		${WRKDIR}/.build_done.${COOKIE_SUFFIX}
+PATCH_COOKIE?=		${WRKDIR}/.patch_done.${COOKIE_SUFFIX}
+PACKAGE_COOKIE?=	${WRKDIR}/.package_done.${COOKIE_SUFFIX}
 
 # How to do nothing.  Override if you, for some strange reason, would rather
 # do something.

>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list