LXD-LTS

Daemon based on liblxc offering a REST API to manage containers

runtime dependencies dnsmasq (Networking applications)
iptables (Networking applications)
libuv (Libraries/Other)
lxcfs (System tools)
lxc (System tools)
squashfs (Filesystem and flash utilities)
dqlite
make dependencies apparmor (Security)
git (Development tools)
lxc (System tools)
dqlite
go
libuv1-dev
libsqlite3-dev
lxd-lts ├── dnsmasq (Networking applications) ├── iptables (Networking applications) ├── libuv (Libraries/Other) ├── lxcfs (System tools) ├── lxc (System tools) ├── squashfs (Filesystem and flash utilities) └── dqlite (Custom)    ├── libuv (Libraries/Other)    ├── sqlite (Libraries/Database)    └── raft (Custom)    └── libuv (Libraries/other)
mkdir /data/buildroot/package/lxd-lts
cat > /data/buildroot/package/lxd-lts/Config.in<< 'EOF'
config BR2_PACKAGE_LXD_LTS
        bool "lxd-lts"
        depends on BR2_PACKAGE_LXC
        depends on BR2_PACKAGE_SQUASHFS
        depends on BR2_PACKAGE_DNSMASQ
        depends on BR2_PACKAGE_DQLITE
        select BR2_PACKAGE_GO
        help
          REST API, command line tool and OpenStack integration plugin for LXC.
EOF

cat > /data/buildroot/package/lxd-lts/lxd-lts.mk<< 'EOF'
#############################################################
#
# lxd-lts
# 
#############################################################
LXD_LTS_VERSION = 4.24
LXD_LTS_SITE    = $(call github,lxc,lxd,$(LXD_LTS_VERSION))

$(eval $(golang-package))
EOF

cat > /data/buildroot/package/lxd-lts/lxd-lts.mk<< 'EOF'
#############################################################
#
# lxd-lts
# https://github.com/lxc/$_gitpkgname/archive/$_gitpkgname-$pkgver.tar.gz
# md5sums=                              'cd7a65106aa7205081646bd7cb96610a'
#  + "lxd.service"                      'a95280cf05920bd561cae451acb5b27d'
#  + "lxd.socket"                       'dfa7033fc39632af0f2c7e26ee966789'
#  + "dnsmasq-lxd.conf"                 'b1fd16933c1b24aaa9ccc8f5a0e6478c'
#  + "dnsmasq@lxd.service"              '15ae1bc51684d611bded2839ca55a37b'
#  + "lxd.netctl"                       '52c641ea0ba5477f5c1a1b857c03dda9'
#  + "dbus-dnsmasq-lxd.conf"            'c86b8c441ab014340186acc7799096f2'
#  + "networkmanager-dnsmasq-lxd.conf"  '427926fddb1537f7a65d0a7274106df5'
#############################################################
LXD_LTS_VERSION = 4.24
LXD_LTS_SOURCE  = lxd-$(LXD_LTS_VERSION).tar.gz
LXD_LTS_SITE    = https://github.com/lxc/lxd/archive/refs/tags

LXD_LTS_DEPENDENCIES = lxc squashfs dnsmasq dqlite
LXD_LTS_BIN_ARCH_EXCLUDE = /usr/lib

define LXD_LTS_CONFIGURE_CMDS
  wget https://go.dev/dl/go1.18.linux-arm64.tar.gz -O /go1.18.linux-arm64.tar.gz 
  cd  / &&\
  tar -zxf go1.18.linux-arm64.tar.gz && \
  mkdir $(@D)/go
  export PATH=$(PATH):/go/bin
endef

define LXD_LTS_BUILD_CMDS
  cd "$(@D)/" && \
  git clone https://aur.archlinux.org/lxd-lts.git && \
  GOROOT=/go GOPATH=$(@D)/go PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig/" make
endef

define LXD_LTS_INSTALL_TARGET_CMDS
  mkdir -p "$(TARGET_DIR)/usr/bin"
  mkdir -p "$(TARGET_DIR)/usr/lib/lxd"
  mkdir -p "$(TARGET_DIR)/usr/share/bash-completion/completions"
  install -p -m755 "/go/bin/"* "$(TARGET_DIR)/usr/bin"
  install -p -m755 "$(@D)/go/bin/"* "$(TARGET_DIR)/usr/bin"
  install -D -m644 "$(@D)/lxd-lts/lxd.service" \
    "$(TARGET_DIR)/usr/lib/systemd/system/lxd.service"
  install -D -m644 "$(@D)/lxd-lts/lxd.socket" \
    "$(TARGET_DIR)/usr/lib/systemd/system/lxd.socket"
  install -p -m755 "$(@D)/scripts/bash/lxd-client" \
    "$(TARGET_DIR)/usr/share/bash-completion/completions/lxd"
  mkdir -p "$(TARGET_DIR)/usr/share/lxd/"
  mkdir -p "$(TARGET_DIR)/usr/share/lxd/systemd/system/"
  mkdir -p "$(TARGET_DIR)/usr/share/lxd/netctl/"
  mkdir -p "$(TARGET_DIR)/usr/share/lxd/dbus-1/system.d/"
  mkdir -p "$(TARGET_DIR)/usr/share/lxd/NetworkManager/dnsmasq.d/"
  install -Dm644 "$(@D)/lxd-lts/dnsmasq-lxd.conf" \
    "$(TARGET_DIR)/usr/share/lxd/dnsmasq-lxd.conf"
  install -Dm644 "$(@D)/lxd-lts/dnsmasq@lxd.service" \
    "$(TARGET_DIR)/usr/share/lxd/systemd/system/dnsmasq@lxd.service"
  install -Dm644 "$(@D)/lxd-lts/lxd.netctl" \
    "$(TARGET_DIR)/usr/share/lxd/netctl/lxd"
  install -Dm644 "$(@D)/lxd-lts/dbus-dnsmasq-lxd.conf" \
    "$(TARGET_DIR)/usr/share/lxd/dbus-1/system.d/dnsmasq-lxd.conf"
  install -Dm644 "$(@D)/lxd-lts/networkmanager-dnsmasq-lxd.conf" \
    "$(TARGET_DIR)/usr/share/lxd/NetworkManager/dnsmasq.d/lxd.conf"
endef

$(eval $(generic-package))
EOF

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