[meta-virtualization] [PATCH 6/6] podmon: add the Pod Manager tool
Stefan Agner
stefan at agner.ch
Mon Sep 9 14:30:42 PDT 2019
On 2019-09-03 19:26, Bruce Ashfield wrote:
> I'm assuming the subject should be "podman" and not "podmon".
Whoops, thanks for pointing out.
>
> On Sun, Sep 1, 2019 at 4:34 PM Stefan Agner <stefan at agner.ch> wrote:
>>
>> From: Stefan Agner <stefan.agner at toradex.com>
>>
>> Podman is a daemonless container engine for developing, managing, and
>> running OCI Containers on your Linux System. Containers can either be
>> run as root or in rootless mode.
>>
>> This patch adds the initial recipe for podman. Currently a minimal
>> feature set is supported. It seems that libseccomp is mandatory, which
>> makes meta-security a mandatory dependency for this recipe.
>>
>> Signed-off-by: Stefan Agner <stefan.agner at toradex.com>
>> ---
>> recipes-containers/podman/podman_git.bb | 91 +++++++++++++++++++++++++
>> 1 file changed, 91 insertions(+)
>> create mode 100644 recipes-containers/podman/podman_git.bb
>>
>> diff --git a/recipes-containers/podman/podman_git.bb b/recipes-containers/podman/podman_git.bb
>> new file mode 100644
>> index 0000000..6f4e7d4
>> --- /dev/null
>> +++ b/recipes-containers/podman/podman_git.bb
>> @@ -0,0 +1,91 @@
>> +HOMEPAGE = "https://podman.io/"
>> +SUMMARY = "A daemonless container engine"
>> +DESCRIPTION = "Podman is a daemonless container engine for developing, \
>> + managing, and running OCI Containers on your Linux System. Containers can \
>> + either be run as root or in rootless mode. Simply put: \
>> + `alias docker=podman`. \
>> + "
>> +
>> +DEPENDS = " \
>> + go-metalinter-native \
>> + go-md2man-native \
>> + gpgme \
>> + libseccomp \
>> + ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
>> +"
>> +
>> +SRCREV = "00057929f5acfd98341964d85722383363376d52"
>> +SRC_URI = " \
>> + git://github.com/containers/libpod.git;branch=master \
>> +"
>> +
>> +LICENSE = "Apache-2.0"
>> +LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
>> +
>> +GO_IMPORT = "import"
>> +
>> +S = "${WORKDIR}/git"
>> +
>> +PV = "1.5.1+git${SRCREV}"
>> +
>> +PACKAGES =+ "${PN}-contrib"
>> +
>> +PODMAN_PKG = "github.com/containers/libpod"
>> +BUILDTAGS = "seccomp systemd exclude_graphdriver_btrfs exclude_graphdriver_devicemapper"
>
> On my other similar recipes, I've been asked to make this a ?= so it
> can be easily overridden. Is that possible here ?
>
Yes, seems to work just fine.
>> +
>> +# overide LDFLAGS to allow criu to build without: "x86_64-poky-linux-ld: unrecognized option '-Wl,-O1'"
>
> Is this a debug statement left in, or is it relevant to podman ?
>
This actually applies to podman as well, so I copied the export and the
comment from the criu recipe.
Will fix the comment though to mention podman.
>> +export LDFLAGS=""
>> +
>> +inherit go goarch
>> +inherit systemd pkgconfig
>> +
>> +do_configure[noexec] = "1"
>> +
>> +EXTRA_OEMAKE = " \
>> + PREFIX=${prefix} BINDIR=${bindir} LIBEXECDIR=${libexecdir} \
>> + ETCDIR=${sysconfdir} TMPFILESDIR=${nonarch_libdir}/tmpfiles.d \
>> + SYSTEMDDIR=${systemd_unitdir}/system USERSYSTEMDDIR=${systemd_unitdir}/user \
>> +"
>> +
>> +do_compile() {
>> + # Set GOPATH. See 'PACKAGERS.md'. Don't rely on
>> + # docker to download its dependencies but rather
>> + # use dependencies packaged independently.
This comment is actually a leftover so removed this.
>> + cd ${S}/src
>> + rm -rf .gopath
>> + mkdir -p .gopath/src/"$(dirname "${PODMAN_PKG}")"
>> + ln -sf ../../../../import/ .gopath/src/"${PODMAN_PKG}"
>> +
>> + ln -sf "../../../import/vendor/github.com/varlink/" ".gopath/src/github.com/varlink"
>> +
>> + export GOPATH="${S}/src/.gopath"
>> + export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
>> +
>> + cd ${S}/src/.gopath/src/"${PODMAN_PKG}"
>> +
>> + make cmd/podman/varlink/iopodman.go GO=go
>
After cleaning and rebuilding I actually noticed that the current state
does not build. I must have interfered manually to make it build and
forgot to fix-up.
This make call needs this before executing:
export GOARCH="${BUILD_GOARCH}"
> I've been trying to squash out all the raw calls to make. Does this
> work if oe_runmake is used ?
With the above, oe_runmake seems to work just fine.
>
> Also, out of curiosity, if GO=go isn't set .. what executable does it
> try to run ?
Without GO=go it seems to use "arm-...-linux-gnueabi-go", and fails with
a exec format error:
NOTE: make -j 40 PREFIX=/usr BINDIR=/usr/bin LIBEXECDIR=/usr/libexec
ETCDIR=/etc TMPFILESDIR=/usr/lib/tmpfiles.d
SYSTEMDDIR=/usr/lib/systemd/system USERSYSTEMDDIR=/usr/lib/systemd/user
cmd/podman/varlink/iopodman.go
GO111MODULE=off arm-tdx-linux-gnueabi-go generate
./cmd/podman/varlink/...
fork/exec
/home/ags/torizoncore/build-colibri-imx7/tmp-torizon/work/cortexa7t2hf-neon-tdx-linux-gnueabi/podman/1.5.1+git00057929f5acfd98341964d85722383363376d52-r0/go-tmp/go-build868339522/b001/exe/main:
exec format error
cmd/podman/varlink/generate.go:3: running "go": exit status 1
make: *** [Makefile:475: cmd/podman/varlink/iopodman.go] Error 1
ERROR: oe_runmake failed
>
>> +
>> + # Pass the needed cflags/ldflags so that cgo
>> + # can find the needed headers files and libraries
>> + export GOARCH=${TARGET_GOARCH}
>> + export CGO_ENABLED="1"
>> + export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
>> + export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
>> +
>> + make BUILDTAGS="${BUILDTAGS}"
>
> Same here. Does oe_runmake work ?
Yes, also here oe_runmake seems to do no harm.
Thanks for reviewing!
--
Stefan
>
> Bruce
>
>> +}
>> +
>> +do_install() {
>> + cd ${S}/src/.gopath/src/"${PODMAN_PKG}"
>> +
>> + oe_runmake install install.docker DESTDIR="${D}"
>> +}
>> +
>> +FILES_${PN} += " \
>> + ${systemd_unitdir}/system/* \
>> + ${systemd_unitdir}/user/* \
>> + ${nonarch_libdir}/tmpfiles.d/* \
>> + ${sysconfdir}/docker \
>> +"
>> +
>> +RDEPENDS_${PN} += "conmon runc-opencontainers iptables cni skopeo"
>> --
>> 2.20.1
>>
>> --
>> _______________________________________________
>> meta-virtualization mailing list
>> meta-virtualization at yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/meta-virtualization
More information about the meta-virtualization
mailing list