From: Stefan Agner <[email protected]>

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 <[email protected]>
---
 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"
+
+# overide LDFLAGS to allow criu to build without: "x86_64-poky-linux-ld: 
unrecognized option '-Wl,-O1'"
+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
+
+       # 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}"
+}
+
+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
[email protected]
https://lists.yoctoproject.org/listinfo/meta-virtualization

Reply via email to