Skip to content

ui-canonical: Fix lvmcluster pools #636

ui-canonical: Fix lvmcluster pools

ui-canonical: Fix lvmcluster pools #636

Workflow file for this run

name: Builds
on:
push:
permissions:
contents: read
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
build-incus:
name: Build Incus
strategy:
fail-fast: false
matrix:
os:
- ubuntu-20.04
- ubuntu-22.04
- ubuntu-24.04
- debian-11
- debian-12
arch:
- amd64
- arm64
exclude:
- os: debian-11
arch: arm64
runs-on:
- self-hosted
- cpu-4
- mem-4G
- disk-50G
- arch-${{ matrix.arch }}
- image-${{ matrix.os }}
env:
OS_ARCH: ${{ matrix.arch }}
HOME: "/root/"
PKG_CONFIG_PATH: "/opt/incus/lib/pkgconfig/"
CGO_LDFLAGS: "-L/opt/incus/lib/"
CGO_CFLAGS: "-I/opt/incus/include/"
LD_LIBRARY_PATH: "/opt/incus/lib/"
CPATH: "/opt/incus/include/"
PATH: "/opt/incus/bin:/root/.cargo/bin:/usr/local/go/bin:/usr/local/node/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
LXC_TAG: "v6.0.1"
LXCFS_TAG: "v6.0.1"
INCUS_TAG: "v6.0.1"
INCUS_UI_CANONICAL_TAG: "0.12"
RAFT_TAG: "v0.22.1"
COWSQL_TAG: "v1.15.6"
CRIU_TAG: "v3.19"
EDK2_TAG: "edk2-stable202402"
GOLANG_TAG: "go1.21.13"
LIBTPMS_TAG: "v0.9.6"
LIBURING_TAG: "liburing-2.6"
MINIO_TAG: "RELEASE.2024-08-03T04-33-23Z"
MINIO_MC_TAG: "RELEASE.2024-07-31T15-58-33Z"
NASM_TAG: "nasm-2.16.03"
NVIDIA_CONTAINER_TAG: "v1.16.1"
QEMU_TAG: "v9.0.2"
SEABIOS_TAG: "rel-1.16.3"
SWTPM_TAG: "v0.9.0"
VIRTIOFSD_TAG: "v1.11.1"
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Configure git
run: |
git config --global --add advice.detachedHead false
git config --global user.email "[email protected]"
git config --global user.name "Zabbly Incus build"
- name: Install dependencies
run: |
apt-get update
apt-get install --no-install-recommends --yes \
acpica-tools \
asciidoc \
autoconf \
automake \
bison \
bmake \
build-essential \
curl \
debhelper \
devscripts \
dosfstools \
expect \
flex \
gawk \
gettext \
git \
iproute2 \
libacl1-dev \
libaio-dev \
libapparmor-dev \
libcap-dev \
libcap-ng-dev \
libdbus-1-dev \
libelf-dev \
libfuse3-dev \
libglib2.0-dev \
libgnutls28-dev \
libjson-glib-dev \
libnet1-dev \
libnl-3-dev \
libnuma-dev \
libpam0g-dev \
libpixman-1-dev \
libprotobuf-c-dev \
libprotobuf-dev \
librbd-dev \
libseccomp-dev \
libselinux1-dev \
libspice-server-dev \
libsqlite3-dev \
libssl-dev \
libtirpc-dev \
libtool \
libudev-dev \
libusb-1.0-0-dev \
libusbredirhost-dev \
libuv1-dev \
lsb-release \
mtools \
ninja-build \
pkg-config \
protobuf-c-compiler \
protobuf-compiler \
python3-cryptography \
python3-jinja2 \
python3-pexpect \
python3-pip \
python3-setuptools \
python3-venv \
rsync \
socat \
uuid-dev \
xmlto \
xorriso
pip3 install meson || pip3 install meson --break-system-packages
- name: Install backported debhelper (on focal)
if: ${{ matrix.os == 'ubuntu-20.04' }}
run: |
if [ "${OS_ARCH}" = "amd64" ]; then
echo "deb http://archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse" >> /etc/apt/sources.list
else
echo "deb http://ports.ubuntu.com/ubuntu-ports focal-backports main restricted universe multiverse" >> /etc/apt/sources.list
fi
apt-get install -t focal-backports debhelper --yes
- name: Install backported git (on focal)
if: ${{ matrix.os == 'ubuntu-20.04' }}
run: |
apt-get install software-properties-common --yes
add-apt-repository ppa:git-core/ppa --yes
apt-get install git --yes
- name: Install Go
run: |
curl -sL "https://go.dev/dl/${GOLANG_TAG}.linux-${OS_ARCH}.tar.gz" | tar -C /usr/local/ -zx
go version
- name: Install Rust
run: |
curl -sL https://sh.rustup.rs -o install-rust.sh
bash install-rust.sh -y
- name: Install Node
run: |
[ "${OS_ARCH}" = "amd64" ] && NODE_ARCH=x64
[ "${OS_ARCH}" = "arm64" ] && NODE_ARCH=arm64
mkdir /usr/local/node/
curl -sL "https://nodejs.org/dist/v20.10.0/node-v20.10.0-linux-${NODE_ARCH}.tar.xz" | tar -C /usr/local/node/ -Jx --strip-components=1
- name: Build environment
run: |
mkdir /build/
mkdir -p \
/opt/incus/bin/ \
/opt/incus/include/ \
/opt/incus/lib/ \
/opt/incus/lib/systemd/system/ \
/opt/incus/share/
- name: Get the code
run: |
git clone https://github.com/axboe/liburing /build/liburing --depth 1 -b "${LIBURING_TAG}"
git clone https://github.com/cowsql/raft /build/raft --depth 1 -b "${RAFT_TAG}"
git clone https://github.com/cowsql/cowsql /build/cowsql --depth 1 -b "${COWSQL_TAG}"
git clone https://github.com/lxc/lxc /build/lxc --depth 1 -b "${LXC_TAG}"
git clone https://github.com/lxc/lxcfs /build/lxcfs --depth 1 -b "${LXCFS_TAG}"
git clone https://github.com/lxc/incus /build/incus -b "${INCUS_TAG}"
git clone https://github.com/checkpoint-restore/criu /build/criu --depth 1 -b "${CRIU_TAG}"
git clone https://github.com/NVIDIA/libnvidia-container /build/libnvidia-container --depth 1 -b "${NVIDIA_CONTAINER_TAG}"
git clone https://github.com/minio/minio /build/minio --depth 1 -b "${MINIO_TAG}"
git clone https://github.com/minio/mc /build/mc --depth 1 -b "${MINIO_MC_TAG}"
git clone https://gitlab.com/qemu-project/seabios /build/seabios --depth 1 -b "${SEABIOS_TAG}"
git clone https://github.com/tianocore/edk2 /build/edk2 --recurse-submodules --shallow-submodules --depth 1 -b "${EDK2_TAG}"
git clone https://github.com/stefanberger/libtpms /build/libtpms --depth 1 -b "${LIBTPMS_TAG}"
git clone https://github.com/stefanberger/swtpm /build/swtpm --depth 1 -b "${SWTPM_TAG}"
git clone https://gitlab.com/virtio-fs/virtiofsd /build/virtiofsd --depth 1 -b "${VIRTIOFSD_TAG}"
git clone https://gitlab.com/qemu-project/qemu /build/qemu --depth 1 -b "${QEMU_TAG}"
git clone https://github.com/canonical/lxd-ui /build/incus-ui-canonical --depth 1 -b "${INCUS_UI_CANONICAL_TAG}"
mkdir /build/nasm/
curl -sL "https://www.nasm.us/pub/nasm/releasebuilds/$(echo ${NASM_TAG} | cut -d- -f2)/${NASM_TAG}.tar.gz" | tar -C /build/nasm/ -zx --strip-components=1
- name: Build liburing
run: |
cd /build/liburing
./configure --prefix=/opt/incus
make
mkdir -p /build/target/liburing/
DESTDIR=/build/target/liburing make install
rsync -a /build/target/liburing/opt/incus/include/* /opt/incus/include/
rsync -a /build/target/liburing/opt/incus/lib/* /opt/incus/lib/
- name: Build raft
run: |
cd /build/raft
autoreconf -i
./configure --prefix=/opt/incus
make
mkdir -p /build/target/raft/
DESTDIR=/build/target/raft/ make install
rsync -a /build/target/raft/opt/incus/include/ /opt/incus/include/
rsync -a /build/target/raft/opt/incus/lib/ /opt/incus/lib/
- name: Build cowsql
run: |
cd /build/cowsql
autoreconf -i
./configure --prefix=/opt/incus
make
mkdir -p /build/target/cowsql/
DESTDIR=/build/target/cowsql/ make install
rsync -a /build/target/cowsql/opt/incus/include/ /opt/incus/include/
rsync -a /build/target/cowsql/opt/incus/lib/ /opt/incus/lib/
- name: Build LXC
run: |
cd /build/lxc
meson setup build \
--prefix=/opt/incus \
--libdir=/opt/incus/lib \
-Dexamples=false \
-Dman=false \
-Dtools=false \
-Dtests=false \
-Dmemfd-rexec=false \
-Dapparmor=true \
-Dseccomp=true \
-Dselinux=true \
-Dcapabilities=true \
-Dio-uring-event-loop=false
meson compile -C build
mkdir -p /build/target/lxc/
DESTDIR=/build/target/lxc/ meson install -C build
rsync -a /build/target/lxc/opt/incus/include/ /opt/incus/include/
rsync -a /build/target/lxc/opt/incus/lib/ /opt/incus/lib/
mkdir -p /opt/incus/share/lxc/config/common.conf.d/
mkdir -p /opt/incus/share/lxc/hooks/
cp /build/target/lxc/opt/incus/share/lxc/hooks/nvidia /opt/incus/share/lxc/hooks/
- name: Build LXCFS
run: |
REPO="${PWD}"
cd /build/lxcfs
meson setup build \
--prefix=/opt/incus \
--libdir=/opt/incus/lib \
-Ddocs=false \
-Dtests=false
meson compile -C build
mkdir -p /build/target/lxcfs/
DESTDIR=/build/target/lxcfs/ meson install -C build
rsync -a /build/target/lxcfs/opt/incus/bin/ /opt/incus/bin/
rsync -a /build/target/lxcfs/opt/incus/share/ /opt/incus/share/
rsync -a /build/target/lxcfs/opt/incus/lib/ /opt/incus/lib/
sed -i "s#/var/lib/lxcfs#/var/lib/incus-lxcfs#g" /opt/incus/share/lxcfs/lxc.mount.hook
patch -p1 /opt/incus/share/lxcfs/lxc.mount.hook < "${REPO}/patches/lxcfs-0001-hook.patch"
- name: Build Incus
run: |
REPO="${PWD}"
cd /build/incus
git cherry-pick 3512d3770529c4b8f201d715b5111d37783058f7 # incusd/network/ovn: Port CreateLogicalRouterRoute to libovsdb
git cherry-pick 9f57273a6a22cf4b3ce0a2c0cf8f365acfd27290 # incusd/network/ovn: Port DeleteLogicalRouterRoute to libovsdb
git cherry-pick 46b9df75921cb83748b98903debe2a1fcdc7553c # incusd/network: Update for OVN function changes
git cherry-pick e99292988883f0936677760d61dde10aeee772b1 # incusd/network/ovn: Port DeleteLogicalRouterPort to libovsdb
git cherry-pick 4c03093e8fea6db4a457f76a6a10e9a7e18369fe # incusd/network/ovn: Remove LogicalRouterPortDeleteIPv6Advertisements
git cherry-pick c5dc10b04c02f6c5af50f0b83dbd138669095988 # incusd/network: Update for OVN function changes
git cherry-pick 7145515b9029a82f9991bc1c5874ca3294e62890 # incusd/network/ovn: Port DeleteLogicalSwitch to libovsdb
git cherry-pick b44fc09354356720b7bb674af231a75923840b73 # incusd/network: Update for OVN function changes
git cherry-pick 03f563b9c9b1dbfa64beb4f4221f405db46bbd67 # incusd/network/ovn: Remove logicalSwitchFindAssociatedPortGroups
git cherry-pick a5cba6a6ec5d2c8bfdfd0a8a51e850f7ac3ef490 # incusd/network/ovn: Special handling for Load Balancer table
git cherry-pick 3ff7d11fa77161e84179b63689f384047b1caa92 # incusd/network/ovn: Align functions context handling
git cherry-pick 6c2d981e2b260ab5d548c48748b07da98062bc4c # incusd/network/ovn: Port DeleteLogicalSwitchDHCPOption to libovsdb
git cherry-pick 550851bf4a12df05da5963fdb113ba7873df854f # incusd/network/ovn: Port GetLogicalSwitchPortLocation to libovsdb
git cherry-pick d37e47ae3cba8458629e8eaa33ba90f5219e813c # incusd/network/ovn: Port GetLogicalSwitchPortUUID to libovsdb
git cherry-pick 8f9cdbc2f4e0e0c4eadf1228b540f3b9614422d3 # incusd/network/ovn: Port GetLogicalRouterPortHardwareAddress to libovsdb
git cherry-pick 0e625d43d93bf33542a7467e4492583d100cec12 # incusd/network/ovn: Add GetLogicalRouter
git cherry-pick 743a85bcfccde4559844171485bda649de0ca137 # incusd/network/ovn: Port DeleteLoadBalancer to libovsdb
git cherry-pick 4ad5982aceba9347725b3a62a744f839c3d6cc02 # incusd/network/acl: Update for OVN function changes
git cherry-pick ab0e1924dbf4c968a19d134070777fc6561e19c0 # incusd/network: Update for OVN function changes
git cherry-pick a5f28375e5843b95e420e188389d7a13dc5c571c # incusd/network: Simplify OVN network deletion logic
git cherry-pick 77c4e09836700146a13417b3dceff2a282d9bfe5 # incusd/network/ovn: Port UpdateLogicalSwitchIPAllocation to libovsdb
git cherry-pick 8519da027c2cc6275e1fbfa1c24cbde3f0ab3d6d # incusd/network/ovn: Port UpdateLogicalSwitchDHCPv4Revervations to libovsdb
git cherry-pick 2947b57c2465db2d31ac92701291cbd76f161b81 # incusd/network/ovn: Port GetLogicalSwitchDHCPv4Revervations to libovsdb
git cherry-pick 696256fd434a35a5311a6dedaf7c905d32d7b6cf # incusd/network/ovn: Port GetLogicalSwitchDHCPOptions to libovsdb
git cherry-pick 0a945cbaceb34e68d9b6b3ccaf73e373f8515549 # incusd/network/ovn: Port UpdateLogicalSwitchDHCPv4Options to libovsdb
git cherry-pick 45d289fb2536ec2b3f6f87754b87da095d050d19 # incusd/network/ovn: Port UpdateLogicalSwitchDHCPv6Options to libovsdb
git cherry-pick 42261ff4859644df98333a83f8f8f8fcaa9c0ae4 # incusd/network: Update for OVN function changes
git cherry-pick fc49c52b2ce3a79fe2c5329d972d0678b26841fb # incusd/network/ovn: Port logicalSwitchPortACLRules to libovsdb
git cherry-pick b40da9f5a9b79d69d2083b9466e94c5ec4db24d1 # incusd/network/ovn: Port GetLogicalSwitchPorts to libovsdb
git cherry-pick fa1609ec2aee7925f2065a5b96cb1cbb01ad2c91 # incusd/network/ovn: Port UpdateLogicalSwitchPortOptions to libovsdb
git cherry-pick dea679fe081668e1fd6b2a93482ec88beec587c5 # incusd/network/ovn: Port CreatePortGroup to libovsdb
git cherry-pick 26f01d84290cf40fd1a847a9cc060749ef558671 # incusd/network: Update for OVN function changes
git cherry-pick c8ba6cf5fcb39efea4c89ee3f332c5f2aaea69c8 # incusd/device/nic: Update for OVN function changes
git cherry-pick 80f17907331ab853104201054fc8aa1f30c9a939 # incusd/network/acl: Update for OVN function changes
git cherry-pick 48abc8a3b043278bbec5299e7d7a5ac515e0e780 # incusd/network/ovn: Port GetPortGroupsByProject to libovsdb
git cherry-pick 04cc2a390591584729fc2feef423663713cc6739 # incusd/network/ovn: Port CreateAddressSet to libovsdb
git cherry-pick 5c23be431ca74443dd4795594023263fcfa0a6d7 # incusd/network/ovn: Port UpdateAddressSetAdd to libovsdb
git cherry-pick 762967eae8bd565daa76b1eef30788956668f99b # incusd/network/ovn: Port UpdateAddressSetRemove to libovsdb
git cherry-pick 0769b1525682797cdf7e4ed32d82e44a1d55f169 # incusd/network/ovn: Port DeleteAddressSet to libovsdb
git cherry-pick 2d3ce78a042ceed365378a04a065942958f975b8 # incusd/network/acl: Update for OVN function changes
git cherry-pick f825f08c42c83a24599bb85bbc0b161170b656f7 # incusd/network: Update for OVN function changes
git cherry-pick f6696d88e1003c3c36ebf7683ada8674242846c0 # incusd/network/ovn: Port UpdateLogicalSwitchPortLinkRouter to libovsdb
git cherry-pick de65389a8cf914a72dbdfde66dd32599fd483dbb # incusd/network/ovn: Port UpdateLogicalSwitchPortLinkProviderNetwork to libovsdb
git cherry-pick 1ebebf7356541125a614d6e3737490a4aa89a5ad # incusd/network/ovn: Port GetLogicalSwitchIPs to libovsdb
git cherry-pick fa5aed1a514801e2078d895316883b4b4ffbfc3a # incusd/network/ovn: Port GetLogicalSwitchPortDNS to libovsdb
git cherry-pick c40746092f08975cb2de1df03e9b45fe0aa28fa9 # incusd/network: Update for OVN function changes
git cherry-pick 70246e7b92b9b73a3ec027d8b16157b1473c0537 # incusd/network/ovn: Port UpdateLogicalSwitchPortDNS to libovsdb
git cherry-pick 2f9bbd24a8c367fad3598078810347a3d1bd02c9 # incusd/network/ovn: Port UpdatePortGroupMembers to libovsdb
git cherry-pick 625d72cc41739696da1441b27a304cce6cb3c9b3 # incusd/network/ovn: Port UpdateLogicalRouterPolicy to libovsdb
git cherry-pick 72d715002d5f947471d8c76da6e194f90e019c2a # incusd/network: Update for OVN function changes
git cherry-pick 9efde7ca08c9087a955c4b84b7d606bdacfc0d33 # incusd/network/ovn: Port CreateLoadBalancer to libovsdb
git cherry-pick c00cfdaa4bd631b58f369270ac1381133d73ca7a # incusd/network/ovn: Port GetLogicalRouterRoutes to libovsdb
git cherry-pick 3e0b0f6320e780b41b10ac0ce651dae9273ce531 # incusd/network/ovn: Port DeleteLogicalRouterPeering to libovsdb
git cherry-pick 99996103509bb557b21f968036b14dbe2c4903a9 # incusd/network: Update for OVN function changes
git cherry-pick beb1d679f25671bf575e3d3a5bece1f72a560bd4 # incusd/network/ovn: Port CreateLogicalRouterPeering to libovsdb
git cherry-pick 43c2ef0d582e9bd56ed7a03680f1ec76c4471449 # incusd/network: Update for OVN function changes
git cherry-pick 08f6d56b59251ea3d1f8e71ae32c2ef49cc35234 # incusd/network/ovn: Port logicalSwitchPortDeleteDNSOperations to libovsdb
git cherry-pick a2b90cd42561c3aaa501feb3eb87b2ebe35caddd # incusd/network/ovn: Port DeleteLogicalSwitchPortDNS to libovsdb
git cherry-pick 46ef843a412375fdb2486d63c276d5bd761e9aaa # incusd/network/ovn: Port logicalSwitchPortDeleteOperations to libovsdb
git cherry-pick 7395461cf1458f97eff8c8852b096627f5851ea7 # incusd/network/ovn: Port CleanupLogicalSwitchPort to libovsdb
git cherry-pick 56773d9a8c568c134d32ac1a23897e5060ec2769 # incusd/network/ovn: Port aclRuleDeleteOperations to libovsdb
git cherry-pick c37abeae6d0cf6efbc56fc5c06154d61263b5790 # incusd/network/ovn: Port aclRuleAddOperations to libovsdb
git cherry-pick a8576e25fd633957e39c45ca0c5a0887af553636 # incusd/network/ovn: Port ClearPortGroupPortACLRules to libovsdb
git cherry-pick b524c503331545d1ff9d67ae22d118a87b133d95 # incusd/network/ovn: Port UpdatePortGroupPortACLRules to libovsdb
git cherry-pick 6eab8432aadac51a054a1c864d6e08021c0275f7 # incusd/network/ovn: Port UpdateLogicalSwitchACLRules to libovsdb
git cherry-pick bab70830cd64e77d948d7cc048a88656c50f4622 # incusd/network/ovn: Port UpdatePortGroupACLRules to libovsdb
git cherry-pick 20e552557e5bb5bbfc0c0c089e7c342c856421d5 # incusd/network/acl: Update for OVN function changes
git cherry-pick 3219d15425fd1336ab880345bbdb559a8c181fd6 # incusd/network: Update for OVN function changes
git cherry-pick c49100a279d969d29f6a8d19d5158d92a5633d46 # incusd/network/ovn: Remove nbctl
git cherry-pick ed4d17e9ecf14148f0b814e7a645084ae1bd11f8 # incusd/instance/edk2: Add new package to track EDK2 firmwares
git cherry-pick 5ca9dff37f9467b6ae951dc833e9881dfc9daddd # incusd/instance/qemu: Update to the new edk2 package
git cherry-pick a8322c9b3a8da3ca9781a2e8d287cfc74729fee0 # incusd/apparmor: Update to the new edk2 package
git cherry-pick a0f00bf93c78d6b6e1eab926733c78e5e97a18ff # doc: Cleanup OVMF/EDK2 handling to cover aarch64
git cherry-pick 2f8a458852ce60cb4beeea0c02ff3d621610740c # incus/storage_volume: Tweak help messages
git cherry-pick e770a71f77496e96b0315dc149c9ff20cab48259 # i18n: Update translation templates
git cherry-pick ddba6bce28fa361327b3a4af294e82e6bcc21508 # incus/storage_volume: Fix lint
git cherry-pick d90014dcc9b3804241b64add16365f137f240110 # doc/installing: Mention incus-tools package
git cherry-pick 579ee11e8fb791e561338b8bc8b19c6680090557 # incusd/apparmor: Allow devpts mounts
git cherry-pick db3931780d6406de5d6c1f500965a91bd4a618c0 # incusd: Improve profile rename errors
git cherry-pick b7c25c644556761d9bdf6f3f390adbc13b020713 # incusd/sys: Add cluster resources cache path
git cherry-pick 6d5cecde1e60969c79a668635334ecb38c675051 # incusd/daemon: Locally cache other server resources
git cherry-pick 7b090dc60d79e0332c120de67c73c2dabf1404ab # incusd/instance/drivers/qmp: Add QueryCPUModel
git cherry-pick 47df62388b5a81f8bcb80fe6d7468647dbfd9b2f # incus-user: Use shorter interrface name for long UIDs
git cherry-pick cc38d4ff6ad28478ae4dfc25717050eda576b2f5 # incusd/device/network: Fix Tap interface MTU when in OVN
git cherry-pick bde005e4f5db0e52b14b254ebeba14fbd20caef9 # incusd/isntance: Don't expose all internal flags in INFO message
git cherry-pick 50c8f44dbde8a988d495084d6e98e160a4698c1b # incusd/instance/lxc: Allow calling Update from a Create operation
git cherry-pick 768d47d044902250f82ef99ba570cd14f60b76b2 # shared/subprocess: Allow building on Windows
git cherry-pick 56a3b7f299f2e5c3a2ae5c4b0dce4a308ca278d1 # client: Add basic OCI registry client
git cherry-pick e976088de179584ae4481d052a7312b4c3eea30c # shared/cliconfig: Add OCI remote support
git cherry-pick 6eb970d1da6f4eb1fa35a3c5251fbd17f84df51c # shared/subprocess: Fix gofmt
git cherry-pick c1f4f32d7131e60e3c810da36e80d9da4716766f # incusd/storage/lvmcluster: Don't allow buckets
git cherry-pick 3a0c698df5b9cac8caf417c070e43638a63cf5de # incusd/storage/lvmcluster: Don't exclusively lock ISO volumes
git cherry-pick 5941015bcd88986146e6e3535b940045992b9702 # incusd/device/disk: Allow attaching the same ISO to multiple instances
git cherry-pick 15e6e522c764302ef6b46a36ba2bc047fa3c706e # incusd/device/disk: Allow live-migration with agent/cloud-init disks
git cherry-pick 95fb17cd3c1abffce0e8a89ae0048d2e9364cf9d # incusd/instance/qemu: Fix live-migration with agent/cloud-init disks
git cherry-pick f3caa114abdcbd60015dbb7329c3b6da9bd190a3 # incusd/device/disk: Don't crash on uninitialized pool
git cherry-pick 664ce7cfce3fedc0a6cc00c3272639fd1e9b4892 # incusd/storage/lvmcluster: Always use shared access
git cherry-pick b83b35399c089bffc91261eb43774eb44d9d6778 # incusd/instance/lxc: Don't report filesystem metrics when no per-instance value
git cherry-pick 471c0de3b90f4afa8fed6cf1bb760f83eb539ea1 # incus/top: Set interval to 10s (minimum server-side is 8)
git cherry-pick 2762921e22bcb2666498bcce30cf78568458ba8f # incus/top: Hide zero values
git cherry-pick 698aa57fd8996ff47b0d281024a9955c99449315 # incusd/device/disk: Mark virtual disks as always migratable
git cherry-pick ca64aa1c64fe484488041874ef700d5a8aca8960 # tests: Update metrics test for recent change
git cherry-pick e5179c23c8e6696832424a7d94a4f988b78592ba # doc/storage_backup: Fix command example
git cherry-pick 9ef3173980194067b823d2cd9df8063707c66645 # incusd/instance/edk2: Support OVMF filenames on arm64
git cherry-pick ff744921840a06b970998ed6c371ad706b7b4761 # incus/s3: Fix mcli minio client executable name check
git cherry-pick a706df545f2b8c32e523412c0616bb6f241ca352 # Change RunDir file mode to 0711
git cherry-pick c19644c610c0a451477bc7308b29ebd66a8a55d9 # incusd/apparmor/qemu: Relax apparmor rules a bit
git cherry-pick d33cf8693dc7c6971760888986edad286cc9cb0a # incusd/apparmor/qemu: Fix typo in rule
git cherry-pick 7e437290c84b2d36b097433d9264ec59d43bc304 # incusd/apparmor/dnsmasq: Relax rules a bit
git cherry-pick 2708c8bb843e04b3435c1da5ff469dbdcd06666c # incusd/db/node: Fix version check in GetAPI
git cherry-pick fa88a50fa3d12314254dba944f8851c234ac8acb # incusd/db: Allow cluster startup with differing API extensions
git cherry-pick db09e112b004c0a22b29279861b7cc86d5277bad # incusd: Extend heartbeat data for minimum API extension count
git cherry-pick d158502e5926865960425c68b0c6d23e3757fce8 # incusd/storage: Use writeback mode for qemu-img convert
git cherry-pick b92fe219fa2823d59d272ac6c16ec6d1b5c2dc1b # incusd/storage: Improve unpacking message
git cherry-pick f0d2151c127d730874908ced5ae9eb6b7517d233 # incusd/operations: Handle percentage only updates
git cherry-pick cbc101ac51a1eeb015c2564be6d237cee15d4c62 # incusd/storage: Pass through tracker to qemu-img
git cherry-pick 869e33c6ccd978296517077bbd1d4eb5f92cec65 # [lxd-import] lxd/db/cluster: Rename "node" to "cluster member".
git cherry-pick 62fc742993f905163036bd977b58ad4cec6025ba # [lxd-import] lxd/db/cluster: Update error messages in unit tests.
git cherry-pick 3a9756dc1628a01451f041fe09ea08dd479b96d1 # incusd/db/cluster: Update tests for relaxed API extensions checks
git cherry-pick 9750da5d5fffad1a35a9aaac5d3e4839f9163a92 # incusd/apparmor: Implement progress tracker for qemu-img
git cherry-pick 563e3f7fd47e019b3c3345749b0827ef0bb772be # incusd/cgroup: Handle unknown devices in io.stat
git cherry-pick f172368e4ee7c800e038be0d63c2e71d7a71eaf3 # incusd/instance_post: Always set the target project
git cherry-pick 5cd49ac7d74a58846c75ecf97fde239ba9227393 # incusd/storage/drivers: Consistently set VolumeMultiNode
git cherry-pick 294598769728b44e9a67069800da8fd1f516e3f8 # incusd/storage/lvm: Require an exclusive lock during snapshot
git cherry-pick 8a5a13697c4bbe58d39d35f15afd002e0c7184cd # incusd/storage/lvm: Properly handle activation during resize
git cherry-pick 407c83246fad4dfda4e84f1142e72f41f9450d2e # incusd/storage: Properly detect filesystem on remote block
git cherry-pick 1375589aa0a230c794e793cf832c6d4db7878cb2 # incusd/cluster: Always attempt to forward custom volume requests
git cherry-pick 8086a0d3a0e0eb71db87c0c7fe085adc80d0cd3f # client: Always set GetBody
git cherry-pick c87420bc2cbcef748453a82e34ba74138edca3a6 # client: Report OIDC refresh failure
git cherry-pick 2e959348065d95582fc763a0c16331bd11072a9a # incus/remote: Forward OIDC auth failures
git cherry-pick 759f39d02496da6c989590f7e3803937e9327e99 # client: Retry when told to by the proxy
git cherry-pick e63fc73112176ce0d73bb27062caa8d237d2d5df # Use qemu-img convert output to update progress
git cherry-pick 2928a8e9731e5af8a6b75bddf9305a9ae633d90c # incusd/cluster: Add flagFormat
git cherry-pick f1b35e0b8a97e7418e7b4360a21627a0b31befac # incusd/isntance/edk2: Move seabios to /usr/share/qemu
git cherry-pick 99d1fe855db6ecc6c3ae5e467530284eaa5846f3 # incusd/isntance/edk2: Add ArchLinux x86_64 paths
git cherry-pick 46fef15ab8c546e2c9ced3ed82321c518af75efa # tests: Use future values in property test
git cherry-pick 66214e629d65b20184d312f72df4a2d018f9da59 # incusd/db/cluster: Cleanup indentation
git cherry-pick b05cc4fa89082ae6ce3fdc57f975130c11c42bda # incusd/db/cluster: Update schema
git cherry-pick ce3537aa8bc0739041bbedebef23c2cd3f94dd3d # incusd/db/generate: Add exception for cluster tables
git cherry-pick 37604a8dfd529956bb51017c78cd3f61531966f2 # incusd/resources: Add sortedMapKeys
git cherry-pick 2cf9941baa9b47cd5e403b598d25cd986dceafe0 # incusd/resources/cpu: Sort sockets, cores and threads
git cherry-pick e04dae41592ad46b1ab4085012e27faf2c9b1303 # incusd/auth: Fill missing local volume location
git cherry-pick 19b95f968d4b97cc80341e1f0b1d4945da23a393 # incusd/cluster: Correctly record volatile.cluster.group on move
git cherry-pick e45cfc1dae0e1b9f45ae76631539c9da5a69acfc # incusd/migration: Show source errors first
git cherry-pick 5cd7c9f6f1c7b5a65d980dfe123c66bd21942ed8 # incusd/instance/qemu: Clarify live migration error
git cherry-pick 1787edef813f214c4fd70d163333baacd0d9d0eb # incusd/cluster: Attempt to ping the server prior to healing
git cherry-pick 65be2914530df38863e3bd9d8c1578802d7e35ba # incusd/instance/qemu: Fix bad timeout errors
git cherry-pick 6b5e0709435550149ce0b00a526ab686791a0bdd # incusd/instance/qemu: Send two ACPI events on shutdown
git cherry-pick cb8fb00568b0c2452bd1dd85e56e9f25457110cf # incusd/instance: Add progress tracking to export
git cherry-pick e17afcf9f76c2de6f8252545ef72dcc93513ae32 # client: Remove GetBody when can't seek back
git cherry-pick 81ba3463b3e82d3f81bc180fcf15d39d6620f8bd # client: Add Seek call to GetBody
git cherry-pick 356d75ca81e67783ebfea57e9f260a7dd7d9313d # incusd: Simplify image replication
git cherry-pick 97174c564f01d6707347fee08fa41c20835278d7 # incusd/images: Only remove from authorizer once
git cherry-pick 337e11546f14133671c5212276a167900324042a # incusd/images: Correctly record new aliases
git cherry-pick 62247d7b0ac65a7d69c0575b9e98ab3a3141dd54 # incusd/images: Correctly remove aliases
git cherry-pick 26a5a27378b43d687b3f92cd499579b94812c12b # incusd/images: Set authorizer entries at the correct time
git cherry-pick 278346e4f36fa672bfae65b4ea2d358534b6af18 # incusd/images: Don't alter image info on cluster copy
git cherry-pick c6b408b3a46f49b6df8905b06b6d876d2e5615dc # incusd/storage_pools: Set authorizer for pending pools
git cherry-pick cb1a1eb8596b565339bc2005d96fc585181918a9 # incusd/networks: Set authorizer for pending networks
git cherry-pick 6f29617971c617aecf07d7a786603972f9af4d51 # incusd/network: Handle long interface names
git cherry-pick 2a2a3e90db645df48584587c0eb270b3e54a58d7 # incus/cluster: Cleanup certificate update message
git cherry-pick 2f5f50c605e6d4fbdc277af01ac69f74008043d7 # [lxd-import] github: stop purging core20
git cherry-pick 1ded3b81b2d5b4ad4f1068b518df0f958493c830 # [lxd-import] github: purge disabled/superseded snaps
git cherry-pick 75feddc00c34681417c9024f120902ba21599b4d # [lxd-import] github: move snap removal to "Reclaim some space" step
git cherry-pick c2270df3f6158e09e5eb4a105aea95e7c53aa8f7 # [lxd-import] github: put docker removal its own step
git cherry-pick 17506e403463f03716d657be14285abafe369942 # [lxd-import] github: mask lxc{,-net}.service in a singe command
git cherry-pick c2f943c527daf63bc5bcda871c40f8ecf377db87 # [lxd-import] lxd/instance/drivers/driver/qemu: Don't leak file descriptor when probing for Direct I/O support
git cherry-pick 218c9695592dcf1fa0ecff018e78ee3f04790aad # [lxd-import] lxd/network/acl: Change protocol field for ovn logs
git cherry-pick 4abe78277cf9462695dd187fe26e1bf4943fe3b5 # [lxd-import] lxd/instance: Reject limits.kernel config for VMs
git cherry-pick d6ab4777bcbae09182445fbce06df266dee9d200 # [lxd-import] doc: `limits.kernel` only applies to containers (see #12874)
git cherry-pick 03f5f175662c921dc1e1c759081c0a71bb0e2cca # [lxd-import] lxd/storage: Fix resize for pools with custom zfs.pool_name
git cherry-pick 11787472e572c6864801901710a7846354c5be21 # [lxd-import] lxd/storage/drivers/driver_zfs_utils: fix typos
git cherry-pick 1acf8694624411034e91191fc7e5e1492088e389 # [lxd-import] lxd/storage/drivers/driver_zfs_utils: make it explicit that blocksize is in bytes
git cherry-pick b9c8f8f50b966591bdc2cd0fd88418aa5c76aaac # [lxd-import] lxd/task/group: Make cancel type of context.CancelFunc for clarity
git cherry-pick 878ac6d6f6ac3fc13a5979621063d25eb48fb78a # [lxd-import] doc: Add paragraph on how to delete images
git cherry-pick 3ae9f423b59d990fc287715ba25226da8e688e57 # [lxd-import] test: Add exec exit code test
git cherry-pick d67f737d95cddbf2833312904ffbdce3c1460869 # [lxd-import] lxd/apparmor: allow confined services to receive required signals
git cherry-pick d613c51ff82a04fee3196da997855a62d4bb4751 # [lxd-import] lxd/rsync: Consistently compare files on nanosecond basis
git cherry-pick f8c45bde4ad62b0bd863eac989953be89496fc0b # [lxd-import] test/suites/migration: Check for file contents after refresh
git cherry-pick e20744076b338bd19e131e3208054657da79094a # [lxd-import] test/suites/migration: Check local and remote instance refreshes based on nanoseconds
git cherry-pick 8e4d1d9f9684d80156359ad49cd7ca1e8b54b10c # [lxd-import] doc: add paragraph on how to delete images
git cherry-pick f90674bae7bf64f5bb6a7960f32cef18eb7e407e # [lxd-import] doc: enable multiprocessing for pyspelling
git cherry-pick aabd94b8bd5673a797d388e13b448a8c36137c29 # [lxd-import] Makefile: have run-parts report which script it runs
git cherry-pick ffa5f71570140e94e1cb71c0bd13dcf887f4d89b # [lxd-import] lxd/storage/drivers/ceph: Disable filesystem config keys on block volumes
git cherry-pick 11835641028b8946338fc233d030e875b3916e96 # [lxd-import] lxd/storage/drivers/lvm: Disable filesystem config keys on block volumes
git cherry-pick 6175a1b51c61bd52b1f02a9f86cb1f780e5da057 # [lxd-import] test: Add check to restore custom volumes of type block
git cherry-pick 78cae123e76aedf4159be839d00a37a9af271440 # [lxd-import] lxd/storage/drivers/ceph: Update UnmountVolumeSnapshot docstring
git cherry-pick 74696c1d2df5c8523951a1b78a373ae865e71b51 # [lxd-import] lxd: Improve error check for existing certificates
git cherry-pick 6bc4224c5a70d17c9ed5f16baa966b5c2b0bbdef # [lxd-import] shared/api: Updates swagger description for certificate field.
git cherry-pick f10b26707fcfc2880b509a5b2fd4c48d9ac83eb0 # [lxd-import] shared/api: Fix lint errors (receiver-naming).
git cherry-pick f9748b706c41b446693ea3c931b4efbbe14906a5 # [lxd-import] lxd/db/cluster: Fix lint error (revive: var-naming).
git cherry-pick 8a82dab9cafc2e80ea2f8b164a0acbb3c0ea26f6 # [lxd-import] lxd-migrate: Ignore lint error (revive: deep-exit).
git cherry-pick 6e17cbb5bc99c5d59acbde29ee32c09601fb2681 # [lxd-import] lxc/remote: Fix lint errors (revive: exported).
git cherry-pick 98a8572d32d04f2d536500637a25102c4abfddb5 # [lxd-import] lxd/storage/backend: Don't validate custom storage volumes twice
git cherry-pick 61260262d98c9874f446d0d5d1dd2d3792608c72 # [lxd-import] lxd-generate: Return helpful error instead of panicking.
git cherry-pick 67ff1d2201067839935f2d33b7536787c00265cc # [lxd-import] lxd/storage/backend: Use quotes consistently for error messages
git cherry-pick dc79fde4e4d715d5fa336788bcef9f4c9c66c562 # [lxd-import] lxd/project: Don't panic on StorageVolumeParts
git cherry-pick e1afcee931a6abe4d3770b362a7f3ffd95ffcea6 # [lxd-import] github: don't abort on remount failures
git cherry-pick f8e8ebaa12f509f599ba699cbb18037b0c30e977 # [lxd-import] test/main: add log grouping (GHA)
git cherry-pick e4f308b04840f2c157db98182c7a50773629d3cd # [lxd-import] test/main: show dmesg on failure
git cherry-pick eef97b1af9236926ef8442b7a86b6322b1190fa9 # [lxd-import] lxd/api/internal: Use correct quoting for error in internalImportFromBackup
git cherry-pick 20b42987b081fcc16151adcf8ebb7ec28f0f934a # [lxd-import] lxd/db/cluster/devices: Use correct string quoting of device type for error in NewDeviceType
git cherry-pick 921deab0241912de16ff8c1b448002328f82e379 # [lxd-import] lxd/instances/post: Improve error in createFromBackup
git cherry-pick 41bf4f6b21cd79feecb07e4b714171cff1fe9d9b # [lxd-import] lxd/storage/backend/lxd: Update backup.yaml after instance and volume DB records have been generated in CreateInstanceFromBackup
git cherry-pick 9760ca660379c48e5a4acceca610b62cf4d3d17b # [lxd-import] test/main: don't wrap tests logs in log groups
git cherry-pick 76227143984bf88003de365d79eef127a95bea10 # [lxd-import] lxd/device/disk: Remove config.iso file when the cloud-init:config disk device is removed
git cherry-pick 11d8efe016e401633638b63a4b44b3ddcb55fd6d # [lxd-import] lxd/images: Add project to error in autoSyncImages
git cherry-pick 2484ebb9fd91dfbb718fefe9bc0ee04ee6559564 # [lxd-import] lxd/project/project: Remove optimisation from StorageVolumeProject
git cherry-pick 323b4cbc9c58aadff5cb27fdb2922d1db5721072 # [lxd-import] lxd/storage/volumes: Remove unnecessary 2 line variable definition in doCustomVolumeRefresh
git cherry-pick 0177bf986809920c891a458450d4ae053b4aaddc # [lxd-import] lxd/storage/volumes: Remove unnecessary 2 line variable definition in doVolumeCreateOrCopy
git cherry-pick 8fca9bccb730700d22a7f12dcbc17c80c21b79e2 # [lxd-import] lxd/storage/volumes: Validate source project in doCustomVolumeRefresh
git cherry-pick f6d23bb02debc2d8246b309dae23da0bfdbfb605 # [lxd-import] [lxd-import] lxd/storage/volumes: Validate source project in doVolumeCreateOrCopy
git cherry-pick 176783d11e98aea66a028fa1c8ee508759763f58 # [lxd-import] lxd/db/cluster: Remove redunant parentheses.
git cherry-pick 657aaee2ceaa1ce2b158de4ca53a837535daf547 # [lxd-import] lxd/migrate/storage/volumes: Use volume name from DB in migrationSourceWs.DoStorage
git cherry-pick b54c60999f2a23b1536c86abe57c03ae2c857e3d # [lxd-import] lxd/network/network/utils: Fix incorrect conversion from int64 to int in inRoutingTable
git cherry-pick 29ce617c1935b37b89d2cacb09f1e4f9bb8877c2 # [lxd-import] lxd/network/network/utils: Remove unnecessary call to fmt.Sprintf by passing base to ParseInt
git cherry-pick d57e14de4faba053762b6f16c9fe8ea5b89b9af7 # [lxd-import] lxd/response: Use SmartError if SyncResponse success=false
git cherry-pick 3b0ec4c9b771441d8e2518cfbe920cb12daf2112 # [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Fix error scoping in CreateVolumeFromCopy
git cherry-pick 97523ce986e8c0050a1e1b4414934c7dab56721c # [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Define send/receive channels together in CreateVolumeFromCopy
git cherry-pick bafa1103a743a0463f12676b6b187b83a66a3c06 # [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Kill sender if receiver fails in CreateVolumeFromCopy
git cherry-pick 2ad9fc13a8bf48504b7b9e49ce76b45fcb1e67c0 # [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Handle multi-line errors in CreateVolumeFromCopy
git cherry-pick 60e89a426f17cf21fee3f5ebca762f31c7b6d957 # [lxd-import] lxd/storage/drivers/driver/btrfs/volumes: Fix hang when btrfs receive fails in RefreshVolume
git cherry-pick 7c0b2379953f877049a5a290c48b52e3b5dcf563 # [lxd-import] lxd/storage/drivers/driver/btrfs/volumes: Handle multi-line errors in RefreshVolume
git cherry-pick f78c18826aac49d42f9e52f3b654db430535af71 # [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Aligns RefreshVolume with BTRFS driver
git cherry-pick 90bbf39748d1df309f0ce257b210546c89d2a9e7 # [lxd-import] lxd/response: Fallback to error response after setting headers
git cherry-pick 3c0a5b873b2feb2850f8746e91f4c579d2d5b999 # [lxd-import] lxd/storage/backend/lxd: Use volume name from VolumeDBGet in BackupCustomVolume
git cherry-pick c01d9b7db8856f9561e04e1e1f125972bff7ed1f # [lxd-import] lxd/storage/drivers/btrfs: Clarify fallback in case UUID discovery times out
git cherry-pick 82c30f103fbd9e96fd0836f688f8bc7278fdf488 # incusd/db/cluster: Fix import shadowing
git cherry-pick d8e7540b5b9fdcb736ffc70cf10e68db0ac16f11 # doc/rest-api: Refresh swagger YAML
git cherry-pick e1258e27e653a96f05d1f46f7749ea8941021085 # [lxd-import] lxd/storage/drivers: Add volume param to roundVolumeBlockSizeBytes
git cherry-pick 123fca0b83c8c51b091038f23ea9c1b88a08697c # [lxd-import] lxd/storage/drivers/zfs: Round to zfs.blocksize or 16KiB
git cherry-pick 3f96ea3381fe0163f5004808cfba6633412af505 # [lxd-import] test/storage: Add non-power-of-two sized storage check
git cherry-pick 7a402d002203f803fd85ef28dcc8b522fdce3b48 # [lxd-import] test/storage: Remove zfs rounding test
git cherry-pick daa460626798310a45d63756d35f342e4120d2b3 # [lxd-import] lxd/storage/drivers: Refactor volume size rounding logic
git cherry-pick 058cfe868a61eb63e81490e7fb708bf6cec3bf20 # [lxd-import] lxd/storage/drivers/zfs: Wait for device to appear when activating a volume
git cherry-pick 435c2c329c04bdb3e7edc1a5366b38b4bf25e43d # [lxd-import] lxd/storage/drivers/zfs: Check for non /dev/zvol/* paths
git cherry-pick 3a637e7f53c0307016ee015cace70cc376cc4765 # incusd/storage/zfs: Fix import shadowing
git cherry-pick fa79f0c17ea16d92c1ba64e17a9f372999ee2a7d # Make run-parts running compatible with different versions
git cherry-pick ab8fca0e52852c91787f1ed91521a47ce555cbf9 # incus/top: Properly filter disk usage
git cherry-pick cbc404e493c854125f439c70828bbfb2ad24d3a6 # incusd/state: Add Cluster gateway
git cherry-pick 5b9afebdd04a973c6d97013bf4a397c7da7f8a8c # incusd/daemon: Sort state fields
git cherry-pick b026c0f3a68f4904597f8b3209db8dc61b55add6 # incusd/daemon: Add cluster gateway to state
git cherry-pick aad0a63b1847918977ba4537524529fa8fca4c7b # incusd/acme: Update for state change
git cherry-pick 224d17ed943ffea343e01a94e7241d7d8f7c9a67 # incusd/images: Update for state change
git cherry-pick 80e17d141de10f3ffeb4da6ec9eddb51dae004e8 # incusd/operations: Update for state change
git cherry-pick 7d8963a3182d549a834cbf265636cba7a6d54d23 # incusd/instances: Update for state change
git cherry-pick 1d7824a6fd24baa24caa99db178615b4df3fe20b # incusd/patches: Update for state change
git cherry-pick cc6e08666f655f6ee3ebe007ec8d1ccb66803668 # incusd/cluster: Update for state change
git cherry-pick c06d87494214680974a5e1c4c1286348f0f49e32 # incusd/instances: Use targetGroupPrefix
git cherry-pick 8ac27779b0311d49bd9a444c7ab9bd8b2d650f9c # incusd/cluster: Split files
git cherry-pick 98af3f57e571823869c6f26b0ae49ee6983bb6c4 # incusd/cluster: Fix import shadowing
git cherry-pick 513bccc3d32da1729844a6e5d8176e2ceeb54534 # incusd/cluster: Re-factor healing logic
git cherry-pick fa187d31cbe5a48ac8255b5debd2d9781834ac00 # incusd/cluster: Improve logging
git cherry-pick 047d8b090103d93a0f883cedba3e6bd809522bd1 # incusd/cluster: Reduce dqlite logging
git cherry-pick f2e91a1835338d2900cc72509f074cda9e147610 # incusd/cluster: Extend HasConnectivity to do API checking
git cherry-pick e7bf949cc84cb14d341f6706ec36eaa56c43b983 # incusd/cluster: Add HasConnectivity check to event handling
git cherry-pick ae0c4a26486763f5ab0039d4dcc1e26c369e4268 # incusd: Don't block on startup for cluster queries
git cherry-pick 5b5ce64d00819a2e04ea670fc65895f14c065e73 # incusd/cluster: Rework offline server detection
git cherry-pick 3b86b6ee4b681b25d7baa1d1478bef42dc4938f8 # incusd/cluster/evacuation: Add separate healing mode
git cherry-pick a65879bc7f3b9df940eff1a33094defcff3592e3 # incusd/cluster/healing: Try up to 5 times
git cherry-pick 4c76cbf8eb603ef58e32646479ab5b0914bd51ff # incusd/cluster/healing: Add logging
git cherry-pick 22da35d4c4a1191febd36d8875015d59da5c3f5c # incusd/device/disk: Fix bad CanMigrate logic
git cherry-pick db00b8f89d791e2dc32f33b91b134c7c4409021f # incusd/storage/lvm: Properly activate/deactivate ISOs
git cherry-pick 2c7774cde94c93a5394d35913082c90b420337b1 # incusd/images: Expose image type as header
git cherry-pick 9d58f4efa96502626e7872561941c4681172d7ca # client: Skip image hash if OCI
git cherry-pick 022d28c2ceca9f5363c7d992d0392466d13315fa # incusd/device: Don't fail on LXCFS device entry
git cherry-pick 9b88efcdd9cc2a308cce687c7071718473c02a55 # client: Report source errors too on copy
git cherry-pick e922b5d5bedc4563d43f1b264537e7adca1b3df1 # incusd/storage: Have roundVolumeBlockSizeBytes return an error
git cherry-pick 0173de4d9754035865f190390e6d531acedbdfff # incusd/instance_post: Fix cross-server live-migration
git cherry-pick f6e8eb1308c4abee608a9ee1c8288fe96fa48adf # incus/image: Correct image copy logic
git cherry-pick eb7c1379d2bb447d10d6728e243b59aa659996f4 # incusd/storage/lvm: Hardden common functions
git cherry-pick 476652105646f8d4a16c63b502bd8b4ae4cba7f5 # incusd/api: Don't panic on missing config
git cherry-pick 97f6c52c4c66a4c2ac9f518dd6709fc31190bb6a # incusd/storage: Add Deactivate flag
git cherry-pick 53eb6348422409105e9c3866c1189011b6506286 # incusd/storage/lvm: Add deactivation step for clusters
git cherry-pick 61692509bf78a4d19d8a93304d918c9aa758d8c2 # incusd/cluster: Return clear status for servers currently starting up
git cherry-pick 30ffea29d81d683718ab31b908751ded7005ae45 # incusd/instance/lxc: Reduce logging level
git cherry-pick a34ca847b4cb3f9461f8048989d45857cdda566d # incusd/instance/qemu: Reduce logging level
git cherry-pick 9f5902bff0fbf31b630d03e06a2a2696c9265c5d # incusd/migrate: Reduce logging
git cherry-pick ca5b2cb2d54ae51d196e1bd380bbf5cf52e851bc # incusd/storage: Reduce logging
git cherry-pick a277d933a1bfafd5e198a18887b1dd8c49fd92d9 # incusd/instance/qemu: Remove double lifecycle event
git cherry-pick b0622c5d3bf6cc60f5a8ecc9847688ded8401dd9 # tests/clustering: Use correct target project argument
git cherry-pick dd47cb8bfca95da26767e62e24bdc04d4e4aa8c9 # incusd/isntance/edk2: Fix CSM handling
git cherry-pick c687ed61fb26eefea0de54399a68252d5def1e63 # incusd/storage/zfs: Always call tryGetVolumeDiskPathFromDataset
git cherry-pick 9d7cdeb956cb3982379e124822dc24fd9635f98e # incusd/network/ovn: Require functional uplink
git cherry-pick 5d2c563e9f1625019088f6f6685a3e5b8c9c8264 # doc: add colima instructions
git cherry-pick a191a62e8f6ee32eab9a55cb6e74be5f837d00a4 # doc: Update incus_alias.md
git cherry-pick 3ddb5d86b8f7894248782a06c0e170153168b5a3 # incus/network/load_balancer: Fix example
git cherry-pick 3d1ff2da78e6129f1853b9585a86f03be2c377a9 # i18n: Update translation templates
git cherry-pick 3c865cc7b568bfcb9425a8d9ab105bdf37150cb0 # incusd/network/ovn: Fix crash on uninitialized external IDs
git cherry-pick fe8fa44e77430c7d28627dd6e8cdad2302f6719d # doc/instances: Add VM agent install instructions
git cherry-pick b4f27e3041dc8ce8e6b212ee8caba9c2ad71bb9e # shared/api: Add Config to ServerUntrusted
git cherry-pick 59289d3c126d367f4c098a376d40c82234920d5a # doc/rest-api: Refresh swagger YAML
git cherry-pick 89aade9256c24191eb2bfa15cfb4917d19fbd199 # incusd/api_1.0: Expose user.ui config keys to all clients
git cherry-pick 5fc4448d90ac6222b47dc0c2beaf487429f5ceb4 # doc/server: Mention user.ui config keys
git cherry-pick c1d0849983f81caebf8a4c6432f63cdb0d198ff1 # incusd/auth/oidc: Better handle logout
git cherry-pick 3fe3417c001f064d646c486fd595959d19343ec8 # incusd/networks: Emit lifecycle event and authz entries for OVN networks
git cherry-pick 7eea07763d15eedd26d2af88f52a85fc6953d3f1 # incusd/network/ovn: Fix indent
git cherry-pick 2091a1a3ebbba83b5e0c0e7d61dcff0d3ede4384 # doc/storage_volume: Fix snapshot command
git cherry-pick 7b15d2e5f6d8f4f68b012e4c30015d25a7647757 # shared/api: Add EventLifecycleInstanceMigrated
git cherry-pick 345fdc12bf57d26f45ba0b851aae84a63e9dcd40 # shared/api: Sort lifecycle events
git cherry-pick dd19fa95202e2a93b173d6463cedcda943620c20 # incusd/lifecycle: Add InstanceMigrated
git cherry-pick 1d8cd983677f6ee0fea53be43c328221b2eb3e54 # incusd/lifecycle: Sort lifecycle events
git cherry-pick d5d5e0b80b11df60eb5450d79d31216814377848 # incusd/isntance/operationlock: Add ActionMigrate
git cherry-pick 9c4fef2bad9a02ae94ae3559421fdd843c35948f # incusd/instance/common: Add support for migration operation
git cherry-pick a8ebc0b41ac9494a7e5341012ef0f1df8e249efc # incusd/instance/qemu: Add support for migration operation and lifecycle
git cherry-pick cab076397481689bbb0e95fb9e5bcd8e111f0c3f # incusd/instance/lxc: Add support for migration operation and lifecycle
git cherry-pick e803b0ac4848c2d9861f59c9221b8522b42e91f0 # shared/api: Add lifecycle events for cluster evacuation and healing
git cherry-pick 9b53ed7de7a56c4a1ff4b743829c4abae8c5f113 # incusd/lifecycle: Add lifecycle events for cluster evacuation and healing
git cherry-pick 438f4248ada84005bf699a9a5aa1122b9f8ef15e # incusd/cluster: Add lifecycle events for evacuation
git cherry-pick b6356f8e2098f83c686c0a58b88d87fd7af1e1f5 # incusd/request: Strip port from event address
git cherry-pick 2811cbdcf089ec52d5ac61b5a99da77aafdb9db3 # incusd/instance: Properly link instance and operation
git cherry-pick ce275a4735021d817a6bacdd93c9edb8195ae7cc # incusd/operations: Add CopyRequestor for nested operations
git cherry-pick ae7fd874689b56df885664c052390ef59439ba9e # incusd/instance: Track operation during exec/console
git cherry-pick b9006bd1aaddc23642406587a22467e88913d6e0 # doc/clustering: Better document healing
git cherry-pick 61bfb13af11b8031b1ab3fa79923ce0dcc8318f4 # incusd/instance: Track operation during creation
git cherry-pick fd621c3eb22501760174cdf262fdb151a7596b16 # incusd/instance: Track operation during deletion
git cherry-pick fb26d616930d6868626a8801fbd2f14b0fb68002 # incusd/instance: Keep track of API operations
git cherry-pick 2ba57b1b7976718f664d45078fb7bfe96b5973b1 # incusd/instance: Set operations on snapshot
git cherry-pick af106e12c5f9ba59f5785a613446b2af754689f0 # incus-migrate: Properly handle projects
git cherry-pick 626ff5229b749f52fdb7efd104aabaa144ce1d9f # incusd/apparmor: Allow mounting zfs when delegation is supported
git cherry-pick 301c36eeb44036ccca57b75b256fa4b827714525 # doc/clustering: Add howto on cluster access
git cherry-pick bfbb712cb74d7ee5d99ab75352db5928a62de215 # cmd/incusd: Set keep-alive timeout
git cherry-pick 112af836365c79c5aa7a100f65ffd12c3a2e02bb # incusd/auth/oidc: Handle cases where we can't set cookies
git cherry-pick 2d611a29a3f9750a67856b71ea66989ac1501947 # incusd/instance/qemu: Deref ceph config path
git cherry-pick 0f35cd586256496e735d8be4eace77baad4896c7 # incusd/apparmor/qemu: Guess ceph config paths
git cherry-pick 9151058c8a7d29992bd1c831cd6f42a87dcbec6e # incusd: Switch OVN to a getter function
git cherry-pick e05556493733d9498d5110fd0912e265436d4c42 # incusd/network: Port to new OVN state function
git cherry-pick 624c100a19c7eb878203e56bcd94b97ddd1167d9 # incusd/storage/lvm: Re-try activation/deactivation
git cherry-pick fb84a5862c83dd4014ba9af7521c9bd8b3b598c3 # incusd/storage/lvm: Don't activate volumes during cold migration
go build -o "/opt/incus/bin/fuidshift" github.com/lxc/incus/v6/cmd/fuidshift
go build -o "/opt/incus/bin/incus" github.com/lxc/incus/v6/cmd/incus
go build -o "/opt/incus/bin/incus-benchmark" github.com/lxc/incus/v6/cmd/incus-benchmark
go build -o "/opt/incus/bin/incus-migrate" github.com/lxc/incus/v6/cmd/incus-migrate
go build -o "/opt/incus/bin/incus-simplestreams" github.com/lxc/incus/v6/cmd/incus-simplestreams
go build -o "/opt/incus/bin/incus-user" github.com/lxc/incus/v6/cmd/incus-user
go build -o "/opt/incus/bin/incusd" -tags=libsqlite3 github.com/lxc/incus/v6/cmd/incusd
go build -o "/opt/incus/bin/lxc-to-incus" github.com/lxc/incus/v6/cmd/lxc-to-incus
go build -o "/opt/incus/bin/lxd-to-incus" -tags=libsqlite3 github.com/lxc/incus/v6/cmd/lxd-to-incus
mkdir -p /opt/incus/agent
if [ "$(uname -m)" = "x86_64" ]; then
GOARCH=amd64 CGO_ENABLED=0 go build -o "/opt/incus/agent/incus-agent.linux.x86_64" -tags=agent,netgo github.com/lxc/incus/v6/cmd/incus-agent
GOARCH=386 CGO_ENABLED=0 go build -o "/opt/incus/agent/incus-agent.linux.i686" -tags=agent,netgo github.com/lxc/incus/v6/cmd/incus-agent
elif [ "$(uname -m)" = "aarch64" ]; then
GOARCH=arm64 CGO_ENABLED=0 go build -o "/opt/incus/agent/incus-agent.linux.aarch64" -tags=agent,netgo github.com/lxc/incus/v6/cmd/incus-agent
fi
make build-mo
mkdir -p /opt/incus/share/locale
cp po/*.mo /opt/incus/share/locale/
make doc
cp -R doc/html /opt/incus/doc
mkdir -p /opt/incus/share/bash_completion.d/
/opt/incus/bin/incus completion bash > /opt/incus/share/bash_completion.d/incus
- name: Build UI (canonical)
run: |
REPO="${PWD}"
cd /build/incus-ui-canonical
# Specific tweaking
git am "${REPO}/patches/ui-canonical-0001-Branding.patch"
git am "${REPO}/patches/ui-canonical-0002-Update-navigation.patch"
git am "${REPO}/patches/ui-canonical-0003-Update-certificate-generation.patch"
git am "${REPO}/patches/ui-canonical-0004-Remove-external-links.patch"
git am "${REPO}/patches/ui-canonical-0005-Remove-Canonical-image-servers.patch"
git am "${REPO}/patches/ui-canonical-0006-Remove-version-check.patch"
git am "${REPO}/patches/ui-canonical-0007-Improve-OpenFGA-support.patch"
git am "${REPO}/patches/ui-canonical-0008-Update-keys-that-aren-t-VM-specific.patch"
git am "${REPO}/patches/ui-canonical-0009-Fix-cluster-evacuation.patch"
git am "${REPO}/patches/ui-canonical-0010-Rename-user.ui_title-to-user.ui.title.patch"
git am "${REPO}/patches/ui-canonical-0011-Add-user.uid.sso_only.patch"
git am "${REPO}/patches/ui-canonical-0012-Skip-LXD-identity-API.patch"
git am "${REPO}/patches/ui-canonical-0013-Fix-network-forward-count-logic.patch"
git am "${REPO}/patches/ui-canonical-0014-Hide-Cluster-option-when-not-clustered.patch"
git am "${REPO}/patches/ui-canonical-0015-Add-optional-location-column.patch"
git am "${REPO}/patches/ui-canonical-0016-Make-migration-an-action.patch"
git am "${REPO}/patches/ui-canonical-0017-Wait-for-projects-list-to-be-loaded.patch"
git am "${REPO}/patches/ui-canonical-0018-Respect-image-profile-list.patch"
git am "${REPO}/patches/ui-canonical-0019-Add-support-for-LVM-Cluster.patch"
sed -i -f "${REPO}/patches/ui-canonical-renames.sed" src/*/*.ts* src/*/*/*.ts* src/*/*/*/*.ts* src/*/*/*/*/*.ts*
npm install yarn --global
yarn install
yarn build
mkdir -p /opt/incus/ui-canonical/
rsync -a /build/incus-ui-canonical/build/ui/ /opt/incus/ui-canonical/
- name: Build CRIU
run: |
cd /build/criu
make WERROR=0
cp criu/criu /opt/incus/bin/
- name: Build libnvidia-container
run: |
REPO="${PWD}"
cd /build/libnvidia-container
patch -p1 < "${REPO}/patches/nvidia-0001-Fix-for-22.04-build.patch"
patch -p1 < "${REPO}/patches/nvidia-0002-pre-load-libdl.patch"
make prefix=/
mkdir /build/target/libnvidia-container
DESTDIR=/build/target/libnvidia-container make install prefix=/
rsync -a /build/target/libnvidia-container/bin/ /opt/incus/bin/
rsync -a /build/target/libnvidia-container/include/ /opt/incus/include/
rsync -a /build/target/libnvidia-container/lib/ /opt/incus/lib/
- name: Build minio
run: |
cd /build/minio
make build
cp minio /opt/incus/bin/
- name: Build minio client
run: |
cd /build/mc
make build
cp mc /opt/incus/bin/
- name: Build seabios
if: ${{ matrix.arch == 'amd64' }}
run: |
REPO="${PWD}"
cd /build/seabios
# Build a traditional seabios.
make clean distclean
echo "CONFIG_QEMU=y" >> .config
echo "CONFIG_QEMU_HARDWARE=y" > .config
echo "CONFIG_BOOTSPLASH=n" >> .config
echo "CONFIG_ROM_SIZE=256" >> .config
echo "CONFIG_XEN=n" >> .config
echo "CONFIG_PVSCSI=n" >> .config
echo "CONFIG_ESP_SCSI=n" >> .config
echo "CONFIG_LSI_SCSI=n" >> .config
echo "CONFIG_MEGASAS=n" >> .config
echo "CONFIG_MPT_SCSI=n" >> .config
echo "CONFIG_FLOPPY=n" >> .config
echo "CONFIG_FLASH_FLOPPY=n" >> .config
make oldnoconfig V=1
make V=1 PYTHON=python3
mkdir -p /opt/incus/share/qemu/
cp out/bios.bin /opt/incus/share/qemu/seabios.bin
- name: Build nasm
run: |
REPO="${PWD}"
cd /build/nasm
patch -p1 < "${REPO}/patches/nasm-0000-disable-manpages.patch"
./configure --prefix=/opt/incus
make
mkdir -p /build/target/nasm/
DESTDIR=/build/target/nasm make install
rsync -a /build/target/nasm/opt/incus/bin/ /opt/incus/bin/
- name: Build EDK2
run: |
REPO="${PWD}"
cd /build/edk2
patch -p1 < "${REPO}/patches/edk2-0001-force-DUID-LLT.patch"
cp "${REPO}/patches/edk2-0002-logo.bmp" MdeModulePkg/Logo/Logo.bmp
patch -p1 < "${REPO}/patches/edk2-0003-boot-delay.patch"
patch -p1 < "${REPO}/patches/edk2-0004-gcc-errors.patch"
patch -p1 < "${REPO}/patches/edk2-0005-Revert-ArmVirtPkg-make-EFI_LOADER_DATA-non-executabl.patch"
patch -p1 < "${REPO}/patches/edk2-0006-disable-EFI-memory-attributes-protocol.patch"
patch -p1 < "${REPO}/patches/edk2-0007-disable-UEFI-shell-under-SecureBoot.patch"
EDK2_ARCH="X64"
EDK2_PKG="OvmfPkg/OvmfPkgX64.dsc"
EDK2_FV_CODE="OVMF_CODE"
EDK2_FV_VARS="OVMF_VARS"
if [ "$(uname -m)" = "aarch64" ]; then
EDK2_ARCH="AARCH64"
EDK2_PKG="ArmVirtPkg/ArmVirtQemu.dsc"
EDK2_FV_CODE="QEMU_EFI"
EDK2_FV_VARS="QEMU_VARS"
fi
build_edk2() {
TARGET_CODE="$1"
shift
TARGET_VARS="$1"
shift
set -ex
(
cat << EOF
. ./edksetup.sh
make -C BaseTools ARCH=${EDK2_ARCH}
build -a ${EDK2_ARCH} -t GCC5 -b RELEASE -p ${EDK2_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/*/*/FV/${EDK2_FV_CODE}.fd "${TARGET_CODE}"
cp Build/*/*/FV/${EDK2_FV_VARS}.fd "${TARGET_VARS}"
if [ "$(uname -m)" = "aarch64" ]; then
truncate -s 64m "${TARGET_CODE}"
truncate -s 64m "${TARGET_VARS}"
fi
}
mkdir -p "/opt/incus/share/qemu/"
build_edk2 \
"/opt/incus/share/qemu/OVMF_CODE.4MB.fd" \
"/opt/incus/share/qemu/OVMF_VARS.4MB.fd" \
-DFD_SIZE_4MB
ln -s OVMF_CODE.4MB.fd /opt/incus/share/qemu/OVMF_CODE.fd
ln -s OVMF_VARS.4MB.fd /opt/incus/share/qemu/OVMF_VARS.fd
- name: Build libtmps
run: |
cd /build/libtpms
./autogen.sh
./configure --prefix=/opt/incus --with-tpm2 --with-openssl
make
mkdir -p /build/target/libtpms/
DESTDIR=/build/target/libtpms make install
rsync -a /build/target/libtpms/opt/incus/include/ /opt/incus/include/
rsync -a /build/target/libtpms/opt/incus/lib/ /opt/incus/lib/
- name: Build swtpm
run: |
cd /build/swtpm
./autogen.sh
./configure --prefix=/opt/incus --with-seccomp --with-openssl --without-cuse
make
mkdir -p /build/target/swtpm/
DESTDIR=/build/target/swtpm make install
rsync -a /build/target/swtpm/opt/incus/bin/ /opt/incus/bin/
rsync -a /build/target/swtpm/opt/incus/include/ /opt/incus/include/
rsync -a /build/target/swtpm/opt/incus/lib/ /opt/incus/lib/
- name: Build virtiofsd
run: |
cd /build/virtiofsd
cargo build --release
cp target/release/virtiofsd /opt/incus/bin/
- name: Build QEMU
run: |
cd /build/qemu
sed -i "s/^unset target_list$/target_list=\"$(uname -m)-softmmu\"/" configure
sed -i 's#libseccomp_minver=".*#libseccomp_minver="0.0"#g' configure
./configure \
--prefix=/opt/incus \
--libexecdir=bin \
--libdir=lib \
--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 \
--disable-install-blobs \
--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
make
mkdir /build/target/qemu/
DESTDIR=/build/target/qemu/ make install
rsync -a /build/target/qemu/opt/incus/bin/ /opt/incus/bin/
rsync -a /build/target/qemu/opt/incus/lib/ /opt/incus/lib/
rsync -a /build/target/qemu/opt/incus/share/qemu/ /opt/incus/share/qemu/
cp /build/qemu/pc-bios/kvmvapic.bin /opt/incus/share/qemu/
cp /build/qemu/pc-bios/vgabios-qxl.bin /opt/incus/share/qemu/
cp /build/qemu/pc-bios/vgabios-virtio.bin /opt/incus/share/qemu/
cp /build/qemu/pc-bios/efi-virtio.rom /opt/incus/share/qemu/
- name: Build Secure Boot firmware
run: |
REPO="${PWD}"
cd /build/edk2
FIRMWARE="OVMF"
if [ "$(uname -m)" = "aarch64" ]; then
FIRMWARE="AAVMF"
fi
cd "${REPO}/edk2-vars-generator"
./edk2-vars-generator -f "${FIRMWARE}" \
-e /build/edk2/Build/*/*/*/EnrollDefaultKeys.efi \
-s /build/edk2/Build/*/*/*/Shell.efi \
-c "/opt/incus/share/qemu/OVMF_CODE.4MB.fd" \
-V "/opt/incus/share/qemu/OVMF_VARS.4MB.fd" \
-C "$(cat ${REPO}/zabbly-sb.oem.crt)" \
-o "/opt/incus/share/qemu/OVMF_VARS.4MB.ms.fd"
- name: Systemd units
run: |
cp systemd/*.service systemd/*.socket /opt/incus/lib/systemd/system/
cp systemd/incusd /opt/incus/lib/systemd/
cp systemd/incus-startup /opt/incus/lib/systemd/
cp systemd/incus-user /opt/incus/lib/systemd/
- name: Strip and cleanup binaries
run: |
rm -Rf /opt/incus/lib/debug/
rm -Rf /opt/incus/include/
rm -Rf /opt/incus/lib/pkgconfig/
rm /opt/incus/lib/*.a /opt/incus/lib/*.la /opt/incus/lib/*/*.a /opt/incus/lib/*/*.la
rm /opt/incus/bin/nasm
rm /opt/incus/bin/ndisasm
rm /opt/incus/bin/qemu-bridge-helper
rm /opt/incus/bin/qemu-edid
rm /opt/incus/bin/qemu-io
rm /opt/incus/bin/qemu-nbd
rm /opt/incus/bin/qemu-pr-helper
rm /opt/incus/bin/qemu-storage-daemon
rm /opt/incus/bin/swtpm_*
rm /opt/incus/share/qemu/trace-events-all
strip /opt/incus/bin/*
strip /opt/incus/lib/*so*
- name: Make a Debian package
env:
PKGOS: ${{ matrix.os }}
run: |
[ "${PKGOS}" = "debian-11" ] && CODENAME=bullseye
[ "${PKGOS}" = "debian-12" ] && CODENAME=bookworm
[ "${PKGOS}" = "ubuntu-20.04" ] && CODENAME=focal
[ "${PKGOS}" = "ubuntu-22.04" ] && CODENAME=jammy
[ "${PKGOS}" = "ubuntu-24.04" ] && CODENAME=noble
mkdir -p pkg/ pkg/lib/systemd/ pkg/opt/ pkg/usr/bin/ pkg/usr/share/bash-completion/completions/
cp -R debian pkg/debian
cp bin/* pkg/usr/bin/
cp -R /opt/incus pkg/opt/
cp -R etc pkg/etc
mv pkg/opt/incus/lib/systemd/system pkg/lib/systemd/system
ln -s /opt/incus/share/bash_completion.d/incus pkg/usr/share/bash-completion/completions/incus
ln -s /opt/incus/bin/lxd-to-incus pkg/usr/bin/lxd-to-incus
ln -s /opt/incus/bin/fuidshift pkg/usr/bin/fuidshift
ln -s /opt/incus/bin/incus-migrate pkg/usr/bin/incus-migrate
ln -s /opt/incus/bin/incus-simplestreams pkg/usr/bin/incus-simplestreams
mkdir -p pkg/var/lib/incus
chmod 711 pkg/var/lib/incus
mkdir -p pkg/var/log/incus
chmod 700 pkg/var/log/incus
mkdir -p pkg/usr/share/locale
for i in /opt/incus/share/locale/*.mo; do
LANG=$(echo $i | sed -e "s#.*/locale/##g" -e "s#.mo\$##g")
mkdir -p pkg/usr/share/locale/${LANG}/LC_MESSAGES
ln -s ${i} pkg/usr/share/locale/${LANG}/LC_MESSAGES/incus.mo
done
cd pkg
dch --package incus --create -D ${CODENAME} -M -m "Automated Incus stable build" -v 1:$(echo ${INCUS_TAG} | sed -e "s/v//" -e "s/.0$//")-$(date -u +%Y%m%d%H%M)-$(echo ${PKGOS} | sed "s/-//g") --force-distribution
dpkg-buildpackage -b
cd ..
mkdir out
mv incus_* out/
mv incus-base_* out/
mv incus-client_* out/
mv incus-extra_* out/
mv incus-ui-canonical_* out/
- name: Upload resulting build
uses: actions/upload-artifact@v3
continue-on-error: true
with:
name: ${{ matrix.os }}-${{ matrix.arch }}
path: out/*