Skip to content

Commit

Permalink
addon incus: cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
Zabrimus committed Jun 12, 2024
1 parent 1637880 commit 92f6c0e
Show file tree
Hide file tree
Showing 12 changed files with 107 additions and 58 deletions.
5 changes: 4 additions & 1 deletion packages/addons/addon-depends/_cowsql/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,17 @@ PKG_BRANCH="master"
PKG_SOURCE_DIR="cowsql-${PKG_VERSION}"
PKG_LONGDESC="Powerful system container and virtual machine manager"
PKG_TOOLCHAIN="configure"
PKG_BUILD_FLAGS="+speed"
PKG_BUILD_FLAGS="+speed -sysroot"

PKG_CONFIGURE_OPTS_TARGET="--enable-shared \
--with-sysroot=${SYSROOT_PREFIX} \
"

pre_configure_target() {
export LDFLAGS="$(echo ${LDFLAGS} | sed -e "s|-Wl,--as-needed||")"
export LDFLAGS="${LDFLAGS} -L$(get_install_dir _raft)/usr/lib"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:$(get_install_dir _raft)/usr/lib/pkgconfig"

export CFLAGS=$(echo "${CFLAGS} -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-function -Wno-maybe-uninitialized -Wno-unused-parameter")

autoreconf -i
Expand Down
2 changes: 1 addition & 1 deletion packages/addons/addon-depends/_dnsmasq/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ PKG_SOURCE_DIR="dnsmasq-${PKG_VERSION}"
PKG_BRANCH="master"
PKG_LONGDESC="Dnsmasq provides network infrastructure for small networks: DNS, DHCP, router advertisement and network boot."
PKG_TOOLCHAIN="auto"
PKG_BUILD_FLAGS="+speed"
PKG_BUILD_FLAGS="+speed -sysroot"
2 changes: 1 addition & 1 deletion packages/addons/addon-depends/_libacl/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ PKG_SOURCE_DIR="acl-${PKG_VERSION}"
PKG_BRANCH="master"
PKG_LONGDESC="Commands for Manipulating POSIX Access Control Lists"
PKG_TOOLCHAIN="configure"
PKG_BUILD_FLAGS="+speed"
PKG_BUILD_FLAGS="+speed -sysroot"

PKG_CONFIGURE_OPTS_TARGET="--disable-shared \
--with-sysroot=${SYSROOT_PREFIX} \
Expand Down
7 changes: 5 additions & 2 deletions packages/addons/addon-depends/_lxc/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ PKG_SHA256="ddc274df634927f514cf8a2d9f07ae4af01ea97d3fa1bf93fcf5c7bf6c8d6c34"
PKG_LICENSE="LGPL 2.1"
PKG_SITE="https://github.com/lxc/lxc"
PKG_URL="https://github.com/lxc/lxc/archive/refs/tags/v${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain libseccomp"
PKG_DEPENDS_TARGET="toolchain libseccomp dbus"
PKG_SOURCE_DIR="lxc-${PKG_VERSION}"
PKG_BRANCH="master"
PKG_LONGDESC="LXC is a userspace interface for the Linux kernel containment features."
PKG_TOOLCHAIN="auto"
PKG_BUILD_FLAGS="+speed"
PKG_BUILD_FLAGS="+speed -sysroot"

PKG_MESON_OPTS_TARGET="--prefix=/storage/.kodi/addons/service.incus \
--bindir=/storage/.kodi/addons/service.incus/bin \
Expand All @@ -26,9 +26,12 @@ PKG_MESON_OPTS_TARGET="--prefix=/storage/.kodi/addons/service.incus \
-Dtools=false \
-Dtools-multicall=true \
-Dapparmor=false \
-Dopenssl=false \
-Dcommands=false \
-Dman=false \
"

pre_configure_target() {
export PKG_CONFIG_PATH="$(get_install_dir libseccomp)/usr/lib/pkgconfig"
export LDFLAGS="${LDFLAGS} -L$(get_install_dir libseccomp)/usr/lib"
}
2 changes: 1 addition & 1 deletion packages/addons/addon-depends/_lxcfs/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ PKG_SOURCE_DIR="lxcfs-${PKG_VERSION}"
PKG_BRANCH="master"
PKG_LONGDESC="FUSE filesystem for LXC"
PKG_TOOLCHAIN="meson"
PKG_BUILD_FLAGS="+speed"
PKG_BUILD_FLAGS="+speed -sysroot"

PKG_MESON_OPTS_TARGET="--prefix=/storage/.kodi/addons/service.incus \
--bindir=/storage/.kodi/addons/service.incus/bin \
Expand Down
2 changes: 1 addition & 1 deletion packages/addons/addon-depends/_raft/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ PKG_SOURCE_DIR="raft-${PKG_VERSION}"
PKG_BRANCH="master"
PKG_LONGDESC="Powerful system container and virtual machine manager"
PKG_TOOLCHAIN="configure"
PKG_BUILD_FLAGS="+speed"
PKG_BUILD_FLAGS="+speed -sysroot"

PKG_CONFIGURE_OPTS_TARGET="--enable-shared --disable-static \
--with-sysroot=${SYSROOT_PREFIX}"
Expand Down
9 changes: 5 additions & 4 deletions packages/addons/addon-depends/_squashfs-tools/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@ PKG_URL="https://github.com/plougher/squashfs-tools/archive/${PKG_VERSION}.tar.g
PKG_DEPENDS_TARGET="toolchain zlib lzo xz _zstd"
PKG_LONGDESC="Tools for squashfs, a highly compressed read-only filesystem for Linux."
PKG_TOOLCHAIN="manual"
PKG_BUILD_FLAGS="+speed -sysroot"

make_target() {
export LDFLAGS="-L$(get_build_dir _zstd)/bindir"
export LDFLAGS="-L$(get_install_dir _zstd)/usr/local/lib"
make -C squashfs-tools \
XZ_SUPPORT=1 \
LZO_SUPPORT=1 \
Expand All @@ -24,6 +25,6 @@ make_target() {
all
}

makeinstall() {
:
}
#makeinstall() {
# :
#}
6 changes: 1 addition & 5 deletions packages/addons/addon-depends/_tar/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,4 @@ PKG_URL="https://ftp.gnu.org/gnu/tar/tar-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain make:host"
PKG_LONGDESC="tar"
PKG_TOOLCHAIN="auto"

makeinstall_target() {
mkdir -p $(get_build_dir _tar)/bindir
cp src/tar $(get_build_dir _tar)/bindir
}
PKG_BUILD_FLAGS="+speed -sysroot"
10 changes: 1 addition & 9 deletions packages/addons/addon-depends/_zstd/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,4 @@ PKG_URL="https://github.com/facebook/zstd/releases/download/v${PKG_VERSION}/zstd
PKG_DEPENDS_TARGET="toolchain cmake:host make:host"
PKG_LONGDESC="A fast real-time compression algorithm."
PKG_TOOLCHAIN="make"
PKG_BUILD_FLAGS="+local-cc"

makeinstall_target() {
mkdir -p $(get_build_dir _zstd)/bindir
cp $(get_build_dir _zstd)/lib/libzstd.so.${PKG_VERSION} $(get_build_dir _zstd)/bindir
cd $(get_build_dir _zstd)/bindir
ln -s libzstd.so.${PKG_VERSION} libzstd.so.1
ln -s libzstd.so.${PKG_VERSION} libzstd.so
}
PKG_BUILD_FLAGS="+local-cc +speed -sysroot"
112 changes: 81 additions & 31 deletions packages/addons/incus/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,38 @@ PKG_SHA256="0e7f7de3a61a2ca33ad8f04c4e37fe9eaa0c775de3723dc43cebafdea029f000"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/lxc/incus"
PKG_URL="https://github.com/lxc/incus/archive/refs/tags/v${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain go:host _cowsql _libacl _lxc _lxcfs _squashfs-tools _tar _dnsmasq"
PKG_DEPENDS_TARGET="toolchain go:host _cowsql _libacl _lxc _lxcfs _squashfs-tools _tar _dnsmasq libseccomp"
PKG_SOURCE_DIR="incus-${PKG_VERSION}"
PKG_BRANCH="master"
PKG_SECTION="tools"
PKG_LONGDESC="Powerful system container and virtual machine manager"
PKG_TOOLCHAIN="make"
PKG_BUILD_FLAGS="+speed"
PKG_BUILD_FLAGS="+speed -sysroot"

PKG_IS_ADDON="yes"
PKG_SECTION="service"
PKG_ADDON_NAME="incus"
PKG_ADDON_TYPE="xbmc.service"

pre_configure_target() {
export CFLAGS=$(echo "${CFLAGS} -Wno-use-after-free -I$(get_build_dir _cowsql)/include")
export CFLAGS="$(echo ${CFLAGS} -Wno-use-after-free)"
}

make_target() {
go_configure

export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:$(get_install_dir _lxc)/storage/.kodi/addons/service.incus/lib/pkgconfig"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:$(get_install_dir libseccomp)/usr/lib/pkgconfig"

export CGO_CFLAGS="${CGO_CFLAGS} -I$(get_install_dir _cowsql)/usr/include -I$(get_install_dir _raft)/usr/include -I$(get_install_dir _libacl)/usr/include -I$(get_install_dir _lxc)/storage/.kodi/addons/service.incus/include"

export CGO_LDFLAGS="${CGO_LDFLAGS} -L$(get_install_dir libseccomp)/usr/lib -lseccomp"
export CGO_LDFLAGS="${CGO_LDFLAGS} -L$(get_install_dir _libacl)/usr/lib -lacl"
export CGO_LDFLAGS="${CGO_LDFLAGS} -L$(get_install_dir _cowsql)/usr/lib -lcowsql"
export CGO_LDFLAGS="${CGO_LDFLAGS} -L$(get_install_dir _raft)/usr/lib -lraft"
export CGO_LDFLAGS="${CGO_LDFLAGS} -L$(get_install_dir _lxc)/storage/.kodi/addons/service.incus/lib -llxc"
export CGO_LDFLAGS="${CGO_LDFLAGS} -L$(get_install_dir _lxcfs)/storage/.kodi/addons/service.incus/lib/lxcfs -llxcfs"

GO=${GOLANG} make # SHELL='sh -x'
}

Expand All @@ -38,37 +51,74 @@ addon() {

mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/lib
mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/data
mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/etc
mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/system.d

# copy lxc
cp -Pr $(get_install_dir _lxc)/storage/.kodi/addons/service.incus/* ${ADDON_BUILD}/${PKG_ADDON_ID}
cp -P $(get_install_dir _lxc)/usr/lib/systemd/system/* ${ADDON_BUILD}/${PKG_ADDON_ID}/system.d
# copy cowsql
cp -a $(get_install_dir _cowsql)/usr/lib/libcowsql.so* \
${ADDON_BUILD}/${PKG_ADDON_ID}/lib

# copy raft
cp -a $(get_install_dir _raft)/usr/lib/libraft.so* \
${ADDON_BUILD}/${PKG_ADDON_ID}/lib

# copy zstd
cp -a $(get_install_dir _zstd)/usr/local/lib/libzstd.so* \
${ADDON_BUILD}/${PKG_ADDON_ID}/lib

cp -a $(get_install_dir _zstd)/usr/local/bin/* \
${ADDON_BUILD}/${PKG_ADDON_ID}/bin

# cleanup lxc
rm -Rf ${ADDON_BUILD}/${PKG_ADDON_ID}/include
# copy libseccomp
cp -a $(get_install_dir libseccomp)/usr/lib/libseccomp.so* \
${ADDON_BUILD}/${PKG_ADDON_ID}/lib

cp -a $(get_install_dir libseccomp)/usr/bin/* \
${ADDON_BUILD}/${PKG_ADDON_ID}/bin

# copy lxc
cp -ar $(get_install_dir _lxc)/storage/.kodi/addons/service.incus/* \
${ADDON_BUILD}/${PKG_ADDON_ID}
cp -a $(get_install_dir _lxc)/usr/lib/systemd/system/* \
${ADDON_BUILD}/${PKG_ADDON_ID}/system.d
rm -rf ${ADDON_BUILD}/${PKG_ADDON_ID}/include
rm -rf ${ADDON_BUILD}/${PKG_ADDON_ID}/lib/pkgconfig
rm -rf ${ADDON_BUILD}/${PKG_ADDON_ID}/lib/*.a

# copy lxcfs
cp -Pr $(get_install_dir _lxcfs)/storage/.kodi/addons/service.incus/* ${ADDON_BUILD}/${PKG_ADDON_ID}
cp -P $(get_install_dir _lxcfs)/usr/lib/systemd/system/* ${ADDON_BUILD}/${PKG_ADDON_ID}/system.d

# copy binaries
cp -P $(get_build_dir incus)/.gopath/bin/linux_${TARGET_KERNEL_ARCH}/* ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
cp -P $(get_build_dir _squashfs-tools)/squashfs-tools/mksquashfs ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
cp -P $(get_build_dir _squashfs-tools)/squashfs-tools/unsquashfs ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
cp -P $(get_build_dir _squashfs-tools)/squashfs-tools/unsquashfs ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
cp -P $(get_build_dir _tar)/bindir/tar ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
cp -P $(get_install_dir libseccomp)/usr/bin/* ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
cp -P $(get_install_dir _dnsmasq)/usr/local/sbin/* ${ADDON_BUILD}/${PKG_ADDON_ID}/bin

# copy libs
cp -P $(get_install_dir _cowsql)/usr/lib/libcowsql.so* \
$(get_install_dir _raft)/usr/lib/libraft.so* \
$(get_build_dir _zstd)/bindir/libzstd.so* \
$(get_install_dir libseccomp)/usr/lib/lib*.so* \
${ADDON_BUILD}/${PKG_ADDON_ID}/lib

patchelf --add-rpath '${ORIGIN}/../lib' ${ADDON_BUILD}/${PKG_ADDON_ID}/bin/incusd
patchelf --add-rpath '${ORIGIN}/../lib' ${ADDON_BUILD}/${PKG_ADDON_ID}/bin/lxc-to-incus
patchelf --add-rpath '${ORIGIN}/../lib' ${ADDON_BUILD}/${PKG_ADDON_ID}/bin/mksquashfs
patchelf --add-rpath '${ORIGIN}/../lib' ${ADDON_BUILD}/${PKG_ADDON_ID}/bin/unsquashfs
cp -ar $(get_install_dir _lxcfs)/storage/.kodi/addons/service.incus/data/* \
${ADDON_BUILD}/${PKG_ADDON_ID}/data
cp -ar $(get_install_dir _lxcfs)/storage/.kodi/addons/service.incus/bin/* \
${ADDON_BUILD}/${PKG_ADDON_ID}/bin
cp -ar $(get_install_dir _lxcfs)/storage/.kodi/addons/service.incus/lib/lxcfs/* \
${ADDON_BUILD}/${PKG_ADDON_ID}/lib
cp -a $(get_install_dir _lxcfs)/usr/lib/systemd/system/* \
${ADDON_BUILD}/${PKG_ADDON_ID}/system.d

# copy squashfs
cp -a $(get_build_dir _squashfs-tools)/squashfs-tools/mksquashfs \
${ADDON_BUILD}/${PKG_ADDON_ID}/bin
cp -a $(get_build_dir _squashfs-tools)/squashfs-tools/unsquashfs \
${ADDON_BUILD}/${PKG_ADDON_ID}/bin

# copy fuse3
cp -a $(get_install_dir fuse3)/usr/lib/*.so* \
${ADDON_BUILD}/${PKG_ADDON_ID}/lib
cp -a $(get_install_dir fuse3)/usr/bin/* \
${ADDON_BUILD}/${PKG_ADDON_ID}/bin
cp -a $(get_install_dir fuse3)/usr/sbin/* \
${ADDON_BUILD}/${PKG_ADDON_ID}/bin

# copy tar
cp -a $(get_install_dir _tar)/usr/bin/tar \
${ADDON_BUILD}/${PKG_ADDON_ID}/bin

# copy dnsmasq
cp -a $(get_install_dir _dnsmasq)/usr/local/sbin/* \
${ADDON_BUILD}/${PKG_ADDON_ID}/bin

# copy incus
cp -a $(get_build_dir incus)/.gopath/bin/linux_${TARGET_KERNEL_ARCH}/* \
${ADDON_BUILD}/${PKG_ADDON_ID}/bin
}
2 changes: 1 addition & 1 deletion packages/addons/tsduck/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ PKG_DEPENDS_HOST="gcc:host"
PKG_LONGDESC="The MPEG Transport Stream Toolkit"
PKG_TOOLCHAIN="make"
PKG_SECTION="tools"
PKG_BUILD_FLAGS="+speed"
PKG_BUILD_FLAGS="+speed -sysroot"

PKG_IS_ADDON="yes"
PKG_ADDON_NAME="tsduck"
Expand Down
6 changes: 5 additions & 1 deletion packages/virtual/tools/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,8 @@ PKG_DEPENDS_TARGET+=" _triggerhappy _python-evdev _irmplircd _vtuner-ng"

if [ "${DISTRO}" = "CoreELEC" ]; then
PKG_DEPENDS_TARGET+=" _amremote"
fi
fi

# Addon Depends which shall be installed in the base image
# It's much easier to build, package and maintain
# PKG_DEPENDS_TARGET+=" _cowsql _dnsmasq _libacl _lxc _lxcfs _raft _squashfs-tools _tar _zstd"

0 comments on commit 92f6c0e

Please sign in to comment.