mirror of
git://git.yoctoproject.org/meta-virtualization.git
synced 2025-07-19 12:50:22 +02:00

Now that docker-ce is being built from the same repos as docker-moby, the only unique things in the recipes are the SRCREVs. We move the common packaging, compile/install routines and configuration to the .inc files. We also move the patches to the generic 'files' directory, so they can be shared. If we there are SRCREV bumps in the future that diverge moby and docker, we'll hold patches in their named directorys and tweak the compile/install routines as necessary. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
161 lines
5.3 KiB
PHP
161 lines
5.3 KiB
PHP
DEPENDS = " \
|
|
go-cli \
|
|
go-pty \
|
|
go-context \
|
|
go-mux \
|
|
go-patricia \
|
|
go-logrus \
|
|
go-fsnotify \
|
|
go-dbus \
|
|
go-capability \
|
|
go-systemd \
|
|
btrfs-tools \
|
|
sqlite3 \
|
|
go-distribution \
|
|
compose-file \
|
|
go-connections \
|
|
notary \
|
|
grpc-go \
|
|
libtool-native \
|
|
libtool \
|
|
"
|
|
|
|
DEPENDS_append_class-target = " lvm2"
|
|
RDEPENDS_${PN} = "util-linux util-linux-unshare iptables \
|
|
${@bb.utils.contains('DISTRO_FEATURES', 'aufs', 'aufs-util', '', d)} \
|
|
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'cgroup-lite', d)} \
|
|
bridge-utils \
|
|
ca-certificates \
|
|
"
|
|
RDEPENDS_${PN} += "virtual/containerd virtual/runc"
|
|
|
|
RRECOMMENDS_${PN} = "kernel-module-dm-thin-pool kernel-module-nf-nat kernel-module-nf-conntrack-netlink kernel-module-xt-addrtype kernel-module-xt-masquerade"
|
|
|
|
PROVIDES += "virtual/docker"
|
|
|
|
# we want all the docker variant recpes to be installable via "docker"
|
|
PACKAGE_NAME = "docker"
|
|
RPROVIDES_${PN} += "docker"
|
|
RPROVIDES_${PN}-dbg += "docker-dbg"
|
|
RPROVIDES_${PN}-dev += "docker-dev"
|
|
RPROVIDES_${PN}-contrip += "docker-dev"
|
|
|
|
inherit pkgconfig
|
|
PACKAGECONFIG ??= "docker-init"
|
|
PACKAGECONFIG[seccomp] = "seccomp,,libseccomp"
|
|
PACKAGECONFIG[docker-init] = ",,,docker-init"
|
|
PACKAGECONFIG[transient-config] = "transient-config"
|
|
|
|
|
|
GO_IMPORT = "import"
|
|
S = "${WORKDIR}/git"
|
|
|
|
|
|
inherit systemd update-rc.d
|
|
inherit go
|
|
inherit goarch
|
|
inherit pkgconfig
|
|
|
|
do_configure[noexec] = "1"
|
|
|
|
DOCKER_PKG="github.com/docker/docker"
|
|
# in order to exclude devicemapper and btrfs - https://github.com/docker/docker/issues/14056
|
|
BUILD_TAGS ?= "exclude_graphdriver_btrfs exclude_graphdriver_devicemapper"
|
|
|
|
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/import
|
|
rm -rf .gopath
|
|
mkdir -p .gopath/src/"$(dirname "${DOCKER_PKG}")"
|
|
ln -sf ../../../.. .gopath/src/"${DOCKER_PKG}"
|
|
|
|
mkdir -p .gopath/src/github.com/docker
|
|
ln -sf ${WORKDIR}/git/libnetwork .gopath/src/github.com/docker/libnetwork
|
|
ln -sf ${WORKDIR}/git/cli .gopath/src/github.com/docker/cli
|
|
|
|
export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
|
|
export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/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}"
|
|
export DOCKER_BUILDTAGS='${BUILD_TAGS} ${PACKAGECONFIG_CONFARGS}'
|
|
export GO111MODULE=off
|
|
|
|
export DISABLE_WARN_OUTSIDE_CONTAINER=1
|
|
|
|
cd ${S}/src/import/
|
|
|
|
# this is the unsupported built structure
|
|
# that doesn't rely on an existing docker
|
|
# to build this:
|
|
VERSION="${DOCKER_VERSION}" DOCKER_GITCOMMIT="${SRCREV_moby}" ./hack/make.sh dynbinary
|
|
|
|
# build the cli
|
|
cd ${S}/src/import/.gopath/src/github.com/docker/cli
|
|
export CFLAGS=""
|
|
export LDFLAGS=""
|
|
export DOCKER_VERSION=${DOCKER_VERSION}
|
|
VERSION="${DOCKER_VERSION}" DOCKER_GITCOMMIT="${SRCREV_moby}" make dynbinary
|
|
|
|
# build the proxy
|
|
cd ${S}/src/import/.gopath/src/github.com/docker/libnetwork
|
|
oe_runmake cross-local
|
|
}
|
|
|
|
do_install() {
|
|
mkdir -p ${D}/${bindir}
|
|
cp ${WORKDIR}/git/cli/build/docker ${D}/${bindir}/docker
|
|
cp ${S}/src/import/bundles/dynbinary-daemon/dockerd ${D}/${bindir}/dockerd
|
|
cp ${WORKDIR}/git/libnetwork/bin/docker-proxy* ${D}/${bindir}/docker-proxy
|
|
|
|
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
|
|
install -d ${D}${systemd_unitdir}/system
|
|
install -m 644 ${S}/src/import/contrib/init/systemd/docker.* ${D}/${systemd_unitdir}/system
|
|
# replaces one copied from above with one that uses the local registry for a mirror
|
|
install -m 644 ${S}/src/import/contrib/init/systemd/docker.service ${D}/${systemd_unitdir}/system
|
|
rm -f ${D}/${systemd_unitdir}/system/docker.service.rpm
|
|
else
|
|
install -d ${D}${sysconfdir}/init.d
|
|
install -m 0755 ${WORKDIR}/docker.init ${D}${sysconfdir}/init.d/docker.init
|
|
fi
|
|
# TLS key that docker creates at run-time if not found is what resides here
|
|
if ${@bb.utils.contains('PACKAGECONFIG','transient-config','true','false',d)}; then
|
|
install -d ${D}${sysconfdir}
|
|
ln -s ..${localstatedir}/run/docker ${D}${sysconfdir}/docker
|
|
else
|
|
install -d ${D}${sysconfdir}/docker
|
|
fi
|
|
|
|
mkdir -p ${D}${datadir}/docker/
|
|
install -m 0755 ${S}/src/import/contrib/check-config.sh ${D}${datadir}/docker/
|
|
}
|
|
|
|
|
|
SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
|
|
SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','docker.socket','',d)}"
|
|
SYSTEMD_AUTO_ENABLE_${PN} = "enable"
|
|
|
|
INITSCRIPT_PACKAGES += "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','${PN}','',d)}"
|
|
INITSCRIPT_NAME_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','docker.init','',d)}"
|
|
INITSCRIPT_PARAMS_${PN} = "defaults"
|
|
|
|
inherit useradd
|
|
USERADD_PACKAGES = "${PN}"
|
|
GROUPADD_PARAM_${PN} = "-r docker"
|
|
|
|
COMPATIBLE_HOST = "^(?!(qemu)?mips).*"
|
|
|
|
INSANE_SKIP_${PN} += "ldflags textrel"
|
|
|
|
FILES_${PN} += "${systemd_unitdir}/system/* ${sysconfdir}/docker"
|
|
|
|
PACKAGES =+ "${PN}-contrib"
|
|
FILES_${PN}-contrib += "${datadir}/docker/check-config.sh"
|
|
RDEPENDS_${PN}-contrib += "bash"
|