AlaK4X
Linux lhjmq-records 5.15.0-118-generic #128-Ubuntu SMP Fri Jul 5 09:28:59 UTC 2024 x86_64



Your IP : 18.226.186.109


Current Path : /snap/lxd/29351/snap/
Upload File :
Current File : //snap/lxd/29351/snap/snapcraft.yaml

apps:
  activate:
    command: commands/daemon.activate
    daemon: oneshot
    plugs:
    - lxd-support
    - system-observe
  benchmark:
    command: commands/lxd-benchmark
    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
    daemon: simple
    plugs:
    - lxd-support
    - network-bind
    - system-observe
    reload-command: commands/daemon.reload
    restart-condition: on-failure
    slots:
    - lxd
    sockets:
      unix:
        listen-stream: $SNAP_COMMON/lxd/unix.socket
        socket-mode: 432
    stop-command: commands/daemon.stop
    stop-timeout: 600s
  lxc:
    command: commands/lxc
    completer: etc/bash_completion.d/snap.lxd.lxc
    plugs:
    - lxd-support
    - system-observe
  lxc-to-lxd:
    command: commands/lxc-to-lxd
    plugs:
    - lxd-support
    - system-observe
  lxd:
    command: commands/lxd
    plugs:
    - lxd-support
    - system-observe
  migrate:
    command: commands/lxd-migrate
    plugs:
    - lxd-support
    - system-observe
  user-daemon:
    command: commands/lxd-user
    daemon: simple
    plugs:
    - lxd-support
    - network-bind
    - system-observe
    restart-condition: on-failure
    sockets:
      unix:
        listen-stream: $SNAP_COMMON/lxd-user/unix.socket
        socket-mode: 432
    stop-timeout: 600s
assumes:
- snapd2.39
base: core20
confinement: strict
contact: lxd@lists.canonical.com
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>...]):

    - ceph.builtin: Use snap-specific Ceph configuration [default=false]
    - ceph.external: Use the system's ceph tools (ignores ceph.builtin) [default=false]
    - criu.enable: Enable experimental live-migration support [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]
    - lvm.external: Use the system's LVM tools [default=false]
    - lxcfs.pidfd: Start per-container process tracking [default=false]
    - 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]
    - 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]
    - shiftfs.enable: Enable shiftfs support [default=auto]
    - ui.enable: Enable the web interface [default=false]

  For system-wide configuration of the CLI, place your configuration in
  /var/snap/lxd/common/global-conf/ (config.yml and servercerts)
grade: stable
hooks:
  configure:
    plugs:
    - lxd-support
    - network
    - system-observe
  remove:
    plugs:
    - lxd-support
    - system-observe
issues: https://github.com/canonical/lxd/issues
name: lxd
parts:
  btrfs:
    build-attributes:
    - core22-step-dependencies
    organize:
      sbin/: bin/
    plugin: nil
    prime:
    - bin/btrfs
    - bin/btrfstune
    - bin/mkfs.btrfs
    source: snapcraft/empty
    stage-packages:
    - btrfs-progs
  ceph:
    build-attributes:
    - core22-step-dependencies
    organize:
      usr/bin/: bin/
      usr/lib/: lib/
    plugin: nil
    prime:
    - bin/ceph
    - bin/radosgw-admin
    - bin/rbd
    - lib/*/ceph
    - lib/*/libasn1.so*
    - lib/*/libatomic.so*
    - lib/*/libboost_context.so*
    - lib/*/libboost_iostreams.so*
    - lib/*/libboost_program_options.so*
    - lib/*/libboost_thread.so*
    - lib/*/libbrotlicommon.so*
    - lib/*/libbrotlidec.so*
    - lib/*/libcephfs*
    - lib/*/libcurl-gnutls*
    - lib/*/libgssapi.so*
    - lib/*/libhcrypto.so*
    - lib/*/libheimbase.so*
    - lib/*/libheimntlm.so*
    - lib/*/libhx509.so*
    - lib/*/libibverbs.so*
    - lib/*/libkrb5.so*
    - lib/*/liblber-2.4.so*
    - lib/*/libldap_r-2.4.so*
    - lib/*/libnghttp2.so*
    - lib/*/libpsl.so*
    - lib/*/librabbitmq.so*
    - lib/*/librados.so*
    - lib/*/librbd.so*
    - lib/*/librdmacm.so*
    - lib/*/libroken.so*
    - lib/*/librtmp.so*
    - lib/*/libsasl2.so*
    - lib/*/libsnappy.so*
    - lib/*/libssh.so*
    - lib/*/libwind.so*
    - lib/liboath.so*
    - lib/python3
    source: snapcraft/empty
    stage-packages:
    - ceph-common
  criu:
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - asciidoc
    - libcap-dev
    - libnet1-dev
    - libnl-3-dev
    - libprotobuf-c-dev
    - libprotobuf-dev
    - protobuf-c-compiler
    - protobuf-compiler
    - xmlto
    organize:
      usr/lib/: lib/
    override-build: |
      set -ex

      [ "$(uname -m)" != "x86_64" ] && \
        [ "$(uname -m)" != "armv7l" ] && \
        [ "$(uname -m)" != "aarch64" ] && \
        [ "$(uname -m)" != "s390x" ] && \
        [ "$(uname -m)" != "ppc64le" ] && exit 0

      make
      mkdir -p "${SNAPCRAFT_PART_INSTALL}/criu/"
      cp criu/criu "${SNAPCRAFT_PART_INSTALL}/criu/"
    plugin: nil
    prime:
    - criu/*
    - lib/*/libnet*
    - lib/*/libproto*
    source: https://github.com/checkpoint-restore/criu
    source-depth: 1
    source-tag: v3.19
    source-type: git
    stage-packages:
    - libnet1
    - libprotobuf-c1
  dqlite:
    after:
    - raft
    - sqlite
    autotools-configure-parameters:
    - --prefix=
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - libuv1-dev
    organize:
      usr/lib/: lib/
    plugin: autotools
    prime:
    - lib/libdqlite*so*
    - lib/*/libuv*
    source: https://github.com/canonical/dqlite
    source-depth: 1
    source-tag: v1.15.1
    source-type: git
    stage-packages:
    - libuv1
  edk2:
    after:
    - nasm
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - on amd64:
      - acpica-tools
      - uuid-dev
    - on arm64:
      - acpica-tools
      - uuid-dev
    override-build: |-
      [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0

      # Fix submodules
      sed -i "s#https://git.cryptomilk.org/projects/cmocka#https://gitlab.com/cmocka/cmocka#g" .gitmodules
      git submodule update --init --recursive

      # Apply patches
      patch -p1 < "${SNAPCRAFT_PROJECT_DIR}/patches/edk2-0001-force-DUID-LLT.patch"
      cp "${SNAPCRAFT_PROJECT_DIR}/patches/edk2-0002-logo.bmp" MdeModulePkg/Logo/Logo.bmp
      patch -p1 < "${SNAPCRAFT_PROJECT_DIR}/patches/edk2-0003-boot-delay.patch"
      patch -p1 < "${SNAPCRAFT_PROJECT_DIR}/patches/edk2-0004-gcc-errors.patch"

      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
      set -ex
      (
      cat << EOF
          . ./edksetup.sh
          make -C BaseTools ARCH=${ARCH}
          build -a ${ARCH} -t GCC49 -b RELEASE -p ${PKG} \
            -DSECURE_BOOT_ENABLE=TRUE \
            -DNETWORK_IP4_ENABLE=TRUE \
            -DNETWORK_IP6_ENABLE=TRUE \
            -DNETWORK_TLS_ENABLE=TRUE \
            -DNETWORK_HTTP_BOOT_ENABLE=TRUE \
            -DFD_SIZE_2MB \
            -DTPM_ENABLE=TRUE \
            -DTPM_CONFIG_ENABLE=TRUE \
            -DTPM2_ENABLE=TRUE \
            -DTPM2_CONFIG_ENABLE=TRUE
      EOF
      ) | bash -e

      mkdir -p "${SNAPCRAFT_PART_INSTALL}/share/qemu/"
      cp Build/*/*/FV/${FV_CODE}.fd "${SNAPCRAFT_PART_INSTALL}/share/qemu/OVMF_CODE.fd"
      cp Build/*/*/FV/${FV_VARS}.fd "${SNAPCRAFT_PART_INSTALL}/share/qemu/OVMF_VARS.fd"

      if [ "$(uname -m)" = "aarch64" ]; then
          truncate -s 64m "${SNAPCRAFT_PART_INSTALL}/share/qemu/OVMF_CODE.fd"
          truncate -s 64m "${SNAPCRAFT_PART_INSTALL}/share/qemu/OVMF_VARS.fd"
      fi
    override-pull: |-
      [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0
      set -ex
      git clone https://github.com/tianocore/edk2 . -b edk2-stable202208

      git config user.email "noreply@lists.canonical.com"
      git config user.name "LXD snap builder"
    plugin: nil
    prime:
    - share/qemu/*
    source: https://github.com/tianocore/edk2
    source-depth: 1
    source-tag: IRRELEVANT
    source-type: git
  libmnl:
    autotools-configure-parameters:
    - --prefix=
    build-attributes:
    - core22-step-dependencies
    organize:
      usr/lib/: lib/
    plugin: autotools
    prime:
    - lib/libmnl*so*
    source: https://git.netfilter.org/libmnl
    source-tag: libmnl-1.0.5
    source-type: git
  libnftnl:
    after:
    - libmnl
    autotools-configure-parameters:
    - --prefix=
    build-attributes:
    - core22-step-dependencies
    organize:
      usr/lib/: lib/
    override-build: |
      snapcraftctl build

      sed -i "s# /lib/libmnl.la# ${SNAPCRAFT_STAGE}/lib/libmnl.la#g" "${SNAPCRAFT_PART_INSTALL}/lib/libnftnl.la"
    plugin: autotools
    prime:
    - lib/libnftnl*so*
    source: https://git.netfilter.org/libnftnl
    source-tag: libnftnl-1.2.6
    source-type: git
  libseccomp:
    autotools-configure-parameters:
    - --prefix=
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - gperf
    organize:
      usr/lib/: lib/
    plugin: autotools
    prime:
    - lib/libseccomp*so*
    source: https://github.com/seccomp/libseccomp
    source-depth: 1
    source-tag: v2.5.5
    source-type: git
  libtpms:
    autotools-configure-parameters:
    - --prefix=
    - --with-tpm2
    - --with-openssl
    build-attributes:
    - core22-step-dependencies
    organize:
      usr/lib/: lib/
    plugin: autotools
    prime:
    - lib/libtpms*so*
    source: https://github.com/stefanberger/libtpms
    source-depth: 1
    source-tag: v0.9.6
    source-type: git
  liburing:
    autotools-configure-parameters:
    - --prefix=
    build-attributes:
    - core22-step-dependencies
    organize:
      usr/lib/: lib/
    override-build: |-
      [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && [ "$(uname -m)" != "ppc64le" ] && [ "$(uname -m)" != "s390x" ] && exit 0
      snapcraftctl build
    plugin: autotools
    prime:
    - lib/liburing*so*
    source: https://github.com/axboe/liburing
    source-depth: 1
    source-tag: liburing-2.5
    source-type: git
  libusb:
    autotools-configure-parameters:
    - --prefix=
    build-attributes:
    - core22-step-dependencies
    organize:
      usr/lib/: lib/
    plugin: autotools
    prime:
    - lib/libusb*so*
    source: https://github.com/libusb/libusb
    source-depth: 1
    source-tag: v1.0.26
    source-type: git
  logrotate:
    build-attributes:
    - core22-step-dependencies
    organize:
      usr/bin/: bin/
      usr/lib/: lib/
      usr/sbin/: bin/
    plugin: nil
    prime:
    - bin/logrotate
    source: snapcraft/empty
    stage:
    - bin/logrotate
    stage-packages:
    - logrotate
  lvm:
    build-attributes:
    - core22-step-dependencies
    organize:
      sbin/: bin/
      usr/lib/: lib/
      usr/sbin/: bin/
    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
    - lib/*/device-mapper/*
    - lib/*/libaio.so*
    - lib/*/libdevmapper*
    - lib/*/liblvm*
    - lib/*/libreadline.so*
    source: snapcraft/empty
    stage-packages:
    - dmeventd
    - lvm2
    - thin-provisioning-tools
  lxc:
    after:
    - libseccomp
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - libapparmor-dev
    - libcap-dev
    - libdbus-1-dev
    - libgnutls28-dev
    - libselinux1-dev
    - pkg-config
    meson-parameters:
    - --prefix=/
    - -Dexamples=false
    - -Dman=false
    - -Dtools=false
    - -Dtests=false
    - -Dmemfd-rexec=false
    - -Dapparmor=true
    - -Dseccomp=true
    - -Dselinux=true
    - -Dcapabilities=true
    - -Drootfs-mount-path=/var/snap/lxd/common/lxc/
    - -Dlibexecdir=/snap/lxd/current/libexec/
    organize:
      share/lxc/hooks: lxc/hooks
      snap/lxd/current/libexec: libexec
      snap/lxd/current/lxc: lxc
    override-build: |
      set -ex

      cd ../src
      git config user.email "noreply@lists.canonical.com"
      git config user.name "LXD snap builder"

      cd ../build

      set +ex
      snapcraftctl build
      set -ex

      mkdir -p $SNAPCRAFT_PART_INSTALL/lxc/config/common.conf.d/
      ln -s /var/snap/lxd/common/lxc/local.conf $SNAPCRAFT_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-tag: lxc-5.0.3
    source-type: git
  lxcfs:
    build-packages:
    - libfuse3-dev
    - libpam0g-dev
    - pkg-config
    - python3-jinja2
    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
      snapcraftctl build
      set -ex

      patch -p1 $SNAPCRAFT_PART_INSTALL/snap/lxd/current/lxcfs/lxc.mount.hook < "${SNAPCRAFT_PROJECT_DIR}/patches/lxcfs-0001-hook.patch"
    plugin: meson
    prime:
    - bin/fusermount
    - bin/fusermount3
    - lib/*/libfuse3.so.*
    - bin/lxcfs
    - lib/liblxcfs.so
    - lxc/config/common.conf.d/00-lxcfs.conf
    - lxcfs/
    source: https://github.com/lxc/lxcfs
    source-tag: lxcfs-5.0.4
    source-type: git
    stage-packages:
    - fuse3
  lxd:
    after:
    - lxc
    - dqlite
    - sqlite
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - libacl1-dev
    - libudev-dev
    - pkg-config
    build-snaps:
    - go/1.21/stable
    organize:
      sbin/: 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"

      git cherry-pick -x 827f1fce57898467b6b5d6eb909a5eb639e95c3c # lxd/storage/drivers/ceph: Restore the filesystems UUID on the volume
      git cherry-pick -x 53e017a1db6a7f0667c55855b50220479f6fb827 # test/suites/storage: Add check for UUID generation on restore
      git cherry-pick -x b737ae50e2590c7aa367254237f89ddc4d388ffb # lxd/storage/drivers/ceph: Restore the VM block filesystem volume too
      git cherry-pick -x b61ffddda691d553eab3fbf23fb25ef2185ed6de # lxd/storage/drivers/lvm: Restore the VM block filesystem volume for thin-pools too
      git cherry-pick -x 59cdc0a758b627083f729cd4b81dbb69035cb04d # lxd/storage/drivers/ceph: Double check the volumes content type
      git cherry-pick -x fe71f2135bdc3aa6ea28de7ed1ac324f7d689ed6 # shared/simplestreams/products: Fix regression in parsing version files
      git cherry-pick -x d3253e4cbc85b97e3bc6dba9a27fd2ab0c4d8685 # shared/simplestreams/simplestreams: Improve error messages
      git cherry-pick -x 55bd4024dbfc315c0f57da57f2f9bd9c5c97dad1 # shared/simplestreams/products: Search only for lxd archives
      git cherry-pick -x f1c377195a1febda39d6d99ecfbc647ffcd5d740 # lxd/rsync: Merge sendSetup and Send functions
      git cherry-pick -x e1a37a5c240e068ffaff4fe20fa8af612e4143fe # lxd/rsync: Add description of cleanup function to RunWrappers
      git cherry-pick -x 0fefac32ccd543494c07008eddb0bb621c94b19d # lxd/instance/drivers/driver/qemu: Don't leak file descriptor when probing for Direct I/O support
      git cherry-pick -x 8e22091af07f29c0c626b1746689491c8bedbaa8 # incusd/instance/qemu: Cap hotplug CPU slots to 64
      git cherry-pick -x eff4a63e9b5804066437df995fbc4fbcddf4daf0 # incusd/instance/qemu: Fix handling of > 64 limits.cpu
      git cherry-pick -x 67705c0681301a2574bfbc9eef56b55c9bdccb88 # lxd: Update instance types URL
      git cherry-pick -x ea99778d412f7cb3995844fcf905e0695ba9291a # lxc/config/default: Add images remote for images.lxd.canonical.com
      git cherry-pick -x 8a43bac4ae9e278f2197b0eaaa229ec3c242dd02 # lxd/config/default: Add images to DefaultRemotes
      git cherry-pick -x 43dfdce8d90bd029a503fe94d7609cb34359c1c2 # instance/drivers/driver_lxc: do not set "soft" limit when hard limit is set
      git cherry-pick -x 79dcfe6bced1998fdf1c213a6bbad17fce6e540a # lxd/instance: Reject limits.kernel config for VMs
      git cherry-pick -x 2b62f940826bfe2e18112f19e827a61f8b659c9d # lxd/device/device_utils_disk: fix diskAddRootUserNSEntry to add root mapping only if it's required
      git cherry-pick -x 482241ed1f692be3c0bd45161dd0a8beca7e85c5 # lxd/network/acl: Change protocol field for ovn logs
      git cherry-pick -x c35ac36962dd5cf691ff2b464055648ff8bcf463 # lxd/device/nic_ovn: Only stop device if network is populated
      git cherry-pick -x 551c252d1653360ccfda981b7a9a42fc8eed5370 # lxd/storage/drivers: Always use default block.filesysem for VM volumes
      git cherry-pick -x 6ae9c4e522c226efed94af447dd9e92ef658e28a # doc: pin version of myst-parser
      git cherry-pick -x 6e96624b1cf707cfc5b511dd6f91b5a34d4db9a3 # lxd/storage/drivers: Add volume param to roundVolumeBlockSizeBytes
      git cherry-pick -x a6e08cc8b897ea149ee5fa395cb9e242749f7db1 # lxd/storage/drivers/zfs: Round to zfs.blocksize or 16KiB
      git cherry-pick -x 33d712497bfc5d6a8892bd8f6e1ddb3583bee1eb # lxd/storage/drivers: Refactor volume size rounding logic
      git cherry-pick -x a7477c4cb0056efeb2ba781fad9f51230e21a664 # lxd/storage/drivers: Fix linter errors
      git cherry-pick -x 3d90268df9774994a7f2807d6e3deff06a8fe145 # lxd/storage/drivers/zfs: Wait for device to appear when activating a volume
      git cherry-pick -x 98c3f36f64d9f03740a3216fe7c68861e57fd917 # lxd/storage/drivers/zfs: Check for non /dev/zvol/* paths
      git cherry-pick -x 27ad4c72b0ef44c70ac17267a955842f2f2e30e9 # lxd/util: Split CheckTrustState into two functions.
      git cherry-pick -x 578bf456c04bc05a7b8496f6eb8fadb9d9c9c61d # lxd/cluster: Update calls to util.CheckTrustState
      git cherry-pick -x dd16b59f84638d1268474fb31ccb510c84db65d3 # lxd-agent: Update calls to util.CheckTrustState.
      git cherry-pick -x 879ebd254145cee5af5f51d98eee988e4eebddba # lxd: Update calls to util.CheckTrustState.
      git cherry-pick -x 7af75b2749639e7a4634d6d6de6b781aa9dd1ed4 # lxd: Refactor `(*Daemon).Authenticate` method.
      git cherry-pick -x dfae473d6cd8ee0df0b90c8e74a66ca4645a2b84 # lxd: Update comment on server certificate mTLS checks.
      git cherry-pick -x fb0525e1bdd6a99c4eedacbe9e6c2c7b8e0d9a89 # lxd: Disallow certificate creation in CA mode if cert is not signed by CA.
      git cherry-pick -x 356268c34eb17bebb8de740aaa82740d6a68ee5d # lxd/util: Update info log to indicate CA restriction applies to clients.
      git cherry-pick -x 45126f2a54079799066abf6477a252605709b8e5 # shared: Set `GetClientCertificate` in TLS config.
      git cherry-pick -x 52eaf3efa780d68fa51a74d9631f3c5e7a7fc879 # shared: Add comments to exported functions (revive: exported).
      git cherry-pick -x 75fbdaeebea454fd074c9efac7a2c584a78762c7 # test/suites: Improve PKI test coverage.
      git cherry-pick -x ce66fe3c1404c82183711bf7e35889bf19cfd5b9 # lxd/instance/exec: Only use keepalives on TCP sockets

      # Setup build environment
      export GOPATH=$(realpath ./.go)
      export CGO_CFLAGS="-I${SNAPCRAFT_STAGE}/include/ -I${SNAPCRAFT_STAGE}/usr/local/include/"
      export CGO_LDFLAGS="-L${SNAPCRAFT_STAGE}/lib/ -L${SNAPCRAFT_STAGE}/usr/local/lib/"
      export CGO_LDFLAGS_ALLOW="(-Wl,-wrap,pthread_create)|(-Wl,-z,now)"

      # Build the binaries
      go build -o "${SNAPCRAFT_PART_INSTALL}/bin/lxc" github.com/canonical/lxd/lxc
      go build -o "${SNAPCRAFT_PART_INSTALL}/bin/lxc-to-lxd" github.com/canonical/lxd/lxc-to-lxd
      go build -o "${SNAPCRAFT_PART_INSTALL}/bin/lxd" -tags=libsqlite3 github.com/canonical/lxd/lxd
      CGO_ENABLED=0 go build -o "${SNAPCRAFT_PART_INSTALL}/bin/lxd-agent" -tags=agent,netgo github.com/canonical/lxd/lxd-agent
      go build -o "${SNAPCRAFT_PART_INSTALL}/bin/lxd-benchmark" github.com/canonical/lxd/lxd-benchmark
      go build -o "${SNAPCRAFT_PART_INSTALL}/bin/lxd-user" github.com/canonical/lxd/lxd-user

      # Setup bash completion
      mkdir -p ${SNAPCRAFT_PART_INSTALL}/etc/bash_completion.d/
      cp scripts/bash/lxd-client ${SNAPCRAFT_PART_INSTALL}/etc/bash_completion.d/snap.lxd.lxc
    override-pull: |
      snapcraftctl pull
      set -ex

      # Setup build environment
      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 -d -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.*
    - etc/bash_completion.d/snap.lxd.lxc
    - share/misc
    - bin/lxc
    - bin/lxc-to-lxd
    - bin/lxd
    - bin/lxd-agent
    - bin/lxd-benchmark
    - bin/lxd-user
    source: https://github.com/canonical/lxd
    source-tag: lxd-5.0.3
    source-type: git
    stage-packages:
    - acl
    - attr
    - dnsmasq-base
    - gdisk
    - iw
    - netbase
    - pciutils
    - pigz
    - rsync
    - squashfs-tools
    - usbutils
    - xdelta3
  lxd-migrate:
    after:
    - lxd
    - sqlite
    build-attributes:
    - core22-step-dependencies
    build-snaps:
    - go/1.21/stable
    override-build: |
      set -ex

      # Setup build environment
      export GOPATH=$(realpath ./.go)
      export CGO_CFLAGS="-I${SNAPCRAFT_STAGE}/include/ -I${SNAPCRAFT_STAGE}/usr/local/include/"
      export CGO_LDFLAGS="-L${SNAPCRAFT_STAGE}/lib/ -L${SNAPCRAFT_STAGE}/usr/local/lib/"

      # Build the binaries
      go build -o "${SNAPCRAFT_PART_INSTALL}/bin/lxd-migrate" -tags=libsqlite3 ./

      # Install bridge script
      mkdir -p ${SNAPCRAFT_PART_INSTALL}/bin/
      cp scripts/upgrade-bridge ${SNAPCRAFT_PART_INSTALL}/bin/upgrade-bridge
    override-pull: |
      snapcraftctl pull
      set -ex

      # Setup build environment
      export GOPATH=$(realpath ./.go)

      # Download the dependencies
      go get -d -v ./...
    plugin: nil
    prime:
    - bin/lxd-migrate
    - bin/upgrade-bridge
    source: lxd-migrate/
  lxd-ui:
    override-build: |
      [ "$(uname -m)" = "riscv64" ] && exit 0
      set -ex

      patch -p1 < "${SNAPCRAFT_PROJECT_DIR}/patches/lxd-ui-0.5-lxd-5.0-compat.patch"

      npm install yarn --global
      yarn install
      yarn build

      mkdir -p "${SNAPCRAFT_PART_INSTALL}/share"
      cp -R build/ui "${SNAPCRAFT_PART_INSTALL}/share/lxd-ui/"
    override-pull: |
      [ "$(uname -m)" = "riscv64" ] && exit 0
      snapcraftctl pull
      set -ex

      snap install node --channel=18/stable --classic || true
    plugin: nil
    prime:
    - share/lxd-ui*
    source: https://github.com/canonical/lxd-ui
    source-tag: "0.5"
    source-type: git
  nano:
    build-attributes:
    - core22-step-dependencies
    organize:
      usr/bin/: bin/
    plugin: nil
    prime:
    - bin/nano
    - etc/nanorc
    source: snapcraft/empty
    stage-packages:
    - nano
  nasm:
    autotools-configure-parameters:
    - --prefix=
    build-attributes:
    - core22-step-dependencies
    organize:
      usr/bin/: bin/
    override-build: |
      patch -p1 < "${SNAPCRAFT_PROJECT_DIR}/patches/nasm-0000-disable-manpages.patch"
      snapcraftctl build
    plugin: autotools
    prime:
    - bin/nasm
    source: https://github.com/netwide-assembler/nasm
    source-depth: 1
    source-tag: nasm-2.15.05
    source-type: git
  nftables:
    after:
    - libmnl
    - libnftnl
    autotools-configure-parameters:
    - --prefix=
    - --with-json
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - libedit-dev
    - libjansson-dev
    - libreadline-dev
    organize:
      sbin/: bin/
      usr/lib/: lib/
    override-build: |
      set -ex

      git config user.email "noreply@lists.canonical.com"
      git config user.name "LXD snap builder"

      set +ex
      snapcraftctl build
      set -ex
    plugin: autotools
    prime:
    - bin/nft
    - lib/*/libjansson*so*
    - lib/libnftables*so*
    source: https://git.netfilter.org/nftables
    source-tag: v1.0.9
    source-type: git
    stage-packages:
    - libjansson4
  nvidia-container:
    after:
    - libseccomp
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - bmake
    - curl
    - lsb-release
    organize:
      usr/local/bin/nvidia-container-cli: bin/nvidia-container-cli.real
      usr/local/lib: lib/
    override-build: |-
      set -ex

      [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0

      git config user.email "noreply@lists.canonical.com"
      git config user.name "LXD snap builder"

      mkdir -p "${SNAPCRAFT_PART_INSTALL}/bin/"
      cp ${SNAPCRAFT_PROJECT_DIR}/snapcraft/wrappers/nvidia-container-cli "${SNAPCRAFT_PART_INSTALL}/bin/"

      set +ex
      snapcraftctl build
    plugin: make
    prime:
    - bin/nvidia-container-cli*
    - lib/libnvidia-container*.so*
    source: https://github.com/NVIDIA/libnvidia-container
    source-depth: 1
    source-tag: v1.14.3
    source-type: git
  openvswitch:
    autotools-configure-parameters:
    - --enable-ssl
    - --prefix=
    build-attributes:
    - core22-step-dependencies
    organize:
      sbin/: bin/
      usr/bin/: bin/
    override-build: |
      set -ex

      git config user.email "noreply@lists.canonical.com"
      git config user.name "LXD snap builder"

      set +ex
      snapcraftctl build
      set -ex
    plugin: autotools
    prime:
    - bin/ovs-appctl
    - bin/ovs-vsctl
    - bin/ovs-vswitchd
    - bin/ovsdb-*
    - bin/uuidgen
    - share/openvswitch/
    source: https://github.com/openvswitch/ovs
    source-depth: 1
    source-tag: v3.2.1
    source-type: git
    stage-packages:
    - uuid-runtime
  ovn:
    after:
    - openvswitch
    autotools-configure-parameters:
    - --enable-ssl
    - --prefix=
    - --with-ovs-source=../../openvswitch/build/
    build-attributes:
    - core22-step-dependencies
    plugin: autotools
    prime:
    - bin/ovn-nbctl
    - bin/ovn-sbctl
    source: https://github.com/ovn-org/ovn
    source-depth: 1
    source-tag: v23.09.1
    source-type: git
  pull-meson-early:
    override-build: |
      # No-op
      true
    override-pull: |
      # Fetch meson early to cause all downloads at the beginning of the build.
      python3 -m pip install -U meson
    override-stage: |
      # No-op
      true
    plugin: nil
    source: snapcraft/empty
  qemu:
    after:
    - libseccomp
    - liburing
    - libusb
    - spice-protocol
    - spice-server
    autotools-configure-parameters:
    - --disable-bochs
    - --disable-cloop
    - --disable-dmg
    - --disable-docs
    - --disable-guest-agent
    - --disable-parallels
    - --disable-qed
    - --disable-slirp
    - --disable-user
    - --disable-vdi
    - --disable-vnc
    - --disable-xen
    - --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/
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - bison
    - flex
    - pkg-config
    - libaio-dev
    - libcap-ng-dev
    - libglib2.0-dev
    - libnuma-dev
    - libpixman-1-dev
    - librbd-dev
    - libusbredirhost-dev
    organize:
      usr/bin/: bin/
      usr/lib/: lib/
      usr/local/bin/: bin/
      usr/local/lib/: lib/
      usr/local/libexec/: bin/
      usr/local/share/: share/
    override-build: |-
      [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && [ "$(uname -m)" != "ppc64le" ] && [ "$(uname -m)" != "s390x" ] && exit 0

      set -ex
      # Mangle the configure a bit
      QEMUARCH="$(uname -m)"
      [ "${QEMUARCH}" = "ppc64le" ] && QEMUARCH="ppc64"
      sed -i "s/^unset target_list$/target_list=\"${QEMUARCH}-softmmu\"/" configure
      sed -i 's#libseccomp_minver=".*#libseccomp_minver="0.0"#g' configure

      set +ex
      snapcraftctl build
    override-pull: |-
      [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && [ "$(uname -m)" != "ppc64le" ] && [ "$(uname -m)" != "s390x" ] && exit 0
      set -ex
      git clone https://gitlab.com/qemu/qemu . -b v8.0.5
    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/*/libusbredir*so*
    - share/qemu/keymaps*
    - share/qemu/efi-virtio.rom*
    - share/qemu/kvmvapic.bin*
    - share/qemu/s390-*.img*
    - share/qemu/slof.bin*
    - share/qemu/vgabios-*.bin*
    source: IRRELEVANT
    source-depth: 1
    source-tag: IRRELEVANT
    source-type: git
    stage-packages:
    - genisoimage
    - libatomic1
    - libmagic1
    - libnuma1
    - libpixman-1-0
    - libusbredirhost1
    - libusbredirparser1
  qemu-ovmf-secureboot:
    after:
    - edk2
    - qemu
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - xorriso
    override-build: |-
      [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && exit 0

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

      set -ex
      rm -Rf iso-root vfat-root shell.iso
      mkdir -p iso-root vfat-root/efi/boot
      cp ../../edk2/build/Build/*/*/*/Shell.efi vfat-root/efi/boot/bootx64.efi
      cp ../../edk2/build/Build/*/*/*/EnrollDefaultKeys.efi vfat-root/
      "${SNAPCRAFT_STAGE}/bin/qemu-img" convert --image-opts driver=vvfat,floppy=on,fat-type=12,label=UEFI_SHELL,dir=vfat-root iso-root/shell.img
      xorriso --as mkisofs -input-charset ASCII -J -rational-rock -e shell.img -no-emul-boot -o shell.iso iso-root/

      # Basic aarch64 support
      if [ "$(uname -m)" = "aarch64" ]; then
          sed -i ovmf-vars-generator \
              -e "s/'-machine', machinetype,/'-machine', 'virt', '-cpu', 'cortex-a57',/" \
              -e "/charserial1/d" \
              -e "s/ide-cd/scsi-cd/" \
              -e "s/'-device',$/'-device', 'virtio-scsi-pci,id=scsi', '-device',/"
      elif [ "$(uname -m)" = "x86_64" ]; then
          cp -f "${SNAPCRAFT_STAGE}/share/qemu/kvmvapic.bin" .
      fi

      mkdir -p "${SNAPCRAFT_PART_INSTALL}/share/qemu/"
      python3 ovmf-vars-generator \
        --qemu-binary "${SNAPCRAFT_STAGE}/bin/qemu-system-$(uname -m)" \
        --print-output --disable-smm --skip-testing \
        --oem-string "$(cat ${SNAPCRAFT_PROJECT_DIR}/snapcraft/etc/ubuntu-sb.crt)" \
        --ovmf-binary "${SNAPCRAFT_STAGE}/share/qemu/OVMF_CODE.fd" \
        --ovmf-template-vars "${SNAPCRAFT_STAGE}/share/qemu/OVMF_VARS.fd" \
        --uefi-shell-iso shell.iso \
        "${SNAPCRAFT_PART_INSTALL}/share/qemu/OVMF_VARS.ms.fd"
    plugin: nil
    prime:
    - share/qemu/*
    source: https://github.com/puiterwijk/qemu-ovmf-secureboot
    source-commit: 4da81a4cbdd6d96b7a653239865d3b1d92cc6117
    source-depth: 1
    source-type: git
  raft:
    autotools-configure-parameters:
    - --prefix=
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - libuv1-dev
    - liblz4-dev
    organize:
      usr/lib/: lib/
    plugin: autotools
    prime:
    - lib/libraft*so*
    - lib/*/libuv.so*
    source: https://github.com/canonical/raft
    source-depth: 1
    source-tag: v0.18.0
    source-type: git
    stage-packages:
    - libuv1
    - liblz4-1
  shmounts:
    build-attributes:
    - core22-step-dependencies
    plugin: make
    prime:
    - bin/setup-shmounts
    source: shmounts/
  snap-query:
    build-attributes:
    - core22-step-dependencies
    build-snaps:
    - go/1.21/stable
    override-build: |
      set -ex

      # Setup build environment
      export GOPATH=$(realpath ./.go)

      # Build the binaries
      go build -o "${SNAPCRAFT_PART_INSTALL}/bin/snap-query" snap-query.go
    plugin: nil
    prime:
    - bin/snap-query
    source: snap-query/
  spice-protocol:
    build-attributes:
    - core22-step-dependencies
    plugin: meson
    prime: []
    source: https://gitlab.freedesktop.org/spice/spice-protocol
    source-depth: 1
    source-tag: v0.14.4
    source-type: git
  spice-server:
    after:
    - spice-protocol
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - libjpeg-turbo8-dev
    - python3-pyparsing
    - python3-six
    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/
    plugin: meson
    prime:
    - lib/*/libjpeg*so*
    - lib/*/libspice-server*so*
    - lib/*/libpixman*so*
    source: https://gitlab.freedesktop.org/spice/spice
    source-depth: 1
    source-tag: v0.15.2
    source-type: git
    stage-packages:
    - libjpeg-turbo8
    - libpixman-1-0
  sqlite:
    autotools-configure-parameters:
    - --prefix=
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - tcl
    plugin: autotools
    prime:
    - bin/sqlite3
    - lib/libsqlite3*so*
    source: https://github.com/sqlite/sqlite
    source-depth: 1
    source-tag: version-3.44.2
    source-type: git
  squashfs-tools-ng:
    autotools-configure-parameters:
    - --prefix=
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - liblzma-dev
    plugin: autotools
    prime:
    - bin/sqfs2tar
    - bin/tar2sqfs
    - lib/libsquashfs.so*
    source: https://github.com/AgentD/squashfs-tools-ng
    source-depth: 1
    source-tag: v1.2.0
    source-type: git
  strip:
    after:
    - btrfs
    - ceph
    - dqlite
    - libseccomp
    - logrotate
    - lvm
    - nano
    - nvidia-container
    - openvswitch
    - ovn
    - raft
    - sqlite
    - squashfs-tools-ng
    - swtpm
    - virtiofsd
    - xfs
    - xz
    - wrappers
    - xtables
    - zfs-0-6
    - zfs-0-7
    - zfs-0-8
    - zfs-2-0
    - zfs-2-1
    - zfs-2-2
    - zstd
    - lxc
    - lxcfs
    - criu
    - lxd
    - lxd-migrate
    - shmounts
    - snap-query
    build-attributes:
    - core22-step-dependencies
    override-prime: |
      set -x

      # XXX: remove unneeded files/directories
      rm -rf "${SNAPCRAFT_PRIME}/usr/local/"

      # Strip some of the heavy bits
      strip -s ${SNAPCRAFT_PRIME}/bin/lxc
      strip -s ${SNAPCRAFT_PRIME}/bin/lxd*
      strip -s ${SNAPCRAFT_PRIME}/bin/snap*
      strip -s ${SNAPCRAFT_PRIME}/lib/libdqlite*
      strip -s ${SNAPCRAFT_PRIME}/lib/libsqlite*

      # Strip binaries (excluding shell scripts)
      find "${SNAPCRAFT_PRIME}"/bin -type f \
        -not -path "${SNAPCRAFT_PRIME}/bin/ceph" \
        -not -path "${SNAPCRAFT_PRIME}/bin/editor" \
        -not -path "${SNAPCRAFT_PRIME}/bin/lxc-checkconfig" \
        -not -path "${SNAPCRAFT_PRIME}/bin/nvidia-container-cli" \
        -not -path "${SNAPCRAFT_PRIME}/bin/remote-viewer" \
        -not -path "${SNAPCRAFT_PRIME}/bin/sshfs" \
        -not -path "${SNAPCRAFT_PRIME}/bin/upgrade-bridge" \
        -not -path "${SNAPCRAFT_PRIME}/bin/xfs_admin" \
        -exec strip -s {} +

      # Strip binaries not under bin/ due to being dynamically
      # added to the path with `snap set lxd`, like `criu.enable=true`
      for binary in "${SNAPCRAFT_PRIME}/criu/criu"; do
        [ -e "${binary}" ] || continue
        strip -s "${binary}"
      done

      # Strip all versions of zfs utils
      for v in "${SNAPCRAFT_PRIME}"/zfs-*; do
        [ -d "${v}" ] || continue
        find "${v}/" -type f -exec strip -s {} +
      done

      # Strip libraries (excluding python3 scripts)
      find "${SNAPCRAFT_PRIME}"/lib -type f \
        -not -path "${SNAPCRAFT_PRIME}/lib/python3/*" \
        -exec strip -s {} +

      # XXX: look for broken symlinks indicating missing/invalid prime
      broken_symlinks="$(find "${SNAPCRAFT_PRIME}/" -xtype l \
                           -not -path "${SNAPCRAFT_PRIME}/lxc/config/common.conf.d/*")"
      if [ -n "${broken_symlinks}" ]; then
          echo "Found broken symlinks:"
          echo "${broken_symlinks}"
          exit 1
      fi

      exit 0
    plugin: nil
    source: snapcraft/empty
  swtpm:
    after:
    - libseccomp
    - libtpms
    autotools-configure-parameters:
    - --prefix=
    - --with-seccomp
    - --with-openssl
    - --without-cuse
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - expect
    - gawk
    - iproute2
    - libjson-glib-dev
    - python3-cryptography
    - python3-setuptools
    - socat
    organize:
      lib/swtpm/: lib/
      usr/bin/: bin/
      usr/lib/: lib/
    plugin: autotools
    prime:
    - bin/swtpm
    - lib/libswtpm*so*
    - lib/*/libjson-glib-1.0.so*
    source: https://github.com/stefanberger/swtpm
    source-depth: 1
    source-tag: v0.8.1
    source-type: git
    stage-packages:
    - libjson-glib-1.0-0
  virtiofsd:
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - cargo
    - libseccomp-dev
    - rustc
    organize:
      usr/bin: bin/
    override-build: |-
      [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && [ "$(uname -m)" != "ppc64le" ] && [ "$(uname -m)" != "s390x" ] && exit 0
      snapcraftctl build
    override-pull: |-
      [ "$(uname -m)" != "x86_64" ] && [ "$(uname -m)" != "aarch64" ] && [ "$(uname -m)" != "ppc64le" ] && [ "$(uname -m)" != "s390x" ] && exit 0
      snapcraftctl pull
    plugin: rust
    prime:
    - bin/virtiofsd*
    source: https://gitlab.com/virtio-fs/virtiofsd
    source-depth: 1
    source-tag: v1.8.0
    source-type: git
  wrappers:
    build-attributes:
    - core22-step-dependencies
    organize:
      hooks/: snap/hooks/
      wrappers/editor: bin/
      wrappers/remote-viewer: bin/
      wrappers/sshfs: bin/
    plugin: dump
    source: snapcraft/
  xfs:
    build-attributes:
    - core22-step-dependencies
    organize:
      sbin/: bin/
      usr/sbin/: bin/
    plugin: nil
    prime:
    - bin/xfs_admin
    - bin/xfs_db
    - bin/xfs_growfs
    - bin/xfs_repair
    - bin/mkfs.xfs
    source: snapcraft/empty
    stage-packages:
    - xfsprogs
  xtables:
    build-attributes:
    - core22-step-dependencies
    organize:
      usr/lib/ebtables/: lib/
      usr/sbin/: bin/
    plugin: nil
    prime:
    - bin/arptables-legacy
    - bin/ebtables-legacy
    - etc/ethertypes
    - etc/protocols
    - lib/libebtc.so.*
    source: snapcraft/empty
    stage-packages:
    - arptables
    - ebtables
  xz:
    build-attributes:
    - core22-step-dependencies
    organize:
      usr/bin/: bin/
      usr/lib/: lib/
      usr/sbin/: bin/
    override-build: |
      snapcraftctl build

      # Include the lzma symlink
      ln -s xz "${SNAPCRAFT_PART_INSTALL}/usr/bin/lzma"
    plugin: nil
    prime:
    - bin/lzma
    - bin/xz
    - lib/*/liblzma*so*
    source: snapcraft/empty
    stage-packages:
    - xz-utils
  zfs-0-6:
    autotools-configure-parameters:
    - --prefix=/
    - --with-config=user
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - uuid-dev
    - zlib1g-dev
    override-build: |
      set -ex

      [ "$(uname -m)" != "x86_64" ] && \
        [ "$(uname -m)" != "aarch64" ] && \
        [ "$(uname -m)" != "s390x" ] && \
        [ "$(uname -m)" != "ppc64le" ] && exit 0

      git config user.email "noreply@linuxcontainers.org"
      git config user.name "LXD snap builder"

      git cherry-pick fb963d33ee0dd350143ba1c9cd35d5f7d86910d2  # Fix endian build problem on ppc64el

      set +ex
      snapcraftctl build
      set -ex

      mv "${SNAPCRAFT_PART_INSTALL}" "${SNAPCRAFT_PART_INSTALL}.tmp"
      mkdir -p "${SNAPCRAFT_PART_INSTALL}/zfs-0.6/bin" "${SNAPCRAFT_PART_INSTALL}/zfs-0.6/lib"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/sbin/zfs" "${SNAPCRAFT_PART_INSTALL}/zfs-0.6/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/sbin/zpool" "${SNAPCRAFT_PART_INSTALL}/zfs-0.6/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/lib/udev/zvol_id" "${SNAPCRAFT_PART_INSTALL}/zfs-0.6/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/lib/"*so* "${SNAPCRAFT_PART_INSTALL}/zfs-0.6/lib/"
      rm -Rf "${SNAPCRAFT_PART_INSTALL}.tmp"
    plugin: autotools
    source: https://github.com/openzfs/zfs
    source-tag: zfs-0.6.5.11
    source-type: git
  zfs-0-7:
    autotools-configure-parameters:
    - --prefix=/
    - --with-config=user
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - libblkid-dev
    - uuid-dev
    - zlib1g-dev
    override-build: |
      set -ex

      [ "$(uname -m)" != "x86_64" ] && \
        [ "$(uname -m)" != "aarch64" ] && \
        [ "$(uname -m)" != "s390x" ] && \
        [ "$(uname -m)" != "ppc64le" ] && exit 0

      set +ex
      snapcraftctl build
      set -ex

      mv "${SNAPCRAFT_PART_INSTALL}" "${SNAPCRAFT_PART_INSTALL}.tmp"
      mkdir -p "${SNAPCRAFT_PART_INSTALL}/zfs-0.7/bin" "${SNAPCRAFT_PART_INSTALL}/zfs-0.7/lib"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/sbin/zfs" "${SNAPCRAFT_PART_INSTALL}/zfs-0.7/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/sbin/zpool" "${SNAPCRAFT_PART_INSTALL}/zfs-0.7/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/lib/udev/zvol_id" "${SNAPCRAFT_PART_INSTALL}/zfs-0.7/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/lib/"*so* "${SNAPCRAFT_PART_INSTALL}/zfs-0.7/lib/"
      rm -Rf "${SNAPCRAFT_PART_INSTALL}.tmp"
    plugin: autotools
    source: https://github.com/openzfs/zfs
    source-depth: 1
    source-tag: zfs-0.7.13
    source-type: git
  zfs-0-8:
    autotools-configure-parameters:
    - --prefix=/
    - --with-config=user
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - libblkid-dev
    - libssl-dev
    - uuid-dev
    - zlib1g-dev
    override-build: |
      set -ex

      [ "$(uname -m)" != "x86_64" ] && \
        [ "$(uname -m)" != "aarch64" ] && \
        [ "$(uname -m)" != "s390x" ] && \
        [ "$(uname -m)" != "ppc64le" ] && exit 0

      set +ex
      snapcraftctl build
      set -ex

      mv "${SNAPCRAFT_PART_INSTALL}" "${SNAPCRAFT_PART_INSTALL}.tmp"
      mkdir -p "${SNAPCRAFT_PART_INSTALL}/zfs-0.8/bin" "${SNAPCRAFT_PART_INSTALL}/zfs-0.8/lib"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/sbin/zfs" "${SNAPCRAFT_PART_INSTALL}/zfs-0.8/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/sbin/zpool" "${SNAPCRAFT_PART_INSTALL}/zfs-0.8/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/lib/udev/zvol_id" "${SNAPCRAFT_PART_INSTALL}/zfs-0.8/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/lib/"*so* "${SNAPCRAFT_PART_INSTALL}/zfs-0.8/lib/"
      rm -Rf "${SNAPCRAFT_PART_INSTALL}.tmp"
    plugin: autotools
    source: https://github.com/openzfs/zfs
    source-depth: 1
    source-tag: zfs-0.8.6
    source-type: git
  zfs-2-0:
    autotools-configure-parameters:
    - --prefix=/
    - --with-config=user
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - libblkid-dev
    - libssl-dev
    - uuid-dev
    - zlib1g-dev
    override-build: |
      set -ex

      [ "$(uname -m)" != "x86_64" ] && \
        [ "$(uname -m)" != "aarch64" ] && \
        [ "$(uname -m)" != "s390x" ] && \
        [ "$(uname -m)" != "ppc64le" ] && exit 0

      set +ex
      snapcraftctl build
      set -ex

      mv "${SNAPCRAFT_PART_INSTALL}" "${SNAPCRAFT_PART_INSTALL}.tmp"
      mkdir -p "${SNAPCRAFT_PART_INSTALL}/zfs-2.0/bin" "${SNAPCRAFT_PART_INSTALL}/zfs-2.0/lib"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/sbin/zfs" "${SNAPCRAFT_PART_INSTALL}/zfs-2.0/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/sbin/zpool" "${SNAPCRAFT_PART_INSTALL}/zfs-2.0/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/lib/udev/zvol_id" "${SNAPCRAFT_PART_INSTALL}/zfs-2.0/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/lib/"*so* "${SNAPCRAFT_PART_INSTALL}/zfs-2.0/lib/"
      rm -Rf "${SNAPCRAFT_PART_INSTALL}.tmp"
    plugin: autotools
    source: https://github.com/openzfs/zfs
    source-depth: 1
    source-tag: zfs-2.0.7
    source-type: git
  zfs-2-1:
    autotools-configure-parameters:
    - --prefix=/
    - --with-config=user
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - libblkid-dev
    - libssl-dev
    - uuid-dev
    - zlib1g-dev
    override-build: |
      set -ex

      [ "$(uname -m)" != "x86_64" ] && \
        [ "$(uname -m)" != "aarch64" ] && \
        [ "$(uname -m)" != "s390x" ] && \
        [ "$(uname -m)" != "ppc64le" ] && exit 0

      set +ex
      snapcraftctl build
      set -ex

      mv "${SNAPCRAFT_PART_INSTALL}" "${SNAPCRAFT_PART_INSTALL}.tmp"
      mkdir -p "${SNAPCRAFT_PART_INSTALL}/zfs-2.1/bin" "${SNAPCRAFT_PART_INSTALL}/zfs-2.1/lib"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/sbin/zfs" "${SNAPCRAFT_PART_INSTALL}/zfs-2.1/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/sbin/zpool" "${SNAPCRAFT_PART_INSTALL}/zfs-2.1/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/lib/udev/zvol_id" "${SNAPCRAFT_PART_INSTALL}/zfs-2.1/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/lib/"*so* "${SNAPCRAFT_PART_INSTALL}/zfs-2.1/lib/"
      rm -Rf "${SNAPCRAFT_PART_INSTALL}.tmp"
    plugin: autotools
    source: https://github.com/openzfs/zfs
    source-depth: 1
    source-tag: zfs-2.1.14
    source-type: git
  zfs-2-2:
    autotools-configure-parameters:
    - --prefix=/
    - --with-config=user
    build-attributes:
    - core22-step-dependencies
    build-packages:
    - libblkid-dev
    - libssl-dev
    - uuid-dev
    - zlib1g-dev
    override-build: |-
      [ "$(uname -m)" != "x86_64" ] && \
        [ "$(uname -m)" != "aarch64" ] && \
        [ "$(uname -m)" != "s390x" ] && \
        [ "$(uname -m)" != "ppc64le" ] && exit 0
      snapcraftctl build
      set -ex

      ZFS_VER="2.2"

      mv "${SNAPCRAFT_PART_INSTALL}" "${SNAPCRAFT_PART_INSTALL}.tmp"
      mkdir -p "${SNAPCRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin" "${SNAPCRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/sbin/zfs" "${SNAPCRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/sbin/zpool" "${SNAPCRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/lib/udev/zvol_id" "${SNAPCRAFT_PART_INSTALL}/zfs-${ZFS_VER}/bin/"
      mv "${SNAPCRAFT_PART_INSTALL}.tmp/lib/"*so* "${SNAPCRAFT_PART_INSTALL}/zfs-${ZFS_VER}/lib/"
      rm -Rf "${SNAPCRAFT_PART_INSTALL}.tmp"
    override-pull: |-
      [ "$(uname -m)" != "x86_64" ] && \
        [ "$(uname -m)" != "aarch64" ] && \
        [ "$(uname -m)" != "s390x" ] && \
        [ "$(uname -m)" != "ppc64le" ] && exit 0
      snapcraftctl pull
    plugin: autotools
    source: https://github.com/openzfs/zfs
    source-depth: 1
    source-tag: zfs-2.2.2
    source-type: git
  zstd:
    build-attributes:
    - core22-step-dependencies
    organize:
      usr/bin/: bin/
    plugin: nil
    prime:
    - bin/pzstd
    - bin/zstd
    source: snapcraft/empty
    stage-packages:
    - zstd
source-code: https://github.com/canonical/lxd
summary: LXD - container and VM manager
version: 5.0.3-80aeff7
website: https://ubuntu.com/lxd