Please some help with port options in the new world order.

Alfred Perlstein alfred at freebsd.org
Thu Apr 17 06:34:01 UTC 2014


Any chance a patch like the following can be added?

It basically makes the error message a tad more clear by saying which 
options conflict.

thank you Scot!

-Alfred



On 4/16/14, 11:00 PM, Scot Hetzel wrote:
> On Wed, Apr 16, 2014 at 8:47 PM, Alfred Perlstein <alfred at freebsd.org> wrote:
>> Hey folks,
>>
>> I'm having a heck of a time with the rsync port in our build system with
>> latest ports:
>> commit 08b15d01e41c418b5c5b35fb5b691f5e83d40a95
>> Author: wg <wg at FreeBSD.org>
>> Date:   Wed Apr 16 23:17:53 2014 +0000
>>
>>      devel/py-hgsubversion: update to 1.6 and use auto plist
>>
>>
>> This is the error I am getting:
>> + chroot /usr/home/alfred/freenas/os-base/amd64/_.w /bin/sh -exc 'env
>> TARGET=amd64            TARGET_ARCH=amd64 NAS_PORTS_DIRECT=1
>> make __MAKE_CONF=/usr/home/alfred/freenas/os-base/amd64/make.conf.build
>> SRC_BASE=/usr/src        WRKDIRPREFIX=/usr/workdir -C
>> /usr/ports_dir/net/rsync           clean all package install BATCH=yes
>> -DUSE_PACKAGE_DEPENDS       WITH+=ACL WITH+=ICONV -DFORCE_PACKAGE
>> -DFORCE_PKG_REGISTER'
>> + env TARGET=amd64 TARGET_ARCH=amd64 NAS_PORTS_DIRECT=1 make
>> __MAKE_CONF=/usr/home/alfred/freenas/os-base/amd64/make.conf.build
>> SRC_BASE=/usr/src WRKDIRPREFIX=/usr/workdir -C /usr/ports_dir/net/rsync
>> clean all package install BATCH=yes -DUSE_PACKAGE_DEPENDS WITH+=ACL
>> WITH+=ICONV -DFORCE_PACKAGE -DFORCE_PKG_REGISTER
>> ===>  Cleaning for rsync-3.1.0_3
>> ===>  License GPLv3 accepted by the user
>> ====> You cannot select multiple options from the PTS radio
>> *** Error code 1
>>
> :
> :
>> This USED to work back in an earlier ports tree from 2 months ago by doing
>> this:
>> add_port net/rsync OPTIONS_FILE_SET+=ACL OPTIONS_FILE_SET+=ICONV
>>
>> However that gives the same error message now from the build ("====> You
>> cannot select multiple options from the PTS radio").
>>
>> Any tips on getting around this?  It's very frustrating.
>>
> Try:
>
> add_port net/rsync WITH+=ACL WITH+=ICONV WITHOUT+=FLAGS
>
>> What is really strange is that OUTSIDE of the nanobsd build doing a simple:
>> cd /usr/port/net/rsync && make WITH+=ACL WITH+=ICONV
>> seems to work.
>>
>> Any idea why this is happening?
>>
> The last commit to the port enabled the FLAGS option by default.
> Since FLAGS and ACL are listed in OPTIONS_RADIO_PTS, you can only
> select one of them.
>
> The reason it works outside the nanobsd build is that at some point
> you had disabled the FLAGS option in a previous build of the port.
> Check the OPTIONSFILE in /var/db/ports/ for this port.
>

-------------- next part --------------
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index c56f7e0..120957f 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -5911,17 +5911,34 @@ OPTIONS_WRONG_SINGLE+=	${single}
 .endfor
 .undef single
 
+#
+# Iterate through each OPTIONS_RADIO
+# Check to see if there are multiple options specified in PORT_OPTIONS
+# for a single radio.
+#
+# If so, build up an error string noting the offending radio and options
+# to be emitted later.
+#
 .for radio in ${OPTIONS_RADIO}
 .  for opt in ${OPTIONS_RADIO_${radio}}
 .    if !empty(PORT_OPTIONS:M${opt})
 .      if defined(OPTFOUND)
-OPTIONS_WRONG_RADIO+=	${radio}
+.        if !defined(SECONDOPT)
+OPTIONS_WRONG_RADIO:=	${OPTIONS_WRONG_RADIO}${radio}(options:${OPTFOUND},${opt}
+SECONDOPT=	true
+.        else
+OPTIONS_WRONG_RADIO:=	${OPTIONS_WRONG_RADIO},${opt}
+.        endif
 .      else
-OPTFOUND=	true
+OPTFOUND:=	${opt}
 .      endif
 .    endif
 .  endfor
+.  if defined(SECONDOPT)
+OPTIONS_WRONG_RADIO:=   ${OPTIONS_WRONG_RADIO})
+.  endif
 .  undef OPTFOUND
+.  undef SECONDOPT
 .endfor
 
 .for multi in ${OPTIONS_MULTI}


More information about the freebsd-ports mailing list