ports/93687: [PATCH] Split bsd.port.pre.mk - allow OPTIONS to be processed first
Shaun Amott
shaun at inerd.com
Wed Feb 22 02:30:04 UTC 2006
>Number: 93687
>Category: ports
>Synopsis: [PATCH] Split bsd.port.pre.mk - allow OPTIONS to be processed first
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed Feb 22 02:30:02 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Shaun Amott
>Release: FreeBSD 6.0-STABLE i386
>Organization:
>Environment:
System: FreeBSD 6.0-STABLE i386
>Description:
Please forgive me if I'm fiddling with something I shouldn't, or if I've
overlooked something obvious. The patch seems to work fine.
Currently, bsd.port[.pre].mk is used to process OPTIONS, which can then
be tested by a port. Unfortunately, the bsd.port.pre.mk is also used to
deal with other variables such as USE_OPENSSL and USE_RUBY. This
presents a catch-22 situation, because one cannot define USE_OPENSSL,
for instance, based on a choice made by the user in OPTIONS.
So, here is a possible solution, which - I hope - maintains existing
behavior for current ports, but allows porters to avoid using hacks to
get around the limitation.
The idea is to allow for something like this:
---------------------------------------------------------
PORTNAME= someport
...
OPTIONS= USE_SSL "Build with OpenSSL support" on
.include <bsd.port.options.mk>
.if defined(WITH_SSL)
USE_OPENSSL= yes
.endif
.include <bsd.port.pre.mk>
...
---------------------------------------------------------
Presumably this would also need:
- bsd.port.options.mk in /usr/share/Mk
- Porter's Handbook documentation
>How-To-Repeat:
>Fix:
--- Mk.diff begins here ---
diff -urN Mk.orig/bsd.port.mk Mk/bsd.port.mk
--- Mk.orig/bsd.port.mk Mon Feb 20 21:50:10 2006
+++ Mk/bsd.port.mk Wed Feb 22 02:12:28 2006
@@ -978,16 +978,8 @@
.endif
-# Start of pre-makefile section.
-.if !defined(AFTERPORTMK)
-
-.if defined(_PREMKINCLUDED)
-check-makefile::
- @${ECHO_CMD} "${PKGNAME}: Makefile error: you cannot include bsd.port[.pre].mk twice"
- @${FALSE}
-.endif
-
-_PREMKINCLUDED= yes
+# Start of options section
+.if defined(INOPTIONSMK) || ( !defined(USEOPTIONSMK) && !defined(AFTERMKPORT) )
.if defined(MAKE_VERSION)
.if ${MAKE_VERSION} >= 5200408030 || ${MAKE_VERSION} >= 4200408030 && ${MAKE_VERSION} < 5000000000
@@ -1180,6 +1172,20 @@
. endif
.endif
+.endif
+
+
+# Start of pre-makefile section.
+.if !defined(AFTERPORTMK) && !defined(INOPTIONSMK)
+
+.if defined(_PREMKINCLUDED)
+check-makefile::
+ @${ECHO_CMD} "${PKGNAME}: Makefile error: you cannot include bsd.port[.pre].mk twice"
+ @${FALSE}
+.endif
+
+_PREMKINCLUDED= yes
+
# check for old, crufty, makefile types, part 1:
.if !defined(PORTNAME) || !( defined(PORTVERSION) || defined (DISTVERSION) ) || defined(PKGNAME)
check-makefile::
@@ -1425,7 +1431,7 @@
# End of pre-makefile section.
# Start of post-makefile section.
-.if !defined(BEFOREPORTMK)
+.if !defined(BEFOREPORTMK) && !defined(INOPTIONSMK)
.if defined(_POSTMKINCLUDED)
check-makefile::
diff -urN Mk.orig/bsd.port.options.mk Mk/bsd.port.options.mk
--- Mk.orig/bsd.port.options.mk Thu Jan 1 01:00:00 1970
+++ Mk/bsd.port.options.mk Wed Feb 22 00:49:40 2006
@@ -0,0 +1,8 @@
+# $FreeBSD: ports/Mk/bsd.port.pre.mk,v 1.3 1999/08/25 04:40:21 obrien Exp $
+
+USEOPTIONSMK= yes
+INOPTIONSMK= yes
+
+.include "bsd.port.mk"
+
+.undef INOPTIONSMK
--- Mk.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list