Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Sep 2006 09:51:42 +0300
From:      Vasil Dimov <vd@FreeBSD.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        portmgr@FreeBSD.org
Subject:   ports/103606: [patch] bsd.port.mk: check-already-installed target does not catch old versions of installed packages
Message-ID:  <20060925065142.GA82828@qlovarnika.bg.datamax>
Resent-Message-ID: <200609250700.k8P70ahG065857@freefall.freebsd.org>

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

>Number:         103606
>Category:       ports
>Synopsis:       [patch] bsd.port.mk: check-already-installed target does not catch old versions of installed packages
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Sep 25 07:00:35 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Vasil Dimov
>Release:        FreeBSD 6.2-PRERELEASE amd64
>Organization:
N/A
>Environment:

>Description:

bsd.port.mk reads the following:

3783                                  if [ -n "$${df}" ]; then \
3784                                          found_package=$${p}; \
3785                                          break; \
3786                                  fi; \
3787                          fi; \
3788                  done; \
3789          fi ; \
3790          if [ -d ${PKG_DBDIR}/${PKGNAME} -o -n "$${found_package}" ]; the

Notice the shell started at line 3790 is different from the one which
sets $found_package and thus the variable contents is lost for the
test on 3790 line.

This results in new versions of packages being installed although
the old versions are not deinstalled (e.g. a compleat mess).

>How-To-Repeat:

/usr/ports/security/libgpg-error# make -V PKGNAME
libgpg-error-1.4
/usr/ports/security/libgpg-error# ls -ld /var/db/pkg/libgpg-error-1.3
drwxr-xr-x  2 root  wheel  512 Sep 23 02:46 /var/db/pkg/libgpg-error-1.3
/usr/ports/security/libgpg-error# make check-already-installed
===>  Checking if security/libgpg-error already installed
/usr/ports/security/libgpg-error# echo $?
0
/usr/ports/security/libgpg-error#

>Fix:

--- bsd.port.mk_check-already-installed.diff begins here ---
Index: bsd.port.mk
===================================================================
RCS file: /home/pcvs/ports/Mk/bsd.port.mk,v
retrieving revision 1.543
diff -u -r1.543 bsd.port.mk
--- bsd.port.mk	20 Sep 2006 04:04:05 -0000	1.543
+++ bsd.port.mk	25 Sep 2006 06:37:47 -0000
@@ -3786,8 +3786,8 @@
 								fi; \
 						fi; \
 				done; \
-		fi
-		@if [ -d ${PKG_DBDIR}/${PKGNAME} -o -n "$${found_package}" ]; then \
+		fi ; \
+		if [ -d ${PKG_DBDIR}/${PKGNAME} -o -n "$${found_package}" ]; then \
 				if [ -d ${PKG_DBDIR}/${PKGNAME} ]; then \
 					if [ -z "${DESTDIR}" ] ; then \
 						${ECHO_CMD} "===>   ${PKGNAME} is already installed"; \
--- bsd.port.mk_check-already-installed.diff ends here ---


-- 
Vasil Dimov
gro.DSBeerF@dv
%
The man who sets out to carry a cat by its tail learns something that
will always be useful and which never will grow dim or doubtful.
                -- Mark Twain
>Release-Note:
>Audit-Trail:
>Unformatted:



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