ports/56960: [PATCH] bsd.port.mk: Don't accept PORTVERSIONS that pkg_version can't handle

Oliver Eikemeier eikemeier at fillmore-labs.com
Wed Sep 17 17:30:23 UTC 2003


>Number:         56960
>Category:       ports
>Synopsis:       [PATCH] bsd.port.mk: Don't accept PORTVERSIONS that pkg_version can't handle
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Sep 17 10:30:17 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Oliver Eikemeier
>Release:        FreeBSD 5.1-CURRENT i386
>Organization:
Fillmore Labs - http://www.fillmore-labs.com
>Environment:
System: FreeBSD nuuk.fillmore-labs.com 5.1-CURRENT

>Description:

pkg_version (and portupgrade) have to scan PKGNAME for version number.
They look for the last '-', so if PORTVERSION contains a hyphen they
miss the most significant part of the version number.

For a list of ports with a hyphen in their version see PR 56958.

>How-To-Repeat:
>Fix:

The following patch marks ports with non-conforming version numbers as BROKEN and
builds the with the special characters replaced by dots.

--- bsd.port.mk.patch begins here ---
--- bsd.port.mk.orig	Wed Sep  3 21:50:24 2003
+++ bsd.port.mk	Wed Sep 17 19:05:21 2003
@@ -935,6 +935,10 @@
 	@${FALSE}
 .endif
 
+.if ${PORTVERSION:M*[-_,]*}x != x
+BROKEN=		"PORTVERSION ${PORTVERSION} may not contain '-' '_' or ','"
+.endif
+
 PORTREVISION?=	0
 .if ${PORTREVISION} != 0
 _SUF1=	_${PORTREVISION}
@@ -945,7 +949,7 @@
 _SUF2=	,${PORTEPOCH}
 .endif
 
-PKGNAME=	${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}${_SUF1}${_SUF2}
+PKGNAME=	${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION:C/[-_,]/./g}${_SUF1}${_SUF2}
 DISTNAME?=	${PORTNAME}-${PORTVERSION}
 
 # These need to be absolute since we don't know how deep in the ports
--- bsd.port.mk.patch begins here ---

Of course, the Makefile could catch more cases with:
.if ${PORTVERSION:C/[^0-9a-z.]/_/:M*_*}x != x
BROKEN=		"PORTVERSION ${PORTVERSION} may only consist of lowercase letters, numbers and dots"
.endif

and

PKGNAME=	${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION:L:C/[^0-9a-z.]/./g}${_SUF1}${_SUF2}

or at least do

PKGNAME=	${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION:C/[-_,+]/./g}${_SUF1}${_SUF2}

to catch cases like 1.0+2003.11.17 < 1.0.1+2003.11.17.

The decision is up to portmgr@

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



More information about the freebsd-ports-bugs mailing list