diff options
-rw-r--r-- | CHANGES | 10 | ||||
-rw-r--r-- | Mk/bsd.commands.mk | 1 | ||||
-rw-r--r-- | Mk/bsd.port.mk | 66 |
3 files changed, 50 insertions, 27 deletions
@@ -10,6 +10,16 @@ in the release notes and/or placed into UPDATING. All ports committers are allowed to commit to this file. +20130319: +AUTHOR: bapt@FreeBSD.org + + * The options framework now uses ports-mgmt/dialog4ports contributed by + Ilya A. Arkhipov. It boostraps it if not present when one calls + make config. + + dialog4ports provides a new UI able to represent all the features + provided by the new options framework. + 20130315: AUTHOR: bdrewery@FreeBSD.org diff --git a/Mk/bsd.commands.mk b/Mk/bsd.commands.mk index 4b8a4d035cb7..3aa79dedf8bb 100644 --- a/Mk/bsd.commands.mk +++ b/Mk/bsd.commands.mk @@ -34,6 +34,7 @@ CPIO?= /usr/bin/cpio CUT?= /usr/bin/cut DC?= /usr/bin/dc DIALOG?= /usr/bin/dialog +DIALOG4PORTS?= ${LOCALBASE}/bin/dialog4ports DIFF?= /usr/bin/diff DIRNAME?= /usr/bin/dirname EGREP?= /usr/bin/egrep diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk index e132a5d5b430..3b17c2df6495 100644 --- a/Mk/bsd.port.mk +++ b/Mk/bsd.port.mk @@ -2409,6 +2409,7 @@ COPYTREE_SHARE= ${SH} -c '(${FIND} -d $$0 $$2 | ${CPIO} -dumpl $$1 >/dev/null \ DESCR?= ${PKGDIR}/pkg-descr PLIST?= ${PKGDIR}/pkg-plist +PKGHELP?= ${PKGDIR}/pkg-help PKGINSTALL?= ${PKGDIR}/pkg-install PKGDEINSTALL?= ${PKGDIR}/pkg-deinstall PKGREQ?= ${PKGDIR}/pkg-req @@ -6077,47 +6078,45 @@ sanity-config: _check-config .if !target(pre-config) pre-config: +D4P_ENV= PKGNAME="${PKGNAME}" \ + PORT_OPTIONS="${PORT_OPTIONS}" \ + ALL_OPTIONS="${ALL_OPTIONS}" \ + OPTIONS_MULTI="${OPTIONS_MULTI}" \ + OPTIONS_SINGLE="${OPTIONS_SINGLE}" \ + OPTIONS_RADIO="${OPTIONS_RADIO}" \ + OPTIONS_GROUP="${OPTIONS_GROUP}" +.if exists(${PKGHELP}) +D4P_ENV+= PKGHELP="${PKGHELP}" +.endif .for opt in ${ALL_OPTIONS} -. if empty(PORT_OPTIONS:M${opt}) -DEFOPTIONS+= ${opt} ""${${opt}_DESC:Q} off -. else -DEFOPTIONS+= ${opt} ""${${opt}_DESC:Q} on -. endif +D4P_ENV+= ${opt}_DESC=""${${opt}_DESC:Q}"" .endfor .for multi in ${OPTIONS_MULTI} +D4P_ENV+= OPTIONS_MULTI_${multi}="${OPTIONS_MULTI_${multi}}" \ + ${multi}_DESC=""${${opt}_DESC:Q}"" . for opt in ${OPTIONS_MULTI_${multi}} -. if empty(PORT_OPTIONS:M${opt}) -DEFOPTIONS+= ${opt} "M(${multi}): "${${opt}_DESC:Q} off -. else -DEFOPTIONS+= ${opt} "M(${multi}): "${${opt}_DESC:Q} on -. endif +D4P_ENV+= ${opt}_DESC=""${${opt}_DESC:Q}"" . endfor .endfor .for single in ${OPTIONS_SINGLE} +D4P_ENV+= OPTIONS_SINGLE_${single}="${OPTIONS_SINGLE_${single}}" \ + ${single}_DESC=""${${single}_DESC:Q}"" . for opt in ${OPTIONS_SINGLE_${single}} -. if empty(PORT_OPTIONS:M${opt}) -DEFOPTIONS+= ${opt} "S(${single}): "${${opt}_DESC:Q} off -. else -DEFOPTIONS+= ${opt} "S(${single}): "${${opt}_DESC:Q} on -. endif +D4P_ENV+= ${opt}_DESC=""${${opt}_DESC:Q}"" . endfor .endfor .for radio in ${OPTIONS_RADIO} +D4P_ENV+= OPTIONS_RADIO_${radio}="${OPTIONS_RADIO_${radio}}" \ + ${radio}_DESC=""${${radio}_DESC:Q}"" . for opt in ${OPTIONS_RADIO_${radio}} -. if empty(PORT_OPTIONS:M${opt}) -DEFOPTIONS+= ${opt} "R(${radio}): "${${opt}_DESC:Q} off -. else -DEFOPTIONS+= ${opt} "R(${radio}): "${${opt}_DESC:Q} on -. endif +D4P_ENV+= ${opt}_DESC=""${${opt}_DESC:Q}"" . endfor .endfor .for group in ${OPTIONS_GROUP} +D4P_ENV+= OPTIONS_GROUP_${group}="${OPTIONS_GROUP_${group}}" \ + ${group}_DESC=""${${group}_DESC:Q}"" . for opt in ${OPTIONS_GROUP_${group}} -. if empty(PORT_OPTIONS:M${opt}) -DEFOPTIONS+= ${opt} "G(${group}): "${${opt}_DESC:Q} off -. else -DEFOPTIONS+= ${opt} "G(${group}): "${${opt}_DESC:Q} on -. endif +D4P_ENV+= ${opt}_DESC=""${${opt}_DESC:Q}"" . endfor .endfor .undef multi @@ -6144,7 +6143,7 @@ do-config: .endif @TMPOPTIONSFILE=$$(mktemp -t portoptions); \ trap "${RM} -f $${TMPOPTIONSFILE}; exit 1" 1 2 3 5 10 13 15; \ - ${DIALOG} --checklist "Options for ${PKGNAME:C/-([^-]+)$/ \1/}" 21 70 15 ${DEFOPTIONS} 2> $${TMPOPTIONSFILE} || { \ + ${SETENV} ${D4P_ENV} ${DIALOG4PORTS} > $${TMPOPTIONSFILE} || { \ ${RM} -f $${TMPOPTIONSFILE}; \ ${ECHO_MSG} "===> Options unchanged"; \ exit 0; \ @@ -6180,8 +6179,21 @@ do-config: .endif .endif # do-config +.if !target(config-depend) +config-depend: +.if !exists(${DIALOG4PORTS}) + @echo -n "dialog4ports isn't installed, do you want to install it now? [Y/n] "; \ + read answer; \ + case $$answer in \ + [Nn]|[Nn][Oo]) \ + exit 0; \ + esac; \ + cd ${PORTSDIR}/ports-mgmt/dialog4ports; ${MAKE} install +.endif +.endif + .if !target(config) -config: pre-config do-config +config: pre-config config-depend do-config .endif # config .if !target(config-recursive) |