From 3a34f5d581f80372b6c283ca291c44081e29af1f Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 7 Nov 2026 17:00:35 +0300 Subject: [PATCH 1/5] SPIFFS - kick it out of the cores/esp8266 improve build time of examples host tests remain as-is, location adjusted --- cores/esp8266/FS.h | 15 ------------ libraries/FSTools/FSTools.cpp | 5 ++-- .../SPIFFS/lib}/spiffs/LICENSE | 0 .../SPIFFS/lib}/spiffs/README.md | 0 .../SPIFFS/lib}/spiffs/TECH_SPEC | 0 .../SPIFFS/lib}/spiffs/TODO | 0 .../SPIFFS/lib}/spiffs/spiffs.h | 0 .../SPIFFS/lib}/spiffs/spiffs_cache.cpp | 0 .../SPIFFS/lib}/spiffs/spiffs_check.cpp | 0 .../SPIFFS/lib}/spiffs/spiffs_config.h | 0 .../SPIFFS/lib}/spiffs/spiffs_gc.cpp | 0 .../SPIFFS/lib}/spiffs/spiffs_hydrogen.cpp | 0 .../SPIFFS/lib}/spiffs/spiffs_nucleus.cpp | 0 .../SPIFFS/lib}/spiffs/spiffs_nucleus.h | 0 libraries/SPIFFS/library.properties | 11 +++++++++ libraries/SPIFFS/src/SPIFFS.h | 24 +++++++++++++++++++ .../SPIFFS/src}/spiffs_api.cpp | 0 .../SPIFFS/src}/spiffs_api.h | 17 ++++++------- tests/host/Makefile | 22 +++++++++-------- tests/host/common/littlefs_mock.cpp | 4 ++-- tests/host/common/spiffs_mock.cpp | 4 ++-- 21 files changed, 63 insertions(+), 39 deletions(-) rename {cores/esp8266 => libraries/SPIFFS/lib}/spiffs/LICENSE (100%) rename {cores/esp8266 => libraries/SPIFFS/lib}/spiffs/README.md (100%) rename {cores/esp8266 => libraries/SPIFFS/lib}/spiffs/TECH_SPEC (100%) rename {cores/esp8266 => libraries/SPIFFS/lib}/spiffs/TODO (100%) rename {cores/esp8266 => libraries/SPIFFS/lib}/spiffs/spiffs.h (100%) rename {cores/esp8266 => libraries/SPIFFS/lib}/spiffs/spiffs_cache.cpp (100%) rename {cores/esp8266 => libraries/SPIFFS/lib}/spiffs/spiffs_check.cpp (100%) rename {cores/esp8266 => libraries/SPIFFS/lib}/spiffs/spiffs_config.h (100%) rename {cores/esp8266 => libraries/SPIFFS/lib}/spiffs/spiffs_gc.cpp (100%) rename {cores/esp8266 => libraries/SPIFFS/lib}/spiffs/spiffs_hydrogen.cpp (100%) rename {cores/esp8266 => libraries/SPIFFS/lib}/spiffs/spiffs_nucleus.cpp (100%) rename {cores/esp8266 => libraries/SPIFFS/lib}/spiffs/spiffs_nucleus.h (100%) create mode 100644 libraries/SPIFFS/library.properties create mode 100644 libraries/SPIFFS/src/SPIFFS.h rename {cores/esp8266 => libraries/SPIFFS/src}/spiffs_api.cpp (100%) rename {cores/esp8266 => libraries/SPIFFS/src}/spiffs_api.h (98%) diff --git a/cores/esp8266/FS.h b/cores/esp8266/FS.h index 55305e9688..99402edca5 100644 --- a/cores/esp8266/FS.h +++ b/cores/esp8266/FS.h @@ -199,16 +199,6 @@ class FSConfig bool _autoFormat; }; -class SPIFFSConfig : public FSConfig -{ -public: - static constexpr uint32_t FSId = 0x53504946; - SPIFFSConfig(bool autoFormat = true) : FSConfig(FSId, autoFormat) { } - - // Inherit _type and _autoFormat - // nothing yet, enableTime TBD when SPIFFS has metadate -}; - class FS { public: @@ -279,11 +269,6 @@ using fs::SeekCur; using fs::SeekEnd; using fs::FSInfo; using fs::FSConfig; -using fs::SPIFFSConfig; #endif //FS_NO_GLOBALS -#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SPIFFS) -extern fs::FS SPIFFS __attribute__((deprecated("SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems."))); -#endif - #endif //FS_H diff --git a/libraries/FSTools/FSTools.cpp b/libraries/FSTools/FSTools.cpp index c18e968b76..5417205e15 100644 --- a/libraries/FSTools/FSTools.cpp +++ b/libraries/FSTools/FSTools.cpp @@ -1,6 +1,7 @@ #include "FSTools.h" -#include "LittleFS.h" -#include + +#include +#include #include diff --git a/cores/esp8266/spiffs/LICENSE b/libraries/SPIFFS/lib/spiffs/LICENSE similarity index 100% rename from cores/esp8266/spiffs/LICENSE rename to libraries/SPIFFS/lib/spiffs/LICENSE diff --git a/cores/esp8266/spiffs/README.md b/libraries/SPIFFS/lib/spiffs/README.md similarity index 100% rename from cores/esp8266/spiffs/README.md rename to libraries/SPIFFS/lib/spiffs/README.md diff --git a/cores/esp8266/spiffs/TECH_SPEC b/libraries/SPIFFS/lib/spiffs/TECH_SPEC similarity index 100% rename from cores/esp8266/spiffs/TECH_SPEC rename to libraries/SPIFFS/lib/spiffs/TECH_SPEC diff --git a/cores/esp8266/spiffs/TODO b/libraries/SPIFFS/lib/spiffs/TODO similarity index 100% rename from cores/esp8266/spiffs/TODO rename to libraries/SPIFFS/lib/spiffs/TODO diff --git a/cores/esp8266/spiffs/spiffs.h b/libraries/SPIFFS/lib/spiffs/spiffs.h similarity index 100% rename from cores/esp8266/spiffs/spiffs.h rename to libraries/SPIFFS/lib/spiffs/spiffs.h diff --git a/cores/esp8266/spiffs/spiffs_cache.cpp b/libraries/SPIFFS/lib/spiffs/spiffs_cache.cpp similarity index 100% rename from cores/esp8266/spiffs/spiffs_cache.cpp rename to libraries/SPIFFS/lib/spiffs/spiffs_cache.cpp diff --git a/cores/esp8266/spiffs/spiffs_check.cpp b/libraries/SPIFFS/lib/spiffs/spiffs_check.cpp similarity index 100% rename from cores/esp8266/spiffs/spiffs_check.cpp rename to libraries/SPIFFS/lib/spiffs/spiffs_check.cpp diff --git a/cores/esp8266/spiffs/spiffs_config.h b/libraries/SPIFFS/lib/spiffs/spiffs_config.h similarity index 100% rename from cores/esp8266/spiffs/spiffs_config.h rename to libraries/SPIFFS/lib/spiffs/spiffs_config.h diff --git a/cores/esp8266/spiffs/spiffs_gc.cpp b/libraries/SPIFFS/lib/spiffs/spiffs_gc.cpp similarity index 100% rename from cores/esp8266/spiffs/spiffs_gc.cpp rename to libraries/SPIFFS/lib/spiffs/spiffs_gc.cpp diff --git a/cores/esp8266/spiffs/spiffs_hydrogen.cpp b/libraries/SPIFFS/lib/spiffs/spiffs_hydrogen.cpp similarity index 100% rename from cores/esp8266/spiffs/spiffs_hydrogen.cpp rename to libraries/SPIFFS/lib/spiffs/spiffs_hydrogen.cpp diff --git a/cores/esp8266/spiffs/spiffs_nucleus.cpp b/libraries/SPIFFS/lib/spiffs/spiffs_nucleus.cpp similarity index 100% rename from cores/esp8266/spiffs/spiffs_nucleus.cpp rename to libraries/SPIFFS/lib/spiffs/spiffs_nucleus.cpp diff --git a/cores/esp8266/spiffs/spiffs_nucleus.h b/libraries/SPIFFS/lib/spiffs/spiffs_nucleus.h similarity index 100% rename from cores/esp8266/spiffs/spiffs_nucleus.h rename to libraries/SPIFFS/lib/spiffs/spiffs_nucleus.h diff --git a/libraries/SPIFFS/library.properties b/libraries/SPIFFS/library.properties new file mode 100644 index 0000000000..27b2e7c3a3 --- /dev/null +++ b/libraries/SPIFFS/library.properties @@ -0,0 +1,11 @@ +name=SPIFFS +version=1 +author=esp8266/Arduino +maintainer=esp8266/Arduino +sentence=Port of SPIFFS to ESP8266 Arduino +paragraph= +category=Data Storage +url=https://github.com/esp8266/Arduino/tree/master/libraries/SPIFFS +architectures=esp8266 +dot_a_linkage=true +includes=SPIFFS.h diff --git a/libraries/SPIFFS/src/SPIFFS.h b/libraries/SPIFFS/src/SPIFFS.h new file mode 100644 index 0000000000..5e3d8ace99 --- /dev/null +++ b/libraries/SPIFFS/src/SPIFFS.h @@ -0,0 +1,24 @@ +#pragma once + +#include "spiffs_api.h" +#include + +namespace fs { + +class SPIFFSConfig : public FSConfig +{ +public: + static constexpr uint32_t FSId = 0x53504946; + SPIFFSConfig(bool autoFormat = true) : FSConfig(FSId, autoFormat) { } + + // Inherit _type and _autoFormat + // nothing yet, enableTime TBD when SPIFFS has metadate +}; + +} // namespace fs + +using fs::SPIFFSConfig; + +#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SPIFFS) +extern fs::FS SPIFFS __attribute__((deprecated("SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems."))); +#endif diff --git a/cores/esp8266/spiffs_api.cpp b/libraries/SPIFFS/src/spiffs_api.cpp similarity index 100% rename from cores/esp8266/spiffs_api.cpp rename to libraries/SPIFFS/src/spiffs_api.cpp diff --git a/cores/esp8266/spiffs_api.h b/libraries/SPIFFS/src/spiffs_api.h similarity index 98% rename from cores/esp8266/spiffs_api.h rename to libraries/SPIFFS/src/spiffs_api.h index 96b01358a6..dc218ec753 100644 --- a/cores/esp8266/spiffs_api.h +++ b/libraries/SPIFFS/src/spiffs_api.h @@ -24,16 +24,17 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + #include -#include "FS.h" -#include "FSImpl.h" +#include +#include extern "C" { - #include "spiffs/spiffs.h" - #include "spiffs/spiffs_nucleus.h" + #include "../lib/spiffs/spiffs.h" + #include "../lib/spiffs/spiffs_nucleus.h" }; -#include "debug.h" -#include "flash_utils.h" -#include "flash_hal.h" +#include +#include +#include using namespace fs; @@ -600,6 +601,6 @@ class SPIFFSDirImpl : public DirImpl bool _valid; }; -}; // namespace +} // namespace spiffs_impl #endif //spiffs_api_h diff --git a/tests/host/Makefile b/tests/host/Makefile index 97a4c671fb..1e666d34b3 100644 --- a/tests/host/Makefile +++ b/tests/host/Makefile @@ -101,15 +101,8 @@ CORE_CPP_FILES := \ Print.cpp \ stdlib_noniso.cpp \ FS.cpp \ - spiffs_api.cpp \ MD5Builder.cpp \ - ../../libraries/LittleFS/src/LittleFS.cpp \ core_esp8266_noniso.cpp \ - spiffs/spiffs_cache.cpp \ - spiffs/spiffs_check.cpp \ - spiffs/spiffs_gc.cpp \ - spiffs/spiffs_hydrogen.cpp \ - spiffs/spiffs_nucleus.cpp \ libb64/cencode.cpp \ libb64/cdecode.cpp \ Schedule.cpp \ @@ -118,6 +111,15 @@ CORE_CPP_FILES := \ Updater.cpp \ time.cpp \ ) \ + $(addprefix $(abspath $(LIBRARIES_PATH))/, \ + LittleFS/src/LittleFS.cpp \ + SPIFFS/src/spiffs_api.cpp \ + SPIFFS/lib/spiffs/spiffs_cache.cpp \ + SPIFFS/lib/spiffs/spiffs_check.cpp \ + SPIFFS/lib/spiffs/spiffs_gc.cpp \ + SPIFFS/lib/spiffs/spiffs_hydrogen.cpp \ + SPIFFS/lib/spiffs/spiffs_nucleus.cpp \ + ) \ $(addprefix $(abspath $(LIBRARIES_PATH)/ESP8266SdFat/src)/, \ FatLib/FatFile.cpp \ FatLib/FatFileLFN.cpp \ @@ -139,9 +141,9 @@ CORE_CPP_FILES := \ $(abspath $(LIBRARIES_PATH)/SD/src/SD.cpp) \ CORE_C_FILES := \ - $(addprefix $(abspath $(CORE_PATH))/,\ - ../../libraries/LittleFS/src/lfs.c \ - ../../libraries/LittleFS/src/lfs_util.c \ + $(addprefix $(abspath $(LIBRARIES_PATH))/,\ + LittleFS/src/lfs.c \ + LittleFS/src/lfs_util.c \ ) MOCK_CPP_FILES_COMMON := \ diff --git a/tests/host/common/littlefs_mock.cpp b/tests/host/common/littlefs_mock.cpp index d7521d4589..407d4fa622 100644 --- a/tests/host/common/littlefs_mock.cpp +++ b/tests/host/common/littlefs_mock.cpp @@ -18,13 +18,13 @@ #include "littlefs_mock.h" #include "spiffs_mock.h" -#include "spiffs/spiffs.h" +#include "lib/spiffs/spiffs.h" #include "debug.h" #include #include #include -#include +#include #include #include diff --git a/tests/host/common/spiffs_mock.cpp b/tests/host/common/spiffs_mock.cpp index e2d5fe341c..7668ac6f12 100644 --- a/tests/host/common/spiffs_mock.cpp +++ b/tests/host/common/spiffs_mock.cpp @@ -14,12 +14,12 @@ */ #include "spiffs_mock.h" -#include "spiffs/spiffs.h" +#include "lib/spiffs/spiffs.h" #include "debug.h" #include #include -#include +#include #include #include From 701d0c0f625bd09566a90902487d997ae29540fe Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 7 Nov 2026 17:23:36 +0300 Subject: [PATCH 2/5] deprecated --- libraries/SPIFFS/library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SPIFFS/library.properties b/libraries/SPIFFS/library.properties index 27b2e7c3a3..be30739ce4 100644 --- a/libraries/SPIFFS/library.properties +++ b/libraries/SPIFFS/library.properties @@ -3,7 +3,7 @@ version=1 author=esp8266/Arduino maintainer=esp8266/Arduino sentence=Port of SPIFFS to ESP8266 Arduino -paragraph= +paragraph=[DEPRECATED] Please consider moving to LittleFS or other filesystems category=Data Storage url=https://github.com/esp8266/Arduino/tree/master/libraries/SPIFFS architectures=esp8266 From 764564f7fcf29adac0905a132e80d40340c698fb Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 7 Nov 2026 17:29:20 +0300 Subject: [PATCH 3/5] order of includes expected fs config first --- libraries/SPIFFS/src/SPIFFS.h | 17 ----------------- libraries/SPIFFS/src/spiffs_api.h | 18 +++++++++++++++++- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/libraries/SPIFFS/src/SPIFFS.h b/libraries/SPIFFS/src/SPIFFS.h index 5e3d8ace99..ef03990c41 100644 --- a/libraries/SPIFFS/src/SPIFFS.h +++ b/libraries/SPIFFS/src/SPIFFS.h @@ -1,23 +1,6 @@ #pragma once #include "spiffs_api.h" -#include - -namespace fs { - -class SPIFFSConfig : public FSConfig -{ -public: - static constexpr uint32_t FSId = 0x53504946; - SPIFFSConfig(bool autoFormat = true) : FSConfig(FSId, autoFormat) { } - - // Inherit _type and _autoFormat - // nothing yet, enableTime TBD when SPIFFS has metadate -}; - -} // namespace fs - -using fs::SPIFFSConfig; #if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SPIFFS) extern fs::FS SPIFFS __attribute__((deprecated("SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems."))); diff --git a/libraries/SPIFFS/src/spiffs_api.h b/libraries/SPIFFS/src/spiffs_api.h index dc218ec753..e436696a78 100644 --- a/libraries/SPIFFS/src/spiffs_api.h +++ b/libraries/SPIFFS/src/spiffs_api.h @@ -36,7 +36,23 @@ extern "C" { #include #include -using namespace fs; +namespace fs { + +class SPIFFSConfig : public FSConfig +{ +public: + static constexpr uint32_t FSId = 0x53504946; + SPIFFSConfig(bool autoFormat = true) : FSConfig(FSId, autoFormat) { } + + // Inherit _type and _autoFormat + // nothing yet, enableTime TBD when SPIFFS has metadate +}; + +} // namespace fs + +using fs::SPIFFSConfig; + +using namespace fs; // ? // The following are deprecated symbols and functions, to be removed at the next major release. // They are provided only for backwards compatibility and to give libs a chance to update. From 952fb98830bf8ac8c18aa7f7115434656d8048fa Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 7 Nov 2026 17:34:52 +0300 Subject: [PATCH 4/5] host test includes --- tests/host/common/littlefs_mock.cpp | 5 +---- tests/host/common/spiffs_mock.cpp | 1 - tests/host/core/test_Print.cpp | 1 - tests/host/fs/test_fs.cpp | 2 +- 4 files changed, 2 insertions(+), 7 deletions(-) diff --git a/tests/host/common/littlefs_mock.cpp b/tests/host/common/littlefs_mock.cpp index 407d4fa622..d14058b168 100644 --- a/tests/host/common/littlefs_mock.cpp +++ b/tests/host/common/littlefs_mock.cpp @@ -17,14 +17,11 @@ */ #include "littlefs_mock.h" -#include "spiffs_mock.h" -#include "lib/spiffs/spiffs.h" #include "debug.h" #include #include -#include -#include +#include #include #include diff --git a/tests/host/common/spiffs_mock.cpp b/tests/host/common/spiffs_mock.cpp index 7668ac6f12..6815020a02 100644 --- a/tests/host/common/spiffs_mock.cpp +++ b/tests/host/common/spiffs_mock.cpp @@ -14,7 +14,6 @@ */ #include "spiffs_mock.h" -#include "lib/spiffs/spiffs.h" #include "debug.h" #include #include diff --git a/tests/host/core/test_Print.cpp b/tests/host/core/test_Print.cpp index 9926756a24..0eef0b0128 100644 --- a/tests/host/core/test_Print.cpp +++ b/tests/host/core/test_Print.cpp @@ -18,7 +18,6 @@ #include #include #include "../common/littlefs_mock.h" -#include // Use a LittleFS file because we can't instantiate a virtual class like Print TEST_CASE("Print::write overrides all compile properly", "[core][Print]") diff --git a/tests/host/fs/test_fs.cpp b/tests/host/fs/test_fs.cpp index 900521b47e..c15f06418d 100644 --- a/tests/host/fs/test_fs.cpp +++ b/tests/host/fs/test_fs.cpp @@ -19,7 +19,7 @@ #include "../common/spiffs_mock.h" #include "../common/littlefs_mock.h" #include "../common/sdfs_mock.h" -#include +#include #include #include "../../../libraries/SDFS/src/SDFS.h" #include "../../../libraries/SD/src/SD.h" From 62ffc6df952e2ecc0947709ff4285015958d01b2 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 7 Nov 2026 17:53:12 +0300 Subject: [PATCH 5/5] arduino builder does not concider lib/ --- .../FSTools/examples/custom_FS_example/custom_FS_example.ino | 1 + libraries/SPIFFS/src/spiffs_cache.cpp | 1 + libraries/SPIFFS/src/spiffs_check.cpp | 1 + libraries/SPIFFS/src/spiffs_gc.cpp | 1 + libraries/SPIFFS/src/spiffs_hydrogen.cpp | 1 + libraries/SPIFFS/src/spiffs_nucleus.cpp | 1 + 6 files changed, 6 insertions(+) create mode 100644 libraries/SPIFFS/src/spiffs_cache.cpp create mode 100644 libraries/SPIFFS/src/spiffs_check.cpp create mode 100644 libraries/SPIFFS/src/spiffs_gc.cpp create mode 100644 libraries/SPIFFS/src/spiffs_hydrogen.cpp create mode 100644 libraries/SPIFFS/src/spiffs_nucleus.cpp diff --git a/libraries/FSTools/examples/custom_FS_example/custom_FS_example.ino b/libraries/FSTools/examples/custom_FS_example/custom_FS_example.ino index 3dc2e804fc..a6d15fff08 100644 --- a/libraries/FSTools/examples/custom_FS_example/custom_FS_example.ino +++ b/libraries/FSTools/examples/custom_FS_example/custom_FS_example.ino @@ -25,6 +25,7 @@ #include #include #include +#include #define TARGET_FS_LAYOUT FST::layout_4m3m diff --git a/libraries/SPIFFS/src/spiffs_cache.cpp b/libraries/SPIFFS/src/spiffs_cache.cpp new file mode 100644 index 0000000000..df5c6bc0a6 --- /dev/null +++ b/libraries/SPIFFS/src/spiffs_cache.cpp @@ -0,0 +1 @@ +#include "../lib/spiffs/spiffs_cache.cpp" diff --git a/libraries/SPIFFS/src/spiffs_check.cpp b/libraries/SPIFFS/src/spiffs_check.cpp new file mode 100644 index 0000000000..bed29eedaa --- /dev/null +++ b/libraries/SPIFFS/src/spiffs_check.cpp @@ -0,0 +1 @@ +#include "../lib/spiffs/spiffs_check.cpp" diff --git a/libraries/SPIFFS/src/spiffs_gc.cpp b/libraries/SPIFFS/src/spiffs_gc.cpp new file mode 100644 index 0000000000..eb27d23940 --- /dev/null +++ b/libraries/SPIFFS/src/spiffs_gc.cpp @@ -0,0 +1 @@ +#include "../lib/spiffs/spiffs_gc.cpp" diff --git a/libraries/SPIFFS/src/spiffs_hydrogen.cpp b/libraries/SPIFFS/src/spiffs_hydrogen.cpp new file mode 100644 index 0000000000..c8ca6ab466 --- /dev/null +++ b/libraries/SPIFFS/src/spiffs_hydrogen.cpp @@ -0,0 +1 @@ +#include "../lib/spiffs/spiffs_hydrogen.cpp" diff --git a/libraries/SPIFFS/src/spiffs_nucleus.cpp b/libraries/SPIFFS/src/spiffs_nucleus.cpp new file mode 100644 index 0000000000..e1ab5339df --- /dev/null +++ b/libraries/SPIFFS/src/spiffs_nucleus.cpp @@ -0,0 +1 @@ +#include "../lib/spiffs/spiffs_nucleus.cpp"