buildah: add recipe for buildah v1.26

buildah is a command line tool, to be installed and run on target,
that can be used to:
   - create a working container, either from scratch or using an image
     as a starting point
   - create an image, either from a working container or via the
     instructions in a Dockerfile
   - images can be built in either the OCI image format or the
     traditional upstream docker image format
   - mount a working container's root filesystem for manipulation
   - unmount a working container's root filesystem
   - use the updated contents of a container's root filesystem as a
     filesystem layer to create a new image
   - delete a working container or an image
   - rename a local container

Testing:
Setup the build directory:
   $ . oe-init-build-env <build_dir>

Add to local.conf:
   IMAGE_INSTALL:append = " buildah kernel-modules"
   KERNEL_FEATURES += "features/overlayfs/overlayfs.cfgi \
                       features/netfilter/netfilter.scc  \
                       features/lxc/lxc-enable.scc"
   IMAGE_ROOTFS_EXTRA_SPACE = "5242880"

Build image:
   $ bitbake core-image-minimal

Run the image:
   $ runqemu nographic kvm qemuparams="-m 4096"

On target:
Pull an image:
   > cnt=$(buildah from fedora)

Or build from Dockerfile
   > buildah bud -t <image_name>:<tag> .

Mount the image:
   > mnt=$(buildah mount ${cnt})

Install packages on the container rootfs:
   > dnf install --installroot $mnt <packages_to_install> -y

Copy local files to the container:
   > buildah copy $cnt <local_file> <dest_on_container>

Save the changes to an image
   > buildah commit --format docker $cnt <name>:<tag>

Run the image using buildah:
   > buildah run $cnt /bin/sh

Or using docker:
   > docker run -it <name>:<tag>

Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
This commit is contained in:
sakib.sajal@windriver.com 2022-05-25 19:43:47 -04:00 committed by Bruce Ashfield
parent e4e136c520
commit 13839c7b13

View File

@ -0,0 +1,57 @@
HOMEPAGE = "https://buildah.io"
SUMMARY = "A tool that facilitates building OCI container images."
DESCRIPTION = "A tool that facilitates building OCI container images."
# Apache-2.0 for containerd
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://src/github.com/containers/buildah/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
S = "${WORKDIR}/git"
BUILDAH_VERSION = "1.26"
SRCREV_buildah = "0a9d6e6eaef2e2e7936313d449a4e226022eb865"
PV = "${BUILDAH_VERSION}"
inherit go
inherit goarch
inherit pkgconfig
GO_IMPORT = "github.com/containers/buildah"
GO_INSTALL = "${GO_IMPORT}"
GO_WORKDIR = "${GO_INSTALL}"
GOBUILDFLAGS += "-mod vendor"
SRC_URI = " \
git://github.com/containers/buildah;branch=release-${BUILDAH_VERSION};name=buildah;protocol=https \
"
DEPENDS = "libdevmapper btrfs-tools gpgme"
RDEPENDS:${PN} = "cgroup-lite fuse-overlayfs libdevmapper podman"
RDEPENDS:${PN}-dev = "bash perl"
do_compile:prepend() {
cd ${S}/src/github.com/containers/buildah
}
go_do_compile() {
export TMPDIR="${GOTMPDIR}"
if [ -n "${GO_INSTALL}" ]; then
if [ -n "${GO_LINKSHARED}" ]; then
${GO} install ${GOBUILDFLAGS} ./cmd/buildah
${GO} install ${GOBUILDFLAGS} ./tests/imgtype/imgtype.go
${GO} install ${GOBUILDFLAGS} ./tests/copy/copy.go
rm -rf ${B}/bin
fi
${GO} install ${GO_LINKSHARED} ${GOBUILDFLAGS} ./cmd/buildah
${GO} install ${GO_LINKSHARED} ${GOBUILDFLAGS} ./tests/imgtype/imgtype.go
${GO} install ${GO_LINKSHARED} ${GOBUILDFLAGS} ./tests/copy/copy.go
fi
}
do_install:append() {
dest_dir=${D}/${sysconfdir}/containers
mkdir -p ${dest_dir}
install -m 666 ${S}/src/github.com/containers/buildah/docs/samples/registries.conf ${dest_dir}/buildah.registries.conf.sample
install -m 666 ${S}/src/github.com/containers/buildah/tests/policy.json ${dest_dir}/buildah.policy.json.sample
}