test_reproducible_build.sh 889 B

123456789101112131415161718192021222324252627282930313233
  1. #!/usr/bin/env bash
  2. set -euo
  3. for path in \
  4. "examples/get-started/hello_world" \
  5. "examples/bluetooth/nimble/blecent"; do
  6. cd "${IDF_PATH}/${path}"
  7. echo "CONFIG_APP_REPRODUCIBLE_BUILD=y" >sdkconfig
  8. idf.py -B build_first fullclean build
  9. idf.py -B build_second fullclean build
  10. for item in \
  11. "partition_table/partition-table.bin" \
  12. "bootloader/bootloader.bin" \
  13. "bootloader/bootloader.elf" \
  14. "bootloader/bootloader.map" \
  15. "*.bin" \
  16. "*.elf" \
  17. "*.map"; do
  18. diff -s build_first/${item} build_second/${item} # use glob, don't use double quotes
  19. done
  20. # test gdb
  21. rm -f gdb.txt
  22. elf_file=$(find build_first -maxdepth 1 -iname '*.elf')
  23. xtensa-esp32-elf-gdb -x build_first/prefix_map_gdbinit -ex 'set logging on' -ex 'set pagination off' -ex 'list' -ex 'quit' "$elf_file"
  24. if grep "No such file or directory" gdb.txt; then
  25. exit 1
  26. fi
  27. done