Re: FYI on aarch64: building and installing devel/aarch64-gcc fails with "Unable to access file" for 6 files

2017-04-20 Thread Mark Millard
On 2017-Apr-20, at 4:55 AM, Alexander Kabaev  wrote:

> aarch64-gcc is not a full compiler, but one intended to be used as
> cross toolchain.

I've used powerpc64-xtoolchain-gcc and its powerpc64-gcc
to build modern, libc++ based powerpc64 builds for years,
mostly self-hosted on powerpc64 hardware but also cross
built from amd64.

So I'm familiar with the ???-gcc's and their purpose.

???-gcc is also part of how I test if the code is compliant with
both gcc and clang in a self hosted manor. I've reported various
examples over the years of incompatibilities that had appeared.

> Said that, when built on x86-64, it does have gcov
> and man pages, so this must be an artefact of your build environment or
> your aarch64 setup, as this never was tested when run natively nor was
> it meant to be -

The problem for self hosted is the need to add the
prefixes, such as,

aarch64-unknown-freebsd12.0-

to the names such as:

gcov
gcov-tool
gcov.1.gz

The logic for doing that is conditional on the cross-build status
and the prefix is not added when it is a self-hosted-build (so it
is not a cross build).

But pkg-plist has no such conditional status (using gcov-tool
as an example) :

# grep -R gcov-tool /usr/ports/devel/aarch64-gcc/
/usr/ports/devel/aarch64-gcc/pkg-plist:bin/%%GCC_TARGET%%-gcov-tool

(and for good reasons for pkg-plist). Continuing to use gcov-tool
as an example. . .

>From 
>/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/gcc-6.3.0/gcc/Makefile.in :

GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
GCC_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gcc|sed 
'$(program_transform_name)')
CPP_INSTALL_NAME := $(shell echo cpp|sed '$(program_transform_name)')
GCOV_INSTALL_NAME := $(shell echo gcov|sed '$(program_transform_name)')
GCOV_TOOL_INSTALL_NAME := $(shell echo gcov-tool|sed 
'$(program_transform_name)')

# grep -R GCOV_TOOL_INSTALL_NAME 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/ | more
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/gcc-6.3.0/gcc/Makefile.in:GCOV_TOOL_INSTALL_NAME
 := $(shell echo gcov-tool|sed '$(program_transform_name)')
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/gcc-6.3.0/gcc/Makefile.in:  
rm -f $(DESTDIR)$(bindir)/$(GCOV_TOOL_INSTALL_NAME)$(exeext); \
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/gcc-6.3.0/gcc/Makefile.in:  
gcov-tool$(exeext) $(DESTDIR)$(bindir)/$(GCOV_TOOL_INSTALL_NAME)$(exeext); \
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/gcc-6.3.0/gcc/Makefile.in:$(DESTDIR)$(man1dir)/$(GCOV_TOOL_INSTALL_NAME)$(man1ext):
 doc/gcov-tool.1 installdirs
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/.build/gcc/Makefile:GCOV_TOOL_INSTALL_NAME
 := $(shell echo gcov-tool|sed '$(program_transform_name)')
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/.build/gcc/Makefile:
rm -f $(DESTDIR)$(bindir)/$(GCOV_TOOL_INSTALL_NAME)$(exeext); \
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/.build/gcc/Makefile:
gcov-tool$(exeext) $(DESTDIR)$(bindir)/$(GCOV_TOOL_INSTALL_NAME)$(exeext); \
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/.build/gcc/Makefile:$(DESTDIR)$(man1dir)/$(GCOV_TOOL_INSTALL_NAME)$(man1ext):
 doc/gcov-tool.1 installdirs

So when GCOV_TOOL_INSTALL_NAME omits the prefix for self-hosted
the result is incorrect for the pkg-plist .


> there is unfinished work in ports/base to create
> native toolchain.

I'm aware. I've submitted Bugzilla reports 21400 though 214405
against it from attempting to use it and work around some of
its problems.

> Please provide full log of your port build soemwhere, though I will not
> be able to look at it under weekend at the earliest.

I'll deal with sending a compressed copy of my:

~/ports_typescripts/r438677_aarch_xtoolchain_gcc_try-00-typescript

separately later --and off list. But I doubt it will be any
more interesting/useful than the above and below extractions.

> % pkg info -l aarch64-gcc-6.3.0 | grep gcov
>/usr/local/bin/aarch64-unknown-freebsd12.0-gcov
>/usr/local/bin/aarch64-unknown-freebsd12.0-gcov-tool
>
> /usr/local/lib/gcc/aarch64-unknown-freebsd12.0/6.3.0/plugin/include/gcov-counter.def
>
> /usr/local/lib/gcc/aarch64-unknown-freebsd12.0/6.3.0/plugin/include/gcov-io.h
>/usr/local/man/man1/aarch64-unknown-freebsd12.0-gcov.1.gz

Using gcov-tool as an example again:

As far as the log goes for mentions of gcov-tool. . .

# grep gcov-tool 
~/ports_typescripts/r438677_aarch_xtoolchain_gcc_try-00-typescript | more
c++ -std=gnu++98 -fno-PIE -c   -fbracket-depth=512 -DIN_GCC
-fno-strict-aliasing -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W 
-Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute 
-Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros 
-Wno-overlength-strings   -DHAVE_CONFIG_H -I. -I. 
-I/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/gcc-6.3.0/gcc 

Re: FYI on aarch64: building and installing devel/aarch64-gcc fails with "Unable to access file" for 6 files

2017-04-20 Thread Alexander Kabaev
aarch64-gcc is not a full compiler, but one intended to be used as
cross toolchain. Said that, when built on x86-64, it does have gcov
and man pages, so this must be an artefact of your build environment or
your aarch64 setup, as this never was tested when run natively nor was
it meant to be - there is unfinished work in ports/base to create
native toolchain.

Please provide full log of your port build soemwhere, though I will not
be able to look at it under weekend at the earliest.

% pkg info -l aarch64-gcc-6.3.0 | grep gcov
/usr/local/bin/aarch64-unknown-freebsd12.0-gcov
/usr/local/bin/aarch64-unknown-freebsd12.0-gcov-tool

/usr/local/lib/gcc/aarch64-unknown-freebsd12.0/6.3.0/plugin/include/gcov-counter.def

/usr/local/lib/gcc/aarch64-unknown-freebsd12.0/6.3.0/plugin/include/gcov-io.h
/usr/local/man/man1/aarch64-unknown-freebsd12.0-gcov.1.gz

Thanks,

On Wed, 19 Apr 2017 17:09:34 -0700
Mark Millard  wrote:

> The attempt to build & install devel/aarch64-gcc on a aarch64
> environment gets (I use WRKDIRPREFIX=/usr/obj/portswork ):
> 
> ===>  Installing for aarch64-gcc-6.3.0
> ===>  Checking if aarch64-gcc already installed
> ===>   Registering installation for aarch64-gcc-6.3.0 as automatic  
> pkg-static: Unable to access
> file 
> /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/bin/aarch64-unknown-freebsd12.0-gcov:No
> such file or directory pkg-static: Unable to access
> file 
> /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/bin/aarch64-unknown-freebsd12.0-gcov-tool:No
> such file or directory pkg-static: Unable to access
> file 
> /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-cpp.1.gz:No
> such file or directory pkg-static: Unable to access
> file 
> /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-g++.1.gz:No
> such file or directory pkg-static: Unable to access
> file 
> /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-gcc.1.gz:No
> such file or directory pkg-static: Unable to access
> file 
> /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-gcov.1.gz:No
> such file or directory *** Error code 74
> 
> Stop.
> make: stopped in /usr/ports/devel/aarch64-gcc
> 
> ===>>> Installation of aarch64-gcc-6.3.0 (devel/aarch64-gcc) failed  
> 
> 
> A hack before doing a portmaster -CDK lang/aarch64-gcc to continue
> the build/install is to execute the script shown below (I use
> WRKDIRPREFIX=/usr/obj/portswork ):
> 
> # more ~/aarch64-gcc_fixup.sh 
> #!/bin/sh
> cp
> -ax /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/.build/gcc/gcov 
> /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/bin/aarch64-unknown-freebsd12.0-gcov
> 
> cp
> -ax /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/.build/gcc/gcov-tool 
> /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/bin/aarch64-unknown-freebsd12.0-gcov-tool
> 
> gzip
> -c /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/gcc-*/gcc/doc/cpp.1
> > /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-cpp.1.gz
> 
> gzip
> -c /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/.build/gcc/doc/g++.1
> > /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-g++.1.gz
> 
> gzip
> -c /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/.build/gcc/doc/gcc.1
> > /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-gcc.1.gz
> 
> gzip
> -c /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/gcc-*/gcc/doc/gcov.1
> > /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-gcov.1.gz
> 
> That puts in place the files that are not where they are expected.
> 
> Of course this sort of hack-then-continue would not fit well
> with poudriere use or analogous build techniques.
> 
> 
> The same sort of thing happens for lang/powerpc64 on a powerpc64
> environment.
> 
> As I remember. . .
> The same sort of thing happens for lang/amd64 on a amd64
> environment.
> 
> So I have ~/powerpc64-gcc_fixup.sh and ~/amd64-gcc_fixup.sh
> as well.
> 
> 
> I get to these ???-gcc's by trying to install a
> self-hosted lang/???-xtoolchain-gcc in each case.
> Such allows for experimenting with self-hosted gcc
> based system builds that are libc++ based (instead
> of using gcc 4.2.1).
> 
> ===
> Mark Millard
> markmi at dsl-only.net
> 
> ___
> freebsd-...@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscr...@freebsd.org"


-- 
Alexander Kabaev


pgpBs3WB8qnxL.pgp
Description: Цифровая подпись OpenPGP


FYI on aarch64: building and installing devel/aarch64-gcc fails with "Unable to access file" for 6 files

2017-04-19 Thread Mark Millard
The attempt to build & install devel/aarch64-gcc on a aarch64 environment
gets (I use WRKDIRPREFIX=/usr/obj/portswork ):

===>  Installing for aarch64-gcc-6.3.0
===>  Checking if aarch64-gcc already installed
===>   Registering installation for aarch64-gcc-6.3.0 as automatic
pkg-static: Unable to access file 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/bin/aarch64-unknown-freebsd12.0-gcov:No
 such file or directory
pkg-static: Unable to access file 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/bin/aarch64-unknown-freebsd12.0-gcov-tool:No
 such file or directory
pkg-static: Unable to access file 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-cpp.1.gz:No
 such file or directory
pkg-static: Unable to access file 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-g++.1.gz:No
 such file or directory
pkg-static: Unable to access file 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-gcc.1.gz:No
 such file or directory
pkg-static: Unable to access file 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-gcov.1.gz:No
 such file or directory
*** Error code 74

Stop.
make: stopped in /usr/ports/devel/aarch64-gcc

===>>> Installation of aarch64-gcc-6.3.0 (devel/aarch64-gcc) failed


A hack before doing a portmaster -CDK lang/aarch64-gcc to continue
the build/install is to execute the script shown below (I use
WRKDIRPREFIX=/usr/obj/portswork ):

# more ~/aarch64-gcc_fixup.sh 
#!/bin/sh
cp -ax /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/.build/gcc/gcov 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/bin/aarch64-unknown-freebsd12.0-gcov

cp -ax /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/.build/gcc/gcov-tool 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/bin/aarch64-unknown-freebsd12.0-gcov-tool

gzip -c /usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/gcc-*/gcc/doc/cpp.1 
> 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-cpp.1.gz

gzip -c 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/.build/gcc/doc/g++.1 > 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-g++.1.gz

gzip -c 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/.build/gcc/doc/gcc.1 > 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-gcc.1.gz

gzip -c 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/gcc-*/gcc/doc/gcov.1 > 
/usr/obj/portswork/usr/ports/devel/aarch64-gcc/work/stage/usr/local/man/man1/aarch64-unknown-freebsd12.0-gcov.1.gz

That puts in place the files that are not where they are expected.

Of course this sort of hack-then-continue would not fit well
with poudriere use or analogous build techniques.


The same sort of thing happens for lang/powerpc64 on a powerpc64
environment.

As I remember. . .
The same sort of thing happens for lang/amd64 on a amd64
environment.

So I have ~/powerpc64-gcc_fixup.sh and ~/amd64-gcc_fixup.sh
as well.


I get to these ???-gcc's by trying to install a
self-hosted lang/???-xtoolchain-gcc in each case.
Such allows for experimenting with self-hosted gcc
based system builds that are libc++ based (instead
of using gcc 4.2.1).

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

___
freebsd-toolchain@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"