Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Apr 2017 17:52:37 -0700
From:      Mark Millard <markmi@dsl-only.net>
To:        John Marino <freebsdml@marino.st>, FreeBSD Ports <freebsd-ports@freebsd.org>
Subject:   Re: lang/gcc6-aux build error due to internal Makefile/sh syntax: $${PWDCMD-pwd} is missing a ":" [misidentified problem]
Message-ID:  <ADC29D09-D725-4B03-8370-094F55627264@dsl-only.net>
In-Reply-To: <de47d1b0-cab7-7337-2664-18b63682e812@marino.st>
References:  <1626B3C1-0B4E-4070-A830-0EEEF38E0F87@dsl-only.net> <A3BFEC8A-EF5E-4AB8-8E22-3C267E06784E@dsl-only.net> <de47d1b0-cab7-7337-2664-18b63682e812@marino.st>

next in thread | previous in thread | raw e-mail | index | archive | help

On 2017-Apr-10, at 1:21 PM, John Marino <freebsdml at marino.st> wrote:

> On 4/10/2017 15:12, Mark Millard wrote:
>> On 2017-Apr-10, at 12:12 PM, Mark Millard <markmi at dsl-only.net> =
wrote:
>>> with line 875 being the one with: @r=3D`${PWD_COMMAND}`
>>>=20
>>> It appears to me that the notation $${PWDCMD-pwd} is not
>>> what was intended. My guess is that a ":" is missing:
>>>=20
>>> PWD_COMMAND =3D $${PWDCMD:-pwd}
>=20
> I grepped gcc source and ${PWDCMD-pwd} shows up everywhere.  I assume =
it is valid for GNU make.

My guess about the issue was definitely wrong: simple tests
show that gmake and /bin/sh handle the notation that I
pointed at.

> I don't know what's going on in your particular case.
> I also don't have access to the reference aarch64 machine anymore.


Looking at the log again: Further back there is a message
that I missed:

checking size of long long... checking for geteuid... checking for =
getc_unlocked... configure: error: in =
`/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/build/libiberty':
configure: error: cannot compute sizeof (long long)
See `config.log' for more details.
yes
checking for putchar_unlocked... yes
gmake[3]: *** [Makefile:7409: configure-libiberty] Error 1
gmake[3]: *** Waiting for unfinished jobs....

Looking around that config.log shows problems like:

configure:5452: checking size of long long
configure:5457: =
/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/bin/gcc -o =
conftest -pipe -B/usr/local/aarch64-freebsd/bin/ -mcpu=3Dcortex-a53  =
-DLIBICONV_PLUG -g -fno-strict-aliasing -B/usr/l
ocal/aarch64-freebsd/bin/ -mcpu=3Dcortex-a53 -I/usr/local/include =
-DLIBICONV_PLUG -static-libstdc++ -static-libgcc -L/usr/local/lib =
conftest.c  >&5
In file included from conftest.c:71:0:
=
/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-=
aux-freebsd12.0/6.3.1/include-fixed/stdlib.h: In function =
'posix_memalign':
=
/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-=
aux-freebsd12.0/6.3.1/include-fixed/stdlib.h:192:46: error: expected =
declaration specifiers before '__nonnull'
 int  posix_memalign(void **, size_t, size_t) __nonnull(1); /* (ADV) */
                                              ^~~~~~~~~
=
/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-=
aux-freebsd12.0/6.3.1/include-fixed/stdlib.h:252:20: error: storage =
class specified for parameter 'malloc_conf'
 extern const char *malloc_conf;
                    ^~~~~~~~~~~
=
/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-=
aux-freebsd12.0/6.3.1/include-fixed/stdlib.h:253:15: error: storage =
class specified for parameter 'malloc_message'
 extern void (*malloc_message)(void *, const char *);
               ^~~~~~~~~~~~~~
=
/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-=
aux-freebsd12.0/6.3.1/include-fixed/stdlib.h:341:14: error: storage =
class specified for parameter 'suboptarg'
 extern char *suboptarg;   /* getsubopt(3) external variable */
              ^~~~~~~~~
conftest.c:74:1: error: expected '=3D', ',', ';', 'asm' or =
'__attribute__' before '{' token
 {
 ^
In file included from conftest.c:71:0:
=
/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-=
aux-freebsd12.0/6.3.1/include-fixed/stdlib.h:192:6: error: old-style =
parameter declarations in prototyped function definition
 int  posix_memalign(void **, size_t, size_t) __nonnull(1); /* (ADV) */
      ^~~~~~~~~~~~~~
=
/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-=
aux-freebsd12.0/6.3.1/include-fixed/stdlib.h:192:1: error: parameter =
name omitted
 int  posix_memalign(void **, size_t, size_t) __nonnull(1); /* (ADV) */
 ^~~
=
/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-=
aux-freebsd12.0/6.3.1/include-fixed/stdlib.h:192:1: error: parameter =
name omitted
=
/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-=
aux-freebsd12.0/6.3.1/include-fixed/stdlib.h:192:1: error: parameter =
name omitted
conftest.c:99:1: error: expected '{' at end of input
 }
 ^



And looking around for __nonnull in include files:

# grep -R __nonnull /usr/include/ | more
/usr/include/security/openpam_attr.h:# define OPENPAM_NONNULL(params) =
__attribute__((__nonnull__ params))


# grep -R __nonnull =
/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-=
aux-freebsd12.0/6.3.1/include-fixed/
=
/usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-=
aux-freebsd12.0/6.3.1/include-fixed/stdlib.h:int	 =
posix_memalign(void **, size_t, size_t) __nonnull(1); /* (ADV) */

So the __nonnull is from the bootstrap gcc 6.3.1 include-fixed area.

My guess is that __nonnull was intended to be a macro that expanded to =
an attribute
specification but the macro definition ended up missing for some reason.

The bootstrap gcc command above shows the results of my CFLAGS
and/or CXXFLAGS in case those are a problem (not that I expect
they would contribute to this specific issue).



I've started an update to other ports so even if they work it
will be a while before the Pine64+ 2GB completes that.

=3D=3D=3D
Mark Millard
markmi at dsl-only.net




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ADC29D09-D725-4B03-8370-094F55627264>