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)} \ " python __anonymous() { msg = "" # ERROR: Nothing PROVIDES 'libseccomp' (but meta-virtualization/recipes-containers/podman/ DEPENDS on or otherwise requires it). # ERROR: Required build target 'meta-world-pkgdata' has no buildable providers. # Missing or unbuildable dependency chain was: ['meta-world-pkgdata', 'podman', 'libseccomp'] if 'security' not in d.getVar('BBFILE_COLLECTIONS').split(): msg += "Make sure meta-security should be present as it provides 'libseccomp'" raise bb.parse.SkipRecipe(msg) } SRCREV = "288fb688964cb7fc7086d0728daa1f5f6b726dd6" SRC_URI = " \ git://github.com/containers/libpod.git;branch=v3.0 \ " LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" GO_IMPORT = "import" S = "${WORKDIR}/git" PV = "3.0-rc2+git${SRCPV}" PACKAGES =+ "${PN}-contrib" PODMAN_PKG = "github.com/containers/libpod" BUILDTAGS ?= "seccomp varlink \ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \ exclude_graphdriver_btrfs exclude_graphdriver_devicemapper" # overide LDFLAGS to allow podman to build without: "flag provided but not # defined: -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 \ " # remove 'docker' from the packageconfig if you don't want podman to # build and install the docker wrapper. If docker is enabled in the # packageconfig, the podman package will rconfict with docker. PACKAGECONFIG ?= "docker" do_compile() { 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 GOARCH="${BUILD_GOARCH}" export GOPATH="${S}/src/.gopath" export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go" cd ${S}/src/.gopath/src/"${PODMAN_PKG}" # 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}" oe_runmake BUILDTAGS="${BUILDTAGS}" } do_install() { cd ${S}/src/.gopath/src/"${PODMAN_PKG}" export GOARCH="${BUILD_GOARCH}" export GOPATH="${S}/src/.gopath" export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go" oe_runmake install DESTDIR="${D}" if ${@bb.utils.contains('PACKAGECONFIG', 'docker', 'true', 'false', d)}; then oe_runmake install.docker DESTDIR="${D}" fi if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then install -d ${D}${systemd_unitdir}/system install -m 644 ${S}/src/import/contrib/systemd/system/podman.service ${D}/${systemd_unitdir}/system install -m 644 ${S}/src/import/contrib/systemd/system/podman.socket ${D}/${systemd_unitdir}/system rm -f ${D}/${systemd_unitdir}/system/docker.service.rpm fi } FILES_${PN} += " \ ${systemd_unitdir}/system/* \ ${systemd_unitdir}/user/* \ ${nonarch_libdir}/tmpfiles.d/* \ ${sysconfdir}/cni \ " SYSTEMD_SERVICE_${PN} = "podman.service podman.socket" RDEPENDS_${PN} += "conmon virtual/runc iptables cni skopeo" RRECOMMENDS_${PN} += "slirp4netns" RCONFLICTS_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'docker', 'docker', '', d)}"