Table of Contents

skopeo

A command line utility for various operations on container images and image repositories.

runtime dependencies libgpgme (Libraries/Crypto)
make dependencies btrfs-progs (Filesystem and flash utilities)
git (Development tools)
systemd (System tools)
go
go-md2man
systemd
libgpgme-dev
libbtrfs-dev
libdevmapper-dev

Pré requis

apt install systemd libgpgme-dev libbtrfs-dev libdevmapper-dev

Recette

mkdir /data/buildroot/package/skopeo
cat > /data/buildroot/package/skopeo/Config.in<< 'EOF'
config BR2_PACKAGE_SKOPEO
        bool "skopeo"
        depends on BR2_PACKAGE_LIBGPGME
        help
          A command line utility for various operations on container images and image repositories.'
EOF

cat > /data/buildroot/package/skopeo/skopeo.mk<< 'EOF'
#############################################################
#
# skopeo
#
#############################################################
SKOPEO_VERSION = 1.6.1
SKOPEO_SOURCE = v$(SKOPEO_VERSION).tar.gz
SKOPEO_SITE = https://github.com/containers/skopeo/archive/refs/tags

SKOPEO_DEPENDENCIES = libgpgme lvm2
SKOPEO_INSTALL_STAGING = YES

define SKOPEO_CONFIGURE_CMDS
  cd $(@D)/ && \
  git clone https://github.com/containers/common.git && \
  sed -i 's|.PHONY: bin/skopeo||' Makefile && \
  sed -i 's|-gcflags "$(GOGCFLAGS)"||' Makefile
endef

define SKOPEO_BUILD_CMDS
  cd $(@D)/ && \
  PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig/" GOROOT=$(@D)/ GOPATH=$(@D)/go make bin/skopeo  GO_DYN_FLAGS="-buildmode=pie -trimpath" BUILDTAGS='containers_image_ostree_stub'
endef

define SKOPEO_INSTALL_STAGING_CMDS
  cd $(@D)/ && \
  make DESTDIR="${STAGING_DIR}" PREFIX="/usr" install && \
  install -vdm 755 "${STAGING_DIR}/etc/containers/oci/hooks.d/"
  install -vdm 755 "${STAGING_DIR}/etc/containers/registries.conf.d/"
  install -vdm 755 "${STAGING_DIR}/usr/share/containers/oci/hooks.d/"
  install -vdm 755 "${STAGING_DIR}/var/lib/containers/"
  install -vDm 644 $(@D)/common/pkg/config/containers.conf -t "${STAGING_DIR}/etc/containers/"
  install -vDm 644 $(@D)/common/pkg/config/containers.conf -t "${STAGING_DIR}/usr/share/containers/"
  install -vDm 644 $(@D)/common/pkg/seccomp/seccomp.json -t "${STAGING_DIR}/etc/containers/"
  install -vDm 644 $(@D)/common/pkg/seccomp/seccomp.json -t "${STAGING_DIR}/usr/share/containers/"
  install -vDm 644 $(@D)/default-policy.json "${STAGING_DIR}/etc/containers/policy.json"
  install -vDm 644 $(@D)/default.yaml -t "${STAGING_DIR}/etc/containers/registries.d/"
endef

define SKOPEO_INSTALL_TARGET_CMDS
  cd $(@D)/ && \
  make DESTDIR="${TARGET_DIR}" PREFIX="/usr" install && \
  install -vdm 755 "${TARGET_DIR}/etc/containers/oci/hooks.d/"
  install -vdm 755 "${TARGET_DIR}/etc/containers/registries.conf.d/"
  install -vdm 755 "${TARGET_DIR}/usr/share/containers/oci/hooks.d/"
  install -vdm 755 "${TARGET_DIR}/var/lib/containers/"
  install -vDm 644 $(@D)/common/pkg/config/containers.conf -t "${TARGET_DIR}/etc/containers/"
  install -vDm 644 $(@D)/common/pkg/config/containers.conf -t "${TARGET_DIR}/usr/share/containers/"
  install -vDm 644 $(@D)/common/pkg/seccomp/seccomp.json -t "${TARGET_DIR}/etc/containers/"
  install -vDm 644 $(@D)/common/pkg/seccomp/seccomp.json -t "${TARGET_DIR}/usr/share/containers/"
  install -vDm 644 $(@D)/default-policy.json "${TARGET_DIR}/etc/containers/policy.json"
  install -vDm 644 $(@D)/default.yaml -t "${TARGET_DIR}/etc/containers/registries.d/"
endef

$(eval $(generic-package))
EOF

sed -i '/menu "Custom packages"/a source "package/skopeo/Config.in' /data/buildroot/package/Config.in