Skip to content

Commit

Permalink
[Fixes #72] Foundation: rearrange nested features
Browse files Browse the repository at this point in the history
Since Rust 1.60 it's possible to enable dependencies' features only for included dependencies.

That's going to work for `rt` and `critical-section` and some other features in future.
  • Loading branch information
michalfita committed Dec 23, 2023
1 parent 1a2acb8 commit 533b0eb
Show file tree
Hide file tree
Showing 21 changed files with 292 additions and 277 deletions.
10 changes: 4 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
- id: boards
run: echo "::set-output name=board_matrix::$(ls ./boards --indicator-style=none | jq -ncR '[inputs]')"
- id: features
run: echo "::set-output name=feature_matrix::[\"reconfigurable-system-pins\",\"usart-spi-host-without-select\"]"
run: echo "::set-output name=feature_matrix::[\"reconfigurable-system-pins\",\"usart-spi-host-without-select\",\"rt\"]"
outputs:
pac_matrix: ${{ steps.pacs.outputs.pac_matrix }}
board_matrix: ${{ steps.boards.outputs.board_matrix }}
Expand Down Expand Up @@ -111,7 +111,7 @@ jobs:
- name: Install Clippy
run: rustup component add clippy
- name: Lint HAL
run: cargo clippy --package atsamx7x-hal --no-deps --features samv71q21b,unproven,reconfigurable-system-pins -- --deny warnings
run: cargo clippy --package atsamx7x-hal --no-deps --features samv71q21b,unproven,reconfigurable-system-pins,rt -- --deny warnings

clippy-examples:
if: github.event.pull_request.head.repo.full_name != github.repository
Expand Down Expand Up @@ -146,8 +146,6 @@ jobs:
- name: Install Rust (thumbv7em)
run: rustup target add thumbv7em-none-eabihf
- name: Build HAL documentation
run: cargo doc --package atsamx7x-hal --no-deps --features samv71q21b,unproven,reconfigurable-system-pins
run: cargo doc --package atsamx7x-hal --no-deps --features samv71q21b,unproven,reconfigurable-system-pins,rt
- name: Build HAL doc tests
run: cargo test --package atsamx7x-hal --doc --features samv71q21b,unproven --target x86_64-unknown-linux-gnu


run: cargo test --package atsamx7x-hal --doc --features samv71q21b,unproven,rt --target x86_64-unknown-linux-gnu
34 changes: 34 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,37 @@ exclude = [
"pac/templates"
]

[patch.crates-io]
atsame70j19b = { path = "../atsamx7x-pac/pac/atsame70j19b" }
atsame70j20b = { path = "../atsamx7x-pac/pac/atsame70j20b" }
atsame70j21b = { path = "../atsamx7x-pac/pac/atsame70j21b" }
atsame70n19b = { path = "../atsamx7x-pac/pac/atsame70n19b" }
atsame70n20b = { path = "../atsamx7x-pac/pac/atsame70n20b" }
atsame70n21b = { path = "../atsamx7x-pac/pac/atsame70n21b" }
atsame70q19b = { path = "../atsamx7x-pac/pac/atsame70q19b" }
atsame70q20b = { path = "../atsamx7x-pac/pac/atsame70q20b" }
atsame70q21b = { path = "../atsamx7x-pac/pac/atsame70q21b" }
atsams70j19b = { path = "../atsamx7x-pac/pac/atsams70j19b" }
atsams70j20b = { path = "../atsamx7x-pac/pac/atsams70j20b" }
atsams70j21b = { path = "../atsamx7x-pac/pac/atsams70j21b" }
atsams70n19b = { path = "../atsamx7x-pac/pac/atsams70n19b" }
atsams70n20b = { path = "../atsamx7x-pac/pac/atsams70n20b" }
atsams70n21b = { path = "../atsamx7x-pac/pac/atsams70n21b" }
atsams70q19b = { path = "../atsamx7x-pac/pac/atsams70q19b" }
atsams70q20b = { path = "../atsamx7x-pac/pac/atsams70q20b" }
atsams70q21b = { path = "../atsamx7x-pac/pac/atsams70q21b" }
atsamv70j19b = { path = "../atsamx7x-pac/pac/atsamv70j19b" }
atsamv70j20b = { path = "../atsamx7x-pac/pac/atsamv70j20b" }
atsamv70n19b = { path = "../atsamx7x-pac/pac/atsamv70n19b" }
atsamv70n20b = { path = "../atsamx7x-pac/pac/atsamv70n20b" }
atsamv70q19b = { path = "../atsamx7x-pac/pac/atsamv70q19b" }
atsamv70q20b = { path = "../atsamx7x-pac/pac/atsamv70q20b" }
atsamv71j19b = { path = "../atsamx7x-pac/pac/atsamv71j19b" }
atsamv71j20b = { path = "../atsamx7x-pac/pac/atsamv71j20b" }
atsamv71j21b = { path = "../atsamx7x-pac/pac/atsamv71j21b" }
atsamv71n19b = { path = "../atsamx7x-pac/pac/atsamv71n19b" }
atsamv71n20b = { path = "../atsamx7x-pac/pac/atsamv71n20b" }
atsamv71n21b = { path = "../atsamx7x-pac/pac/atsamv71n21b" }
atsamv71q19b = { path = "../atsamx7x-pac/pac/atsamv71q19b" }
atsamv71q20b = { path = "../atsamx7x-pac/pac/atsamv71q20b" }
atsamv71q21b = { path = "../atsamx7x-pac/pac/atsamv71q21b" }
208 changes: 94 additions & 114 deletions hal/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ edition = "2021"
rust-version = "1.70"

[dependencies]
cortex-m = "0.7"
cortex-m = { version = "0.7" }
embedded-hal = { version = "0.2.7" }
nb = "1"
fugit = "0.3.6"
Expand All @@ -40,39 +40,39 @@ void = { version = "1", default-features = false }
strum = { version = "0.24.1", default-features = false, features = ["derive"]}
cfg-if = "1"
mcan-core = { version = "0.2", optional = true }
atsame70j19b = { version = "0.29.0-alpha1", optional = true }
atsame70j20b = { version = "0.29.0-alpha1", optional = true }
atsame70j21b = { version = "0.29.0-alpha1", optional = true }
atsame70n19b = { version = "0.29.0-alpha1", optional = true }
atsame70n20b = { version = "0.29.0-alpha1", optional = true }
atsame70n21b = { version = "0.29.0-alpha1", optional = true }
atsame70q19b = { version = "0.29.0-alpha1", optional = true }
atsame70q20b = { version = "0.29.0-alpha1", optional = true }
atsame70q21b = { version = "0.29.0-alpha1", optional = true }
atsams70j19b = { version = "0.29.0-alpha1", optional = true }
atsams70j20b = { version = "0.29.0-alpha1", optional = true }
atsams70j21b = { version = "0.29.0-alpha1", optional = true }
atsams70n19b = { version = "0.29.0-alpha1", optional = true }
atsams70n20b = { version = "0.29.0-alpha1", optional = true }
atsams70n21b = { version = "0.29.0-alpha1", optional = true }
atsams70q19b = { version = "0.29.0-alpha1", optional = true }
atsams70q20b = { version = "0.29.0-alpha1", optional = true }
atsams70q21b = { version = "0.29.0-alpha1", optional = true }
atsamv70j19b = { version = "0.29.0-alpha1", optional = true }
atsamv70j20b = { version = "0.29.0-alpha1", optional = true }
atsamv70n19b = { version = "0.29.0-alpha1", optional = true }
atsamv70n20b = { version = "0.29.0-alpha1", optional = true }
atsamv70q19b = { version = "0.29.0-alpha1", optional = true }
atsamv70q20b = { version = "0.29.0-alpha1", optional = true }
atsamv71j19b = { version = "0.29.0-alpha1", optional = true }
atsamv71j20b = { version = "0.29.0-alpha1", optional = true }
atsamv71j21b = { version = "0.29.0-alpha1", optional = true }
atsamv71n19b = { version = "0.29.0-alpha1", optional = true }
atsamv71n20b = { version = "0.29.0-alpha1", optional = true }
atsamv71n21b = { version = "0.29.0-alpha1", optional = true }
atsamv71q19b = { version = "0.29.0-alpha1", optional = true }
atsamv71q20b = { version = "0.29.0-alpha1", optional = true }
atsamv71q21b = { version = "0.29.0-alpha1", optional = true }
atsame70j19b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsame70j20b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsame70j21b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsame70n19b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsame70n20b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsame70n21b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsame70q19b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsame70q20b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsame70q21b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsams70j19b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsams70j20b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsams70j21b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsams70n19b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsams70n20b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsams70n21b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsams70q19b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsams70q20b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsams70q21b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv70j19b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv70j20b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv70n19b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv70n20b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv70q19b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv70q20b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv71j19b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv71j20b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv71j21b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv71n19b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv71n20b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv71n21b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv71q19b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv71q20b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}
atsamv71q21b = { version = "0.29.0-alpha3", optional = true, features = ["critical-section"]}

[patch.crates-io]
atsame70j19b = { path = "../../atsamx7x-pac/pac/atsame70j19b" }
Expand Down Expand Up @@ -113,97 +113,77 @@ atsamv71q21b = { path = "../../atsamx7x-pac/pac/atsamv71q21b" }
# Internal-only feature flags; do not set directly.
# Refer to §2 in the data sheet.
## Refer to §2.
v71 = ["can"]
v70 = ["can"]
e70 = ["can"]
s70 = []
pins-64 = [] # J variants
pins-100 = [] # N variants
pins-144 = [] # Q variants
flash-2M = [] # "21"-suffix
flash-1M = [] # "20"-suffix
flash-512K = [] # "19"-suffix
can = ["mcan-core"]

device-selected = []
__v71 = ["can"]
__v70 = ["can"]
__e70 = ["can"]
__s70 = []
__pins-64 = [] # J variants
__pins-100 = [] # N variants
__pins-144 = [] # Q variants
__flash-2M = [] # "21"-suffix
__flash-1M = [] # "20"-suffix
__flash-512K = [] # "19"-suffix
__device-selected = []

# External feature flags; part of the interface.
can = ["mcan-core"]
unproven = ["embedded-hal/unproven"]
usart-spi-host-without-select = []
reconfigurable-system-pins = []

same70j19b = ["atsame70j19b", "e70", "pins-64", "flash-512K", "device-selected"]
same70j19b-rt = ["same70j19b", "atsame70j19b/rt"]
same70j20b = ["atsame70j20b", "e70", "pins-64", "flash-1M", "device-selected"]
same70j20b-rt = ["same70j20b", "atsame70j20b/rt"]
same70j21b = ["atsame70j21b", "e70", "pins-64", "flash-2M", "device-selected"]
same70j21b-rt = ["same70j21b", "atsame70j21b/rt"]
same70n19b = ["atsame70n19b", "e70", "pins-100", "flash-512K", "device-selected"]
same70n19b-rt = ["same70n19b", "atsame70n19b/rt"]
same70n20b = ["atsame70n20b", "e70", "pins-100", "flash-1M", "device-selected"]
same70n20b-rt = ["same70n20b", "atsame70n20b/rt"]
same70n21b = ["atsame70n21b", "e70", "pins-100", "flash-2M", "device-selected"]
same70n21b-rt = ["same70n21b", "atsame70n21b/rt"]
same70q19b = ["atsame70q19b", "e70", "pins-144", "flash-512K", "device-selected"]
same70q19b-rt = ["same70q19b", "atsame70q19b/rt"]
same70q20b = ["atsame70q20b", "e70", "pins-144", "flash-1M", "device-selected"]
same70q20b-rt = ["same70q20b", "atsame70q20b/rt"]
same70q21b = ["atsame70q21b", "e70", "pins-144", "flash-2M", "device-selected"]
same70q21b-rt = ["same70q21b", "atsame70q21b/rt"]
same70j19b = ["atsame70j19b", "__e70", "__pins-64", "__flash-512K", "__device-selected"]
same70j20b = ["atsame70j20b", "__e70", "__pins-64", "__flash-1M", "__device-selected"]
same70j21b = ["atsame70j21b", "__e70", "__pins-64", "__flash-2M", "__device-selected"]
same70n19b = ["atsame70n19b", "__e70", "__pins-100", "__flash-512K", "__device-selected"]
same70n20b = ["atsame70n20b", "__e70", "__pins-100", "__flash-1M", "__device-selected"]
same70n21b = ["atsame70n21b", "__e70", "__pins-100", "__flash-2M", "__device-selected"]
same70q19b = ["atsame70q19b", "__e70", "__pins-144", "__flash-512K", "__device-selected"]
same70q20b = ["atsame70q20b", "__e70", "__pins-144", "__flash-1M", "__device-selected"]
same70q21b = ["atsame70q21b", "__e70", "__pins-144", "__flash-2M", "__device-selected"]

sams70j19b = ["atsams70j19b", "__s70", "__pins-64", "__flash-512K", "__device-selected"]
sams70j20b = ["atsams70j20b", "__s70", "__pins-64", "__flash-1M", "__device-selected"]
sams70j21b = ["atsams70j21b", "__s70", "__pins-64", "__flash-2M", "__device-selected"]
sams70n19b = ["atsams70n19b", "__s70", "__pins-100", "__flash-512K", "__device-selected"]
sams70n20b = ["atsams70n20b", "__s70", "__pins-100", "__flash-1M", "__device-selected"]
sams70n21b = ["atsams70n21b", "__s70", "__pins-100", "__flash-2M", "__device-selected"]
sams70q19b = ["atsams70q19b", "__s70", "__pins-144", "__flash-512K", "__device-selected"]
sams70q20b = ["atsams70q20b", "__s70", "__pins-144", "__flash-1M", "__device-selected"]
sams70q21b = ["atsams70q21b", "__s70", "__pins-144", "__flash-2M", "__device-selected"]

samv70j19b = ["atsamv70j19b", "__v70", "__pins-64", "__flash-512K", "__device-selected"]
samv70j20b = ["atsamv70j20b", "__v70", "__pins-64", "__flash-1M", "__device-selected"]
samv70n19b = ["atsamv70n19b", "__v70", "__pins-100", "__flash-512K", "__device-selected"]
samv70n20b = ["atsamv70n20b", "__v70", "__pins-100", "__flash-1M", "__device-selected"]
samv70q19b = ["atsamv70q19b", "__v70", "__pins-144", "__flash-512K", "__device-selected"]
samv70q20b = ["atsamv70q20b", "__v70", "__pins-144", "__flash-1M", "__device-selected"]

sams70j19b = ["atsams70j19b", "s70", "pins-64", "flash-512K", "device-selected"]
sams70j19b-rt = ["sams70j19b", "atsams70j19b/rt"]
sams70j20b = ["atsams70j20b", "s70", "pins-64", "flash-1M", "device-selected"]
sams70j20b-rt = ["sams70j20b", "atsams70j20b/rt"]
sams70j21b = ["atsams70j21b", "s70", "pins-64", "flash-2M", "device-selected"]
sams70j21b-rt = ["sams70j21b", "atsams70j21b/rt"]
sams70n19b = ["atsams70n19b", "s70", "pins-100", "flash-512K", "device-selected"]
sams70n19b-rt = ["sams70n19b", "atsams70n19b/rt"]
sams70n20b = ["atsams70n20b", "s70", "pins-100", "flash-1M", "device-selected"]
sams70n20b-rt = ["sams70n20b", "atsams70n20b/rt"]
sams70n21b = ["atsams70n21b", "s70", "pins-100", "flash-2M", "device-selected"]
sams70n21b-rt = ["sams70n21b", "atsams70n21b/rt"]
sams70q19b = ["atsams70q19b", "s70", "pins-144", "flash-512K", "device-selected"]
sams70q19b-rt = ["sams70q19b", "atsams70q19b/rt"]
sams70q20b = ["atsams70q20b", "s70", "pins-144", "flash-1M", "device-selected"]
sams70q20b-rt = ["sams70q20b", "atsams70q20b/rt"]
sams70q21b = ["atsams70q21b", "s70", "pins-144", "flash-2M", "device-selected"]
sams70q21b-rt = ["sams70q21b", "atsams70q21b/rt"]
samv71j19b = ["atsamv71j19b", "__v71", "__pins-64", "__flash-512K", "__device-selected"]
samv71j20b = ["atsamv71j20b", "__v71", "__pins-64", "__flash-1M", "__device-selected"]
samv71j21b = ["atsamv71j21b", "__v71", "__pins-64", "__flash-2M", "__device-selected"]
samv71n19b = ["atsamv71n19b", "__v71", "__pins-100", "__flash-512K", "__device-selected"]
samv71n20b = ["atsamv71n20b", "__v71", "__pins-100", "__flash-1M", "__device-selected"]
samv71n21b = ["atsamv71n21b", "__v71", "__pins-100", "__flash-2M", "__device-selected"]
samv71q19b = ["atsamv71q19b", "__v71", "__pins-144", "__flash-512K", "__device-selected"]
samv71q20b = ["atsamv71q20b", "__v71", "__pins-144", "__flash-1M", "__device-selected"]
samv71q21b = ["atsamv71q21b", "__v71", "__pins-144", "__flash-2M", "__device-selected"]

samv70j19b = ["atsamv70j19b", "v70", "pins-64", "flash-512K", "device-selected"]
samv70j19b-rt = ["samv70j19b", "atsamv70j19b/rt"]
samv70j20b = ["atsamv70j20b", "v70", "pins-64", "flash-1M", "device-selected"]
samv70j20b-rt = ["samv70j20b", "atsamv70j20b/rt"]
samv70n19b = ["atsamv70n19b", "v70", "pins-100", "flash-512K", "device-selected"]
samv70n19b-rt = ["samv70n19b", "atsamv70n19b/rt"]
samv70n20b = ["atsamv70n20b", "v70", "pins-100", "flash-1M", "device-selected"]
samv70n20b-rt = ["samv70n20b", "atsamv70n20b/rt"]
samv70q19b = ["atsamv70q19b", "v70", "pins-144", "flash-512K", "device-selected"]
samv70q19b-rt = ["samv70q19b", "atsamv70q19b/rt"]
samv70q20b = ["atsamv70q20b", "v70", "pins-144", "flash-1M", "device-selected"]
samv70q20b-rt = ["samv70q20b", "atsamv70q20b/rt"]
rt = ["atsame70j19b?/rt", "atsame70j20b?/rt", "atsame70j21b?/rt",
"atsame70n19b?/rt", "atsame70n20b?/rt", "atsame70n21b?/rt",
"atsame70q19b?/rt", "atsame70q20b?/rt", "atsame70q21b?/rt",
"atsams70j19b?/rt", "atsams70j20b?/rt", "atsams70j21b?/rt",
"atsams70n19b?/rt", "atsams70n20b?/rt", "atsams70n21b?/rt",
"atsams70q19b?/rt", "atsams70q20b?/rt", "atsams70q21b?/rt",
"atsamv70j19b?/rt", "atsamv70j20b?/rt", "atsamv70n19b?/rt",
"atsamv70n20b?/rt", "atsamv70q19b?/rt", "atsamv70q20b?/rt",
"atsamv71j19b?/rt", "atsamv71j20b?/rt", "atsamv71j21b?/rt",
"atsamv71n19b?/rt", "atsamv71n20b?/rt", "atsamv71n21b?/rt",
"atsamv71q19b?/rt", "atsamv71q20b?/rt", "atsamv71q21b?/rt"]

samv71j19b = ["atsamv71j19b", "v71", "pins-64", "flash-512K", "device-selected"]
samv71j19b-rt = ["samv71j19b", "atsamv71j19b/rt"]
samv71j20b = ["atsamv71j20b", "v71", "pins-64", "flash-1M", "device-selected"]
samv71j20b-rt = ["samv71j20b", "atsamv71j20b/rt"]
samv71j21b = ["atsamv71j21b", "v71", "pins-64", "flash-2M", "device-selected"]
samv71j21b-rt = ["samv71j21b", "atsamv71j21b/rt"]
samv71n19b = ["atsamv71n19b", "v71", "pins-100", "flash-512K", "device-selected"]
samv71n19b-rt = ["samv71n19b", "atsamv71n19b/rt"]
samv71n20b = ["atsamv71n20b", "v71", "pins-100", "flash-1M", "device-selected"]
samv71n20b-rt = ["samv71n20b", "atsamv71n20b/rt"]
samv71n21b = ["atsamv71n21b", "v71", "pins-100", "flash-2M", "device-selected"]
samv71n21b-rt = ["samv71n21b", "atsamv71n21b/rt"]
samv71q19b = ["atsamv71q19b", "v71", "pins-144", "flash-512K", "device-selected"]
samv71q19b-rt = ["samv71q19b", "atsamv71q19b/rt"]
samv71q20b = ["atsamv71q20b", "v71", "pins-144", "flash-1M", "device-selected"]
samv71q20b-rt = ["samv71q20b", "atsamv71q20b/rt"]
samv71q21b = ["atsamv71q21b", "v71", "pins-144", "flash-2M", "device-selected"]
samv71q21b-rt = ["samv71q21b", "atsamv71q21b/rt"]

[package.metadata.docs.rs]
# docs.rs build target
default-target = "thumbv7em-none-eabihf"

# enable features to get maximum doc coverage
features = ["samv71q21b-rt", "unproven", "usart-spi-host-without-select", "reconfigurable-system-pins"]
features = ["samv71q21b", "rt", "unproven", "usart-spi-host-without-select", "reconfigurable-system-pins"]
2 changes: 1 addition & 1 deletion hal/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ fn main() -> Result<(), &'static str> {
.is_ok()
}

if !feat("device-selected") || ["e70", "s70", "v70", "v71"].iter().all(|&f| !feat(f)) {
if !feat("__device-selected") || ["__e70", "__s70", "__v70", "__v71"].iter().all(|&f| !feat(f)) {
return Err(
"The HAL is built for a specific target device selected using a feature, but no such a feature was selected."
);
Expand Down
Loading

0 comments on commit 533b0eb

Please sign in to comment.