[meta-virtualization] [PATCH] netns: change build target to 'build' instead of 'static'
Bruce Ashfield
bruce.ashfield at gmail.com
Wed Mar 20 11:41:03 PDT 2019
On Mon, Mar 18, 2019 at 2:48 PM Mark Asselstine
<mark.asselstine at windriver.com> wrote:
>
> Attempting to build for x86-64 will result in an error:
> cannot find package runtime/cgo (using -importcfg)
> ...go/pkg/tool/linux_amd64/link: cannot open file : open : no such file or directory
>
> As a workaround we switch the build target to 'build' which results in
> a slightly smaller executable but does mean that several dynamic
> libraries are required to run the generated executable. This shouldn't
> be a problem as the build system will ensure the libraries are present
> on images where the executable will be included. This change only
> means the executable can't be copied as a single entity to a different
> machine and run.
>
> We do also patch the Makefile to allow the 'static' target to build
> successfully and in the patch commit log we describe the issue in full
> (at least in as much detail as we currently have on the issue). But
> since the issue isn't fully understood we don't recommend the 'static'
> build to be used at this time, thus default to the 'build' target.
>
> Signed-off-by: Mark Asselstine <mark.asselstine at windriver.com>
> ---
>
> Bruce, Paul,
>
> Just a few notes on this.
> * Do I understand what is going on in full, no. The behavior is
> matching what was described in earlier version of GO but I don't
> know why we are being affected when we should not be.
> * This brings up a question around GO recipes, we should most likely
> be consistent in building fully static vs not. This should most
> likely be addressed in the go.bbclass. A topic for further discussion.
> * Do I want to get to 100% understanding yes. But as you two have seen
> there are other GO related changes/work that I have underway that
> I want to get done to make building GO packages consistent. I have
> a gut feeling that part of the issue here is related to a build
> inconsistency so I want to rule that out before I dig in any further.
> * Related to the previous point, the reason I found this and the reason
> I want a fix merged is to get me to a point where all GO packages in
> meta-virtualization build correctly, so I can affect other changes and
> cleanup accross all GO recipes knowing they are kept in a working
> state.
>
> I do want to have this merged as we are going from a not working to a
> working state, freeing me up to tackle some needed GO cleanup, to
> address the consistency issues I mention above. That being said, I
> will definitely understand if you or others object to this change
> being merged.
I don't see any objections, so I've gone ahead and merged this. If it
causes us problems in the future, we can revisit it.
Bruce
>
> ...orce-rebuilding-all-packages-to-avoid-cgo.patch | 54 ++++++++++++++++++++++
> recipes-networking/netns/netns_git.bb | 5 +-
> 2 files changed, 58 insertions(+), 1 deletion(-)
> create mode 100644 recipes-networking/netns/files/Makefile-force-rebuilding-all-packages-to-avoid-cgo.patch
>
> diff --git a/recipes-networking/netns/files/Makefile-force-rebuilding-all-packages-to-avoid-cgo.patch b/recipes-networking/netns/files/Makefile-force-rebuilding-all-packages-to-avoid-cgo.patch
> new file mode 100644
> index 0000000..3b0c0a4
> --- /dev/null
> +++ b/recipes-networking/netns/files/Makefile-force-rebuilding-all-packages-to-avoid-cgo.patch
> @@ -0,0 +1,54 @@
> +From 09524d187ef108784c854a0c247ac6476a10bb67 Mon Sep 17 00:00:00 2001
> +From: Mark Asselstine <mark.asselstine at windriver.com>
> +Date: Mon, 18 Mar 2019 14:04:16 -0400
> +Subject: [PATCH] Makefile: force rebuilding all packages to avoid cgo
> +
> +We are running into an issue when attempting to build 'static',
> +similar to what is described by
> +
> +https://plus.google.com/117192131596509381660/posts/eNnNePihYnK
> +and
> +https://github.com/golang/go/issues/9369
> +
> +In our case we can see that it manifests as a build error
> +
> + cannot find package runtime/cgo (using -importcfg)
> + ...go/pkg/tool/linux_amd64/link: cannot open file : open : no such file or directory
> +
> +Although the descriptions of issue indicate that newer versions of GO,
> +such as the version we are using, should not have this issue it is
> +clear from the error that cgo is being referenced when it should be
> +out of the picture.
> +
> +Interesting enough this issue only manifests when we are building on
> +x86-64 and building for x86-64 which might indicate that GO might be
> +finding -native packages and not -cross packages.
> +
> +This change works around the issue and will allow for the building of
> +the 'static' make target, but at this time and until the issue is
> +completely understood, it is recommended that the 'build' target is
> +used.
> +
> +Upstream-Status: Inappropriate [only an issue with our builds]
> +
> +Signed-off-by: Mark Asselstine <mark.asselstine at windriver.com>
> +---
> + Makefile | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/Makefile b/Makefile
> +index 476cb9b..ecd0df4 100644
> +--- a/src/import/Makefile
> ++++ b/src/import/Makefile
> +@@ -41,7 +41,7 @@ $(NAME): *.go VERSION.txt
> + .PHONY: static
> + static: ## Builds a static executable
> + @echo "+ $@"
> +- CGO_ENABLED=0 $(GO) build \
> ++ CGO_ENABLED=0 $(GO) build -a -pkgdir dontusecurrentpkgs \
> + -tags "$(BUILDTAGS) static_build" \
> + ${GO_LDFLAGS_STATIC} -o $(NAME) .
> +
> +--
> +2.7.4
> +
> diff --git a/recipes-networking/netns/netns_git.bb b/recipes-networking/netns/netns_git.bb
> index b6d3594..f5cdace 100644
> --- a/recipes-networking/netns/netns_git.bb
> +++ b/recipes-networking/netns/netns_git.bb
> @@ -5,6 +5,7 @@ LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=48ef0979a2bcc3fae14ff30b8a7f5d
>
> SRC_URI = "git://github.com/genuinetools/netns;branch=master \
> file://0001-Allow-selection-of-go-compiler.patch \
> + file://Makefile-force-rebuilding-all-packages-to-avoid-cgo.patch \
> "
> SRCREV = "0da6ab0997707024debe68c91e940c9168041bf8"
> PV = "0.4.0"
> @@ -42,7 +43,9 @@ do_compile() {
> export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
>
> cd ${S}/src/import
> - oe_runmake static
> + # Static builds work but are not recommended. See Makefile*cgo patch.
> + #oe_runmake static
> + oe_runmake build
> }
>
> do_install() {
> --
> 2.7.4
>
--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
More information about the meta-virtualization
mailing list