Skip to content
Snippets Groups Projects
Commit 1146c5fb authored by Tobias Kahlki's avatar Tobias Kahlki
Browse files

packages:iot: Added Edgehog packages and dependencies

BCS 746-001531
parent 45fba110
No related branches found
No related tags found
1 merge request!647packages:iot: Added Edgehog packages and requirements
......@@ -54,10 +54,15 @@ IMAGE_INSTALL_BENCHMARK += " \
packagegroup-seconorth-benchmark \
"
IMAGE_INSTALL_IOT += " \
packagegroup-seconorth-iot \
"
CORE_IMAGE_EXTRA_INSTALL += " \
${IMAGE_INSTALL_BENCHMARK} \
${IMAGE_INSTALL_CONNECTIVITY} \
${IMAGE_INSTALL_GRAPHICS} \
${IMAGE_INSTALL_IOT} \
${IMAGE_INSTALL_MULTIMEDIA} \
${IMAGE_INSTALL_PYTHON} \
${IMAGE_INSTALL_QT} \
......
DESCRIPTION = "SECO IoT Support Packagegroup"
# Prevents the dynamic renaming of packages
# (which throws an error in newer Bitbake versions)
PACKAGE_ARCH = "${TUNE_PKGARCH}"
inherit packagegroup
PACKAGES = " \
${PN} \
"
RDEPENDS:${PN} = " \
edgehog-device-runtime \
"
SUMMARY = "Astarte Interface Descriptions for the Edgehog Device Runtime"
HOMEPAGE = "https://github.com/edgehog-device-manager/edgehog-astarte-interfaces"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
PROTOCOL = "protocol=https"
SRCBRANCH = "branch=main"
SRCREV = "${AUTOREV}"
SRC_URI += " \
git://github.com/edgehog-device-manager/edgehog-astarte-interfaces;${SRCBRANCH};${PROTOCOL}; \
"
PV = "1.0+git${SRCPV}"
S = "${WORKDIR}/git"
do_install() {
install -d ${D}/usr/share/edgehog/astarte-interfaces/
install -m 0644 ${S}/*.json ${D}/usr/share/edgehog/astarte-interfaces/
}
FILES:${PN} = " \
/usr/share/edgehog/astarte-interfaces/*.json \
"
CARGO_BUILD_FLAGS:append = " --features systemd "
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI += " \
file://config.toml \
file://edgehog-device-runtime.service \
"
RDEPENDS:${PN} = "edgehog-astarte-interfaces"
oe_cargo_fix_env:append(){
export OPENSSL_NO_VENDOR=1
}
do_install:append () {
install -d ${D}${sysconfdir}/edgehog
install -m 0644 ${WORKDIR}/config.toml ${D}${sysconfdir}/edgehog/config.toml
install -d ${D}${systemd_unitdir}/system
install -m 0644 ${WORKDIR}/edgehog-device-runtime.service ${D}${systemd_unitdir}/system
}
FILES:${PN} += " \
${sysconfdir}/edgehog/* \
${systemd_unitdir}/system/edgehog-device-runtime.service \
"
SYSTEMD_SERVICE:${PN} = "edgehog-device-runtime.service"
SYSTEMD_AUTO_ENABLE:${PN} = "disable"
SUMMARY = "Edgehog Device Runtime"
HOMEPAGE = "https://github.com/edgehog-device-manager/edgehog-device-runtime"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
inherit cargo
DEBUG_BUILD = "0"
DEPENDS += " openssl-native openssl libssh-native libssh pkgconfig-native systemd "
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRCBRANCH = "main"
SRC_URI += " \
git://github.com/edgehog-device-manager/edgehog-device-runtime.git;branch=${SRCBRANCH};protocol=https \
"
SRCREV = "54328dd7934d345d2b3ba00a1b4c3595eef40618"
S = "${WORKDIR}/git"
CARGO_SRC_DIR = ""
SRC_URI += " \
crate://crates.io/adler/1.0.2 \
crate://crates.io/ahash/0.7.6 \
crate://crates.io/aho-corasick/0.7.18 \
crate://crates.io/ascii-canvas/3.0.0 \
crate://crates.io/assert-json-diff/2.0.2 \
crate://crates.io/astarte-device-sdk-derive/0.5.1 \
crate://crates.io/astarte-device-sdk/0.5.1 \
crate://crates.io/async-broadcast/0.4.0 \
crate://crates.io/async-channel/1.6.1 \
crate://crates.io/async-executor/1.4.1 \
crate://crates.io/async-global-executor/2.3.1 \
crate://crates.io/async-io/1.9.0 \
crate://crates.io/async-lock/2.5.0 \
crate://crates.io/async-object-pool/0.1.4 \
crate://crates.io/async-process/1.5.0 \
crate://crates.io/async-recursion/0.3.2 \
crate://crates.io/async-std/1.12.0 \
crate://crates.io/async-task/4.2.0 \
crate://crates.io/async-trait/0.1.57 \
crate://crates.io/atoi/1.0.0 \
crate://crates.io/atomic-waker/1.1.1 \
crate://crates.io/atty/0.2.14 \
crate://crates.io/autocfg/1.1.0 \
crate://crates.io/base64/0.13.0 \
crate://crates.io/base64/0.21.0 \
crate://crates.io/basic-cookies/0.1.4 \
crate://crates.io/bit-set/0.5.3 \
crate://crates.io/bit-vec/0.6.3 \
crate://crates.io/bitflags/1.3.2 \
crate://crates.io/block-buffer/0.10.2 \
crate://crates.io/blocking/1.2.0 \
crate://crates.io/bson/2.3.0 \
crate://crates.io/build-env/0.3.1 \
crate://crates.io/bumpalo/3.10.0 \
crate://crates.io/byteorder/1.4.3 \
crate://crates.io/bytes/1.1.0 \
crate://crates.io/cache-padded/1.2.0 \
crate://crates.io/castaway/0.1.2 \
crate://crates.io/cc/1.0.73 \
crate://crates.io/cfg-if/1.0.0 \
crate://crates.io/chrono/0.4.19 \
crate://crates.io/clap/3.2.23 \
crate://crates.io/clap_derive/3.2.18 \
crate://crates.io/clap_lex/0.2.3 \
crate://crates.io/concurrent-queue/1.2.2 \
crate://crates.io/core-foundation-sys/0.8.3 \
crate://crates.io/core-foundation/0.9.3 \
crate://crates.io/cpufeatures/0.2.2 \
crate://crates.io/crc-catalog/2.2.0 \
crate://crates.io/crc/3.0.0 \
crate://crates.io/crc32fast/1.3.2 \
crate://crates.io/crossbeam-channel/0.5.5 \
crate://crates.io/crossbeam-deque/0.8.1 \
crate://crates.io/crossbeam-epoch/0.9.9 \
crate://crates.io/crossbeam-queue/0.3.5 \
crate://crates.io/crossbeam-utils/0.8.8 \
crate://crates.io/crunchy/0.2.2 \
crate://crates.io/crypto-common/0.1.3 \
crate://crates.io/cstr-argument/0.1.2 \
crate://crates.io/ctor/0.1.22 \
crate://crates.io/curl-sys/0.4.61+curl-8.0.1 \
crate://crates.io/curl/0.4.44 \
crate://crates.io/derivative/2.2.0 \
crate://crates.io/diff/0.1.13 \
crate://crates.io/difflib/0.4.0 \
crate://crates.io/digest/0.10.3 \
crate://crates.io/dirs-next/2.0.0 \
crate://crates.io/dirs-sys-next/0.1.2 \
crate://crates.io/dotenvy/0.15.6 \
crate://crates.io/downcast/0.11.0 \
crate://crates.io/easy-parallel/3.2.0 \
crate://crates.io/either/1.6.1 \
crate://crates.io/ena/0.14.2 \
crate://crates.io/encoding_rs/0.8.31 \
crate://crates.io/enumflags2/0.7.5 \
crate://crates.io/enumflags2_derive/0.7.4 \
crate://crates.io/env_logger/0.9.1 \
crate://crates.io/errno-dragonfly/0.1.2 \
crate://crates.io/errno/0.2.8 \
crate://crates.io/errno/0.3.1 \
crate://crates.io/event-listener/2.5.2 \
crate://crates.io/fastrand/1.7.0 \
crate://crates.io/fixedbitset/0.4.2 \
crate://crates.io/flate2/1.0.24 \
crate://crates.io/float-cmp/0.9.0 \
crate://crates.io/flume/0.10.12 \
crate://crates.io/fnv/1.0.7 \
crate://crates.io/foreign-types-macros/0.2.2 \
crate://crates.io/foreign-types-shared/0.1.1 \
crate://crates.io/foreign-types-shared/0.3.1 \
crate://crates.io/foreign-types/0.3.2 \
crate://crates.io/foreign-types/0.5.0 \
crate://crates.io/form_urlencoded/1.0.1 \
crate://crates.io/fragile/2.0.0 \
crate://crates.io/fuchsia-cprng/0.1.1 \
crate://crates.io/futures-channel/0.3.21 \
crate://crates.io/futures-core/0.3.21 \
crate://crates.io/futures-executor/0.3.21 \
crate://crates.io/futures-intrusive/0.4.0 \
crate://crates.io/futures-io/0.3.21 \
crate://crates.io/futures-lite/1.12.0 \
crate://crates.io/futures-macro/0.3.21 \
crate://crates.io/futures-sink/0.3.21 \
crate://crates.io/futures-task/0.3.21 \
crate://crates.io/futures-util/0.3.21 \
crate://crates.io/futures/0.3.21 \
crate://crates.io/generic-array/0.14.5 \
crate://crates.io/getrandom/0.2.6 \
crate://crates.io/gloo-timers/0.2.6 \
crate://crates.io/h2/0.3.13 \
crate://crates.io/hashbrown/0.11.2 \
crate://crates.io/hashbrown/0.12.3 \
crate://crates.io/hashlink/0.8.1 \
crate://crates.io/heck/0.4.0 \
crate://crates.io/hermit-abi/0.1.19 \
crate://crates.io/hermit-abi/0.3.1 \
crate://crates.io/hex/0.4.3 \
crate://crates.io/http-body/0.4.5 \
crate://crates.io/http/0.2.8 \
crate://crates.io/httparse/1.7.1 \
crate://crates.io/httpdate/1.0.2 \
crate://crates.io/httpmock/0.6.6 \
crate://crates.io/humantime/2.1.0 \
crate://crates.io/hyper-tls/0.5.0 \
crate://crates.io/hyper/0.14.19 \
crate://crates.io/idna/0.2.3 \
crate://crates.io/indexmap/1.8.2 \
crate://crates.io/instant/0.1.12 \
crate://crates.io/io-lifetimes/0.7.2 \
crate://crates.io/io-lifetimes/1.0.10 \
crate://crates.io/ipnet/2.5.0 \
crate://crates.io/is-terminal/0.4.7 \
crate://crates.io/isahc/1.7.2 \
crate://crates.io/itertools/0.10.3 \
crate://crates.io/itertools/0.8.2 \
crate://crates.io/itoa/1.0.2 \
crate://crates.io/js-sys/0.3.57 \
crate://crates.io/kv-log-macro/1.0.7 \
crate://crates.io/lalrpop-util/0.19.9 \
crate://crates.io/lalrpop/0.19.9 \
crate://crates.io/lazy_static/1.4.0 \
crate://crates.io/levenshtein/1.0.5 \
crate://crates.io/libc/0.2.142 \
crate://crates.io/libnghttp2-sys/0.1.7+1.45.0 \
crate://crates.io/libsqlite3-sys/0.24.2 \
crate://crates.io/libsystemd-sys/0.9.3 \
crate://crates.io/libudev-sys/0.1.4 \
crate://crates.io/libz-sys/1.1.8 \
crate://crates.io/linux-raw-sys/0.0.46 \
crate://crates.io/linux-raw-sys/0.3.4 \
crate://crates.io/lock_api/0.4.7 \
crate://crates.io/log/0.4.17 \
crate://crates.io/matches/0.1.9 \
crate://crates.io/memchr/2.5.0 \
crate://crates.io/memoffset/0.6.5 \
crate://crates.io/mime/0.3.16 \
crate://crates.io/minimal-lexical/0.2.1 \
crate://crates.io/miniz_oxide/0.5.3 \
crate://crates.io/mio/0.8.4 \
crate://crates.io/mockall/0.11.3 \
crate://crates.io/mockall_derive/0.11.3 \
crate://crates.io/nanorand/0.7.0 \
crate://crates.io/native-tls/0.2.10 \
crate://crates.io/new_debug_unreachable/1.0.4 \
crate://crates.io/nix/0.23.1 \
crate://crates.io/nom/7.1.1 \
crate://crates.io/normalize-line-endings/0.3.0 \
crate://crates.io/ntapi/0.3.7 \
crate://crates.io/num-integer/0.1.45 \
crate://crates.io/num-traits/0.2.15 \
crate://crates.io/num_cpus/1.13.1 \
crate://crates.io/num_threads/0.1.6 \
crate://crates.io/once_cell/1.12.0 \
crate://crates.io/openssl-macros/0.1.0 \
crate://crates.io/openssl-probe/0.1.5 \
crate://crates.io/openssl-src/111.20.0+1.1.1o \
crate://crates.io/openssl-sys/0.9.74 \
crate://crates.io/openssl/0.10.40 \
crate://crates.io/ordered-stream/0.0.1 \
crate://crates.io/os_str_bytes/6.1.0 \
crate://crates.io/parking/2.0.0 \
crate://crates.io/parking_lot/0.11.2 \
crate://crates.io/parking_lot/0.12.1 \
crate://crates.io/parking_lot_core/0.8.5 \
crate://crates.io/parking_lot_core/0.9.3 \
crate://crates.io/paste/1.0.7 \
crate://crates.io/percent-encoding/2.1.0 \
crate://crates.io/petgraph/0.6.3 \
crate://crates.io/phf_shared/0.10.0 \
crate://crates.io/pico-args/0.4.2 \
crate://crates.io/pin-project-internal/1.0.10 \
crate://crates.io/pin-project-lite/0.2.9 \
crate://crates.io/pin-project/1.0.10 \
crate://crates.io/pin-utils/0.1.0 \
crate://crates.io/pkg-config/0.3.25 \
crate://crates.io/polling/2.5.2 \
crate://crates.io/pollster/0.2.5 \
crate://crates.io/ppv-lite86/0.2.16 \
crate://crates.io/precomputed-hash/0.1.1 \
crate://crates.io/predicates-core/1.0.3 \
crate://crates.io/predicates-tree/1.0.5 \
crate://crates.io/predicates/2.1.1 \
crate://crates.io/proc-macro-crate/1.1.3 \
crate://crates.io/proc-macro-error-attr/1.0.4 \
crate://crates.io/proc-macro-error/1.0.4 \
crate://crates.io/proc-macro2/1.0.51 \
crate://crates.io/procfs/0.14.1 \
crate://crates.io/quote/1.0.18 \
crate://crates.io/rand/0.4.6 \
crate://crates.io/rand/0.8.5 \
crate://crates.io/rand_chacha/0.3.1 \
crate://crates.io/rand_core/0.3.1 \
crate://crates.io/rand_core/0.4.2 \
crate://crates.io/rand_core/0.6.3 \
crate://crates.io/rayon-core/1.9.3 \
crate://crates.io/rayon/1.5.3 \
crate://crates.io/rdrand/0.4.0 \
crate://crates.io/redox_syscall/0.2.13 \
crate://crates.io/redox_users/0.4.3 \
crate://crates.io/regex-syntax/0.6.26 \
crate://crates.io/regex/1.5.6 \
crate://crates.io/remove_dir_all/0.5.3 \
crate://crates.io/reqwest/0.11.12 \
crate://crates.io/ring/0.16.20 \
crate://crates.io/rumqttc/0.19.0 \
crate://crates.io/rustc_version/0.2.3 \
crate://crates.io/rustc_version_runtime/0.2.1 \
crate://crates.io/rustix/0.35.7 \
crate://crates.io/rustix/0.37.14 \
crate://crates.io/rustls-native-certs/0.6.2 \
crate://crates.io/rustls-pemfile/0.3.0 \
crate://crates.io/rustls-pemfile/1.0.2 \
crate://crates.io/rustls/0.20.6 \
crate://crates.io/rustversion/1.0.12 \
crate://crates.io/ryu/1.0.10 \
crate://crates.io/schannel/0.1.20 \
crate://crates.io/scopeguard/1.1.0 \
crate://crates.io/sct/0.7.0 \
crate://crates.io/security-framework-sys/2.6.1 \
crate://crates.io/security-framework/2.6.1 \
crate://crates.io/semver-parser/0.7.0 \
crate://crates.io/semver/0.9.0 \
crate://crates.io/serde/1.0.152 \
crate://crates.io/serde_bytes/0.11.6 \
crate://crates.io/serde_derive/1.0.152 \
crate://crates.io/serde_json/1.0.95 \
crate://crates.io/serde_regex/1.1.0 \
crate://crates.io/serde_repr/0.1.8 \
crate://crates.io/serde_urlencoded/0.7.1 \
crate://crates.io/sha1/0.6.1 \
crate://crates.io/sha1_smol/1.0.0 \
crate://crates.io/sha2/0.10.2 \
crate://crates.io/signal-hook-registry/1.4.0 \
crate://crates.io/signal-hook/0.3.15 \
crate://crates.io/similar/2.2.1 \
crate://crates.io/siphasher/0.3.10 \
crate://crates.io/slab/0.4.6 \
crate://crates.io/sluice/0.5.5 \
crate://crates.io/smallvec/1.8.0 \
crate://crates.io/socket2/0.4.4 \
crate://crates.io/spin/0.5.2 \
crate://crates.io/spin/0.9.3 \
crate://crates.io/sqlformat/0.2.1 \
crate://crates.io/sqlx-core/0.6.2 \
crate://crates.io/sqlx-macros/0.6.2 \
crate://crates.io/sqlx-rt/0.6.2 \
crate://crates.io/sqlx/0.6.2 \
crate://crates.io/static_assertions/1.1.0 \
crate://crates.io/string_cache/0.8.7 \
crate://crates.io/stringprep/0.1.2 \
crate://crates.io/strsim/0.10.0 \
crate://crates.io/syn/1.0.107 \
crate://crates.io/sysinfo/0.26.2 \
crate://crates.io/systemd/0.10.0 \
crate://crates.io/tempdir/0.3.7 \
crate://crates.io/tempfile/3.3.0 \
crate://crates.io/term/0.7.0 \
crate://crates.io/termcolor/1.1.3 \
crate://crates.io/termtree/0.2.4 \
crate://crates.io/textwrap/0.16.0 \
crate://crates.io/thiserror-impl/1.0.37 \
crate://crates.io/thiserror/1.0.37 \
crate://crates.io/time-macros/0.2.4 \
crate://crates.io/time/0.1.44 \
crate://crates.io/time/0.3.9 \
crate://crates.io/tiny-keccak/2.0.2 \
crate://crates.io/tinyvec/1.6.0 \
crate://crates.io/tinyvec_macros/0.1.0 \
crate://crates.io/tokio-macros/1.8.0 \
crate://crates.io/tokio-native-tls/0.3.0 \
crate://crates.io/tokio-rustls/0.23.4 \
crate://crates.io/tokio-stream/0.1.12 \
crate://crates.io/tokio-util/0.7.8 \
crate://crates.io/tokio/1.25.0 \
crate://crates.io/toml/0.5.9 \
crate://crates.io/tower-service/0.3.1 \
crate://crates.io/tracing-attributes/0.1.23 \
crate://crates.io/tracing-core/0.1.27 \
crate://crates.io/tracing-futures/0.2.5 \
crate://crates.io/tracing/0.1.35 \
crate://crates.io/try-lock/0.2.3 \
crate://crates.io/typenum/1.15.0 \
crate://crates.io/udev/0.6.3 \
crate://crates.io/uds_windows/1.0.2 \
crate://crates.io/unicode-bidi/0.3.8 \
crate://crates.io/unicode-ident/1.0.0 \
crate://crates.io/unicode-normalization/0.1.19 \
crate://crates.io/unicode-segmentation/1.9.0 \
crate://crates.io/unicode-xid/0.2.4 \
crate://crates.io/unicode_categories/0.1.1 \
crate://crates.io/untrusted/0.7.1 \
crate://crates.io/url/2.2.2 \
crate://crates.io/utf8-cstr/0.1.6 \
crate://crates.io/uuid/0.8.2 \
crate://crates.io/uuid/1.2.2 \
crate://crates.io/value-bag/1.0.0-alpha.9 \
crate://crates.io/vcpkg/0.2.15 \
crate://crates.io/version_check/0.9.4 \
crate://crates.io/waker-fn/1.1.0 \
crate://crates.io/want/0.3.0 \
crate://crates.io/wasi/0.10.0+wasi-snapshot-preview1 \
crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
crate://crates.io/wasm-bindgen-backend/0.2.80 \
crate://crates.io/wasm-bindgen-futures/0.4.30 \
crate://crates.io/wasm-bindgen-macro-support/0.2.80 \
crate://crates.io/wasm-bindgen-macro/0.2.80 \
crate://crates.io/wasm-bindgen-shared/0.2.80 \
crate://crates.io/wasm-bindgen/0.2.80 \
crate://crates.io/web-sys/0.3.57 \
crate://crates.io/webpki-roots/0.22.6 \
crate://crates.io/webpki/0.22.0 \
crate://crates.io/wepoll-ffi/0.1.2 \
crate://crates.io/wifiscanner/0.5.1 \
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
crate://crates.io/winapi-util/0.1.5 \
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
crate://crates.io/winapi/0.3.9 \
crate://crates.io/windows-sys/0.36.1 \
crate://crates.io/windows-sys/0.42.0 \
crate://crates.io/windows-sys/0.48.0 \
crate://crates.io/windows-targets/0.48.0 \
crate://crates.io/windows_aarch64_gnullvm/0.42.1 \
crate://crates.io/windows_aarch64_gnullvm/0.48.0 \
crate://crates.io/windows_aarch64_msvc/0.36.1 \
crate://crates.io/windows_aarch64_msvc/0.42.1 \
crate://crates.io/windows_aarch64_msvc/0.48.0 \
crate://crates.io/windows_i686_gnu/0.36.1 \
crate://crates.io/windows_i686_gnu/0.42.1 \
crate://crates.io/windows_i686_gnu/0.48.0 \
crate://crates.io/windows_i686_msvc/0.36.1 \
crate://crates.io/windows_i686_msvc/0.42.1 \
crate://crates.io/windows_i686_msvc/0.48.0 \
crate://crates.io/windows_x86_64_gnu/0.36.1 \
crate://crates.io/windows_x86_64_gnu/0.42.1 \
crate://crates.io/windows_x86_64_gnu/0.48.0 \
crate://crates.io/windows_x86_64_gnullvm/0.42.1 \
crate://crates.io/windows_x86_64_gnullvm/0.48.0 \
crate://crates.io/windows_x86_64_msvc/0.36.1 \
crate://crates.io/windows_x86_64_msvc/0.42.1 \
crate://crates.io/windows_x86_64_msvc/0.48.0 \
crate://crates.io/winreg/0.10.1 \
crate://crates.io/zbus/2.2.0 \
crate://crates.io/zbus_macros/2.2.0 \
crate://crates.io/zbus_names/2.1.0 \
crate://crates.io/zvariant/3.2.1 \
crate://crates.io/zvariant_derive/3.2.1 \
"
include edgehog-device-runtime.inc
credentials_secret = ""
device_id = ""
pairing_url = ""
pairing_token = ""
realm = ""
interfaces_directory = "/usr/share/edgehog/astarte-interfaces/"
store_directory = "/var/lib/edgehog/"
download_directory = "/var/tmp/edgehog-updates/"
[[telemetry_config]]
interface_name = "io.edgehog.devicemanager.SystemStatus"
enabled = true
period = 60
[Unit]
Description=Edgehog Device Runtime Service
After=network.target
After=network-online.target
Requires=network-online.target
#Requires=rauc.service
#Requires=edgehog-hardware-id.service
[Service]
ExecStart=/usr/bin/edgehog-device-runtime
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment