On Fri, Feb 17, 2023 at 1:30 PM Martin Jansa <[email protected]> wrote:
>
> * don't export CGO_CFLAGS/CGO_CXXFLAGS like the previous version
>   didn't before:
>   
> https://git.yoctoproject.org/meta-virtualization/commit/?id=aceed7bf95cc8a42c8f470d8edf3c6f03d49da00
>
> * both docker-moby and docker-ce have the same issue as shown with
>   qemuarm build:
>   docker-moby: http://errors.yoctoproject.org/Errors/Details/690021/
>   docker-ce: http://errors.yoctoproject.org/Errors/Details/690020/
>

Thanks for the change .. not a trivial fixup, and thanks for all the
logging of the reasons.

My testing passed as well, so this is now on master-next.

Bruce


> Signed-off-by: Martin Jansa <[email protected]>
> ---
>  recipes-containers/docker/docker-ce_git.bb    |   2 +-
>  recipes-containers/docker/docker-moby_git.bb  |   2 +-
>  ...0001-dynbinary-use-go-cross-compiler.patch | 104 ++++++++++++++++--
>  3 files changed, 97 insertions(+), 11 deletions(-)
>
> diff --git a/recipes-containers/docker/docker-ce_git.bb 
> b/recipes-containers/docker/docker-ce_git.bb
> index 0f43da6..b9888d2 100644
> --- a/recipes-containers/docker/docker-ce_git.bb
> +++ b/recipes-containers/docker/docker-ce_git.bb
> @@ -41,7 +41,7 @@ SRC_URI = "\
>         
> git://github.com/docker/cli;branch=23.0;name=cli;destsuffix=git/cli;protocol=https
>  \
>         file://0001-libnetwork-use-GO-instead-of-go.patch \
>         file://docker.init \
> -        file://0001-dynbinary-use-go-cross-compiler.patch \
> +        
> file://0001-dynbinary-use-go-cross-compiler.patch;patchdir=src/import \
>          file://0001-cli-use-external-GO111MODULE-and-cross-compiler.patch \
>         "
>
> diff --git a/recipes-containers/docker/docker-moby_git.bb 
> b/recipes-containers/docker/docker-moby_git.bb
> index 19f4763..17cd316 100644
> --- a/recipes-containers/docker/docker-moby_git.bb
> +++ b/recipes-containers/docker/docker-moby_git.bb
> @@ -45,7 +45,7 @@ SRC_URI = "\
>         file://docker.init \
>         file://0001-libnetwork-use-GO-instead-of-go.patch \
>          file://0001-cli-use-external-GO111MODULE-and-cross-compiler.patch \
> -        file://0001-dynbinary-use-go-cross-compiler.patch \
> +        
> file://0001-dynbinary-use-go-cross-compiler.patch;patchdir=src/import \
>         "
>
>  DOCKER_COMMIT = "${SRCREV_moby}"
> diff --git 
> a/recipes-containers/docker/files/0001-dynbinary-use-go-cross-compiler.patch 
> b/recipes-containers/docker/files/0001-dynbinary-use-go-cross-compiler.patch
> index c10e69d..ea8f4c5 100644
> --- 
> a/recipes-containers/docker/files/0001-dynbinary-use-go-cross-compiler.patch
> +++ 
> b/recipes-containers/docker/files/0001-dynbinary-use-go-cross-compiler.patch
> @@ -1,20 +1,106 @@
> -From bbf600cc4d46c3f7ec0c1b486790a2402d41f550 Mon Sep 17 00:00:00 2001
> +From 3ce6089417b8c6c4e8279e6ef60213436ebf8793 Mon Sep 17 00:00:00 2001
>  From: Bruce Ashfield <[email protected]>
>  Date: Tue, 30 Jun 2020 22:23:33 -0400
>  Subject: [PATCH] dynbinary: use go cross compiler
>
> +MJ: use ${GO} also in "go env" calls, because native go:
> +  $ go env GOARM
> +  5
> +while go cross compiler for my target:
> +  $ ${GO} env GOARM
> +  7
> +this can lead to:
> +  error: switch '-mcpu=cortex-a9' conflicts with switch '-march=armv5t' 
> [-Werror]
> +
> +but even after fixing it to use "better" -march it still doesn't match with 
> -mcpu
> +set in our GOBUILDFLAGS, causing e.g.:
> +  error: switch '-mcpu=cortex-a9' conflicts with switch 
> '-march=armv7-a+simd' [-Werror]
> +
> +so drop CGO_CFLAGS/CGO_CXXFLAGS as in OE builds we don't need them
> +as long as ${GO} and GOBUILDFLAGS are respected
> +
> +it was added in:
> +https://github.com/moby/moby/commit/12558c8d6ea9f388b54eb94ba6b9eb4a9fc5c9f2
> +
> +and it wasn't an issue before:
> +https://github.com/moby/moby/commit/8c12a6648b368cc2acaea0339d6c57c920ed265c
> +
> +because it was using 'case "${GOARM}" in' and ${GOARM} was empty in our 
> builds
> +
>  Upstream-Status: Inappropriate [embedded specific]
>
> +Signed-off-by: Martin Jansa <[email protected]>
>  Signed-off-by: Bruce Ashfield <[email protected]>
>  ---
> - hack/make/.binary | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -Index: git/src/import/hack/make/.binary
> -===================================================================
> ---- git.orig/src/import/hack/make/.binary
> -+++ git/src/import/hack/make/.binary
> -@@ -66,7 +66,7 @@
> + hack/make/.binary | 37 ++++++++-----------------------------
> + 1 file changed, 8 insertions(+), 29 deletions(-)
> +
> +diff --git a/hack/make/.binary b/hack/make/.binary
> +index 39c00cd50c..de32ad1cc7 100644
> +--- a/hack/make/.binary
> ++++ b/hack/make/.binary
> +@@ -3,7 +3,7 @@ set -e
> +
> + # a helper to provide ".exe" when it's appropriate
> + binary_extension() {
> +-      if [ "$(go env GOOS)" = 'windows' ]; then
> ++      if [ "$(${GO} env GOOS)" = 'windows' ]; then
> +               echo -n '.exe'
> +       fi
> + }
> +@@ -16,33 +16,12 @@ source "${MAKEDIR}/.go-autogen"
> + (
> +       export GOGC=${DOCKER_BUILD_GOGC:-1000}
> +
> +-      if [ "$(go env GOOS)/$(go env GOARCH)" != "$(go env GOHOSTOS)/$(go 
> env GOHOSTARCH)" ]; then
> +-              # must be cross-compiling!
> +-              if [ "$(go env GOOS)/$(go env GOARCH)" = "linux/arm" ]; then
> +-                      # specify name of the target ARM architecture
> +-                      case "$(go env GOARM)" in
> +-                              5)
> +-                                      export CGO_CFLAGS="-march=armv5t"
> +-                                      export CGO_CXXFLAGS="-march=armv5t"
> +-                                      ;;
> +-                              6)
> +-                                      export CGO_CFLAGS="-march=armv6"
> +-                                      export CGO_CXXFLAGS="-march=armv6"
> +-                                      ;;
> +-                              7)
> +-                                      export CGO_CFLAGS="-march=armv7-a"
> +-                                      export CGO_CXXFLAGS="-march=armv7-a"
> +-                                      ;;
> +-                      esac
> +-              fi
> +-      fi
> +-
> +       # -buildmode=pie is not supported on Windows arm64 and Linux mips*, 
> ppc64be
> +       # 
> https://github.com/golang/go/blob/go1.19.4/src/cmd/internal/sys/supported.go#L125-L132
> +       if ! [ "$DOCKER_STATIC" = "1" ]; then
> +               # -buildmode=pie not supported when -race is enabled
> +               if [[ " $BUILDFLAGS " != *" -race "* ]]; then
> +-                      case "$(go env GOOS)/$(go env GOARCH)" in
> ++                      case "$(${GO} env GOOS)/$(${GO} env GOARCH)" in
> +                               windows/arm64 | linux/mips* | linux/ppc64) ;;
> +                               *)
> +                                       BUILDFLAGS+=("-buildmode=pie")
> +@@ -54,11 +33,11 @@ source "${MAKEDIR}/.go-autogen"
> +       # only necessary for non-sandboxed invocation where TARGETPLATFORM is 
> empty
> +       PLATFORM_NAME=$TARGETPLATFORM
> +       if [ -z "$PLATFORM_NAME" ]; then
> +-              PLATFORM_NAME="$(go env GOOS)/$(go env GOARCH)"
> +-              if [ -n "$(go env GOARM)" ]; then
> +-                      PLATFORM_NAME+="/v$(go env GOARM)"
> +-              elif [ -n "$(go env GOAMD64)" ] && [ "$(go env GOAMD64)" != 
> "v1" ]; then
> +-                      PLATFORM_NAME+="/$(go env GOAMD64)"
> ++              PLATFORM_NAME="$(${GO} env GOOS)/$(${GO} env GOARCH)"
> ++              if [ -n "$(${GO} env GOARM)" ]; then
> ++                      PLATFORM_NAME+="/v$(${GO} env GOARM)"
> ++              elif [ -n "$(${GO} env GOAMD64)" ] && [ "$(${GO} env 
> GOAMD64)" != "v1" ]; then
> ++                      PLATFORM_NAME+="/$(${GO} env GOAMD64)"
> +               fi
> +       fi
> +
> +@@ -66,7 +45,7 @@ source "${MAKEDIR}/.go-autogen"
>         if [ -n "$DOCKER_DEBUG" ]; then
>                 set -x
>         fi
> --
> 2.39.2
>
>
> 
>


-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#7880): 
https://lists.yoctoproject.org/g/meta-virtualization/message/7880
Mute This Topic: https://lists.yoctoproject.org/mt/97034605/21656
Group Owner: [email protected]
Unsubscribe: 
https://lists.yoctoproject.org/g/meta-virtualization/leave/6693005/21656/1014668956/xyzzy
 [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to