From becd92b496a2a5715b0c74fb400a1ca25c408d53 Mon Sep 17 00:00:00 2001 From: Bryan Drewery Date: Thu, 21 Mar 2013 02:55:32 +0000 Subject: [PATCH] - Remove prompt for dialog4ports. Dialog4Ports is a required part of ports 'make config' now. This is seen as not much different than any other dependency. - Allow dialog4ports to work with INSTALL_AS_USER by building and using the port's WRKDIR version through a Tools/scripts wrapper - Add NO_DIALOG for 'config' as well. - Fix D4P environment variables not passing to dialog4ports: D4PHEIGHT, D4PWIDTH, D4PFULLSCREEN Reviewed by: miwi, bapt, rum1cro@yandex.ru Tested by: miwi, bapt, rum1cro@yandex.ru Tested by: bdrewery (small exp-run) Requested by: many --- Mk/bsd.port.mk | 31 +++++++++++++------------- Tools/scripts/dialog4ports.sh | 37 ++++++++++++++++++++++++++++++++ ports-mgmt/dialog4ports/Makefile | 6 ++++++ 3 files changed, 58 insertions(+), 16 deletions(-) create mode 100644 Tools/scripts/dialog4ports.sh diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk index 5cda4b6f96b8..b0af8bf49fad 100644 --- a/Mk/bsd.port.mk +++ b/Mk/bsd.port.mk @@ -6088,7 +6088,13 @@ D4P_ENV= PKGNAME="${PKGNAME}" \ OPTIONS_MULTI="${OPTIONS_MULTI}" \ OPTIONS_SINGLE="${OPTIONS_SINGLE}" \ OPTIONS_RADIO="${OPTIONS_RADIO}" \ - OPTIONS_GROUP="${OPTIONS_GROUP}" + OPTIONS_GROUP="${OPTIONS_GROUP}" \ + DIALOG4PORTS="${DIALOG4PORTS}" \ + PORTSDIR="${PORTSDIR}" \ + MAKE="${MAKE}" \ + D4PHEIGHT="${D4PHEIGHT}" \ + D4PWIDTH="${D4PWIDTH}" \ + D4PFULLSCREEN="${D4PFULLSCREEN}" .if exists(${PKGHELP}) D4P_ENV+= PKGHELP="${PKGHELP}" .endif @@ -6147,11 +6153,12 @@ do-config: .endif @TMPOPTIONSFILE=$$(mktemp -t portoptions); \ trap "${RM} -f $${TMPOPTIONSFILE}; exit 1" 1 2 3 5 10 13 15; \ - ${SETENV} ${D4P_ENV} ${DIALOG4PORTS} > $${TMPOPTIONSFILE} || { \ + ${SETENV} ${D4P_ENV} ${SH} ${PORTSDIR}/Tools/scripts/dialog4ports.sh $${TMPOPTIONSFILE} || { \ ${RM} -f $${TMPOPTIONSFILE}; \ ${ECHO_MSG} "===> Options unchanged"; \ exit 0; \ }; \ + ${ECHO_CMD}; \ if [ ! -e $${TMPOPTIONSFILE} ]; then \ ${ECHO_MSG} "===> No user-specified options to save for ${PKGNAME}"; \ exit 0; \ @@ -6183,21 +6190,13 @@ do-config: .endif .endif # do-config -.if !target(config-depend) -config-depend: -.if !exists(${DIALOG4PORTS}) && !defined(NO_DIALOG) - @echo -n "dialog4ports isn't installed, do you want to install it now? [Y/n] "; \ - read answer; \ - case $$answer in \ - [Nn]|[Nn][Oo]) \ - exit 1; \ - esac; \ - cd ${PORTSDIR}/ports-mgmt/dialog4ports; ${MAKE} install clean -.endif -.endif - .if !target(config) -config: pre-config config-depend do-config +.if !defined(NO_DIALOG) +config: pre-config do-config +.else +config: + @${ECHO_MSG} "===> Skipping 'config' as NO_DIALOG is defined" +.endif .endif # config .if !target(config-recursive) diff --git a/Tools/scripts/dialog4ports.sh b/Tools/scripts/dialog4ports.sh new file mode 100644 index 000000000000..b3303efb972a --- /dev/null +++ b/Tools/scripts/dialog4ports.sh @@ -0,0 +1,37 @@ +#! /bin/sh +# $FreeBSD$ +# Maintainer: portmgr@FreeBSD.org +set -e + +if [ -z "${DIALOG4PORTS}" -o -z "${PORTSDIR}" -o -z "${MAKE}" ]; then + echo "DIALOG4PORTS, MAKE and PORTSDIR required in environment." >&2 + exit 1 +fi + +: ${DIALOGPORT:=ports-mgmt/dialog4ports} +: ${DIALOGNAME:=dialog4ports} + +OPTIONSFILE="$1" + +if ! [ -e $DIALOG4PORTS ]; then + # If INSTALL_AS_USER is set then just build and use the WRKDIR version + if [ -n "${INSTALL_AS_USER}" ]; then + if ! [ -d "${PORTSDIR}/${DIALOGPORT}" ]; then + echo "===> Skipping 'config' as ${DIALOGPORT} is not checked out" >&2 + exit 1 + fi + DIALOG4PORTS=$(${MAKE} -C ${PORTSDIR}/${DIALOGPORT} -V DIALOG4PORTS) + if ! [ -e "${DIALOG4PORTS}" ]; then + echo "===> Building ${DIALOGNAME} as it is required for the config dialog" + ${MAKE} -C ${PORTSDIR}/${DIALOGPORT} -D NO_DIALOG clean build + fi + else + # Build+install through su-install as normal + echo "===> Building/installing ${DIALOGNAME} as it is required for the config dialog" + ${MAKE} -C ${PORTSDIR}/${DIALOGPORT} -D NO_DIALOG clean install + # Need to clean again as it can't run twice in 1 call above + ${MAKE} -C ${PORTSDIR}/${DIALOGPORT} -D NO_DIALOG clean + fi +fi + +exec $DIALOG4PORTS > $OPTIONSFILE diff --git a/ports-mgmt/dialog4ports/Makefile b/ports-mgmt/dialog4ports/Makefile index 867ffb09cbae..14c0e7adb944 100644 --- a/ports-mgmt/dialog4ports/Makefile +++ b/ports-mgmt/dialog4ports/Makefile @@ -24,6 +24,12 @@ MAKE_JOBS_SAFE= yes .include +## This is used by 'make config' via Tools/scripts/dialog4ports.sh +## Use caution in changing +.if !exists(${DIALOG4PORTS}) +DIALOG4PORTS= ${WRKSRC}/dialog4ports +.endif + .if ${OSVERSION} < 900030 DISTFILES= ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX} \ ${DIALOGNAME}.tgz:dialog