tobozo/ESP32-targz
🗜️ An Arduino library to compress/decompress tar, gz, and tar.gz files on ESP32, ESP8266, RP2040 and Teensy
📋 What's Changed
- Added support for Teensy (all versions, mostly untested) by @tobozo in https://github.com/tobozo/ESP32-targz/pull/96
- Full Changelog: https://github.com/tobozo/ESP32-targz/compare/v1.3.0...v1.3.1
📋 What's Changed
- Full Changelog: https://github.com/tobozo/ESP32-targz/compare/v1.2.9...v1.3.0
📋 What's Changed
- Adjusted verbosity + tweaked tests by @tobozo in https://github.com/tobozo/ESP32-targz/pull/89
- Full Changelog: https://github.com/tobozo/ESP32-targz/compare/v1.2.8...v1.2.9
📋 What's Changed
- Health checks: added support for large (>4GB) SD Cards as suggested by @schmitta38 (#86)
📋 What's Changed
- Fixed crash when `tgzLogger` not set, thanks to @zekageri for reporting
- Full Changelog: https://github.com/tobozo/ESP32-targz/compare/v1.2.6...v1.2.7
📋 What's Changed
- bufix for SD-Updater (thanks to @mongonta0716 for reporting)
- Full Changelog: https://github.com/tobozo/ESP32-targz/compare/v1.2.5...v1.2.6
📋 What's Changed
- Added more methods to LZPacker:
- ```cpp
- // file to file
- size_t LZPacker::compress( fs::FS *srcFS, const char* srcFilename, fs::FS*dstFS, const char* dstFilename );
- // file to stream
- size_t LZPacker::compress( fs::FS *srcFS, const char* srcFilename, Stream* dstStream );
- ```
- Added TarPacker:
- + 17 more
📋 What's Changed
- Added compression support with `LZPacker::compress()` by @tobozo in https://github.com/tobozo/ESP32-targz/pull/79
- ```cpp
- // buffer to stream (best compression)
- size_t LZPacker::compress( uint8_t* srcBuf, size_t srcBufLen, Stream* dstStream );
- // buffer to buffer (best compression)
- size_t LZPacker::compress( uint8_t* srcBuf, size_t srcBufLen, uint8_t** dstBufPtr );
- // stream to buffer (average compression)
- size_t LZPacker::compress( Stream* srcStream, size_t srcLen, uint8_t** dstBufPtr );
- + 6 more
📋 What's Changed
- Stream expander by @bakadave in https://github.com/tobozo/ESP32-targz/pull/74
- ```cpp
- bool GzUnpacker::gzStreamExpander( Stream* sourceStream, fs::FS destFS, const char* destFile );
- ```
✨ New Contributors
- @bakadave made their first contribution in https://github.com/tobozo/ESP32-targz/pull/74
- Full Changelog: https://github.com/tobozo/ESP32-targz/compare/v1.2.2...v1.2.3
📋 What's Changed
- Fixed compilation error with platformio when lib_ldf_mode is chain+ or deep+
📋 What's Changed
- Bugfix for [pointer returned from a mismatched allocation function](https://github.com/tobozo/ESP32-targz/compare/1.1.9...1.2.0)
📋 What's Changed
- [RP2040/Pico support](https://github.com/tobozo/ESP32-targz/commit/4e545b64277bff4aae9365f4f416e5fd6c30dc8d)
- [Added GzUnpacker->noDict() to force crc-based decompression](https://github.com/tobozo/ESP32-targz/commit/a58083a4730065e1531c92e0b20cb30156b9234f)
- [fix for platformio whining about missing definition for size_t](https://github.com/tobozo/ESP32-targz/commit/b62e3a7ff1f859d81a020e8cafbeee27d01f86d5)
- Memory optimization/fixes for ESP8266
- CI: added ESP32 qemu to tests
- Full Changelog: https://github.com/tobozo/ESP32-targz/compare/v1.1.7...v1.1.9
📋 What's Changed
- 1.1.7 (RP2040 support) by @tobozo in https://github.com/tobozo/ESP32-targz/pull/62
📋 What's Changed
- [Added stream timeout and destByteReader](https://github.com/tobozo/ESP32-targz/pull/61/commits/3f1b91f5ca22c67cd407482c1370a1ddbf076a63)
- [Removed SPIFFS as default filesystem](https://github.com/tobozo/ESP32-targz/pull/61/commits/4f2d88dfe67913231dc0c7021227f92fed02e7e0)
- Fixes and tweaks for esp8266
📋 Changes
- Fixed compilation warnings
- Renamed `src/ESP32-targz-lib.h` -> `src/ESP32-targz-lib.hpp`
- Added GzUpdateClass for ESP32 to pair integration with @vortigont's [flashZ](https://github.com/vortigont/esp32-flashz) in [esp32FOTA](https://github.com/chrisjoyce911/esp32FOTA) pigz/gzip upcoming support
Added tarStreamExpander upon @mc-hamster's suggestion, see #52
📋 Changes
- TAR archives containing `./` as the root path failed to expand when the output folder was not the root folder
- `setGzProgressCallback` was ignored when using streams
- stream example was failing since arduino-esp32-core 2.0.x
- `tarGzStreamExpander` accepts an extra argument with stream size, the value can be either picked from `Content-Length` HTTP response header, or from `file.size()` when the stream source is the filesystem.
- TAR paths are cleaned up on extraction
This release fixes a bug: if there was an *empty file* inside `.tar` archive and tar health checks were enabled, unpacking would stop and return `error -34` without finishing the archive. Thanks to @JamPaul97 for reporting this (see #48).
📋 Changes
- esp32-sdk-2.0.x compliance:
- `fs::File->name()` has a new behaviour since 2.x.x
- LittleFS is now part of the core
- esp8266-sdk-3.x.x compliance:
- strdupa / memrchr shims
- MD5Builder code shared with ESP32 (removed conditional macros)
- [PSRAMFS](https://github.com/tobozo/ESP32-PsRamFS) support
- updated examples
📋 Changes
- Added Include and Exclude Filter to TAR
- Added Include and Exclude Filter to tarGzExpander test
- Added gzStreamExpander
- Temporarily added gzStreamExpander as second test
- Enabled progress with gzUpdater (see #37)
- Added setPsram for ESP32 (request from @sharandac, #37)
- Added support for ramdisk
- Added dual example for gzStreamUpdater and tarGzStreamUpdater
This is a fix release (see #33) addressing an issue where a tar file containing a file with extended attributes would fail to unpack and ignore subsequent files. Thank you @frankcohen for finding that out!
This is a maintenance release, mostly adressing error handling with uzlib and network streams.
📋 Changes
- Archive must be `.tar.gz`
- Application binary file name must end with `ino.bin`
- Spiffs binary file name must end with `spiffs.bin` or `mklittlefs.bin`
This release mostly contains fixes and memory improvements for ESP8266. All examples have been merged into one single sketch for simplicity and integrity.
📋 Changes
- Moved to OO syntax (+Namespaced GZ and TAR)
- Updated documentation and examples
- Added complete test suite for both ESP32 and ESP8266 (see [Test_tar_gz_tgz.ino](examples/Test_tar_gz_tgz/Test_tar_gz_tgz.ino))
- Implemented tarGzStreamExpander + gzStreamUpdater for ESP32
- Improved ESP8266 Support (bugfixes and performances)
📋 Changes
- Fixes #16 for ESP8266
- Implements #18 `gzStreamUpdater` for ESP32 platform, see [Update_from_gz_stream](https://github.com/tobozo/ESP32-targz/tree/master/examples/Update_from_gz_stream) from the examples folder
- Output and progress log functions are temporarily inconsistent across platforms
New decompression modes: tarGzExpander ------------------- It is no longer required to use an intermediate file with tarGzExpander. ```C // this will use an intermediate file (defaulting to /tmp/tmp.tar) tarGzExpander(tarGzFS, "/blah.tat.gz", tarGzFS, "/tmp" ); // this will use an intermediate file too tarGzExpander(tarGzFS, "/blah.tat.gz", tarGzFS, "/tmp", "/tmp/my_temporary_file.tar" ); // this will do a direct gz->tar->filesystem expanding, using no intermediate file tarGzExpander(tarGzFS, fileJustBigEnoughForSPIFFS, tarGzFS, "/tmp", nullptr ); ```
📋 Changes
- Silent mode using callbacks for progress and log
- Better error handling and reporting
📋 Changes
- bugfix (#8) where gzUpdater was crashing (thanks to @scubachristopher for reporting this).
- temporary downgrade of tarGzExpander now using an intermediary file until gzStream->tarStream gets fixed
- error reporting was slightly improved and is now throwing much less false positives.
Added getGzBufferUint8() to make this 4KB stream buffer available outside the library scope, so they're not completely wasted.
