Date: Wed, 12 Jul 2006 10:59:57 -0700 From: Atanas <atanas@asd.aplus.net> To: Sergey Matveychuk <sem@FreeBSD.org> Cc: freebsd-stable@FreeBSD.org Subject: Re: portupgrade bug: -M no longer works after v2.1.0 Message-ID: <44B5389D.9020808@asd.aplus.net> In-Reply-To: <44B4CDE3.60205@FreeBSD.org> References: <44B40863.9060403@asd.aplus.net> <44B483B8.6000005@FreeBSD.org> <44B4A164.50003@asd.aplus.net> <44B4CDE3.60205@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Sergey Matveychuk said the following on 7/12/06 3:24 AM: > Atanas wrote: >> Sergey Matveychuk said the following on 7/11/2006 10:08 PM: >>> Atanas wrote: >>>> Recent portupgrade versions no longer obey the -M command line switch, >>>> i.e. any optional arguments to be prepended to each make command. >>>> >>>> How to reproduce: >>>> >>>> # portinstall -M "APACHE_HARD_SERVER_LIMIT=1024" www/apache13 >>> Everything work file. Use -m for getting what you want. >>> >> For www/apache13 the -m switch could give the same result as -M would, >> but I'm not sure whether it's not just a coincidence. The -m switch was >> supposed to serve a different purpose: >> >> -m >> --make-args Specify arguments to append to each make(1) com- >> mand line. >> -M >> --make-env Specify arguments to prepend to each make(1) com- >> mand line. >> >> I tried testing another port where I used both: >> >> # portinstall -M 'WITH_SYSLOG_FACILITY=local5' -m '-DWITHOUT_IPV6' >> mail/courier-imap >> >> With portupgrade-2.0.1_1,1 (the stock 6.1-RELEASE package) it worked. >> With portupgrade-2.1.3.2,2 it failed (ignoring the -M part like for >> www/apache13 before). >> >> Then I joined both in one -m switch: >> >> # portinstall -m 'WITH_SYSLOG_FACILITY=local5 -DWITHOUT_IPV6' >> mail/courier-imap >> >> and the latest portupgrade-2.1.3.2,2 did it just fine. >> >> So, like you suggested, the -m switch seems to cover the functionality >> that -M used to provide. I'm not sure however whether this "prepend to >> append" conversion would work for all ports. But for these that I use it >> appears to work, so I have no problem and will update my scripts to use >> -m only. >> >> The no longer working (obsolete?) -M switch would need to be removed >> from the man page though. > > Both -m and -M works fine but do different things. -m pass its argument > as make file argument(s) and -M pass its argument as environment > variable(s). You can't set make variable with environment variable. They > are different! > Yes, I know that. That's why I quoted the man page in my previous post (see above). > -M has never worked as you expected. > I expected -M to work exactly as documented, like it has been doing so for years. > You can test it with a command: > %cd /usr/ports/www/apache13 > %env APACHE_HARD_SERVER_LIMIT=1024 make > Sure, the port build works: % cd /usr/ports/www/apache13 % env APACHE_HARD_SERVER_LIMIT=1024 make ===> src/os/unixcc -c -I../../os/unix -I../../include -I/usr/local/include -funsigned-char -O2 -fno-strict-aliasing -pipe -DDOCUMENT_LOCATION=\"/usr/local/www/data\" -DDEFAULT_PATH=\"/bin:/usr/bin:/usr/local/bin\" -DHARD_SERVER_LIMIT=1024 `../../apaci` os.c while portupgrade -M fails: % portinstall -M "APACHE_HARD_SERVER_LIMIT=1024" www/apache13 ===> src/os/unixcc -c -I../../os/unix -I../../include -I/usr/local/include -funsigned-char -O2 -fno-strict-aliasing -pipe -DDOCUMENT_LOCATION=\"/usr/local/www/data\" -DDEFAULT_PATH=\"/bin:/usr/bin:/usr/local/bin\" -DHARD_SERVER_LIMIT=512 `../../apaci` os.c > against of > % make APACHE_HARD_SERVER_LIMIT=1024 > This doesn't make much sense to me. Perhaps you meant: % make -DAPACHE_HARD_SERVER_LIMIT=1024 But I wouldn't expect this to succeed either: ===> src/os/unixcc -c -I../../os/unix -I../../include -I/usr/local/include -funsigned-char -O2 -fno-strict-aliasing -pipe -DDOCUMENT_LOCATION=\"/usr/local/www/data\" -DDEFAULT_PATH=\"/bin:/usr/bin:/usr/local/bin\" -DHARD_SERVER_LIMIT=512 `../../apaci` os.c Your suggestion however (to replace -M with -m) surprisingly worked: cc -c -I../../os/unix -I../../include -I/usr/local/include -funsigned-char -O2 -fno-strict-aliasing -pipe -DDOCUMENT_LOCATION=\"/usr/local/www/data\" -DDEFAULT_PATH=\"/bin:/usr/bin:/usr/local/bin\" -DHARD_SERVER_LIMIT=1024 `../../apaci` os.c And this is what's confusing. > I think you confuse the two variables types. > No, I think I know what these are for. But trying your suggestion to replace -M with -m and finding it to work (for some ports?), just threw some more fog into the case. Let's say it clear again - I have found that all recent versions of portupgrade (2.1.0+) fail to obey the -M switch and ignore any optional port parameters (i.e. arguments to prepend to each make command line) supplied there. Please, don't get me wrong. I'm not asking for help or for a workaround. I'm actually trying to help identifying a problem or regression. If this is not a bug, but a feature change, please have it documented. What the portupgrade(1) man page says about the -M switch is incorrect, as it no longer prepends any arguments specified to each make(1) command line. Regards, Atanas
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?44B5389D.9020808>