snap/snapcraft.yaml (23 lines of code) (raw):
name: azure-iot-identity
base: core24 # the base snap is the execution environment for this snap
version: '1.5.5'
summary: Provides provisioning and cryptographic services for Azure IoT Hub devices.
description: |
The Identity Service provisions a device's identity and any modules it runs. The device identity can be based
on symmetric keys or X.509 certificates. It supports manual device registrations or individual/group
enrollments with the Azure Device Provisioning Service.
license: MIT
confinement: strict
adopt-info: iot-identity-services
parts:
rust-toolchain:
plugin: nil
build-packages:
- curl
build-environment:
- BINDGEN_VERSION: '0.69.4'
- CBINDGEN_VERSION: '0.26.0'
- PATH: "$PATH:$HOME/.cargo/bin"
override-build: |
mkdir -p $HOME/.cargo/bin
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-path --profile minimal -y
cargo install bindgen-cli --version "=$BINDGEN_VERSION"
cargo install cbindgen --version "=$CBINDGEN_VERSION"
iot-identity-services:
build-environment:
- PATH: "$PATH:$HOME/.cargo/bin"
- ARCH: "$CRAFT_ARCH_BUILD_FOR"
- CARGO_PROFILE_RELEASE_DEBUG: 0
after: [ rust-toolchain ]
plugin: nil
source: ./
build-packages:
- acl
- autoconf
- autoconf-archive
- automake
- build-essential
- clang
- cmake
- curl
- git
- jq
- libclang1
- libltdl-dev
- libssl-dev
- libtool
- libtss2-dev
- llvm-dev
- pkg-config
- to arm64:
- ca-certificates
- libcurl4-openssl-dev
stage-packages:
- libtss2-esys-3.0.2-0
- libtss2-rc0
- libtss2-sys1
- libtss2-tctildr0
override-build: |
# if version contains substring "dev" set grade to devel, else stable
SC_VERSION="$(craftctl get version)"
if test "${SC_VERSION#*dev}" != "$SC_VERSION" ; then
craftctl set grade=devel
else
craftctl set grade=stable
fi
contrib/third-party-notices.sh > THIRD-PARTY-NOTICES
make install-deb \
ARCH=$CRAFT_ARCH_BUILD_FOR \
RELEASE=1 \
VENDOR_LIBTSS=0 \
OPENSSL_ENGINES_DIR="/lib/engines-3" \
PLATFORM_FEATURES=snapd \
USER_AZIOTID=root \
USER_AZIOTCS=root \
USER_AZIOTKS=root \
USER_AZIOTTPM=root \
SOCKET_DIR=/var/sockets/aziot \
DESTDIR=$CRAFT_PART_INSTALL
organize:
usr/: .
stage:
- -include
# - -lib/systemd
- -var
- -libexec/aziot-identity-service/aziot-*
override-prime: |
craftctl default
# Recreate expected relative symlinks that were not staged from the install because they link external to the snap
# and prevent publishing to snapcraft.
ln -vrfs $CRAFT_PRIME/libexec/aziot-identity-service/aziotd $CRAFT_PRIME/libexec/aziot-certd
ln -vrfs $CRAFT_PRIME/libexec/aziot-identity-service/aziotd $CRAFT_PRIME/libexec/aziot-identityd
ln -vrfs $CRAFT_PRIME/libexec/aziot-identity-service/aziotd $CRAFT_PRIME/libexec/aziot-keyd
ln -vrfs $CRAFT_PRIME/libexec/aziot-identity-service/aziotd $CRAFT_PRIME/libexec/aziot-tpmd
command-chain:
plugin: dump
source: ./contrib
stage: [ snap/command-chain ]
apps:
aziotctl:
command: bin/aziotctl
plugs:
- log-observe
- system-observe
- network
certd:
command-chain: [ snap/command-chain/launch-wrapper.sh ]
command: libexec/aziot-certd
daemon: simple
plugs:
- network-bind
sockets:
unix:
listen-stream: $SNAP_DATA/shared/sockets/aziot/certd.sock
socket-mode: 0666
identityd:
command-chain: [ snap/command-chain/launch-wrapper.sh ]
command: libexec/aziot-identityd
daemon: simple
plugs:
- network
- network-bind
sockets:
unix:
listen-stream: $SNAP_DATA/shared/sockets/aziot/identityd.sock
socket-mode: 0666
keyd:
command-chain: [ snap/command-chain/launch-wrapper.sh ]
command: libexec/aziot-keyd
daemon: simple
plugs:
- network-bind
- pkcs11
sockets:
unix:
listen-stream: $SNAP_DATA/shared/sockets/aziot/keyd.sock
socket-mode: 0666
tpmd:
command-chain: [ snap/command-chain/launch-wrapper.sh ]
command: libexec/aziot-tpmd
daemon: simple
plugs:
- network-bind
- tpm
sockets:
unix:
listen-stream: $SNAP_DATA/shared/sockets/aziot/tpmd.sock
socket-mode: 0666
hooks:
configure:
plugs:
- hostname-control
- log-observe
- mount-observe
slots:
aziotctl-executables:
interface: content
content: aziotctl-executables
source:
read: [ $SNAP/bin ]
aziot-keys-openssl-engine:
interface: content
content: aziot-keys-openssl-engine
source:
read: [ $SNAP/lib/engines-3 ]
identity-service:
interface: content
content: aziot-identity-service
source:
write: [ $SNAP_DATA/shared ]
layout:
/var/lib/aziot:
symlink: $SNAP_DATA/var/lib/aziot
/var/secrets/aziot:
symlink: $SNAP_DATA/shared/secrets/aziot
/var/sockets/aziot:
symlink: $SNAP_DATA/shared/sockets/aziot
/etc/aziot:
symlink: $SNAP_DATA/shared/config/aziot