| Server IP : 103.161.17.216 / Your IP : 216.73.216.1 Web Server : nginx/1.18.0 System : Linux tipsysaigoncharming 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /snap/lxd/current/snap/ |
Upload File : |
snapcraft-version: 8.14.1
snapcraft-started-at: '2026-02-27T10:35:20.504050Z'
snapcraft-os-release-id: ubuntu
snapcraft-os-release-version-id: '24.04'
name: lxd
version: 6.7-1f11451
summary: LXD - container and VM manager
description: |-
LXD is a system container and virtual machine manager.
It offers a simple CLI and REST API to manage local or remote instances,
uses an image based workflow and support for a variety of advanced features.
Images are available for all Ubuntu releases and architectures as well
as for a wide number of other Linux distributions. Existing
integrations with many deployment and operation tools, makes it work
just like a public cloud, except everything is under your control.
LXD containers are lightweight, secure by default and a great
alternative to virtual machines when running Linux on Linux.
LXD virtual machines are modern and secure, using UEFI and secure-boot
by default and a great choice when a different kernel or operating
system is needed.
With clustering, up to 50 LXD servers can be easily joined and managed
together with the same tools and APIs and without needing any external
dependencies.
Supported configuration options for the snap (snap set lxd [<key>=<value>...]):
- apparmor.unprivileged-restrictions-disable: Whether to disable restrictions on unprivileged user namespaces [default=true]
- ceph.builtin: Use snap-specific Ceph configuration [default=false]
- ceph.external: Use the system's ceph tools (ignores ceph.builtin) [default=false]
- daemon.debug: Increase logging to debug level [default=false]
- daemon.group: Set group of users that have full control over LXD [default=lxd]
- daemon.user.group: Set group of users that have restricted LXD access [default=lxd]
- daemon.preseed: Pass a YAML configuration to `lxd init` on initial start
- daemon.syslog: Send LXD log events to syslog [default=false]
- daemon.verbose: Increase logging to verbose level [default=false]
- db.trace: Enable dqlite trace logging (very verbose) [default=false]
- lvm.external: Use the system's LVM tools [default=false]
- lxcfs.pidfd: Start per-container process tracking [default=true]
- lxcfs.loadavg: Start tracking per-container load average [default=false]
- lxcfs.cfs: Consider CPU shares for CPU usage [default=false]
- lxcfs.debug: Increase logging to debug level [default=false]
- minio.path: Path to the directory containing the minio and mc binaries to use with LXD [default=""]
- openvswitch.builtin: Run a snap-specific OVS daemon [default=false]
- openvswitch.external: Use the system's OVS tools (ignores openvswitch.builtin) [default=false]
- ovn.builtin: Use snap-specific OVN configuration [default=false]
- zfs.external: Use the system's ZFS tools [default=false]
For system-wide configuration of the CLI, place your configuration in
/var/snap/lxd/common/global-conf/ (config.yml and servercerts)
base: core24
grade: stable
confinement: strict
apps:
activate:
command: commands/daemon.activate
daemon: oneshot
plugs:
- lxd-support
- system-observe
buginfo:
command: commands/buginfo
plugs:
- lxd-support
- system-observe
check-kernel:
command: commands/lxd-check-kernel
plugs:
- lxd-support
- system-observe
daemon:
command: commands/daemon.start
stop-command: commands/daemon.stop
stop-timeout: 600s
reload-command: commands/daemon.reload
daemon: simple
restart-condition: on-failure
slots:
- lxd
plugs:
- lxd-support
- network-bind
- system-observe
command-chain:
- bin/gpu-2404-custom-wrapper
sockets:
unix:
listen-stream: $SNAP_COMMON/lxd/unix.socket
socket-mode: 432
lxc:
command: commands/lxc
completer: lxc-completer.sh
plugs:
- lxd-support
- system-observe
lxd:
command: commands/lxd
plugs:
- lxd-support
- system-observe
user-daemon:
command: commands/lxd-user
stop-timeout: 600s
daemon: simple
restart-condition: on-failure
plugs:
- lxd-support
- network-bind
- system-observe
sockets:
unix:
listen-stream: $SNAP_COMMON/lxd-user/unix.socket
socket-mode: 432
parts:
amd-ctk:
build-snaps:
- go/1.25/stable
plugin: go
prime:
- bin/amd-ctk
source: https://github.com/ROCm/container-toolkit
source-commit: 3ab0394f71220e693ae016fa6581fbd04a51ed44
source-depth: 1
source-type: git
stage-packages: []
stage: []
build-packages: []
apparmor:
organize:
sbin/: bin/
plugin: nil
prime:
- bin/apparmor_parser
stage-packages:
- apparmor=4.0.1really4.0.1-0ubuntu0.24.04.5
- debconf=1.5.86ubuntu1
stage: []
build-packages: []
btrfs:
organize:
sbin/: bin/
plugin: nil
prime:
- bin/btrfs
- bin/btrfstune
- bin/mkfs.btrfs
stage-packages:
- btrfs-progs=6.6.3-1.1build2
- libreiserfscore0t64=1:3.6.27-7.1build1
stage: []
build-packages: []
ceph:
after:
- libatomic
organize:
usr/bin/: bin/
usr/lib/: lib/
override-build: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-prime: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
plugin: nil
prime:
- bin/ceph
- bin/radosgw-admin
- bin/rbd
- lib/*/ceph
- lib/*/libcephfs*
- lib/python3
- lib/*/libboost_context.so*
- lib/*/libboost_filesystem.so*
- lib/*/libboost_iostreams.so*
- lib/*/libboost_program_options.so*
- lib/*/libboost_thread.so*
- lib/*/libboost_url.so*
- lib/*/libbrotlicommon.so*
- lib/*/libbrotlidec.so*
- lib/*/libcurl-gnutls.so*
- lib/*/libdaxctl.so*
- lib/*/libibverbs.so*
- lib/*/libicudata.so*
- lib/*/libicuuc.so*
- lib/*/liblber-2.5.so*
- lib/*/liblber.so*
- lib/*/libldap-2.5.so*
- lib/*/libldap.so*
- lib/*/liblmdb.so*
- lib/*/liblua5.4.so*
- lib/*/libncurses.so*
- lib/*/libndctl.so*
- lib/*/libnghttp2.so*
- lib/*/liboath.so*
- lib/*/libpmemobj.so*
- lib/*/libpmem.so*
- lib/*/libpsl.so*
- lib/*/librabbitmq.so*
- lib/*/librados.so*
- lib/*/librbd.so*
- lib/*/librdmacm.so*
- lib/*/librtmp.so*
- lib/*/libsasl2.so*
- lib/*/libsnappy.so*
- lib/*/libssh.so*
- lib/*/libtcmalloc.so*
- lib/*/libunwind.so*
stage-packages:
- adduser=3.137ubuntu1
- ceph-common=19.2.3-0ubuntu0.24.04.3
- libaio1t64=0.3.113-6build1.1
- libbabeltrace1=1.5.11-3build3
- libboost-context1.83.0=1.83.0-2.1ubuntu3.2
- libboost-filesystem1.83.0=1.83.0-2.1ubuntu3.2
- libboost-iostreams1.83.0=1.83.0-2.1ubuntu3.2
- libboost-locale1.83.0=1.83.0-2.1ubuntu3.2
- libboost-program-options1.83.0=1.83.0-2.1ubuntu3.2
- libboost-thread1.83.0=1.83.0-2.1ubuntu3.2
- libboost-url1.83.0=1.83.0-2.1ubuntu3.2
- libcephfs2=19.2.3-0ubuntu0.24.04.3
- libcurl3t64-gnutls=8.5.0-2ubuntu10.7
- libdaxctl1=77-2ubuntu2
- libdw1t64=0.190-1.1ubuntu0.1
- libgoogle-perftools4t64=2.15-3build1
- libibverbs1=50.0-2ubuntu0.2
- libicu74=74.2-1ubuntu3.1
- libldap2=2.6.10+dfsg-0ubuntu0.24.04.1
- liblmdb0=0.9.31-1build1
- liblua5.4-0=5.4.6-3build2
- libncurses6=6.4+20240113-1ubuntu2
- libndctl6=77-2ubuntu2
- libnghttp2-14=1.59.0-1ubuntu0.2
- liboath0t64=2.6.11-2.1ubuntu0.1
- libpmem1=1.13.1-1.1ubuntu2
- libpmemobj1=1.13.1-1.1ubuntu2
- libpsl5t64=0.21.2-1.1build1
- librabbitmq4=0.11.0-1build2
- librados2=19.2.3-0ubuntu0.24.04.3
- libradosstriper1=19.2.3-0ubuntu0.24.04.3
- librbd1=19.2.3-0ubuntu0.24.04.3
- librdmacm1t64=50.0-2ubuntu0.2
- librtmp1=2.4+20151223.gitfa8646d.1-2build7
- libsasl2-2=2.1.28+dfsg1-5ubuntu3.1
- libsasl2-modules-db=2.1.28+dfsg1-5ubuntu3.1
- libsnappy1v5=1.1.10-1build1
- libssh-4=0.10.6-2ubuntu0.3
- libtcmalloc-minimal4t64=2.15-3build1
- libunwind8=1.6.2-3build1.1
- python3-ceph-argparse=19.2.3-0ubuntu0.24.04.3
- python3-ceph-common=19.2.3-0ubuntu0.24.04.3
- python3-cephfs=19.2.3-0ubuntu0.24.04.3
- python3-certifi=2023.11.17-1
- python3-chardet=5.2.0+dfsg-1
- python3-idna=3.6-2ubuntu0.1
- python3-prettytable=3.6.0-2
- python3-rados=19.2.3-0ubuntu0.24.04.3
- python3-rbd=19.2.3-0ubuntu0.24.04.3
- python3-requests=2.31.0+dfsg-1ubuntu1.1
- python3-urllib3=2.0.7-1ubuntu0.6
- python3-wcwidth=0.2.5+dfsg1-1.1ubuntu1
- python3-yaml=6.0.1-2build2
stage: []
build-packages: []
dqlite:
autotools-configure-parameters:
- --prefix=
- --enable-build-raft
build-packages:
- liblz4-dev
- libsqlite3-dev
- libuv1-dev
- xfslibs-dev
organize:
usr/bin/: bin/
usr/lib/: lib/
plugin: autotools
prime:
- bin/sqlite3
- lib/libdqlite*so*
- lib/*/libsqlite3*so*
- lib/*/libuv*
source: https://github.com/canonical/dqlite
source-commit: b0156f030b9273ae890b846f9a632cf696ace816
source-depth: 1
source-type: git
stage-packages:
- liblz4-1=1.9.4-1build1.1
- libuv1t64=1.48.0-1.1build1
- sqlite3=3.45.1-1ubuntu2.5
stage: []
edk2:
after:
- qemu
build-packages:
- acpica-tools
- bc
- debhelper
- dosfstools
- g++
- jq
- lsb-release
- mtools
- nasm
- python3
- python3-pexpect
- python3-virt-firmware
- quilt
- uuid-dev
- xorriso
override-build: |-
[ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
set -eux
# Ensure staged libraries are found (needed for qemu to generate secure boot vars)
export LD_LIBRARY_PATH="/build/lxd/stage/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH):/build/lxd/stage/lib:${LD_LIBRARY_PATH:-}"
# Apply patches from Ubuntu sources.
QUILT_PATCHES=debian/patches quilt push -a
# Enable KVM if available
if [ -c /dev/kvm ] && [ -w /dev/kvm ]; then
sed -i 's/accel=tcg/accel=kvm:tcg/' debian/python/UEFI/Qemu.py
fi
# Ensure fast RNG in the build VM to speed up secure boot vars generation.
sed -i "s/'-serial', 'stdio',/'-serial', 'stdio', '-device', 'virtio-rng-pci',/" debian/python/UEFI/Qemu.py
# Apply patches
patch -p1 < "/build/lxd/patches/edk2-0001-force-DUID-LLT.patch"
cp "/build/lxd/patches/edk2-0002-logo.bmp" MdeModulePkg/Logo/Logo.bmp
patch -p1 < "/build/lxd/patches/edk2-0003-boot-delay.patch"
# Install files destination
mkdir -p "${CRAFT_PART_INSTALL}/share/qemu/"
if [ "$(uname -m)" = "x86_64" ]; then
DSC="OvmfPkg/OvmfPkgX64.dsc"
BUILD_TARGET="build-ovmf"
SRC_DIR="debian/ovmf-install"
SRC_CODE="OVMF_CODE_4M.secboot.fd"
SRC_VARS="OVMF_VARS_4M.fd"
SRC_VARS_MS="OVMF_VARS_4M.ms.fd"
# Add DEBUG_VERBOSE to print error level for DEBUG build
# * 0x80000000 (DEBUG_ERROR)
# * 0x00000040 (DEBUG_INFO)
# * 0x0000000F (Bits 0-3: DEBUG_INIT, DEBUG_WARN, DEBUG_LOAD, DEBUG_FS)
# = 0x8000004F
# Adding 0x00400000 (DEBUG_VERBOSE) gives 0x8040004F
SED_EXPR="s#PcdDebugPrintErrorLevel|0x8000004F#PcdDebugPrintErrorLevel|0x8040004F#g"
elif [ "$(uname -m)" = "aarch64" ]; then
DSC="ArmVirtPkg/ArmVirt.dsc.inc"
BUILD_TARGET="build-qemu-efi-aarch64"
SRC_DIR="debian/aavmf-install"
SRC_CODE="AAVMF_CODE.secboot.fd"
SRC_VARS="AAVMF_VARS.fd"
SRC_VARS_MS="AAVMF_VARS.ms.fd"
# See note in `x86_64` section for DEBUG_VERBOSE explanation
SED_EXPR="s#DEBUG_PRINT_ERROR_LEVEL = 0x8000004F#DEBUG_PRINT_ERROR_LEVEL = 0x8040004F#g"
fi
# Function to run build and install
run_build() {
local TYPE="${1}"
local SUFFIX="${2}"
# Clean up previous build stamps/artifacts to ensure clean rebuild with new TYPE
rm -f debian/setup-build-stamp
rm -rf debian/*-install
rm -rf Build
if [ "${TYPE}" = "DEBUG" ]; then
# Add `DEBUG_VERBOSE` to print error level for DEBUG build
sed --in-place=.bak "${SED_EXPR}" "${DSC}"
fi
/usr/bin/make -f debian/rules "${BUILD_TARGET}" BUILD_TYPE="${TYPE}"
if [ "${TYPE}" = "DEBUG" ] && [ -f "${DSC}.bak" ]; then
mv "${DSC}.bak" "${DSC}"
fi
cp "${SRC_DIR}/${SRC_CODE}" "${CRAFT_PART_INSTALL}/share/qemu/OVMF_CODE.4MB${SUFFIX}.fd"
cp "${SRC_DIR}/${SRC_VARS}" "${CRAFT_PART_INSTALL}/share/qemu/OVMF_VARS.4MB${SUFFIX}.fd"
if [ "${TYPE}" = "RELEASE" ]; then
cp "${SRC_DIR}/${SRC_VARS_MS}" "${CRAFT_PART_INSTALL}/share/qemu/OVMF_VARS.4MB.ms.fd"
fi
}
# Build Release
run_build RELEASE ""
# Build Debug
run_build DEBUG ".debug"
# Cleanup debug vars
rm "${CRAFT_PART_INSTALL}/share/qemu/OVMF_VARS.4MB.debug.fd"
override-prime: |-
[ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
craftctl default
plugin: nil
prime:
- share/qemu/*
source: https://git.launchpad.net/ubuntu/+source/edk2
source-commit: 0b1f127464c5e53bea2933e26a37155424974fdf
source-depth: 1
source-type: git
stage-packages: []
stage: []
gpu-2404:
after:
- lxd
- qemu
override-prime: |
${CRAFT_PART_SRC}/bin/gpu-2404-cleanup mesa-2404 nvidia-2404
plugin: dump
source: https://github.com/canonical/gpu-snap.git
stage-packages: []
stage: []
prime: []
build-packages: []
libatomic:
organize:
usr/lib/: lib/
override-prime: |-
[ "$(uname -m)" != "s390x" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" != "s390x" ] && exit 0
craftctl default
plugin: nil
prime:
- lib/*/libatomic.so*
stage-packages: []
stage: []
build-packages: []
logrotate:
organize:
usr/bin/: bin/
usr/lib/: lib/
usr/sbin/: bin/
plugin: nil
prime:
- bin/logrotate
stage:
- bin/logrotate
stage-packages:
- adduser=3.137ubuntu1
- cron-daemon-common=3.0pl1-184ubuntu2
- cron=3.0pl1-184ubuntu2
- logrotate=3.21.0-2build1
build-packages: []
lvm:
organize:
sbin/: bin/
usr/lib/: lib/
usr/sbin/: bin/
override-build: |-
# Patch lvm.conf to:
# 1) Disable bits that don't apply in a snap'ed env. Handle commented
# out variants that represent builtin values.
# * udev_sync
# * udev_rules
# * use_lvmetad
# * monitoring
# 2) Uncomment all executable directives to override their builtin
# values. Replace paths in /usr/bin, /usr/sbin, /bin and /sbin
# by /snap/lxd/current/bin to use executables from the snap.
sed -i \
-e "s%\(# \)\?udev_sync = 1%udev_sync = 0%" \
-e "s%\(# \)\?udev_rules = 1%udev_rules = 0%" \
-e "s%\(# \)\?use_lvmetad = 1%use_lvmetad = 0%" \
-e "s%\(# \)\?monitoring = 1%monitoring = 0%" \
-e "/# .*_\?executable =/s/# //" \
-e "s%\(/usr\)\?/s\?bin/%/snap/lxd/current/bin/%" \
"${CRAFT_PART_INSTALL}/etc/lvm/lvm.conf"
craftctl default
plugin: nil
prime:
- bin/cache_*
- bin/dmeventd
- bin/era_*
- bin/lv*
- bin/pdata_tools
- bin/pv*
- bin/thin_*
- bin/vg*
- -bin/vgimportclone
- -bin/lvmconf
- -bin/lvmdump
- -bin/lvmetad
- -bin/lvmpolld
- etc/lvm/lvm.conf
- etc/lvm/profile/*
- lib/*/device-mapper/*
- lib/*/libaio.so*
- lib/*/libdevmapper*
- lib/*/liblvm*
- lib/*/libreadline.so*
stage-packages:
- dmeventd=2:1.02.185-3ubuntu3.2
- libaio1t64=0.3.113-6build1.1
- libdevmapper-event1.02.1=2:1.02.185-3ubuntu3.2
- liblvm2cmd2.03=2.03.16-3ubuntu3.2
- lvm2=2.03.16-3ubuntu3.2
- thin-provisioning-tools=0.9.0-2ubuntu5.1
stage: []
build-packages: []
lxc:
after:
- apparmor
build-packages:
- libapparmor-dev
- libcap-dev
- libseccomp-dev
- pkg-config
- meson
- ninja-build
meson-parameters:
- --buildtype=release
- -Dapparmor=true
- -Dcapabilities=true
- -Dcommands=false
- -Ddbus=false
- -Dexamples=false
- -Dinstall-init-files=false
- -Dinstall-state-dirs=false
- -Dlibdir=lib/x86_64-linux-gnu
- -Dman=false
- -Dmemfd-rexec=false
- -Dopenssl=false
- -Dprefix=/
- -Drootfs-mount-path=/var/snap/lxd/common/lxc/
- -Dseccomp=true
- -Dselinux=false
- -Dspecfile=false
- -Dtests=false
- -Dtools=false
organize:
share/lxc/hooks: lxc/hooks
snap/lxd/current/lxc: lxc
override-build: |
set -ex
# Git cherry-picks
cd ../src
git config user.email "noreply@lists.canonical.com"
git config user.name "LXD snap builder"
# lxc-checkconfig.in does not need any preprocessing
mkdir -p "${CRAFT_PART_INSTALL}/bin/"
install --mode=0755 src/lxc/cmd/lxc-checkconfig.in "${CRAFT_PART_INSTALL}/bin/lxc-checkconfig"
cd ../build
set +ex
craftctl default
set -ex
mkdir -p "${CRAFT_PART_INSTALL}/lxc/config/common.conf.d/"
ln -s /var/snap/lxd/common/lxc/local.conf "${CRAFT_PART_INSTALL}/lxc/config/common.conf.d/01-local.conf"
plugin: meson
prime:
- bin/lxc-checkconfig
- lib/*/liblxc.so.1
- lib/*/liblxc.so.1.*
- lxc/config/common.conf.d
- lxc/hooks/nvidia
source: https://github.com/lxc/lxc
source-commit: 2597434ae2472114c70ad2bdf4ae5580c9e22717
source-depth: 1
source-type: git
stage-packages: []
stage: []
lxcfs:
build-packages:
- libfuse3-dev
- pkg-config
- python3-jinja2
- meson
- ninja-build
meson-parameters:
- --prefix=/
- --datadir=/snap/lxd/current/
- --localstatedir=/var/snap/lxd/common/var/
- -Ddocs=false
- -Dtests=false
organize:
lib/*/lxcfs/liblxcfs.so: lib/
snap/lxd/current/lxc/config/common.conf.d/*: lxc/config/common.conf.d/
snap/lxd/current/lxcfs/: lxcfs/
usr/lib/: lib/
override-build: |
set -ex
# Git cherry-picks
cd ../src
git config user.email "noreply@lists.canonical.com"
git config user.name "LXD snap builder"
set +ex
craftctl default
set -ex
patch -p1 "${CRAFT_PART_INSTALL}/snap/lxd/current/lxcfs/lxc.mount.hook" < "/build/lxd/patches/lxcfs-0001-hook.patch"
plugin: meson
prime:
- bin/fusermount
- bin/fusermount3
- lib/*/libfuse3.so.*
- lib/*/libSegFault.so
- bin/lxcfs
- lib/liblxcfs.so
- lxc/config/common.conf.d/00-lxcfs.conf
- lxcfs/
source: https://github.com/lxc/lxcfs
source-commit: 7ff173bfdb01bc10ab92c3d083a868d8f7fdd94d
source-depth: 1
source-type: git
stage-packages:
- adduser=3.137ubuntu1
- fuse3=3.14.0-5build1
- glibc-tools=0.0~git3.23fd2b9-0ubuntu1
- libfuse3-3=3.14.0-5build1
stage: []
lxd:
after:
- lxc
- dqlite
build-packages:
- cmake
- libacl1-dev
- libudev-dev
- libxml2-dev
- libxslt1-dev
- libblas-dev
- libopenblas-dev
- liblapack-dev
- pkg-config
- pypy3-dev
- python3-dev
- python3-pip
- python3-venv
build-snaps:
- go/1.25/stable
organize:
sbin/sgdisk: bin/
usr/bin/: bin/
usr/lib/: lib/
usr/sbin/: bin/
usr/share/misc/: share/misc/
var/lib/usbutils/usb.ids: share/misc/
override-build: |
set -ex
# Git cherry-picks
cd ../src
git config user.email "noreply@lists.canonical.com"
git config user.name "LXD snap builder"
# Setup build environment
export GOTOOLCHAIN="local"
export GOPATH="$(realpath ./.go)"
export CGO_CFLAGS="-I/build/lxd/stage/include/ -I/build/lxd/stage/usr/local/include/"
export CGO_LDFLAGS="-L/build/lxd/stage/lib/ -L/build/lxd/stage/usr/local/lib/"
export CGO_LDFLAGS_ALLOW="(-Wl,-wrap,pthread_create)|(-Wl,-z,now)"
# Build the binaries
go build -trimpath -o "${CRAFT_PART_INSTALL}/bin/lxc" github.com/canonical/lxd/lxc
# Build LXD server binary into ${CRAFT_PART_INSTALL}/sbin/lxd so that it does not conflict with the
# lxd-stophook wrapper script which is stored in ${CRAFT_PART_INSTALL}/bin/lxd.
# This way when a container stops it will call "/snap/lxd/current/bin/lxd callhook" which is handled by the
# lxd-stophook script, which in turn will execute "/snap/lxd/current/bin/lxd-user callhook" to notify LXD.
go build -trimpath -o "${CRAFT_PART_INSTALL}/sbin/lxd" -tags=libsqlite3 github.com/canonical/lxd/lxd
# Build static binaries
CGO_ENABLED=0 go build -trimpath -o "${CRAFT_PART_INSTALL}/bin/lxd-agent" -tags=agent,netgo github.com/canonical/lxd/lxd-agent
CGO_ENABLED=0 go build -trimpath -o "${CRAFT_PART_INSTALL}/bin/lxd-user" -tags netgo github.com/canonical/lxd/lxd-user
# Check which Go version was used to compile each of the lxc/lxd binaries
# XXX: fail if an unexpected version (like a Go toolchain) was used
GOVER="$(snap list go | awk '{if ($1 == "go") print $2}')"
UNEXPECTED_GO_VER="$(go version -v "${CRAFT_PART_INSTALL}/bin/lxc"* "${CRAFT_PART_INSTALL}/bin/lxd"* | grep -vF ": go${GOVER}" || true)"
if [ -n "${UNEXPECTED_GO_VER:-}" ]; then
echo "Some binaries were compiled with an unexpected Go version (!= ${GOVER}):"
echo "${UNEXPECTED_GO_VER}"
exit 1
fi
# Some python dependencies are not available for armhf/riscv64 or just require a build from source.
# Not worth the effort for now.
if [ "$(uname -m)" != "armv7l" ] && [ "$(uname -m)" != "riscv64" ]; then
# Build the static website
make doc
# Remove unneeded bits
rm doc/_build/objects.inv # only objects.inv.txt is used
# not needed once built
rm doc/_build/.buildinfo
rm -rf doc/_build/_sphinx_design_static/
# Copy the static website
mkdir -p "${CRAFT_PART_INSTALL}/share/lxd-documentation"
cp -a doc/_build/. "${CRAFT_PART_INSTALL}/share/lxd-documentation/"
fi
# Setup bash completion
mkdir -p "${CRAFT_PART_INSTALL}/etc/bash_completion.d/"
# Snapd requires the unaliased command `lxd.lxc` to be supplied as the first command for completion to be detected
set_cmds='s/^\s*complete.*__start_lxc /&lxd.lxc /'
# When executed by snapd, the COLUMNS shell value is unset, so use $(tput cols) instead
set_cols='s/# $COLUMNS.*/COLUMN="$(tput cols)" \# store the current shell width./'
# When executed by snapd, the `compopt` support detection doesn't work so fake that it is always `builtin`
set_compopt='s|$(type -t compopt)|"builtin"|'
# Modify requestComp variable to use lxc based on context ($SNAP/bin/lxc in Snap environment)
set_request_comp='s|requestComp="${words\[0\]} __complete ${args\[\*\]}"|requestComp="/snap/lxd/current/commands/lxc __complete ${args[*]}"|'
# Generate completions script
"${CRAFT_PART_INSTALL}/bin/lxc" completion bash | sed -e "${set_cmds}" -e "${set_cols}" -e "${set_compopt}" -e "${set_request_comp}" > "${CRAFT_PART_INSTALL}/lxc-completer.sh"
chmod +x "${CRAFT_PART_INSTALL}/lxc-completer.sh"
override-pull: |
craftctl default
set -ex
# Setup build environment
export GOTOOLCHAIN="local"
export GOPATH="$(realpath ./.go)"
# Setup the GOPATH
rm -Rf "${GOPATH}"
mkdir -p "${GOPATH}/src/github.com/canonical"
ln -s "$(pwd)" "${GOPATH}/src/github.com/canonical/lxd"
# Download the dependencies
go get -v ./...
plugin: nil
prime:
- bin/dnsmasq
- bin/getfattr
- bin/setfattr
- bin/iw
- bin/pigz
- bin/rsync
- bin/setfacl
- bin/sgdisk
- bin/xdelta3
- lib/*/libidn.so.*
- lxc-completer.sh
- share/lxd-documentation*
- share/misc/pci.ids
- share/misc/usb.ids
- bin/lxc
- bin/lxd-agent
- bin/lxd-user
- sbin/lxd
source: https://github.com/canonical/lxd
source-commit: 736f34afb267a68f1f324979848db20ae30fe9d1
source-depth: 0
source-type: git
stage-packages:
- acl=2.3.2-1build1.1
- attr=1:2.5.2-1build1.1
- dnsmasq-base=2.90-2ubuntu0.1
- gdisk=1.0.10-1build1
- iw=6.7-1build1
- libjansson4=2.14-2build2
- libnftables1=1.0.9-1build1
- lsb-base=11.6
- lshw=02.19.git.2021.06.19.996aaad9c7-2build3
- pci.ids=0.0~2024.03.31-1ubuntu0.1
- pigz=2.8-1
- rsync=3.2.7-1ubuntu1.2
- usb.ids=2024.03.18-1
- xdelta3=3.0.11-dfsg-1.2
stage: []
lxd-ui:
override-build: |
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
npm install yarn --global
yarn install
yarn build
mkdir -p "${CRAFT_PART_INSTALL}/share"
cp -R build/ui "${CRAFT_PART_INSTALL}/share/lxd-ui/"
override-prime: |-
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" = "riscv64" ] && exit 0
snap install node --channel=22/stable --classic
craftctl default
plugin: nil
prime:
- share/lxd-ui*
source: https://github.com/canonical/lxd-ui
source-commit: 193b34553161ad3fde4e1e3c86d062cee6bf73fd
source-depth: 1
source-type: git
stage-packages: []
stage: []
build-packages: []
nftables:
organize:
usr/lib/: lib/
usr/sbin/: bin/
plugin: nil
prime:
- bin/nft
- lib/*/libjansson*so*
- lib/*/libnftables*so*
stage-packages:
- libjansson4=2.14-2build2
- libnftables1=1.0.9-1build1
- nftables=1.0.9-1build1
stage: []
build-packages: []
nvidia-container:
build-environment:
- GIT_TAG: 1.18.2
build-packages:
- bmake
- curl
- libelf-dev
- libseccomp-dev
- lsb-release
- libtirpc-dev
build-snaps:
- go/1.25/stable
organize:
usr/local/bin/nvidia-container-cli: bin/nvidia-container-cli.real
usr/local/lib: lib/
override-build: |-
[ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
set -ex
# Setup build environment
export GOTOOLCHAIN="local"
# Git cherry-picks
git config user.email "noreply@lists.canonical.com"
git config user.name "LXD snap builder"
patch -p1 < "/build/lxd/patches/nvidia-0001-Fix-for-22.04-build.patch"
patch -p1 < "/build/lxd/patches/nvidia-0002-pre-load-libdl.patch"
mkdir -p "${CRAFT_PART_INSTALL}/bin/"
cp "/build/lxd/snapcraft/wrappers/nvidia-container-cli" "${CRAFT_PART_INSTALL}/bin/"
set +ex
craftctl default
override-prime: |-
[ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
craftctl default
plugin: make
prime:
- bin/nvidia-container-cli*
- lib/libnvidia-container.so*
- lib/libnvidia-container-go.so*
source: https://github.com/NVIDIA/libnvidia-container
source-commit: 584976abaef996d9466232a9bc7426fcdb0ed1e0
source-depth: 1
source-type: git
stage-packages: []
stage: []
nvidia-container-toolkit:
build-snaps:
- go/1.25/stable
organize:
usr/bin/: bin/
override-build: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
set -ex
# Setup build environment
export GOTOOLCHAIN="local"
make binaries
mkdir -p "${CRAFT_PART_INSTALL}/bin/"
cp nvidia-ctk "${CRAFT_PART_INSTALL}/bin/"
override-prime: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
plugin: make
prime:
- bin/nvidia-ctk
source: https://github.com/NVIDIA/nvidia-container-toolkit
source-commit: 9e88ed39710fd94c7e49fbb26d96492c45e574fb
source-depth: 1
source-type: git
stage-packages: []
stage: []
build-packages: []
nvme:
organize:
usr/lib/: lib/
usr/sbin/: bin/
plugin: nil
prime:
- bin/nvme
- lib/*/libnvme*
stage-packages:
- adduser=3.137ubuntu1
- libnvme1t64=1.8-3ubuntu1
- nvme-cli=2.8-1ubuntu0.1
- uuid-runtime=2.39.3-9ubuntu6.4
stage: []
build-packages: []
openvswitch:
organize:
sbin/: bin/
usr/bin/: bin/
usr/lib/: lib/
usr/share/: share/
override-build: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-prime: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
plugin: nil
prime:
- bin/ovs-vsctl
- lib/*/libunbound*so*
- share/openvswitch/*.ovsschema
stage-packages:
- adduser=3.137ubuntu1
- libnuma1=2.0.18-1ubuntu0.24.04.1
- libunbound8=1.19.2-1ubuntu3.7
- libxdp1=1.4.2-1ubuntu4
- openvswitch-common=3.3.4-0ubuntu0.24.04.1
- openvswitch-switch=3.3.4-0ubuntu0.24.04.1
- python3-netifaces=0.11.0-2build3
- python3-openvswitch=3.3.4-0ubuntu0.24.04.1
- python3-sortedcontainers=2.4.0-2
- uuid-runtime=2.39.3-9ubuntu6.4
stage: []
build-packages: []
ovn:
after:
- openvswitch
organize:
usr/bin/: bin/
usr/lib/: lib/
override-build: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-prime: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
plugin: nil
prime:
- bin/ovn-nbctl
- bin/ovn-sbctl
- lib/*/libunbound*so*
stage-packages:
- libunbound8=1.19.2-1ubuntu3.7
- ovn-common=24.03.6-0ubuntu0.24.04.1
stage: []
build-packages: []
qemu:
after:
- libatomic
- spice-server
autotools-configure-parameters:
- --disable-auth-pam
- --disable-bochs
- --disable-brlapi
- --disable-cloop
- --disable-curl
- --disable-dmg
- --disable-docs
- --disable-fuse
- --disable-glusterfs
- --disable-gnutls
- --disable-gtk
- --disable-guest-agent
- --disable-libiscsi
- --disable-libnfs
- --disable-libpmem
- --disable-libssh
- --disable-nettle
- --disable-oss
- --disable-parallels
- --disable-qed
- --disable-sdl
- --disable-slirp
- --disable-tcg
- --disable-user
- --disable-vde
- --disable-vdi
- --disable-vmnet
- --disable-vnc
- --disable-vvfat
- --disable-xen
- --disable-xkbcommon
- --enable-attr
- --enable-cap-ng
- --enable-kvm
- --enable-libusb
- --enable-usb-redir
- --enable-linux-aio
- --enable-linux-io-uring
- --enable-numa
- --enable-pie
- --enable-rbd
- --enable-seccomp
- --enable-spice
- --enable-system
- --enable-tools
- --enable-vhost-crypto
- --enable-vhost-kernel
- --enable-vhost-net
- --enable-vhost-user
- --firmwarepath=/snap/lxd/current/share/qemu/
- --localstatedir=/var/
- --disable-install-blobs
build-packages:
- bison
- bzip2
- flex
- pkg-config
- libaio-dev
- libcap-ng-dev
- libfdt-dev
- libglib2.0-dev
- libnuma-dev
- libpixman-1-dev
- libseccomp-dev
- liburing-dev
- libusb-1.0-0-dev
- libusbredirparser-dev
- python3-pip
- quilt
- librbd-dev
organize:
usr/bin/: bin/
usr/lib/: lib/
usr/local/bin/: bin/
usr/local/lib/: lib/
usr/local/libexec/: bin/
usr/local/share/: share/
usr/share/qemu/kvmvapic.bin: share/qemu/
usr/share/qemu/s390-ccw.img: share/qemu/
usr/share/qemu/slof.bin: share/qemu/
usr/share/seabios/bios-256k.bin: share/qemu/
usr/share/seabios/vgabios-*: share/qemu/
override-build: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
set -ex
# Mangle the configure a bit
QEMUARCH="$(uname -m)"
[ "${QEMUARCH}" = "ppc64le" ] && QEMUARCH="ppc64"
# Apply patches from Ubuntu sources.
QUILT_PATCHES=debian/patches quilt push -a
sed -i "s/^unset target_list$/target_list=\"${QEMUARCH}-softmmu\"/" configure
sed -i 's#libseccomp_minver=".*#libseccomp_minver="0.0"#g' configure
# TCG is not used (nor supported) at runtime however it may be needed at
# build time by the `edk2` part if KVM acceleration is not available.
# `edk2` is only built for `amd64` and `arm64` and Launchpad `amd64`
# builders support KVM acceleration so TCG is only needed on `arm64`.
if [ "${QEMUARCH}" = "aarch64" ]; then
# `set -- "$@"`: preserve arguments passed to `configure` and append
# `--enable-tcg` at the end to override the previous `--disable-tcg`.
sed -i '1 a set -- "$@" --enable-tcg' configure
fi
# Extract efi-virtio.rom from ipxe-qemu.
# This doesn't work in the organize section below.
mkdir -p "${CRAFT_PART_INSTALL}"/share/qemu
mv "${CRAFT_PART_INSTALL}"/usr/lib/ipxe/qemu/efi-virtio.rom "${CRAFT_PART_INSTALL}"/share/qemu/
set +ex
craftctl default
override-prime: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
set -eux
# Download meson and pycotap Python wheels (normally shipped in upstream tarballs)
pip download --dest python/wheels meson==1.9.0 pycotap==1.3.1
# Ensure the wheels were downloaded
[ "$(sha256sum python/wheels/meson-1.9.0-py3-none-any.whl | awk '{print $1}')" = "45e51ddc41e37d961582d06e78c48e0f9039011587f3495c4d6b0781dad92357" ] || { echo "Invalid sha256sum for meson"; exit 1; }
[ "$(sha256sum python/wheels/pycotap-1.3.1-py3-none-any.whl | awk '{print $1}')" = "1c3a25b3ff89e48f4e00f1f71dbbc1642b4f65c65d416524d07e73492fff25ea" ] || { echo "Invalid sha256sum for pycotap"; exit 1; }
override-stage: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
plugin: autotools
prime:
- bin/genisoimage*
- bin/mkisofs*
- bin/qemu-system-*
- bin/qemu-img*
- lib/*/libatomic.so*
- lib/*/libmagic*so*
- lib/*/libnuma*so*
- lib/*/libpixman*so*
- lib/*/liburing.so*
- lib/*/libusbredir*so*
- lib/*/libusb*so*
- lib/*/libfdt*.so*
- share/qemu/keymaps/*
- share/qemu/bios-256k.bin
- share/qemu/efi-virtio.rom
- share/qemu/kvmvapic.bin
- share/qemu/s390-ccw.img
- share/qemu/slof.bin
- share/qemu/vgabios-bochs-display.bin
- share/qemu/vgabios-qxl.bin
- share/qemu/vgabios-ramfb.bin
- share/qemu/vgabios-stdvga.bin
- share/qemu/vgabios-virtio.bin
source: https://git.launchpad.net/ubuntu/+source/qemu
source-commit: 1a2f0d6c8d575fb42da22be7ce0a73a5b8d41b82
source-depth: 1
source-type: git
stage-packages:
- genisoimage=9:1.1.11-3.5
- ipxe-qemu=1.21.1+git-20220113.fbbdc3926-0ubuntu2
- libfdt1=1.7.0-2build1
- libmagic-mgc=1:5.45-3build1
- libmagic1t64=1:5.45-3build1
- libnuma1=2.0.18-1ubuntu0.24.04.1
- libpixman-1-0=0.42.2-1build1
- liburing2=2.5-1build1
- libusb-1.0-0=2:1.0.27-1
- libusbredirparser1t64=0.13.0-2.1build1
- qemu-system-data=1:8.2.2+ds-0ubuntu1.12
- seabios=1.16.3-2
stage: []
shmounts:
plugin: make
prime:
- bin/setup-shmounts
source: shmounts/
stage-packages: []
stage: []
build-packages: []
spice-server:
build-packages:
- libspice-protocol-dev
- libjpeg-turbo8-dev
- python3-pyparsing
- python3-six
- meson
- ninja-build
meson-parameters:
- --prefix=/
- -Dgstreamer=no
- -Dmanual=false
- -Dlz4=false
- -Dsasl=false
- -Dopus=disabled
- -Dsmartcard=disabled
- -Dtests=false
organize:
sbin/: bin/
usr/lib: lib/
usr/local/lib/: lib/
override-build: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
# Apply patches from Ubuntu sources.
cd ../src
QUILT_PATCHES=debian/patches quilt push -a
cd ../build
craftctl default
override-prime: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
plugin: meson
prime:
- lib/*/libjpeg*so*
- lib/*/libspice-server*so*
- lib/*/libpixman*so*
source: https://git.launchpad.net/ubuntu/+source/spice
source-commit: 085ca6b2bf58014ad8be571f3b601465c85ae931
source-depth: 1
source-type: git
stage-packages:
- libjpeg-turbo8=2.1.5-2ubuntu2
- libpixman-1-0=0.42.2-1build1
stage: []
squashfs-tools-ng:
organize:
usr/bin/: bin/
usr/lib/: lib/
plugin: nil
prime:
- bin/sqfs2tar
- bin/tar2sqfs
- lib/*/libsquashfs.so*
stage-packages:
- libsquashfs1=1.2.0-1
- squashfs-tools-ng=1.2.0-1
stage: []
build-packages: []
strip:
after:
- amd-ctk
- btrfs
- ceph
- dqlite
- logrotate
- lvm
- nvidia-container
- openvswitch
- ovn
- spice-server
- squashfs-tools-ng
- swtpm
- virtiofsd
- xfs
- xz
- wrappers
- xtables
- zfs-2-2
- zfs-2-3
- zfs-2-4
- zstd
- lxc
- lxcfs
- lxd
- shmounts
- nvidia-container-toolkit
override-prime: |
set -x
# XXX: remove unneeded files/directories
rm -rf "/build/lxd/prime/lib/systemd/"
rm -rf "/build/lxd/prime/lib/udev/"
rm -rf "/build/lxd/prime/usr/local/"
rm -rf "/build/lxd/prime/usr/share/"
# Strip binaries (excluding shell scripts and LXCFS)
# The "/build/lxd/prime/bin/lxd" file is ignored as that is the lxd-stophook wrapper script.
find "/build/lxd/prime"/bin -type f \
-not -path "/build/lxd/prime/bin/ceph" \
-not -path "/build/lxd/prime/bin/editor" \
-not -path "/build/lxd/prime/bin/lxc-checkconfig" \
-not -path "/build/lxd/prime/bin/lxd" \
-not -path "/build/lxd/prime/bin/nvidia-container-cli" \
-not -path "/build/lxd/prime/bin/remote-viewer" \
-not -path "/build/lxd/prime/bin/snap-query" \
-not -path "/build/lxd/prime/bin/sshfs" \
-not -path "/build/lxd/prime/bin/virt-v2v-in-place" \
-not -path "/build/lxd/prime/bin/xfs_admin" \
-not -path "/build/lxd/prime/bin/uefivars.py" \
-not -path "/build/lxd/prime/bin/lxcfs" \
-not -path "/build/lxd/prime/bin/gpu-2404-custom-wrapper" \
-exec strip --strip-all {} +
# This is the actual LXD binary.
strip --strip-all "/build/lxd/prime/sbin/lxd"
# Strip binaries not under bin/ due to being dynamically
# Strip all versions of zfs utils
for v in "/build/lxd/prime"/zfs-*; do
[ -d "${v}" ] || continue
find "${v}/" -type f -exec strip -s {} +
done
# Strip libraries (excluding python3 scripts and liblxcfs)
find "/build/lxd/prime"/lib -type f \
-not -path "/build/lxd/prime/lib/python3/*" \
-not -path "/build/lxd/prime/lib/liblxcfs.so" \
-exec strip -s {} +
# Delete empty directories
find "/build/lxd/prime/" -type d -empty -print -delete
# XXX: look for broken symlinks indicating missing/invalid prime
broken_symlinks="$(find "/build/lxd/prime/" -xtype l \
-not -path "/build/lxd/prime/lxc/config/common.conf.d/*")"
if [ -n "${broken_symlinks}" ]; then
echo "Found broken symlinks:"
echo "${broken_symlinks}"
exit 1
fi
# Fixup logrotate.conf permissions to not be group writable
chmod g-w "/build/lxd/prime/etc/logrotate.conf"
# XXX: do not keep the duplicated and often outdated CA certificates
# store from Python `certifi`. This file is not even used as the
# `python3-certifi` package providing it is patched to always use:
# `/etc/ssl/certs/ca-certificates.crt`
truncate --no-create --size=0 "/build/lxd/prime/lib/python3/dist-packages/certifi/cacert.pem"
exit 0
plugin: nil
stage-packages: []
stage: []
prime: []
build-packages: []
swtpm:
organize:
usr/bin/: bin/
usr/lib/: lib/
plugin: nil
prime:
- bin/swtpm
- lib/*/swtpm/libswtpm*so*
- lib/*/libtpms*so*
stage-packages:
- libtpms0=0.9.3-0ubuntu4.24.04.1
- swtpm=0.7.3-0ubuntu5.24.04.1
stage: []
build-packages: []
uefivars:
after:
- spice-server
- edk2
- nftables
organize:
bin/uefivars: bin/uefivars.py
lib/python3.12/site-packages/: lib/python3/dist-packages/
override-build: |-
[ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
# Apply patches
# XXX: taken from: https://git.launchpad.net/ubuntu/+source/python-uefivars/plain/debian/patches/Revert-Use-google-crc32c-instead-of-crc32c.patch?h=ubuntu/plucky
patch -p1 < "/build/lxd/patches/uefivars-Revert-Use-google-crc32c-instead-of-crc32c.patch"
craftctl default
override-prime: |-
[ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
craftctl default
plugin: python
prime:
- bin/uefivars.py
- lib/python3/dist-packages/crc32c*
- lib/python3/dist-packages/pyuefivars*
source: https://github.com/awslabs/python-uefivars
source-commit: ec1eab1717c65ea36ca7160c96fe0e10e071fb66
source-depth: 1
source-type: git
stage-packages:
- python3-crc32c=2.3-1.1build3
stage: []
build-packages: []
virtiofsd:
organize:
usr/libexec/: bin/
override-build: |-
[ "$(uname -m)" != "x86_64" ] && exit 0
craftctl default
override-prime: |-
[ "$(uname -m)" != "x86_64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" != "x86_64" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" != "x86_64" ] && exit 0
craftctl default
plugin: nil
prime:
- bin/virtiofsd*
stage-packages:
- virtiofsd=1.10.0-1
stage: []
build-packages: []
wrappers:
organize:
commands/snap-query: bin/
hooks/: snap/hooks/
wrappers/editor: bin/
wrappers/gpu-2404-custom-wrapper: bin/
wrappers/lxd-stophook: bin/lxd
wrappers/remote-viewer: bin/
wrappers/sshfs: bin/
wrappers/virt-v2v-in-place: bin/
plugin: dump
source: snapcraft/
stage-packages: []
stage: []
prime: []
build-packages: []
xfs:
organize:
sbin/: bin/
usr/lib/: lib/
usr/sbin/: bin/
plugin: nil
prime:
- bin/xfs_admin
- bin/xfs_db
- bin/xfs_growfs
- bin/xfs_repair
- bin/mkfs.xfs
- lib/*/libinih.so*
- lib/*/liburcu.so*
stage-packages:
- libicu74=74.2-1ubuntu3.1
- libinih1=55-1ubuntu2
- liburcu8t64=0.14.0-3.1build1
- xfsprogs=6.6.0-1ubuntu2.1
stage: []
build-packages: []
xtables:
organize:
usr/lib/ebtables/: lib/
usr/sbin/: bin/
plugin: nil
prime:
- bin/arptables-legacy
- bin/ebtables-legacy
- lib/libebtc.so.*
stage-packages:
- arptables=0.0.5-3.1
- ebtables=2.0.11-6build1
- libgdbm-compat4t64=1.23-5.1build1
- libgdbm6t64=1.23-5.1build1
- libperl5.38t64=5.38.2-3.2ubuntu0.2
- netbase=6.4
- perl-base=5.38.2-3.2ubuntu0.2
- perl-modules-5.38=5.38.2-3.2ubuntu0.2
- perl=5.38.2-3.2ubuntu0.2
stage: []
build-packages: []
xz:
organize:
usr/bin/: bin/
usr/lib/: lib/
usr/sbin/: bin/
override-build: |
craftctl default
# Include the lzma symlink
ln -s xz "${CRAFT_PART_INSTALL}/usr/bin/lzma"
plugin: nil
prime:
- bin/lzma
- bin/xz
- lib/*/liblzma*so*
stage-packages:
- xz-utils=5.6.1+really5.4.5-1ubuntu0.2
stage: []
build-packages: []
zfs-2-2:
autotools-configure-parameters:
- --prefix=/
- --with-config=user
build-packages:
- libblkid-dev
- libssl-dev
- uuid-dev
- zlib1g-dev
- libtirpc-dev
override-build: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
set -ex
ZFS_VER="2.2"
mv "${CRAFT_PART_INSTALL}" "${CRAFT_PART_INSTALL}.tmp"
mkdir -p "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin" "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib"
mv "${CRAFT_PART_INSTALL}.tmp/sbin/zfs" "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin/"
mv "${CRAFT_PART_INSTALL}.tmp/sbin/zpool" "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin/"
mv "${CRAFT_PART_INSTALL}.tmp/lib/udev/zvol_id" "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin/"
mv "${CRAFT_PART_INSTALL}.tmp/lib/"*so* "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib/"
rm -Rf "${CRAFT_PART_INSTALL}.tmp"
# unused .so
rm "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib/libzfsbootenv.so"*
rm "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib/libzpool.so"*
override-prime: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
plugin: autotools
source: https://github.com/openzfs/zfs
source-commit: 079ba86d71571bf997ff688da061d8c4aa2fd052
source-depth: 1
source-type: git
stage-packages: []
stage: []
prime: []
zfs-2-3:
autotools-configure-parameters:
- --prefix=/
- --with-config=user
build-packages:
- libblkid-dev
- libssl-dev
- uuid-dev
- zlib1g-dev
- libtirpc-dev
override-build: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
set -ex
ZFS_VER="2.3"
mv "${CRAFT_PART_INSTALL}" "${CRAFT_PART_INSTALL}.tmp"
mkdir -p "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin" "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib"
mv "${CRAFT_PART_INSTALL}.tmp/sbin/zfs" "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin/"
mv "${CRAFT_PART_INSTALL}.tmp/sbin/zpool" "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin/"
mv "${CRAFT_PART_INSTALL}.tmp/lib/udev/zvol_id" "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin/"
mv "${CRAFT_PART_INSTALL}.tmp/lib/"*so* "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib/"
rm -Rf "${CRAFT_PART_INSTALL}.tmp"
# unused .so
rm "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib/libzfsbootenv.so"*
rm "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib/libzpool.so"*
override-prime: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
plugin: autotools
source: https://github.com/openzfs/zfs
source-commit: c840612ee1af993b835d3b3e59baee631970a781
source-depth: 1
source-type: git
stage-packages: []
stage: []
prime: []
zfs-2-4:
autotools-configure-parameters:
- --prefix=/
- --with-config=user
build-packages:
- libblkid-dev
- libssl-dev
- uuid-dev
- zlib1g-dev
- libtirpc-dev
override-build: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
set -ex
ZFS_VER="2.4"
mv "${CRAFT_PART_INSTALL}" "${CRAFT_PART_INSTALL}.tmp"
mkdir -p "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin" "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib"
mv "${CRAFT_PART_INSTALL}.tmp/sbin/zfs" "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin/"
mv "${CRAFT_PART_INSTALL}.tmp/sbin/zpool" "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin/"
mv "${CRAFT_PART_INSTALL}.tmp/lib/udev/zvol_id" "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin/"
mv "${CRAFT_PART_INSTALL}.tmp/lib/"*so* "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib/"
rm -Rf "${CRAFT_PART_INSTALL}.tmp"
# unused .so
rm "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib/libzfsbootenv.so"*
rm "${CRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib/libzpool.so"*
override-prime: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-pull: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
override-stage: |-
[ "$(uname -m)" = "armv7l" ] && exit 0
[ "$(uname -m)" = "riscv64" ] && exit 0
craftctl default
plugin: autotools
source: https://github.com/openzfs/zfs
source-commit: 1c702dda346a59e05cfd3029569bbb1d5d91c54b
source-depth: 1
source-type: git
stage-packages: []
stage: []
prime: []
zstd:
organize:
usr/bin/: bin/
plugin: nil
prime:
- bin/pzstd
- bin/zstd
stage-packages:
- zstd=1.5.5+dfsg2-2build1.1
stage: []
build-packages: []
architectures:
- amd64
image-info:
build-request-id: lp-107522536
build-request-timestamp: '2026-02-27T10:15:12Z'
build_url: https://launchpad.net/~lxd-snap/lxd/+snap/lxd-latest-candidate/+build/3070728
build-packages: []
build-snaps: []
primed-stage-packages:
- acl=2.3.2-1build1.1
- apparmor=4.0.1really4.0.1-0ubuntu0.24.04.5
- arptables=0.0.5-3.1
- attr=1:2.5.2-1build1.1
- btrfs-progs=6.6.3-1.1build2
- dmeventd=2:1.02.185-3ubuntu3.2
- dnsmasq-base=2.90-2ubuntu0.1
- ebtables=2.0.11-6build1
- fuse3=3.14.0-5build1
- gdisk=1.0.10-1build1
- glibc-tools=0.0~git3.23fd2b9-0ubuntu1
- iw=6.7-1build1
- libaio1t64=0.3.113-6build1.1
- libdevmapper-event1.02.1=2:1.02.185-3ubuntu3.2
- libfuse3-3=3.14.0-5build1
- libinih1=55-1ubuntu2
- libjansson4=2.14-2build2
- liblvm2cmd2.03=2.03.16-3ubuntu3.2
- libnftables1=1.0.9-1build1
- libnvme1t64=1.8-3ubuntu1
- libsquashfs1=1.2.0-1
- libtpms0=0.9.3-0ubuntu4.24.04.1
- liburcu8t64=0.14.0-3.1build1
- libuv1t64=1.48.0-1.1build1
- logrotate=3.21.0-2build1
- lvm2=2.03.16-3ubuntu3.2
- nftables=1.0.9-1build1
- nvme-cli=2.8-1ubuntu0.1
- pci.ids=0.0~2024.03.31-1ubuntu0.1
- pigz=2.8-1
- rsync=3.2.7-1ubuntu1.2
- sqlite3=3.45.1-1ubuntu2.5
- squashfs-tools-ng=1.2.0-1
- swtpm=0.7.3-0ubuntu5.24.04.1
- thin-provisioning-tools=0.9.0-2ubuntu5.1
- usb.ids=2024.03.18-1
- xdelta3=3.0.11-dfsg-1.2
- xfsprogs=6.6.0-1ubuntu2.1
- xz-utils=5.6.1+really5.4.5-1ubuntu0.2
- zstd=1.5.5+dfsg2-2build1.1