Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Jul 2020 16:23:03 +0900
From:      KIRIYAMA Kazuhiko <kiri@truefc.org>
To:        Mark Millard <marklmi@yahoo.com>
Cc:        FreeBSD ports <freebsd-ports@freebsd.org>
Subject:   Re: Why lang/gcc9 depends  native-binutils ?
Message-ID:  <202007220723.06M7N3qm051026@kx.truefc.org>
In-Reply-To: <6B21B9C0-62D5-4ED7-94EE-7715B002F160@yahoo.com>
References:  <6B21B9C0-62D5-4ED7-94EE-7715B002F160.ref@yahoo.com> <6B21B9C0-62D5-4ED7-94EE-7715B002F160@yahoo.com>

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

On Tue, 21 Jul 2020 17:51:41 +0900,
Mark Millard via freebsd-ports wrote:
> 
> KIRIYAMA Kazuhiko kiri at truefc.org wrote on
> Tue Jul 21 02:33:25 UTC 2020 :
> 
> > checking for iconv declaration... 
> >          extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
> > *** BFD does not support target native-unknown-freebsd13.0.
> > *** Look in bfd/config.bfd for supported targets.
> > gmake[3]: *** [Makefile:3563: configure-binutils] Error 1
> > gmake[3]: Leaving directory '/var/ports/work/usr/ports/devel/binutils/work-native/binutils-2.33.1'
> > gmake[2]: *** [Makefile:851: all] Error 2
> > gmake[2]: Leaving directory '/var/ports/work/usr/ports/devel/binutils/work-native/binutils-2.33.1'
> > ===> Compilation failed unexpectedly.
> > Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
> > the maintainer.
> > *** Error code 1
> 
> lang/gcc9/Makefile references binutils via:
> 
> BUILD_DEPENDS+= ${LOCALBASE}/bin/as:devel/binutils
> RUN_DEPENDS+=   ${LOCALBASE}/bin/as:devel/binutils
> . . .
> USE_BINUTILS=   yes
> 
> The BUILD_DEPENDS and RUN_DEPENDS references to
> binutils are to the assembler that binutils
> generates and installs. So gcc9 needs to be able
> to use that assembler at both gcc9 build-time and
> gcc9 run-time.
> 
> The notation leaves the FLAVOR implicit/empty and
> so should lead to devel/binutils/Makefile using
> its line:
> 
> FLAVOR?=        native
> 
> to assign the "native" for its own internal logic
> to use.
> 
> 
> 
> Hmm. The "target native-unknown-freebsd13.0" looks
> very odd to me. The only lines in the devel/binutils
> Makefile to deal with "unknown-" text directly are:
> 
> # grep -r unknown- /usr/ports/devel/binutils/
> /usr/ports/devel/binutils/Makefile:BUTARGET?=	${PKGNAMEPREFIX}unknown-${OPSYS:tl}${OSREL}
> /usr/ports/devel/binutils/Makefile:BUTARGET=	x86_64-unknown-${OPSYS:tl}${OSREL}
> 
> (I'll later deal with an indirection where "_" is
> replaced by "-".)
> 
> Only the 1st line of that pair would potentially form
> "native-unknown-" text.
> 
> So looking at the context of the first line I find
> (". . ." for omitted lines):
> 
> FLAVOR?=        native
> . . .
> .if ${FLAVOR} != native
> PKGNAMEPREFIX=  ${FLAVOR:C/_/-/g}-
> PLIST=          ${PKGDIR}/pkg-plist-${FLAVOR:C/_/-/g}
> 
> .if ${PKGNAMEPREFIX:M*-*-}
> BUTARGET?=      ${PKGNAMEPREFIX}${OPSYS:tl}${OSREL}
> .else
> BUTARGET?=      ${PKGNAMEPREFIX}unknown-${OPSYS:tl}${OSREL}
> .endif
> 
> . . .
> 
> CONFIGURE_ARGS+=        --disable-shared \
>                         --target=${BUTARGET}
> .endif
> 
> 
> (That is also the only instance of "--target=" in the
> Makefile.)
> 
> The ${FLAVOR} != native test should mean that the code
> is not used for FLAVOR being exactly "native".
> 
> There is a separate code block for:
> 
> .if ${FLAVOR} == native
> BUREMOVE=       coffdump \
>                 dlltool \
>                 dllwrap \
>                 nlmconv \
>                 srconv \
>                 sysdump \
>                 windmc \
>                 windres
> USES+=          localbase
> CONFIGURE_ARGS+=        --with-system-zlib \
>                         --with-gmp=${LOCALBASE} \
>                         --with-mpfr=${LOCALBASE} \
>                         --enable-targets=all \
>                         --enable-threads=yes
> INFO=           as \
>                 binutils \
>                 gprof \
>                 bfd \
>                 ld
> .endif
> 
> But that code does not specify a specific target
> (instead: "--enable-targets=all").
> 
> There is the FLAVOR value "riscv32_unknown_elf" that
> could produce target "riscv32-unknown-elf-freebsd13.0"
> but that is not what was reported as involved.
> 
> I've ignored CROSS_TOOLCHAIN infrastructure as
> it was not mentioned as being in use.
> 
> I do not see how devel/binutils/Makefile would
> generate "native-unknown-freebsd13.0" text on
> its own.
> 
> 
> Sorry I've not been able to identify anything for
> the error.
> 
> I'll note that I build ports with poudriere (-devel
> variant) and have not had the problem in that
> context.
> 

I forgot to say that make target is `package-recursive'. I
tried to get PKGNAME with package-depends:


root@jdtpkxb:/usr/ports/lang/gcc9 # make -ki package-depends
gmp-6.2.0:math/gmp
indexinfo-0.3.1:print/indexinfo
mpfr-4.0.2:math/mpfr
mpc-1.1.0_2:math/mpc
native-binutils-2.33.1_2,1:devel/binutils
root@jdtpkxb:/usr/ports/lang/gcc9 # 


But PKGNAME in devel/binutils is:

root@jdtpkxb:/usr/ports/devel/binutils # make -VPKGNAME
binutils-2.33.1_2,1
root@jdtpkxb:/usr/ports/devel/binutils # 

I don't know why it is. As far as I see
devel/binutils/Makefile, FLAVOR default is `native' and
PKGNAMEPREFIX should be null.

What happens ?

> ===
> Mark Millard
> marklmi at yahoo.com
> ( dsl-only.net went
> away in early 2018-Mar)
> 
> _______________________________________________
> freebsd-ports@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-ports
> To unsubscribe, send any mail to "freebsd-ports-unsubscribe@freebsd.org"
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202007220723.06M7N3qm051026>