Signed-off-by: Gerard Ryan <G.M0N3Y.2503@gmail.com>lilik-openwrt-22.03
@ -0,0 +1,84 @@ | |||
if PACKAGE_docker-ce | |||
config DOCKER_KERNEL_OPTIONS | |||
bool "Enable Basic kernel support for Docker" | |||
default n | |||
select KERNEL_CGROUPS | |||
select KERNEL_CGROUP_CPUACCT | |||
select KERNEL_CGROUP_SCHED | |||
select KERNEL_NAMESPACES | |||
select KERNEL_CPUSETS | |||
select KERNEL_MEMCG | |||
select KERNEL_KEYS | |||
select KERNEL_LXC_MISC | |||
select KERNEL_POSIX_MQUEUE | |||
help | |||
Select needed kernel options for Docker. Options include | |||
cgroups, namespaces and other miscellaneous options. | |||
see also https://github.com/docker/engine/blob/master/contrib/check-config.sh | |||
config DOCKER_SECCOMP | |||
bool "Enable support for seccomp in Docker" | |||
default n | |||
select KERNEL_SECCOMP | |||
select PACKAGE_libseccomp | |||
help | |||
Build Docker with support for seccomp filters. | |||
Select libseccomp which also pulls-in the needed kernel features. | |||
config DOCKER_RES_SHAPE | |||
bool "Enables support for resource shaping" | |||
default n | |||
select KERNEL_MEMCG_SWAP | |||
select KERNEL_MEMCG_SWAP_ENABLED | |||
select KERNEL_BLK_DEV_THROTTLING | |||
select KERNEL_CGROUP_PERF | |||
select KERNEL_FAIR_GROUP_SCHED | |||
select KERNEL_CFS_BANDWIDTH | |||
select KERNEL_RT_GROUP_SCHED | |||
menu "Network" | |||
config DOCKER_NET_OVERLAY | |||
bool "Enables the Overlay network feature" | |||
default n | |||
select PACKAGE_kmod-udptunnel4 | |||
help | |||
Selects kernel options for the Overlay network feature. | |||
Includes udptunnel4 | |||
config DOCKER_NET_ENCRYPT | |||
bool "Enable encrypted networking kernel support" | |||
depends on DOCKER_NET_OVERLAY | |||
default n | |||
select PACKAGE_kmod-ipsec | |||
select PACKAGE_kmod-ipsec4 | |||
select PACKAGE_kmod-crypto-gcm | |||
select PACKAGE_kmod-crypto-ghash | |||
help | |||
Select needed kernel options for encrypted networking support. | |||
config DOCKER_NET_MACVLAN | |||
bool "Enables macvlan kernel support" | |||
default n | |||
select PACKAGE_kmod-macvlan | |||
select PACKAGE_kmod-dummy | |||
config DOCKER_NET_TFTP | |||
bool "Enable ftp/tftp client kernel support" | |||
default n | |||
select PACKAGE_kmod-nf-nathelper | |||
select PACKAGE_kmod-nf-nathelper-extra | |||
endmenu | |||
menu "Storage" | |||
config DOCKER_STO_EXT4 | |||
bool "Enables support for ext3 or ext4 as the backing filesystem" | |||
default n | |||
select KERNEL_EXT4_FS_POSIX_ACL | |||
config DOCKER_STO_BTRFS | |||
bool "Enables support for btrfs as the backing filesystem" | |||
default n | |||
select PACKAGE_kmod-fs-btrfs | |||
select KERNEL_BTRFS_FS_POSIX_ACL | |||
endmenu | |||
endif |
@ -0,0 +1,107 @@ | |||
include $(TOPDIR)/rules.mk | |||
PKG_NAME:=docker-ce | |||
PKG_VERSION:=18.09.6 | |||
PKG_RELEASE:=1 | |||
PKG_LICENSE:=Apache-2.0 | |||
PKG_LICENSE_FILES:=components/cli/LICENSE components/engine/LICENSE | |||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | |||
PKG_SOURCE_URL:=https://codeload.github.com/docker/docker-ce/tar.gz/v$(PKG_VERSION)? | |||
PKG_HASH:=e8d2dd41e09e838e9043d4a5cf8433d8860afa20a611025621f7817b7ab16012 | |||
PKG_SOURCE_VERSION:=481bc77156 | |||
PKG_MAINTAINER:=Gerard Ryan <G.M0N3Y.2503@gmail.com> | |||
PKG_BUILD_DEPENDS:=golang/host | |||
PKG_BUILD_PARALLEL:=1 | |||
GO_PKG:=github.com/docker | |||
include $(INCLUDE_DIR)/package.mk | |||
include ../../lang/golang/golang-package.mk | |||
define Package/docker-ce/config | |||
source "$(SOURCE)/Config.in" | |||
endef | |||
define Package/docker-ce | |||
SECTION:=utils | |||
CATEGORY:=Utilities | |||
TITLE:=Docker Community Edition | |||
URL:=https://www.docker.com/ | |||
DEPENDS:=$(GO_ARCH_DEPENDS) @TARGET_x86_64 +btrfs-progs +libdevmapper +containerd +cgroupfs-mount +ca-certificates +iptables-mod-extra +DOCKER_SECCOMP:libseccomp \ | |||
+kmod-ikconfig +kmod-veth +kmod-br-netfilter +kmod-nf-ipvs | |||
USERID:=docker:docker | |||
MENU:=1 | |||
endef | |||
define Package/docker-ce/description | |||
Docker Engine is used by millions enables containerized applications | |||
to run anywhere consistently on any infrastructure. | |||
endef | |||
define Build/Configure | |||
# move so GoPackage/Build/Configure will get the correct path | |||
mv $(PKG_BUILD_DIR)/components/engine $(PKG_BUILD_DIR)/ | |||
mv $(PKG_BUILD_DIR)/components/cli $(PKG_BUILD_DIR)/ | |||
# docker generates files at build time so we'll just symlink for now and call GoPackage/Build/Configure later | |||
mkdir -p $(GO_PKG_BUILD_DIR)/bin \ | |||
$(GO_PKG_BUILD_DIR)/src \ | |||
$(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/ \ | |||
$(GO_PKG_CACHE_DIR) \ | |||
$(GO_PKG_TMP_DIR) | |||
$(LN) $(PKG_BUILD_DIR)/cli $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/cli | |||
$(LN) $(PKG_BUILD_DIR)/engine $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/docker | |||
endef | |||
ifeq ($(CONFIG_DOCKER_SECCOMP),y) | |||
BUILDTAGS:=seccomp | |||
else | |||
BUILDTAGS:= | |||
endif | |||
define Build/Compile | |||
( \ | |||
export GOPATH=$(GO_PKG_BUILD_DIR) \ | |||
GOCACHE=$(GO_PKG_CACHE_DIR) \ | |||
GOTMPDIR=$(GO_PKG_TMP_DIR) \ | |||
GOROOT_FINAL=$(GO_TARGET_ROOT) \ | |||
CC=$(TARGET_CC) \ | |||
CXX=$(TARGET_CXX) \ | |||
$(call GoPackage/Environment) \ | |||
GITCOMMIT=$(PKG_SOURCE_VERSION) \ | |||
DOCKER_GITCOMMIT=$(PKG_SOURCE_VERSION) \ | |||
DOCKER_BUILDTAGS='$(BUILDTAGS)' \ | |||
VERSION=$(PKG_VERSION) \ | |||
\ | |||
&& echo "Compiling CLI..." \ | |||
&& cd $(PKG_BUILD_DIR)/cli \ | |||
&& ./scripts/build/binary \ | |||
\ | |||
&& echo "Compiling Engine..." \ | |||
&& cd $(PKG_BUILD_DIR)/engine \ | |||
&& ./hack/make.sh binary \ | |||
) | |||
# done here to include autogenerated files also | |||
rm $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/cli | |||
rm $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/docker | |||
$(call GoPackage/Build/Configure) | |||
endef | |||
define Package/docker-ce/install | |||
$(INSTALL_DIR) $(1)/usr/bin/ | |||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/cli/build/docker $(1)/usr/bin/ | |||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/engine/bundles/binary-daemon/dockerd $(1)/usr/bin/ | |||
$(INSTALL_DIR) $(1)/opt/docker/ | |||
$(INSTALL_DIR) $(1)/usr/share/docker/ | |||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/engine/contrib/check-config.sh $(1)/usr/share/docker/ | |||
$(INSTALL_DIR) $(1)/etc/init.d | |||
$(INSTALL_BIN) ./files/dockerd.init $(1)/etc/init.d/dockerd | |||
endef | |||
$(eval $(call BuildPackage,docker-ce)) |
@ -0,0 +1,11 @@ | |||
#!/bin/sh /etc/rc.common | |||
USE_PROCD=1 | |||
START=25 | |||
# docker can't run with a symlink in the path so we just use /opt/docker/ | |||
start_service() { | |||
procd_open_instance | |||
procd_set_param command /usr/bin/dockerd -g /opt/docker/ | |||
procd_close_instance | |||
} |
@ -0,0 +1,13 @@ | |||
Index: docker-ce-18.09.0/components/engine/hack/make.sh | |||
=================================================================== | |||
--- docker-ce-18.09.0.orig/components/engine/hack/make.sh | |||
+++ docker-ce-18.09.0/components/engine/hack/make.sh | |||
@@ -129,7 +129,7 @@ fi | |||
# with a newer libdevmapper than the one it was built with. | |||
if \ | |||
command -v gcc &> /dev/null \ | |||
- && ! ( echo -e '#include <libdevmapper.h>\nint main() { dm_task_deferred_remove(NULL); }'| gcc -xc - -o /dev/null $(pkg-config --libs devmapper) &> /dev/null ) \ | |||
+ && ! ( echo -e '#include <libdevmapper.h>\nint main() { dm_task_deferred_remove(NULL); }'| gcc -xc - -o /dev/null $(pkg-config --libs libdevmapper) &> /dev/null ) \ | |||
; then | |||
add_buildtag libdm dlsym_deferred_remove | |||
fi |