[meta-virtualization] [PATCH 6/6] podmon: add the Pod Manager tool

Bruce Ashfield bruce.ashfield at gmail.com
Tue Sep 3 10:26:55 PDT 2019


I'm assuming the subject should be "podman" and not "podmon".

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 ?

> +
> +# 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 ?

> +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.
> +       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

I've been trying to squash out all the raw calls to make. Does this
work if oe_runmake is used ?

Also, out of curiosity, if GO=go isn't set .. what executable does it
try to run ?

> +
> +       # 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 ?

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



-- 
- 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