403Webshell
Server IP : 103.88.176.108  /  Your IP : 216.73.216.211
Web Server : Apache/2.4.41 (Ubuntu)
System : Linux webserver 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64
User : www-data ( 33)
PHP Version : 7.4.3-4ubuntu2.18
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 : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /snap/lxd/37006/snap/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /snap/lxd/37006/snap/manifest.yaml
snapcraft-version: 8.13.1
snapcraft-started-at: '2025-12-04T16:36:43.563952Z'
snapcraft-os-release-id: ubuntu
snapcraft-os-release-version-id: '24.04'
name: lxd
version: 6.6-a89d075
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]
    - ui.enable: Enable the web interface [default=true]
    - 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:
  apparmor:
    organize:
      sbin/: bin/
    plugin: nil
    prime:
    - bin/apparmor_parser
    stage-packages:
    - apparmor=4.0.1really4.0.1-0ubuntu0.24.04.4
    - 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.1-0ubuntu0.24.04.2
    - libaio1t64=0.3.113-6build1.1
    - libbabeltrace1=1.5.11-3build3
    - libboost-context1.83.0=1.83.0-2.1ubuntu3.1
    - libboost-filesystem1.83.0=1.83.0-2.1ubuntu3.1
    - libboost-iostreams1.83.0=1.83.0-2.1ubuntu3.1
    - libboost-program-options1.83.0=1.83.0-2.1ubuntu3.1
    - libboost-thread1.83.0=1.83.0-2.1ubuntu3.1
    - libboost-url1.83.0=1.83.0-2.1ubuntu3.1
    - libcephfs2=19.2.1-0ubuntu0.24.04.2
    - libcurl3t64-gnutls=8.5.0-2ubuntu10.6
    - 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.7+dfsg-1~exp1ubuntu8.2
    - 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.1-0ubuntu0.24.04.2
    - libradosstriper1=19.2.1-0ubuntu0.24.04.2
    - librbd1=19.2.1-0ubuntu0.24.04.2
    - 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.2
    - libtcmalloc-minimal4t64=2.15-3build1
    - libunwind8=1.6.2-3build1.1
    - python3-ceph-argparse=19.2.1-0ubuntu0.24.04.2
    - python3-ceph-common=19.2.1-0ubuntu0.24.04.2
    - python3-cephfs=19.2.1-0ubuntu0.24.04.2
    - 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.1-0ubuntu0.24.04.2
    - python3-rbd=19.2.1-0ubuntu0.24.04.2
    - python3-requests=2.31.0+dfsg-1ubuntu1.1
    - python3-urllib3=2.0.7-1ubuntu0.2
    - 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: 9a3a9a53110ef3d8357ecfedc4baecfb5fb878c8
    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:
    build-packages:
    - g++
    - acpica-tools
    - nasm
    - uuid-dev
    override-build: |-
      [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
      set -ex

      # 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"
      patch -p1 < "/build/lxd/patches/edk2-0004-gcc-errors.patch"
      patch --binary -p1 < "/build/lxd/patches/edk2-0005-disable-dynamic-mmio-winsize.patch"
      patch --binary -p1 < "/build/lxd/patches/edk2-0006-disable-EFI-memory-attributes-protocol.patch"
      patch --binary -p1 < "/build/lxd/patches/edk2-0007-Disable-the-Shell-when-SecureBoot-is-enabled.patch"
      # revert "ArmVirtPkg: make EFI_LOADER_DATA non-executable" as it breaks almost everything
      patch --binary -p1 < "/build/lxd/patches/edk2-0008-Revert-ArmVirtPkg-make-EFI_LOADER_DATA-non-execurable.patch"

      # Arch-specific logic
      ARCH="X64"
      PKG="OvmfPkg/OvmfPkgX64.dsc"
      FV_CODE="OVMF_CODE"
      FV_VARS="OVMF_VARS"
      if [ "$(uname -m)" = "aarch64" ]; then
          ARCH="AARCH64"
          PKG="ArmVirtPkg/ArmVirtQemu.dsc"
          FV_CODE="QEMU_EFI"
          FV_VARS="QEMU_VARS"
      fi

      # Run in a bash sub-shell as edksetup.sh requires it
      build_edk2() {
          TARGET_CODE="$1"
          shift
          TARGET_VARS="$1"
          shift
          TARGET_BUILD_TYPE="$1"
          shift

          set -ex
          (
          cat << EOF
              . ./edksetup.sh
              make -C BaseTools ARCH="${ARCH}"
              build -a "${ARCH}" -t GCC5 -b "${TARGET_BUILD_TYPE}" -p "${PKG}" \
                -DSMM_REQUIRE=FALSE \
                -DSECURE_BOOT_ENABLE=TRUE \
                -DNETWORK_IP4_ENABLE=TRUE \
                -DNETWORK_IP6_ENABLE=TRUE \
                -DNETWORK_TLS_ENABLE=TRUE \
                -DNETWORK_HTTP_BOOT_ENABLE=TRUE \
                -DTPM2_ENABLE=TRUE \
                -DTPM2_CONFIG_ENABLE=TRUE \
                $@
      EOF
          ) | bash -e

          cp Build/*/${TARGET_BUILD_TYPE}*/FV/${FV_CODE}.fd "${TARGET_CODE}"
          cp Build/*/${TARGET_BUILD_TYPE}*/FV/${FV_VARS}.fd "${TARGET_VARS}"

          if [ "$(uname -m)" = "aarch64" ]; then
              truncate -s 64m "${TARGET_CODE}"
              truncate -s 64m "${TARGET_VARS}"
          fi
      }

      # Create the firmware path
      mkdir -p "${CRAFT_PART_INSTALL}/share/qemu/"

      # Primary firmware (4MB)
      build_edk2 \
        "${CRAFT_PART_INSTALL}/share/qemu/OVMF_CODE.4MB.fd" \
        "${CRAFT_PART_INSTALL}/share/qemu/OVMF_VARS.4MB.fd" \
        RELEASE \
        -DFD_SIZE_4MB

      # Debug firmware (4MB, debug mode)
      # Can be enabled with the LXD boot.debug_edk2 instance option
      # Set DEBUG_VERBOSE flag
      if [ "$(uname -m)" = "aarch64" ]; then
          sed -i "s#DEBUG_PRINT_ERROR_LEVEL = 0x8000004F#DEBUG_PRINT_ERROR_LEVEL = 0x8040004F#g" ArmVirtPkg/ArmVirt.dsc.inc
      fi
      if [ "$(uname -m)" = "x86_64" ]; then
          sed -i "s#PcdDebugPrintErrorLevel|0x8000004F#PcdDebugPrintErrorLevel|0x8040004F#g" "${PKG}"
      fi
      build_edk2 \
        "${CRAFT_PART_INSTALL}/share/qemu/OVMF_CODE.4MB.debug.fd" \
        "${CRAFT_PART_INSTALL}/share/qemu/OVMF_VARS.4MB.debug.fd" \
        DEBUG \
        -DFD_SIZE_4MB
      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

      set -ex

      # Fix submodule sources
      # see https://github.com/tianocore/edk2/commit/95d8a1c255cfb8e063d679930d08ca6426eb5701
      sed -i "s#https://github.com/Zeex/subhook.git#https://github.com/tianocore/edk2-subhook.git#g" .gitmodules

      # Pull submodules after switching to source-commit
      git submodule update --init --recursive
    override-stage: |-
      [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
      craftctl default
    plugin: nil
    prime:
    - share/qemu/*
    source: https://github.com/tianocore/edk2
    source-commit: 8736b8fdca85e02933cdb0a13309de14c9799ece
    source-depth: 1
    source-submodules: []
    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: 9e4e69ed1cb93159b0da99dad8d320b795887d07
    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: 16503df8e814d29b348e61abebc4f89b2e20f440
    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: 49569b65625b9c53dc5dce885ca2cb1390fd6481
    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: 69fa2699fe6a91754cc825bdca27d64bc6e39b2e
    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.0
    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: 889a3bb5408c195ed7897ba2cb8341c7d249672f
    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: f8daa5e26de9fd7eb79259040b6dd5a52060048c
    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.3
    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-1build1
    - 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.3
    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-pvrdma
    - --disable-qed
    - --disable-sdl
    - --disable-slirp
    - --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-tcg
    - --enable-tools
    - --enable-vhost-crypto
    - --enable-vhost-kernel
    - --enable-vhost-net
    - --enable-vhost-user
    - --enable-virtfs
    - --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
    - 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/s390-netboot.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

      # Apply custom patches
      # These patches enable more accurate error message returned in case of CPU registers mismatches.
      # This is backported from QEMU v9.2.2.
      patch -p1 < "/build/lxd/patches/qemu-0001-kvm-Allow-kvm_arch_get-put_registers-to-accept-Error.patch"
      patch -p1 < "/build/lxd/patches/qemu-0002-target-i386-kvm-Report-which-action-failed-in-kvm_ar.patch"

      sed -i "s/^unset target_list$/target_list=\"${QEMUARCH}-softmmu\"/" configure
      sed -i 's#libseccomp_minver=".*#libseccomp_minver="0.0"#g' configure

      # 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
    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*
    - bin/virtfs-proxy-helper*
    - 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/s390-netboot.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: bc0011afab01de8c41ec80fc8c24dd33fb30cd90
    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-1build1
    - 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.10
    - seabios=1.16.3-2
    stage: []
  qemu-ovmf-secureboot:
    after:
    - edk2
    - qemu
    build-packages:
    - dosfstools
    - mtools
    - python3-pexpect
    - xorriso
    override-build: |-
      [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0

      export ARCH="$(basename "$(readlink -f "/build/lxd/stage"/lib/*-linux-gnu*/)")"
      export LD_LIBRARY_PATH="/build/lxd/stage/lib:/build/lxd/stage/lib/${ARCH}"

      set -ex

      FIRMWARE="OVMF"
      if [ "$(uname -m)" = "aarch64" ]; then
        FIRMWARE="AAVMF"
      fi

      mkdir -p "${CRAFT_PART_INSTALL}/share/qemu/"

      # 4MB variant
      ./edk2-vars-generator -f "${FIRMWARE}" \
        -e ../../edk2/build/Build/*/RELEASE*/*/EnrollDefaultKeys.efi \
        -s ../../edk2/build/Build/*/RELEASE*/*/Shell.efi \
        -c "/build/lxd/stage/share/qemu/OVMF_CODE.4MB.fd" \
        -V "/build/lxd/stage/share/qemu/OVMF_VARS.4MB.fd" \
        -C "$(cat ubuntu-sb.crt)" \
        -o "${CRAFT_PART_INSTALL}/share/qemu/OVMF_VARS.4MB.ms.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: edk2-vars-generator
    stage-packages: []
    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:
    - btrfs
    - ceph
    - dqlite
    - logrotate
    - lvm
    - nvidia-container
    - openvswitch
    - ovn
    - qemu-ovmf-secureboot
    - spice-server
    - squashfs-tools-ng
    - swtpm
    - virtiofsd
    - xfs
    - xz
    - wrappers
    - xtables
    - zfs-2-1
    - zfs-2-2
    - zfs-2-3
    - 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
    - qemu-ovmf-secureboot
    - 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-1:
    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.1"

      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: a7186651d3306debca6b4f72797239eea61db36c
    source-depth: 1
    source-type: git
    stage-packages: []
    stage: []
    prime: []
  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: 3e4a3e161c00273303cd9fa9e0dc09ead3499a8a
    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: 34f96a15c73eab27dd6ad17bb5f1263bf26e37d7
    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-103906328
  build-request-timestamp: '2025-12-04T16:15:13Z'
  build_url: https://launchpad.net/~lxd-snap/lxd/+snap/lxd-latest-candidate/+build/2980613
build-packages: []
build-snaps: []
primed-stage-packages:
- acl=2.3.2-1build1.1
- apparmor=4.0.1really4.0.1-0ubuntu0.24.04.4
- 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

Youez - 2016 - github.com/yon3zu
LinuXploit