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