Date: Sun, 19 Mar 2006 19:59:36 +1100 (EST) From: Edwin Groothuis <edwin@mavetju.org> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/94680: [patch] bsd.port.mk - introduce ONLY_FOR_OSVERSION as _REASON Message-ID: <20060319085936.D265F272@k7.mavetju> Resent-Message-ID: <200603190900.k2J90Uwo070923@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 94680 >Category: ports >Synopsis: [patch] bsd.port.mk - introduce ONLY_FOR_OSVERSION as _REASON >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: Sun Mar 19 09:00:29 GMT 2006 >Closed-Date: >Last-Modified: >Originator: Edwin Groothuis >Release: FreeBSD 6.0-RELEASE i386 >Organization: - >Environment: System: FreeBSD k7.mavetju 6.0-RELEASE FreeBSD 6.0-RELEASE #0: Thu Nov 3 09:36:13 UTC 2005 root@x64.samsco.home:/usr/obj/usr/src/sys/GENERIC i386 >Description: A lot of ports have this in them: .include <bsd.port.pre.mk> .if ${OSVERSION} < 400000 BROKEN= Not supported for pre-4.0 FreeBSD .endif .include <bsd.port.pre.mk> .if ${OSVERSION} >= 502126 BROKEN= Does not compile on FreeBSD >= 5.x .endif .include <bsd.port.pre.mk> .if ${OSVERSION} < 500000 BROKEN= Does not compile on 4.x (port and dependencies need recent C++ compiler) .endif It would be much more in the trend of ONLY_FOR_ARCHS and NOT_FOR_ARCHS to use normal messages for this: ONLY_FOR_OSVERSION= 400000+ ONLY_FOR_OSVERSION_REASON= Not supported for pre-4.0 FreeBSD ONLY_FOR_OSVERSION= -502126 ONLY_FOR_OSVERSION_REASON= Does not compile on FreeBSD >= 5.x ONLY_FOR_OSVERSION= 500000+ ONLY_FOR_OSVERSION_REASON= Does not compile on 4.x (port and dependencies need recent C++ compiler) Which would give as output: ===> rdist-6.1.5_2 is marked as broken: Not supported for pre-4.0 FreeBSD. ===> rdist-6.1.5_2 is marked as broken: Requires OSVERSION 400000 or later: Not supported for pre-4.0 FreeBSD. ===> nil-000928_2 is marked as broken: Does not compile on FreeBSD >= 5.x ===> nil-000928_2 is marked as broken: Requires OSVERSION 502126 or earlier: Does not compile on FreeBSD >= 5.x. ===> vamos-0.5.5_2 is marked as broken: "Does not compile on 4.x (port and dependencies need recent C++ compiler)". ===> vamos-0.5.5_2 is marked as broken: Requires OSVERSION 500000 or later: Does not compile on 4.x (port and dependencies need recent C++ compiler). It will also give other scripts (freshports, linimons portlist) the possibilities to give better data back to the users, and people who want to do sweeps of the port collection a chance to find ports which can be cleaned up ("port requires FreeBSD < 4") or checks which can be removed ("Port requires FreeBSD > 4") >How-To-Repeat: >Fix: --- bsd.port.mk.orig Sun Mar 19 17:18:28 2006 +++ bsd.port.mk Sun Mar 19 19:40:06 2006 @@ -208,6 +208,17 @@ # - Only build ports if ${ARCH} matches one of these. # NOT_FOR_ARCHS - Only build ports if ${ARCH} doesn't match one of these. # +# Set these if your port only builds on certain OS versions. +# +# ONLY_FOR_OSVERSION +# - An OS version, optionally prefixed or suffixed a "+" to +# indicate "up to" or "from". OS Versions are the six digits +# versions like ${OSVERSION}). For example: 500000+ requires +# OSVERSION 500000 or higher, +499999 requires OSVERSION to +# be lower than 500000. +# ONLY_FOR_OSVERSION_REASON +# - An optional reason why it doesn't work on this OSVERSION. +# # Dependency checking. Use these if your port requires another port # not in the list below. (Default: empty.) # @@ -2824,6 +2835,37 @@ IGNORE= does not run on ${NOT_FOR_ARCHS}, .endif IGNORE+= and you are running ${ARCH} +.endif + +# +# Compare OSVERSION with the values in ${ONLY_FOR_OSVERSION} +# +.if defined(ONLY_FOR_OSVERSION) + +# Strip any leading or following characters +_ONLY_FOR_OSVERSION:=${ONLY_FOR_OSVERSION} +_ONLY_FOR_OSVERSION:=${_ONLY_FOR_OSVERSION:S/+//} +_ONLY_FOR_OSVERSION:=${_ONLY_FOR_OSVERSION:S/-//} +.if ${ONLY_FOR_OSVERSION} == "-${_ONLY_FOR_OSVERSION}" +_OKAYEARLIER= true +.endif +.if ${ONLY_FOR_OSVERSION} == "${_ONLY_FOR_OSVERSION}+" +_OKAYLATER= true +.endif + +# Check versions +.if !defined(_OKAYEARLIER) && !defined(_OKAYLATER) && ( ${OSVERSION} != ${_ONLY_FOR_OSVERSION} ) +BROKEN= Requires OSVERSION ${_ONLY_FOR_OSVERSION}: ${ONLY_FOR_OSVERSION_REASON} +.endif +.if defined(_OKAYEARLIER) && ${OSVERSION} > ${_ONLY_FOR_OSVERSION} +BROKEN= Requires OSVERSION ${_ONLY_FOR_OSVERSION} or earlier: ${ONLY_FOR_OSVERSION_REASON} +.endif +.if defined(_OKAYLATER) && ${OSVERSION} < ${_ONLY_FOR_OSVERSION} +BROKEN= Requires OSVERSION ${_ONLY_FOR_OSVERSION} or later: ${ONLY_FOR_OSVERSION_REASON} +.endif + +.undef _OKAYEARLIER +.undef _OKAYLATER .endif .if !defined(NO_IGNORE) >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060319085936.D265F272>