Skip to content

Commit 6a3cad2

Browse files
committed
simulator-ng: Initial commit
rust-SDL2 is vendored because the upstream crate vendors the whole C library (some 20k lines of code) which we can't use.
1 parent a33c43b commit 6a3cad2

File tree

106 files changed

+9949
-46
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

106 files changed

+9949
-46
lines changed

.containerversion

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
49
1+
50

.github/workflows/ci-common.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,23 @@ jobs:
126126
- name: Build simulator
127127
run: make -j$(($(nproc) + 1)) simulator
128128

129+
simulator-ng:
130+
runs-on: ubuntu-22.04
131+
container: ${{ inputs.container-repo }}:${{ inputs.container-version }}
132+
steps:
133+
- name: Clone the repo
134+
uses: actions/checkout@v4
135+
with:
136+
fetch-depth: 0
137+
fetch-tags: true
138+
submodules: recursive
139+
140+
- name: Mark directory as safe
141+
run: git config --global --add safe.directory $GITHUB_WORKSPACE
142+
143+
- name: Build simulator
144+
run: make -j$(($(nproc) + 1)) simulator-ng
145+
129146
leakcheck:
130147
runs-on: ubuntu-22.04
131148
container: ${{ inputs.container-repo }}:${{ inputs.container-version }}

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,6 @@
1313
[submodule "external/secp256k1-zkp"]
1414
path = external/secp256k1-zkp
1515
url = https://github.com/BitBoxSwiss/secp256k1-zkp.git
16+
[submodule "external/rust-sdl2"]
17+
path = external/rust-sdl2
18+
url = https://github.com/BitBoxSwiss/rust-sdl2

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ customers cannot upgrade their bootloader, its changes are recorded separately.
1212
- Remove option to restore from 18 recovery words
1313
- simulator: enable Test Merchant for payment requests
1414
- simulator: simulate a Nova device
15+
- simulator-ng: a new simulator with a graphical user interface
1516

1617
### 9.23.1
1718
- EVM: add HyperEVM (HYPE) and SONIC (S) to known networks

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,7 @@ else()
398398
include(CTest)
399399
add_subdirectory(test/unit-test)
400400
add_subdirectory(test/simulator)
401+
add_subdirectory(test/simulator-ng)
401402
if(COVERAGE)
402403
find_program(GCOVR gcovr)
403404
if(NOT GCOVR STREQUAL "GCOVR-NOTFOUND")

Dockerfile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,12 @@ RUN apt-get update && apt-get install -y \
6464
libudev-dev \
6565
libhidapi-dev
6666

67+
# Deps for graphical simulator
68+
RUN apt-get update && apt-get install -y \
69+
libsdl2-dev \
70+
libsdl2-image-dev \
71+
libsdl2-ttf-dev
72+
6773
RUN apt-get update && apt-get install -y \
6874
doxygen \
6975
graphviz

Makefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ rust-docs: | build
108108
$(MAKE) -C build rust-docs
109109
simulator: | build-build-noasan
110110
$(MAKE) -C build-build-noasan simulator
111+
simulator-ng: | build-build-noasan
112+
$(MAKE) -C build-build-noasan simulator-ng
111113
run-simulator: | simulator
112114
./build-build-noasan/bin/simulator
113115
unit-test: | build-build
@@ -189,3 +191,7 @@ prepare-tidy: | build build-build
189191
$(MAKE) -C build-build rust-cbindgen
190192
clean:
191193
rm -rf build build-build build-debug build-build-noasan
194+
195+
# When you vendor rust libs avoid duplicates
196+
vendor-rust-deps:
197+
(cd external; ./vendor-rust.sh)

external/rust-sdl2

Submodule rust-sdl2 added at cd5e611

external/vendor-rust.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,9 @@ RUSTC_BOOTSTRAP=1 cargo vendor \
2121
--manifest-path ../src/rust/Cargo.toml \
2222
--sync "$RUST_SYSROOT/lib/rustlib/src/rust/library/test/Cargo.toml" \
2323
vendor
24+
25+
RUSTC_BOOTSTRAP=1 cargo vendor \
26+
--manifest-path ../test/simulator-ng/Cargo.toml \
27+
--no-delete \
28+
--sync "$RUST_SYSROOT/lib/rustlib/src/rust/library/test/Cargo.toml" \
29+
vendor
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","CODE_OF_CONDUCT.md":"42634d0f6d922f49857175af991802822f7f920487aefa2ee250a50d12251a66","Cargo.toml":"87aced7532a7974eb37ab5fe6037f0abafc36d6b2d74891ecd2bf2f14f50d11e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"baa8604f8afb34fd93b9c79729daafb884dedcaf34023e4af8ad037d916061fd","src/example_generated.rs":"e43eb59e90f317f38d436670a6067d2fd9eb35fb319fe716184e4a04e24ed1b2","src/lib.rs":"e6477688535ee326d27238aeedc9cb4320ac35b9d17a4deda09e0587b0ccdbd4","tests/basic.rs":"146f1cbf6279bc609242cd3349f29cb21b41294f5e4921875f5ec95bd83529a2","tests/compile-fail/impls/copy.rs":"b791371237ddc75a7c04d2130e03b462c9c00a80dca08bd45aa97433d9c0d13a","tests/compile-fail/impls/copy.stderr.beta":"77d83484ce221d4b6ff2f7de843929a452d779fcfff428122710dd8218c298e3","tests/compile-fail/impls/eq.rs":"0cee8b9e07d537890e0189710293b53972d0fab63c09366f33c391065afafa99","tests/compile-fail/impls/eq.stderr.beta":"381fc6143d45ce76d7cecc47aa59cb69fe5e79c0b60a4a85d5c6163b400b3cc7","tests/compile-fail/non_integer_base/all_defined.rs":"95e14cad9e94560262f2862c3c01865ac30369b69da1001b0e7285cb55e6cb75","tests/compile-fail/non_integer_base/all_defined.stderr.beta":"1760739a276690903bb03844025587d37939f5dfcbfab309db3c86f32bdbf748","tests/compile-fail/non_integer_base/all_missing.rs":"b3d9da619d23213731ba2581aa7999c796c3c79aaf4f0ee6b11ceec08a11537f","tests/compile-fail/non_integer_base/all_missing.stderr.beta":"37e102290d3867e175b21976be798939f294efb17580d5b51e7b17b590d55132","tests/compile-fail/visibility/private_field.rs":"38e4d3fe6471829360d12c8d09b097f6a21aa93fb51eac3b215d96bdae23316b","tests/compile-fail/visibility/private_field.stderr.beta":"5aa24a3ebb39326f31927721c5017b8beb66c3e501fb865a3fa814c9763bfa0f","tests/compile-fail/visibility/private_flags.rs":"2ce4235802aa4e9c96c4e77d9e31d8401ef58dcda4741325184f0764ab1fe393","tests/compile-fail/visibility/private_flags.stderr.beta":"f3eb9f7baf2689258f3519ff7ee5c6ec3c237264ebcfe63f40c40f2023e5022f","tests/compile-fail/visibility/pub_const.rs":"8f813a97ac518c5ea8ac65b184101912452384afaf7b8d6c5e62f8370eca3c0a","tests/compile-fail/visibility/pub_const.stderr.beta":"823976ae1794d7f5372e2ec9aabba497e7bb88004722904c38da342ed98e8962","tests/compile-pass/impls/convert.rs":"88fe80bfb9cd5779f0e1d92c9ec02a8b6bb67e334c07f2309e9c0ba5ef776eb0","tests/compile-pass/impls/default.rs":"c508f9a461691f44b45142fa5ad599f02326e1de4c0cbca6c0593f4652eba109","tests/compile-pass/impls/inherent_methods.rs":"ecc26388e9a394bfa7a5bb69a5d621ab3d4d1e53f28f657bb8e78fe79f437913","tests/compile-pass/redefinition/core.rs":"ff5b6e72f87acc6ebb12405d3c0f6e3fa62e669933656a454bb63b30ea44179c","tests/compile-pass/redefinition/stringify.rs":"1edbce42b900c14425d7ffa14e83e165ebe452d7dccd8c0a8a821bdec64f5c93","tests/compile-pass/repr/c.rs":"6fda17f7c2edfcd155314579e83d0fc8a16209e400f1f9a5ca77bd9a799041f2","tests/compile-pass/repr/transparent.rs":"6cdc87a2137d8a4e0c8ce9b6cba83c82255f8ea125951bf614418685600489ce","tests/compile-pass/visibility/bits_field.rs":"1f3e5ba5a047440066a9f6bf7b7af33f5b06f6b1da3dd9af6886168199a7ea0a","tests/compile-pass/visibility/pub_in.rs":"e95312ff60966d42ec4bc00225507895a9b8ec24056ce6a9edd9145be35d730f","tests/compile.rs":"f27c67a7dd183ca30efea1b6e0880e3469a6dd63b92b1fd711c082df182c9eec"},"package":"bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"}

0 commit comments

Comments
 (0)