On Fri, Nov 17, 2017 at 7:49 AM, Matt Madison <matt@madison.systems> wrote: > On Thu, Nov 16, 2017 at 3:29 PM, Matt Madison <matt@madison.systems> wrote: >> On Thu, Nov 16, 2017 at 12:29 PM, Burton, Ross <ross.bur...@intel.com> wrote: >>> Looks like this is failing on some of our autobuilders, such as >>> https://autobuilder.yocto.io/builders/nightly-musl-x86-64/builds/58/steps/BuildImages/logs/stdio >> >> I'm looking into it. > > OK, from my testing, it's not this patch that's causing the build > failures, it's Khem's "go: Fix build with PIE on musl" patch. > > The added patch there that changes the default buildmode to 'pie' is > causing the external linker to be used for building go_bootstrap and > target Go compiler and forcing inclusion of the cgo runtime. It will > take some recipe modifications and another patch to Go's make.bash to > deal with this, but I'm not sure that this particular patch is even a > good idea. Making PIE builds work with musl is OK, but the additional > buildmode default change is too much. >
It was working for me until 1.9, but now I see it having issues. I agree changing default build mode to pie is a bit ambitious. I will try to work it out to defer pie to later time. > -Matt > >> >> Thanks, >> -Matt >> >>> >>> | cmd/go/internal/vet >>> | # cmd/api >>> | >>> /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-musl-x86-64/build/build/tmp/work/core2-64-poky-linux-musl/go/1.9-r0/go/src/host-tools/link: >>> running x86_64-poky-linux-musl-gcc failed: exit status 1 >>> | >>> /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-musl-x86-64/build/build/tmp/work/core2-64-poky-linux-musl/go/1.9-r0/build-tmp/go-link-213113620/000000.o: >>> In function `vfprintf': >>> | /usr/include/x86_64-linux-gnu/bits/stdio2.h:127: undefined reference to >>> `__vfprintf_chk' >>> | >>> /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-musl-x86-64/build/build/tmp/work/core2-64-poky-linux-musl/go/1.9-r0/build-tmp/go-link-213113620/000000.o: >>> In function `fprintf': >>> | /usr/include/x86_64-linux-gnu/bits/stdio2.h:97: undefined reference to >>> `__fprintf_chk' >>> | collect2: error: ld returned 1 exit status >>> >>> It's running x86-64-poky-linux-musl-gcc but using headers from /usr, which >>> looks wrong. >>> >>> Ross >>> >>> >>> On 14 November 2017 at 17:21, Matt Madison <matt@madison.systems> wrote: >>>> >>>> Yes, drat it, v3 should fix that. >>>> >>>> Thanks, >>>> -Matt >>>> >>>> On Tue, Nov 14, 2017 at 9:20 AM, Otavio Salvador >>>> <otavio.salva...@ossystems.com.br> wrote: >>>> > Hello Matt, >>>> > >>>> > A minor thing: >>>> > >>>> > Upstream-Status: Pending >>>> > >>>> > On Tue, Nov 14, 2017 at 3:18 PM, Matt Madison <matt@madison.systems> >>>> > wrote: >>>> >> For cross-canadian builds, we were accidentally using >>>> >> the crosssdk C compiler when building the Go compiler >>>> >> bootstrap. Add a patch to the make script to let us >>>> >> use BUILD_CC, and prepend do_compile to set it in >>>> >> the local environment to ensure that the trailing >>>> >> blank gets stripped, since that confuses Go. >>>> >> >>>> >> [YOCTO #12341] >>>> >> >>>> >> Signed-off-by: Matt Madison <matt@madison.systems> >>>> >> --- >>>> >> meta/recipes-devtools/go/go-1.9.inc | 1 + >>>> >> ...verride-CC-when-building-dist-and-go_boot.patch | 43 >>>> >> ++++++++++++++++++++++ >>>> >> meta/recipes-devtools/go/go-common.inc | 4 ++ >>>> >> 3 files changed, 48 insertions(+) >>>> >> create mode 100644 >>>> >> meta/recipes-devtools/go/go-1.9/0010-make.bash-override-CC-when-building-dist-and-go_boot.patch >>>> >> >>>> >> diff --git a/meta/recipes-devtools/go/go-1.9.inc >>>> >> b/meta/recipes-devtools/go/go-1.9.inc >>>> >> index 65adaa8..1dbb5ef 100644 >>>> >> --- a/meta/recipes-devtools/go/go-1.9.inc >>>> >> +++ b/meta/recipes-devtools/go/go-1.9.inc >>>> >> @@ -15,6 +15,7 @@ SRC_URI += "\ >>>> >> file://0007-ld-add-soname-to-shareable-objects.patch \ >>>> >> >>>> >> file://0008-make.bash-add-GOHOSTxx-indirection-for-cross-canadia.patch \ >>>> >> >>>> >> file://0009-cmd-go-buildmode-pie-forces-external-linking-mode-on.patch \ >>>> >> + >>>> >> file://0010-make.bash-override-CC-when-building-dist-and-go_boot.patch \ >>>> >> " >>>> >> SRC_URI[main.md5sum] = "da2d44ea384076efec43ee1f8b7d45d2" >>>> >> SRC_URI[main.sha256sum] = >>>> >> "a4ab229028ed167ba1986825751463605264e44868362ca8e7accc8be057e993" >>>> >> diff --git >>>> >> a/meta/recipes-devtools/go/go-1.9/0010-make.bash-override-CC-when-building-dist-and-go_boot.patch >>>> >> b/meta/recipes-devtools/go/go-1.9/0010-make.bash-override-CC-when-building-dist-and-go_boot.patch >>>> >> new file mode 100644 >>>> >> index 0000000..94ea197 >>>> >> --- /dev/null >>>> >> +++ >>>> >> b/meta/recipes-devtools/go/go-1.9/0010-make.bash-override-CC-when-building-dist-and-go_boot.patch >>>> >> @@ -0,0 +1,43 @@ >>>> >> +From 36787fbf0e0a6298ba1038bbbae526654597eee4 Mon Sep 17 00:00:00 2001 >>>> >> +From: Matt Madison <matt@madison.systems> >>>> >> +Date: Tue, 14 Nov 2017 07:38:42 -0800 >>>> >> +Subject: [PATCH 10/10] make.bash: override CC when building dist and >>>> >> + go_bootstrap >>>> >> + >>>> >> +For cross-canadian builds, dist and go_bootstrap >>>> >> +run on the build host, so CC needs to point to the >>>> >> +build host's C compiler. Add a BUILD_CC environment >>>> >> +for this, falling back to $CC if not present. >>>> >> + >>>> >> +Upstream-Status: pending >>>> >> + >>>> >> +Signed-off-by: Matt Madison <matt@madison.systems> >>>> >> +--- >>>> >> + src/make.bash | 4 ++-- >>>> >> + 1 file changed, 2 insertions(+), 2 deletions(-) >>>> >> + >>>> >> +diff --git a/src/make.bash b/src/make.bash >>>> >> +index 0bdadc6..f199349 100755 >>>> >> +--- a/src/make.bash >>>> >> ++++ b/src/make.bash >>>> >> +@@ -131,7 +131,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then >>>> >> + exit 1 >>>> >> + fi >>>> >> + rm -f cmd/dist/dist >>>> >> +-GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" >>>> >> "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist >>>> >> ++CC=${BUILD_CC:-${CC}} GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" >>>> >> "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist >>>> >> + >>>> >> + # -e doesn't propagate out of eval, so check success by hand. >>>> >> + eval $(./cmd/dist/dist env -p || echo FAIL=true) >>>> >> +@@ -167,7 +167,7 @@ elif [ "$1" = "--host-only" ]; then >>>> >> + fi >>>> >> + >>>> >> + if [ "$do_host_build" = "yes" ]; then >>>> >> +- ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds >>>> >> go_bootstrap >>>> >> ++ CC=${BUILD_CC:-${CC}} ./cmd/dist/dist bootstrap $buildall >>>> >> $GO_DISTFLAGS -v # builds go_bootstrap >>>> >> + # Delay move of dist tool to now, because bootstrap may clear >>>> >> tool directory. >>>> >> + mv cmd/dist/dist "$GOTOOLDIR"/dist >>>> >> + echo >>>> >> +-- >>>> >> +2.7.4 >>>> >> + >>>> >> diff --git a/meta/recipes-devtools/go/go-common.inc >>>> >> b/meta/recipes-devtools/go/go-common.inc >>>> >> index ce1eb86..9af6873 100644 >>>> >> --- a/meta/recipes-devtools/go/go-common.inc >>>> >> +++ b/meta/recipes-devtools/go/go-common.inc >>>> >> @@ -20,3 +20,7 @@ B = "${S}" >>>> >> >>>> >> INHIBIT_PACKAGE_DEBUG_SPLIT = "1" >>>> >> SSTATE_SCAN_CMD = "true" >>>> >> + >>>> >> +do_compile_prepend() { >>>> >> + BUILD_CC=${BUILD_CC} >>>> >> +} >>>> >> -- >>>> >> 2.7.4 >>>> >> >>>> >> -- >>>> >> _______________________________________________ >>>> >> Openembedded-core mailing list >>>> >> Openembedded-core@lists.openembedded.org >>>> >> http://lists.openembedded.org/mailman/listinfo/openembedded-core >>>> > >>>> > >>>> > >>>> > -- >>>> > Otavio Salvador O.S. Systems >>>> > http://www.ossystems.com.br http://code.ossystems.com.br >>>> > Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750 >>>> -- >>>> _______________________________________________ >>>> Openembedded-core mailing list >>>> Openembedded-core@lists.openembedded.org >>>> http://lists.openembedded.org/mailman/listinfo/openembedded-core > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core