snap/snapcraft.yaml (174 lines of code) (raw):

name: azure-iot-edge base: core24 # the base snap is the execution environment for this snap summary: Managed solution for deploying and configuring software on IoT devices description: | Azure IoT Edge is a fully managed service that delivers cloud intelligence locally by deploying and running artificial intelligence (AI), Azure services, and custom logic directly on cross-platform IoT devices. Run your IoT solution securely and at scale—whether in the cloud or offline. confinement: strict # use 'strict' once you have the right plugs and slots adopt-info: edgelet system-usernames: snap_aziotedge: shared package-repositories: - type: apt components: [ main ] suites: [ noble ] url: https://packages.microsoft.com/ubuntu/24.04/prod key-id: BC528686B50D79E339D3721CEB3E94ADBE1229CF parts: rust-toolchain: plugin: nil build-packages: - curl - sed build-environment: - PATH: "$PATH:$HOME/.cargo/bin" override-build: | mkdir -p $HOME/.cargo/bin CHANNEL=$(sed -n '/^channel *=* */{s///;s/^"//;s/"$//;p;}' $CRAFT_PROJECT_DIR/rust-toolchain.toml) curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \ sh -s -- --no-modify-path --profile minimal -y --default-toolchain $CHANNEL cd $CRAFT_PROJECT_DIR/edgelet rustup update edgelet: after: [ rust-toolchain ] source: edgelet/ plugin: make make-parameters: - "CONNECT_MANAGEMENT_URI=unix:///var/run/iotedge/mgmt.sock" - "CONNECT_WORKLOAD_URI=unix:///var/run/iotedge/workload.sock" - "LISTEN_MANAGEMENT_URI=unix:///var/run/iotedge/mgmt.sock" - "LISTEN_WORKLOAD_URI=unix:///var/run/iotedge/workload.sock" - "PLATFORM_FEATURES=snapd" build-environment: - PATH: "$PATH:$HOME/.cargo/bin" - SOCKET_DIR: "/var/sockets/aziot" - USER_AZIOTKS: "root" - USER_AZIOTCS: "root" - USER_AZIOTID: "root" - USER_AZIOTTPM: "root" - USER_IOTEDGE: "snap_aziotedge" - CARGO_PROFILE_RELEASE_DEBUG: 0 override-build: | rm -rf $CRAFT_PART_BUILD/target SC_VERSION="$(cat $CRAFT_PART_SRC/version.txt)" craftctl set version="$SC_VERSION" # if version contains substring "dev" set grade to devel, else stable if test "${SC_VERSION#*dev}" != "$SC_VERSION" ; then craftctl set grade=devel else craftctl set grade=stable fi make install \ PLATFORM_FEATURES=snapd \ CONNECT_MANAGEMENT_URI=unix:///var/run/iotedge/mgmt.sock \ CONNECT_WORKLOAD_URI=unix:///var/run/iotedge/workload.sock \ LISTEN_MANAGEMENT_URI=unix:///var/run/iotedge/mgmt.sock \ LISTEN_WORKLOAD_URI=unix:///var/run/iotedge/workload.sock \ DESTDIR=$CRAFT_PART_INSTALL build-packages: - binutils - build-essential - ca-certificates - curl - cmake - debhelper - file - git - make - gcc - g++ - pkg-config - libcurl4-openssl-dev - libssl-dev - uuid-dev command-chain: plugin: dump source: edgelet/contrib/ stage-packages: [ util-linux ] stage: - snap/command-chain - usr/bin/setpriv - usr/share/doc/util-linux/copyright socat: plugin: dump source: edgelet/contrib/snap stage-packages: [ socat ] organize: socat.sh: bin/socat.sh docker-cli: plugin: nil stage-packages: - moby-cli apps: aziot-edged: command-chain: - snap/command-chain/handle-exit-status-153.sh - snap/command-chain/make-socket-directory.sh - snap/command-chain/drop-privileges.sh command: usr/libexec/aziot/aziot-edged daemon: simple after: [ docker-proxy ] plugs: - docker - identity-service - mount-observe - network - network-bind - system-observe - run-iotedge iotedge: command: usr/bin/iotedge plugs: - docker - identity-service - home - log-observe - mount-observe - network - system-observe - run-iotedge docker-proxy: command: bin/socat.sh daemon: notify plugs: - docker - network - network-bind - daemon-notify hooks: configure: plugs: - aziotctl-executables - docker - hostname-control - identity-service - log-observe - mount-observe environment: PATH: "$PATH:$SNAP/aziotctl/bin:$SNAP/usr/bin" plugs: aziotctl-executables: interface: content content: aziotctl-executables target: $SNAP/aziotctl identity-service: interface: content content: aziot-identity-service target: $SNAP_COMMON run-iotedge: interface: system-files write: [ /var/run/iotedge, /run/iotedge ] layout: /var/lib/aziot: symlink: $SNAP_COMMON/var/lib/aziot /var/lib/iotedge: symlink: $SNAP_COMMON/var/lib/iotedge /var/sockets/aziot: symlink: $SNAP_COMMON/shared/sockets/aziot /var/secrets/aziot: symlink: $SNAP_COMMON/shared/secrets/aziot /etc/aziot: symlink: $SNAP_COMMON/shared/config/aziot /usr/libexec/aziot/aziot-edged: symlink: $SNAP/usr/libexec/aziot/aziot-edged