Message ID | 20220113192249.818255-1-dmitry.baryshkov@linaro.org |
---|---|
State | Accepted, archived |
Commit | e7d2d68679c1980d9e889d96c3eab49589f5b832 |
Headers | show |
Series | [v2] go: fix building without SECURITY_LDFLAGS | expand |
Thanks, this should work. Alex On Thu, 13 Jan 2022 at 20:22, Dmitry Baryshkov <dmitry.baryshkov@linaro.org> wrote: > Commit 9985b17a30bb ("go: correctly set debug-prefix-map and build > directory") has changed CGO_LDFLAGS to the manually crafted version of > LDFLAGS to strip out DEBUG_PREFIX_MAP contents. > > However this manually crafted version includes ${SECURITY_LDFLAGS}. > > If security_flags.inc is not included, the variable is not defined, thus > CGO_LDFLAGS will include the '${SECURITY_LDFLAGS}' literally. When > building the recipe, the build would break with the follwing message: > > aarch64-linaro-linux-gcc: error: ${SECURITY_LDFLAGS}: No such file or > directory > > So, instead of manually specifying variable contents, perform the > expected action: filter offending arguments out of LDFLAGS. > > Cc: Alexander Kanavin <alex.kanavin@gmail.com> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > --- > meta/recipes-devtools/go/go-runtime.inc | 3 ++- > meta/recipes-devtools/go/go-target.inc | 3 ++- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/meta/recipes-devtools/go/go-runtime.inc > b/meta/recipes-devtools/go/go-runtime.inc > index a08d44dd3a8c..ccb86d4fe9a6 100644 > --- a/meta/recipes-devtools/go/go-runtime.inc > +++ b/meta/recipes-devtools/go/go-runtime.inc > @@ -10,7 +10,8 @@ DEBUG_PREFIX_MAP = "\ > export CGO_CFLAGS = "${CFLAGS}" > export CGO_CPPFLAGS = "${CPPFLAGS}" > export CGO_CXXFLAGS = "${CXXFLAGS}" > -export CGO_LDFLAGS = "-Wl,-O1 ${TARGET_LINK_HASH_STYLE} ${ASNEEDED} > ${SECURITY_LDFLAGS}" > +# Filter out -fdebug-prefix-map options as they clash with the GO's build > system > +export CGO_LDFLAGS = "${@ ' '.join(filter(lambda f: not > f.startswith('-fdebug-prefix-map'), d.getVar('LDFLAGS').split())) }" > export GOCACHE = "${B}/.cache" > > GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${LDFLAGS}" > diff --git a/meta/recipes-devtools/go/go-target.inc > b/meta/recipes-devtools/go/go-target.inc > index 51f1b79cc320..b0d487ae1c21 100644 > --- a/meta/recipes-devtools/go/go-target.inc > +++ b/meta/recipes-devtools/go/go-target.inc > @@ -9,7 +9,8 @@ DEBUG_PREFIX_MAP = "\ > export CGO_CFLAGS = "${CFLAGS}" > export CGO_CPPFLAGS = "${CPPFLAGS}" > export CGO_CXXFLAGS = "${CXXFLAGS}" > -export CGO_LDFLAGS = "-Wl,-O1 ${TARGET_LINK_HASH_STYLE} ${ASNEEDED} > ${SECURITY_LDFLAGS}" > +# Filter out -fdebug-prefix-map options as they clash with the GO's build > system > +export CGO_LDFLAGS = "${@ ' '.join(filter(lambda f: not > f.startswith('-fdebug-prefix-map'), d.getVar('LDFLAGS').split())) }" > > export GOCACHE = "${B}/.cache" > GO_LDFLAGS = "" > -- > 2.30.2 > >
diff --git a/meta/recipes-devtools/go/go-runtime.inc b/meta/recipes-devtools/go/go-runtime.inc index a08d44dd3a8c..ccb86d4fe9a6 100644 --- a/meta/recipes-devtools/go/go-runtime.inc +++ b/meta/recipes-devtools/go/go-runtime.inc @@ -10,7 +10,8 @@ DEBUG_PREFIX_MAP = "\ export CGO_CFLAGS = "${CFLAGS}" export CGO_CPPFLAGS = "${CPPFLAGS}" export CGO_CXXFLAGS = "${CXXFLAGS}" -export CGO_LDFLAGS = "-Wl,-O1 ${TARGET_LINK_HASH_STYLE} ${ASNEEDED} ${SECURITY_LDFLAGS}" +# Filter out -fdebug-prefix-map options as they clash with the GO's build system +export CGO_LDFLAGS = "${@ ' '.join(filter(lambda f: not f.startswith('-fdebug-prefix-map'), d.getVar('LDFLAGS').split())) }" export GOCACHE = "${B}/.cache" GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${LDFLAGS}" diff --git a/meta/recipes-devtools/go/go-target.inc b/meta/recipes-devtools/go/go-target.inc index 51f1b79cc320..b0d487ae1c21 100644 --- a/meta/recipes-devtools/go/go-target.inc +++ b/meta/recipes-devtools/go/go-target.inc @@ -9,7 +9,8 @@ DEBUG_PREFIX_MAP = "\ export CGO_CFLAGS = "${CFLAGS}" export CGO_CPPFLAGS = "${CPPFLAGS}" export CGO_CXXFLAGS = "${CXXFLAGS}" -export CGO_LDFLAGS = "-Wl,-O1 ${TARGET_LINK_HASH_STYLE} ${ASNEEDED} ${SECURITY_LDFLAGS}" +# Filter out -fdebug-prefix-map options as they clash with the GO's build system +export CGO_LDFLAGS = "${@ ' '.join(filter(lambda f: not f.startswith('-fdebug-prefix-map'), d.getVar('LDFLAGS').split())) }" export GOCACHE = "${B}/.cache" GO_LDFLAGS = ""
Commit 9985b17a30bb ("go: correctly set debug-prefix-map and build directory") has changed CGO_LDFLAGS to the manually crafted version of LDFLAGS to strip out DEBUG_PREFIX_MAP contents. However this manually crafted version includes ${SECURITY_LDFLAGS}. If security_flags.inc is not included, the variable is not defined, thus CGO_LDFLAGS will include the '${SECURITY_LDFLAGS}' literally. When building the recipe, the build would break with the follwing message: aarch64-linaro-linux-gcc: error: ${SECURITY_LDFLAGS}: No such file or directory So, instead of manually specifying variable contents, perform the expected action: filter offending arguments out of LDFLAGS. Cc: Alexander Kanavin <alex.kanavin@gmail.com> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> --- meta/recipes-devtools/go/go-runtime.inc | 3 ++- meta/recipes-devtools/go/go-target.inc | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-)