- #
- # Copyright (C) 2013-2015 OpenWrt.org
- # Copyright (C) 2020 Sartura
- #
- # This is free software, licensed under the GNU General Public License v2.
- # See /LICENSE for more information.
- #
-
- include $(TOPDIR)/rules.mk
-
- PKG_NAME:=lxc
- PKG_VERSION:=4.0.2
- PKG_RELEASE:=1
-
- PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
- PKG_SOURCE_URL:=https://linuxcontainers.org/downloads/lxc/
- PKG_HASH:=ca336dcdf303fea5ff231d89a9b6278b061c4cffb14f0db0a71a15bdd95a5cb0
-
- PKG_LICENSE:=LGPL-2.1-or-later BSD-2-Clause GPL-2.0
- PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
-
- PKG_BUILD_DEPENDS:=lua
- PKG_BUILD_PARALLEL:=1
-
- PKG_INSTALL:=1
- PKG_FIXUP:=autoreconf
-
- include $(INCLUDE_DIR)/package.mk
-
- LXC_APPLETS_BIN += \
- attach autostart cgroup copy config console create destroy device \
- execute freeze info monitor snapshot start stop unfreeze unshare \
- usernsexec wait top ls
-
- LXC_APPLETS_LIB += \
- monitord user-nic
-
- LXC_SCRIPTS += \
- checkconfig
-
- DEPENDS_APPLETS = +libpthread +libcap +liblxc
-
- DEPENDS_create = +lxc-configs +lxc-hooks +lxc-templates +flock
-
- define Package/lxc/Default
- SECTION:=utils
- CATEGORY:=Utilities
- TITLE:=LXC userspace tools
- URL:=https://linuxcontainers.org/
- endef
-
- define Package/lxc
- $(call Package/lxc/Default)
- MENU:=1
- endef
-
- define Package/lxc-auto
- $(call Package/lxc/Default)
- TITLE:= (initscript)
- DEPENDS:=+lxc-start +lxc-stop
- endef
-
- define Package/lxc-auto/description
- LXC is the userspace control package for Linux Containers, a lightweight
- virtual system mechanism sometimes described as "chroot on steroids".
- This package adds and initscript for starting and stopping the containers
- on boot and shutdown.
- endef
-
- define Package/lxc-auto/conffiles
- /etc/config/lxc-auto
- endef
-
- define Package/lxc-unprivileged
- $(call Package/lxc/Default)
- TITLE:=Helper script for unprivileged containers support
- DEPENDS:=+shadow-utils +shadow-newuidmap +shadow-newgidmap
- endef
-
- define Package/lxc-unprivileged/description
- Support for unprivileged containers requires newuidmap and newguidmap.
- This package makes sure they are available & have correct permissions.
- endef
-
- define Package/lxc-unprivileged/install
- $(INSTALL_DIR) $(1)/etc/uci-defaults
- $(INSTALL_DATA) ./files/lxc-unprivileged.defaults $(1)/etc/uci-defaults/lxc-unprivileged
- endef
-
- define Package/lxc/config
- source "$(SOURCE)/Config.in"
- endef
-
- define Package/lxc/description
- LXC is the userspace control package for Linux Containers, a lightweight
- virtual system mechanism sometimes described as "chroot on steroids".
- endef
-
- define Package/lxc-common
- $(call Package/lxc/Default)
- TITLE:=LXC common files
- DEPENDS:= lxc
- endef
-
- define Package/lxc-hooks
- $(call Package/lxc/Default)
- TITLE:=LXC virtual machine hooks
- DEPENDS:= lxc
- endef
-
- define Package/lxc-templates
- $(call Package/lxc/Default)
- TITLE:=LXC virtual machine templates
- DEPENDS:= lxc
- endef
-
- define Package/lxc-configs
- $(call Package/lxc/Default)
- TITLE:=LXC virtual machine common config files
- DEPENDS:= lxc
- endef
-
- define Package/liblxc
- $(call Package/lxc/Default)
- SECTION:=libs
- CATEGORY:=Libraries
- TITLE:=LXC userspace library
- DEPENDS:= lxc +libcap +libpthread +LXC_SECCOMP:libseccomp +libopenssl
- endef
-
- define Package/lxc-lua
- $(call Package/lxc/Default)
- TITLE:=LXC Lua bindings
- DEPENDS:= lxc +liblua +liblxc
- endef
-
- define Package/lxc-init
- $(call Package/lxc/Default)
- TITLE:=LXC Lua bindings
- DEPENDS:= lxc +liblxc
- endef
-
- CONFIGURE_ARGS += \
- --disable-apparmor \
- --disable-cgmanager \
- --disable-doc \
- --disable-examples \
- --disable-gnutls \
- --disable-selinux \
- --disable-python \
- --enable-lua=yes \
- --with-lua-pc="$(STAGING_DIR)/usr/lib/pkgconfig/lua.pc"
-
- TARGET_CFLAGS += -Wno-format-nonliteral
- TARGET_LDFLAGS += -lgcc_eh
-
- ifeq ($(CONFIG_LXC_SECCOMP),y)
- CONFIGURE_ARGS += --enable-seccomp
- else
- CONFIGURE_ARGS += --disable-seccomp
- endif
-
- MAKE_FLAGS += \
- LUA_INSTALL_CMOD="/usr/lib/lua" \
- LUA_INSTALL_LMOD="/usr/lib/lua"
-
-
- define Build/InstallDev
- $(INSTALL_DIR) $(1)/usr/include/lxc/
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/include/lxc/* \
- $(1)/usr/include/lxc/
-
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/lib/liblxc.so* \
- $(1)/usr/lib/
-
- $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lxc.pc \
- $(1)/usr/lib/pkgconfig/
- $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/lxc.pc
- $(SED) 's,/usr/lib,$$$${prefix}/lib,g' $(1)/usr/lib/pkgconfig/lxc.pc
- endef
-
-
- define Package/lxc/install
- true
- endef
-
- define Package/lxc-auto/install
- $(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d
- $(INSTALL_CONF) ./files/lxc-auto.config $(1)/etc/config/lxc-auto
- $(INSTALL_BIN) ./files/lxc-auto.init $(1)/etc/init.d/lxc-auto
- endef
-
- define Package/lxc-common/conffiles
- /etc/lxc/default.conf
- /etc/lxc/lxc.conf
- endef
-
- define Package/lxc-common/install
- $(INSTALL_DIR) $(1)/usr/lib/lxc/rootfs
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/lib/lxc/rootfs/README \
- $(1)/usr/lib/lxc/rootfs/
-
- $(INSTALL_DIR) $(1)/usr/share/lxc
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/share/lxc/lxc.functions \
- $(1)/usr/share/lxc/
-
- $(INSTALL_DIR) $(1)/etc/lxc/
- $(CP) \
- $(PKG_INSTALL_DIR)/etc/lxc/default.conf \
- $(1)/etc/lxc/default.conf
-
- $(INSTALL_DIR) $(1)/etc/lxc/
- $(CP) \
- ./files/lxc.conf \
- $(1)/etc/lxc/lxc.conf
-
- $(INSTALL_DIR) $(1)/srv/lxc/
- endef
-
- define Package/lxc-hooks/install
- $(INSTALL_DIR) $(1)/usr/share/lxc/hooks
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/share/lxc/hooks/* \
- $(1)/usr/share/lxc/hooks/
- endef
-
- define Package/lxc-templates/install
- $(INSTALL_DIR) $(1)/usr/share/lxc/templates/
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/share/lxc/templates/lxc-* \
- $(1)/usr/share/lxc/templates/
- endef
-
- define Package/lxc-configs/install
- $(INSTALL_DIR) $(1)/usr/share/lxc/config/
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/share/lxc/config/* \
- $(1)/usr/share/lxc/config/
- endef
-
- define Package/liblxc/install
- $(INSTALL_DIR) $(1)/usr/lib/
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/lib/liblxc.so* \
- $(1)/usr/lib/
- endef
-
- define Package/lxc-lua/install
- $(INSTALL_DIR) $(1)/usr/lib/lua
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/share/lua/5.1/lxc.lua \
- $(1)/usr/lib/lua/
- $(INSTALL_DIR) $(1)/usr/lib/lua/lxc
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/lib/lua/5.1/lxc/core.so \
- $(1)/usr/lib/lua/lxc/
- endef
-
- define Package/lxc-init/install
- $(INSTALL_DIR) $(1)/sbin
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/sbin/init.lxc \
- $(1)/sbin/
- endef
-
- define GenPlugin
- define Package/lxc-$(1)
- $(call Package/lxc/Default)
- TITLE:=Utility lxc-$(1) from the LXC userspace tools
- DEPENDS:= lxc +lxc-common $(2) $(DEPENDS_$(1))
- endef
-
- define Package/lxc-$(1)/install
- $(INSTALL_DIR) $$(1)$(3)
- $(INSTALL_BIN) \
- $(PKG_INSTALL_DIR)$(3)/lxc-$(1) \
- $$(1)$(3)/
- endef
-
- $$(eval $$(call BuildPackage,lxc-$(1)))
- endef
-
-
- $(eval $(call BuildPackage,lxc))
- $(eval $(call BuildPackage,lxc-common))
- $(eval $(call BuildPackage,lxc-hooks))
- $(eval $(call BuildPackage,lxc-configs))
- $(eval $(call BuildPackage,lxc-templates))
- $(eval $(call BuildPackage,liblxc))
- $(eval $(call BuildPackage,lxc-lua))
- $(eval $(call BuildPackage,lxc-init))
- $(eval $(call BuildPackage,lxc-auto))
- $(eval $(call BuildPackage,lxc-unprivileged))
- $(foreach u,$(LXC_APPLETS_BIN),$(eval $(call GenPlugin,$(u),$(DEPENDS_APPLETS),"/usr/bin")))
- $(foreach u,$(LXC_APPLETS_LIB),$(eval $(call GenPlugin,$(u),$(DEPENDS_APPLETS),"/usr/lib/lxc")))
- $(foreach u,$(LXC_SCRIPTS),$(eval $(call GenPlugin,$(u),,"/usr/bin")))
|