diff options
-rw-r--r-- | recipes-containers/cri-tools/cri-tools/0001-build-allow-environmental-CGO-settings-and-pass-dont.patch | 52 | ||||
-rw-r--r-- | recipes-containers/cri-tools/cri-tools_git.bb | 78 |
2 files changed, 130 insertions, 0 deletions
diff --git a/recipes-containers/cri-tools/cri-tools/0001-build-allow-environmental-CGO-settings-and-pass-dont.patch b/recipes-containers/cri-tools/cri-tools/0001-build-allow-environmental-CGO-settings-and-pass-dont.patch new file mode 100644 index 00000000..5772c1ae --- /dev/null +++ b/recipes-containers/cri-tools/cri-tools/0001-build-allow-environmental-CGO-settings-and-pass-dont.patch | |||
@@ -0,0 +1,52 @@ | |||
1 | From 28ee02687339b657a7aa93570015a6751c824e2d Mon Sep 17 00:00:00 2001 | ||
2 | From: Bruce Ashfield <bruce.ashfield@gmail.com> | ||
3 | Date: Wed, 10 Feb 2021 09:58:24 -0500 | ||
4 | Subject: [PATCH] build: allow environmental CGO settings and pass | ||
5 | dontusecurrentpkgs | ||
6 | |||
7 | The build system already knows whether or not we want to use CGO, | ||
8 | so we remove the hardcoded variant so our exported environment | ||
9 | variable will control the enablement. | ||
10 | |||
11 | Since our oe-core go infrastructure insists on both -pie and static | ||
12 | builds (for the most part), and that is not recommended by many | ||
13 | packages, we end up with errors like: | ||
14 | |||
15 | 1.20.0+gitec9e336fd8c21c4bab89a6aed2c4a138c8cfae75/src/import/_output/crictl \ | ||
16 | -ldflags '-X github.com/kubernetes-sigs/cri-tools/pkg/version.Version=1.20.0' \ | ||
17 | -tags '' \ | ||
18 | github.com/kubernetes-sigs/cri-tools/cmd/crictl | ||
19 | # github.com/kubernetes-sigs/cri-tools/cmd/crictl | ||
20 | cannot find package runtime/cgo (using -importcfg) | ||
21 | /work/cortexa72-poky-linux/cri-tools/1.20.0+gitec9e336fd8c21c4bab89a6aed2c4a138c8cfae75-r0/recipe-sysroot-native/usr/lib/aarch64-poky-linux/go/pkg/tool/linux_amd64/link: | ||
22 | cannot open file : open : no such file or directory | ||
23 | |||
24 | In a similar manner to: | ||
25 | |||
26 | https://www.yoctoproject.org/pipermail/meta-virtualization/2019-March/004084.html | ||
27 | |||
28 | We introduce '-a -pkgdir dontusecurrentpkgs' to mask/fix the problem, | ||
29 | and continue to work towards non-static builds. | ||
30 | |||
31 | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> | ||
32 | --- | ||
33 | src/import/Makefile | 3 ++- | ||
34 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
35 | |||
36 | diff --git a/Makefile b/Makefile | ||
37 | index acf0fc0..130988c 100644 | ||
38 | --- a/src/import/Makefile | ||
39 | +++ b/src/import/Makefile | ||
40 | @@ -63,7 +63,8 @@ critest: | ||
41 | $(PROJECT)/cmd/critest | ||
42 | |||
43 | crictl: | ||
44 | - CGO_ENABLED=0 $(GO_BUILD) -o $(CURDIR)/_output/crictl$(BIN_EXT) \ | ||
45 | + $(GO_BUILD) -o $(CURDIR)/_output/crictl$(BIN_EXT) \ | ||
46 | + -a -pkgdir dontusecurrentpkgs \ | ||
47 | -ldflags '$(GO_LDFLAGS)' \ | ||
48 | -tags '$(BUILDTAGS)' \ | ||
49 | $(PROJECT)/cmd/crictl | ||
50 | -- | ||
51 | 2.19.1 | ||
52 | |||
diff --git a/recipes-containers/cri-tools/cri-tools_git.bb b/recipes-containers/cri-tools/cri-tools_git.bb new file mode 100644 index 00000000..17ddbd02 --- /dev/null +++ b/recipes-containers/cri-tools/cri-tools_git.bb | |||
@@ -0,0 +1,78 @@ | |||
1 | HOMEPAGE = "https://github.com/kubernetes-sigs/cri-tools" | ||
2 | SUMMARY = "CLI and validation tools for Kubelet Container Runtime Interface (CRI)" | ||
3 | DESCRIPTION = "What is the scope of this project? \ | ||
4 | \ | ||
5 | cri-tools aims to provide a series of debugging and validation tools for \ | ||
6 | Kubelet CRI, which includes: \ | ||
7 | \ | ||
8 | * crictl: CLI for kubelet CRI. \ | ||
9 | * critest: validation test suites for kubelet CRI. \ | ||
10 | \ | ||
11 | What is not in scope for this project? \ | ||
12 | \ | ||
13 | * Building a new kubelet container runtime based on CRI. \ | ||
14 | * Managing pods/containers for CRI-compatible runtimes by end-users, e.g. \ | ||
15 | pods created by crictl may be removed automatically by kubelet because of \ | ||
16 | non-exist on the kube-apiserver. \ | ||
17 | " | ||
18 | |||
19 | SRCREV_cri-tools = "ec9e336fd8c21c4bab89a6aed2c4a138c8cfae75" | ||
20 | SRC_URI = "\ | ||
21 | git://github.com/kubernetes-sigs/cri-tools.git;branch=master;name=cri-tools \ | ||
22 | file://0001-build-allow-environmental-CGO-settings-and-pass-dont.patch \ | ||
23 | " | ||
24 | |||
25 | LICENSE = "Apache-2.0" | ||
26 | LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" | ||
27 | |||
28 | GO_IMPORT = "import" | ||
29 | |||
30 | PV = "1.20.0+git${SRCREV_cri-tools}" | ||
31 | |||
32 | RPROVIDES_${PN} += "crictl" | ||
33 | PACKAGES =+ "${PN}-critest" | ||
34 | |||
35 | inherit go | ||
36 | inherit goarch | ||
37 | inherit pkgconfig | ||
38 | |||
39 | EXTRA_OEMAKE="BUILDTAGS=''" | ||
40 | |||
41 | do_compile() { | ||
42 | # link fixups for compilation | ||
43 | rm -f ${S}/src/import/vendor/src | ||
44 | ln -sf ./ ${S}/src/import/vendor/src | ||
45 | |||
46 | export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go" | ||
47 | cd ${S}/src/import | ||
48 | |||
49 | # Build the target binaries | ||
50 | export GOARCH="${TARGET_GOARCH}" | ||
51 | # Pass the needed cflags/ldflags so that cgo can find the needed headers files and libraries | ||
52 | export CGO_ENABLED="1" | ||
53 | export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}" | ||
54 | export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}" | ||
55 | export CFLAGS="" | ||
56 | export LDFLAGS="" | ||
57 | export CC="${CC}" | ||
58 | export LD="${LD}" | ||
59 | export GOBIN="" | ||
60 | |||
61 | oe_runmake crictl | ||
62 | } | ||
63 | |||
64 | do_install() { | ||
65 | install -d ${D}${bindir} | ||
66 | install -m 755 -D ${S}/src/import/_output/* ${D}/${bindir} | ||
67 | } | ||
68 | |||
69 | FILES_${PN}-critest = "${bindir}/critest" | ||
70 | |||
71 | # don't clobber hooks.d | ||
72 | ALLOW_EMPTY_${PN} = "1" | ||
73 | |||
74 | INSANE_SKIP_${PN} += "ldflags already-stripped textrel" | ||
75 | |||
76 | deltask compile_ptest_base | ||
77 | |||
78 | COMPATIBLE_HOST = "^(?!(qemu)?mips).*" | ||