Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Mar 2007 04:58:39 GMT
From:      Yoshihiro Ota<ota@j.email.ne.jp>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/110694: Port does not rebuild newer version if work dir of old versions are not removed
Message-ID:  <200703230458.l2N4wd6S010498@www.freebsd.org>
Resent-Message-ID: <200703230510.l2N5A5qP069742@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         110694
>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:10:05 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:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200703230458.l2N4wd6S010498>