Skip to content

Commit bddf76d

Browse files
michael-membrowseMrogovp
authored andcommitted
fix memory report and add path filter
1 parent 7cf84dd commit bddf76d

3 files changed

Lines changed: 89 additions & 13 deletions

File tree

.github/membrowse-targets.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"build_cmd": "test -f IDE/GCC-ARM/Header/user_settings.h && mkdir -p IDE/GCC-ARM/Header-gen && { cat IDE/GCC-ARM/Header/user_settings.h; printf '#define NO_CRYPT_TEST\\n#define NO_CRYPT_BENCHMARK\\n'; } > IDE/GCC-ARM/Header-gen/user_settings.h && cd IDE/GCC-ARM && make -f Makefile.test TOOLCHAIN=arm-none-eabi- FIPS=0 USER_SETTINGS_DIR=./Header-gen CFLAGS_EXTRA='-Wno-cpp -DWOLFCRYPT_ONLY -DWOLFSSL_NO_SOCK' LDFLAGS='-mcpu=cortex-m4 -mthumb -mabi=aapcs --specs=nosys.specs --specs=nano.specs -Wl,-Map=./Build/WolfCryptTest.map -Wl,-ereset_handler -flto -Wl,--defsym=__stack_process_end__=0x20010000'",
88
"elf": "IDE/GCC-ARM/Build/WolfCryptTest.elf",
99
"ld": "IDE/GCC-ARM/linker.ld",
10+
"map_file": "IDE/GCC-ARM/Build/WolfCryptTest.map",
1011
"linker_vars": ""
1112
},
1213
{
@@ -17,6 +18,7 @@
1718
"build_cmd": "test -f examples/configs/user_settings_min_ecc.h && mkdir -p IDE/GCC-ARM/Header-gen && { cat examples/configs/user_settings_min_ecc.h; printf '#define WOLFSSL_GENERAL_ALIGNMENT 4\\n#define SINGLE_THREADED\\n#define WOLFSSL_SMALL_STACK\\n#define NO_FILESYSTEM\\n#define NO_WRITEV\\n#define NO_MAIN_DRIVER\\n#define NO_DEV_RANDOM\\n#define BENCH_EMBEDDED\\n#define USE_CERT_BUFFERS_256\\n#define WOLFSSL_IGNORE_FILE_WARN\\n#define USE_WOLF_ARM_STARTUP\\n#define WOLFSSL_USER_CURRTIME\\n#define WOLFSSL_GMTIME\\n#define USER_TICKS\\nextern unsigned long my_time(unsigned long* timer);\\n#define XTIME my_time\\n#define CUSTOM_RAND_TYPE unsigned int\\nextern unsigned int my_rng_seed_gen(void);\\n#undef CUSTOM_RAND_GENERATE\\n#define CUSTOM_RAND_GENERATE my_rng_seed_gen\\n#define HAVE_HASHDRBG\\n#define NO_CRYPT_TEST\\n#define NO_CRYPT_BENCHMARK\\n'; } > IDE/GCC-ARM/Header-gen/user_settings.h && cd IDE/GCC-ARM && make -f Makefile.test TOOLCHAIN=arm-none-eabi- FIPS=0 USER_SETTINGS_DIR=./Header-gen CFLAGS_EXTRA='-Wno-cpp -DWOLFSSL_NO_SOCK -DWOLFCRYPT_ONLY' LDFLAGS='-mcpu=cortex-m4 -mthumb -mabi=aapcs --specs=nosys.specs --specs=nano.specs -Wl,-Map=./Build/WolfCryptTest.map -Wl,-ereset_handler -flto -Wl,--defsym=__stack_process_end__=0x20010000'",
1819
"elf": "IDE/GCC-ARM/Build/WolfCryptTest.elf",
1920
"ld": "IDE/GCC-ARM/linker.ld",
21+
"map_file": "IDE/GCC-ARM/Build/WolfCryptTest.map",
2022
"linker_vars": ""
2123
},
2224
{
@@ -27,6 +29,7 @@
2729
"build_cmd": "test -f examples/configs/user_settings_tls12.h && mkdir -p IDE/GCC-ARM/Header-gen && { cat examples/configs/user_settings_tls12.h; printf '#define WOLFSSL_GENERAL_ALIGNMENT 4\\n#define SINGLE_THREADED\\n#define WOLFSSL_SMALL_STACK\\n#define NO_FILESYSTEM\\n#define NO_WRITEV\\n#define NO_MAIN_DRIVER\\n#define NO_DEV_RANDOM\\n#define BENCH_EMBEDDED\\n#define USE_CERT_BUFFERS_256\\n#define USE_CERT_BUFFERS_2048\\n#define WOLFSSL_IGNORE_FILE_WARN\\n#define USE_WOLF_ARM_STARTUP\\n#define WOLFSSL_USER_CURRTIME\\n#define WOLFSSL_GMTIME\\n#define USER_TICKS\\nextern unsigned long my_time(unsigned long* timer);\\n#define XTIME my_time\\n#define CUSTOM_RAND_TYPE unsigned int\\nextern unsigned int my_rng_seed_gen(void);\\n#undef CUSTOM_RAND_GENERATE\\n#define CUSTOM_RAND_GENERATE my_rng_seed_gen\\n#define HAVE_HASHDRBG\\n#define NO_CRYPT_TEST\\n#define NO_CRYPT_BENCHMARK\\n'; } > IDE/GCC-ARM/Header-gen/user_settings.h && cd IDE/GCC-ARM && make -f Makefile.test TOOLCHAIN=arm-none-eabi- FIPS=0 USER_SETTINGS_DIR=./Header-gen CFLAGS_EXTRA='-Wno-cpp -DWOLFSSL_NO_SOCK' LDFLAGS='-mcpu=cortex-m4 -mthumb -mabi=aapcs --specs=nosys.specs --specs=nano.specs -Wl,-Map=./Build/WolfCryptTest.map -Wl,-ereset_handler -flto -Wl,--defsym=__stack_process_end__=0x20010000'",
2830
"elf": "IDE/GCC-ARM/Build/WolfCryptTest.elf",
2931
"ld": "IDE/GCC-ARM/linker.ld",
32+
"map_file": "IDE/GCC-ARM/Build/WolfCryptTest.map",
3033
"linker_vars": ""
3134
},
3235
{
@@ -37,6 +40,7 @@
3740
"build_cmd": "test -f examples/configs/user_settings_baremetal.h && mkdir -p IDE/GCC-ARM/Header-gen && { cat examples/configs/user_settings_baremetal.h; printf '#define WOLFSSL_GENERAL_ALIGNMENT 4\\n#define SINGLE_THREADED\\n#define WOLFSSL_SMALL_STACK\\n#define NO_FILESYSTEM\\n#define NO_WRITEV\\n#define NO_MAIN_DRIVER\\n#define NO_DEV_RANDOM\\n#define BENCH_EMBEDDED\\n#define USE_CERT_BUFFERS_256\\n#define USE_CERT_BUFFERS_2048\\n#define WOLFSSL_IGNORE_FILE_WARN\\n#define USE_WOLF_ARM_STARTUP\\n#define WOLFSSL_USER_CURRTIME\\n#define WOLFSSL_GMTIME\\n#define USER_TICKS\\nextern unsigned long my_time(unsigned long* timer);\\n#define XTIME my_time\\n#define CUSTOM_RAND_TYPE unsigned int\\nextern unsigned int my_rng_seed_gen(void);\\n#undef CUSTOM_RAND_GENERATE\\n#define CUSTOM_RAND_GENERATE my_rng_seed_gen\\n#define HAVE_HASHDRBG\\n#define NO_CRYPT_TEST\\n#define NO_CRYPT_BENCHMARK\\n'; } > IDE/GCC-ARM/Header-gen/user_settings.h && cd IDE/GCC-ARM && make -f Makefile.test TOOLCHAIN=arm-none-eabi- FIPS=0 USER_SETTINGS_DIR=./Header-gen CFLAGS_EXTRA='-Wno-cpp -DWOLFSSL_NO_SOCK -DWOLFCRYPT_ONLY' LDFLAGS='-mcpu=cortex-m4 -mthumb -mabi=aapcs --specs=nosys.specs --specs=nano.specs -Wl,-Map=./Build/WolfCryptTest.map -Wl,-ereset_handler -flto -Wl,--defsym=__stack_process_end__=0x20010000'",
3841
"elf": "IDE/GCC-ARM/Build/WolfCryptTest.elf",
3942
"ld": "IDE/GCC-ARM/linker.ld",
43+
"map_file": "IDE/GCC-ARM/Build/WolfCryptTest.map",
4044
"linker_vars": ""
4145
}
4246
]
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Membrowse Comment
2+
3+
on:
4+
workflow_run:
5+
workflows: [Membrowse Memory Report]
6+
types:
7+
- completed
8+
9+
jobs:
10+
post-comment:
11+
runs-on: ubuntu-24.04
12+
timeout-minutes: 10
13+
# Run the comment job even if some of the builds fail
14+
if: >
15+
github.event.workflow_run.event == 'pull_request' &&
16+
github.event.workflow_run.conclusion != 'cancelled'
17+
permissions:
18+
contents: read
19+
pull-requests: write
20+
steps:
21+
- name: Checkout repository
22+
uses: actions/checkout@v5
23+
24+
- name: Post Membrowse PR comment
25+
if: ${{ env.MEMBROWSE_API_KEY != '' }}
26+
uses: membrowse/membrowse-action/comment-action@v1
27+
with:
28+
api_key: ${{ secrets.MEMBROWSE_API_KEY }}
29+
commit: ${{ github.event.workflow_run.head_sha }}
30+
env:
31+
MEMBROWSE_API_KEY: ${{ secrets.MEMBROWSE_API_KEY }}
32+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Lines changed: 53 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
name: Membrowse Memory Report
22

3-
# Runs nightly instead of per-PR - the report is for trend tracking, not
4-
# gating individual PRs, and the build matrix is too heavy to run on every
5-
# push. Use workflow_dispatch to trigger an ad-hoc run.
6-
73
on:
8-
schedule:
9-
- cron: '0 4 * * *' # daily at 04:00 UTC
4+
pull_request:
5+
types: [opened, synchronize, reopened, ready_for_review]
6+
push:
7+
branches: [master]
108
workflow_dispatch:
119

1210
concurrency:
13-
group: ${{ github.workflow }}
14-
cancel-in-progress: false
11+
group: ${{ github.workflow }}-${{ github.ref }}
12+
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
1513

1614
jobs:
1715
load-targets:
16+
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
1817
runs-on: ubuntu-24.04
1918
timeout-minutes: 10
2019
outputs:
@@ -27,8 +26,45 @@ jobs:
2726
id: set-matrix
2827
run: echo "matrix=$(jq -c '.' .github/membrowse-targets.json)" >> $GITHUB_OUTPUT
2928

29+
check-changes:
30+
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
31+
runs-on: ubuntu-24.04
32+
timeout-minutes: 5
33+
outputs:
34+
needs_build: ${{ steps.filter.outputs.code == 'true' || github.event_name == 'workflow_dispatch' }}
35+
steps:
36+
- name: Checkout repository
37+
uses: actions/checkout@v5
38+
39+
- name: Detect binary-affecting changes
40+
id: filter
41+
if: github.event_name == 'pull_request' || github.event_name == 'push'
42+
uses: dorny/paths-filter@v4
43+
with:
44+
predicate-quantifier: every
45+
filters: |
46+
code:
47+
- '!**.md'
48+
- '!**/README*'
49+
- '!doc/**'
50+
- '!AUTHORS'
51+
- '!COPYING*'
52+
- '!LICENSE*'
53+
- '!LICENSING'
54+
- '!INSTALL'
55+
- '!ChangeLog*'
56+
- '!SCRIPTS-LIST'
57+
- '!.gitignore'
58+
- '!.editorconfig'
59+
- '!.codespellexcludelines'
60+
- '!.cyignore'
61+
- '!.wolfssl_known_macro_extras'
62+
- '!.github/ISSUE_TEMPLATE/**'
63+
- '!.github/PULL_REQUEST_TEMPLATE.md'
64+
3065
analyze:
31-
needs: load-targets
66+
needs: [load-targets, check-changes]
67+
if: github.event_name != 'pull_request' || needs.check-changes.outputs.needs_build == 'true'
3268
runs-on: ubuntu-24.04
3369
timeout-minutes: 10
3470
strategy:
@@ -40,25 +76,29 @@ jobs:
4076
- name: Checkout repository
4177
uses: actions/checkout@v5
4278
with:
43-
fetch-depth: 0
44-
submodules: recursive
79+
fetch-depth: 2
80+
submodules: ${{ needs.check-changes.outputs.needs_build == 'true' && 'recursive' || 'false' }}
4581

4682
- name: Install packages
83+
if: needs.check-changes.outputs.needs_build == 'true'
4784
uses: ./.github/actions/install-apt-deps
4885
with:
4986
packages: ${{ matrix.apt_packages }}
5087

5188
- name: Build firmware
89+
if: needs.check-changes.outputs.needs_build == 'true'
5290
run: ${{ matrix.build_cmd }}
5391

5492
- name: Run Membrowse PR Action
5593
id: analyze
5694
uses: membrowse/membrowse-action@v1
5795
with:
5896
target_name: ${{ matrix.target_name }}
59-
elf: ${{ matrix.elf }}
60-
ld: ${{ matrix.ld }}
97+
elf: ${{ needs.check-changes.outputs.needs_build == 'true' && matrix.elf || '' }}
98+
ld: ${{ needs.check-changes.outputs.needs_build == 'true' && matrix.ld || '' }}
99+
map_file: ${{ needs.check-changes.outputs.needs_build == 'true' && matrix.map_file || '' }}
61100
linker_vars: ${{ matrix.linker_vars }}
62101
api_key: ${{ secrets.MEMBROWSE_API_KEY }}
63102
api_url: ${{ vars.MEMBROWSE_API_URL }}
103+
identical: ${{ needs.check-changes.outputs.needs_build != 'true' }}
64104
verbose: INFO

0 commit comments

Comments
 (0)