Support "packed" footprint libraries
Description
Right now, the sexpr symbol libraries use a "packed" format (many symbols in one file) but the footprint libraries use "unpacked" (one symbol per file, a library is a folder full of files).
We should support both styles for both symbols and footprints, and have features to pack and unpack libraries easily.
Packed libraries should be used for distribution. They have vastly better performance than unpacked (this would really help to resolve the issues raised that footprint loading is slow), plus we can easily compress the packed format for further improvements.
Unpacked libraries should be used for library development and maintenance. This allows easy review of changes, since a change to one symbol or footprint would touch only the relevant file for that symbol or footprint.
The official library repos could use CI pipelines to automatically create packed versions of the libraries from the unpacked contents of the repositories.
KiCad Version
Application: KiCad
Version: (5.99.0-7963-g82e728dbf6), debug build
Libraries:
wxWidgets 3.0.4
libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
Platform: Linux 5.4.0-58-generic x86_64, 64 bit, Little endian, wxGTK, ubuntu, x11
Build Info:
Date: Dec 30 2020 21:58:03
wxWidgets: 3.0.4 (wchar_t,wx containers,compatible with 2.8) GTK+ 3.24
Boost: 1.71.0
OCE: 6.9.1
Curl: 7.68.0
ngspice: 31
Compiler: GCC 9.3.0 with C++ ABI 1013
Build settings:
KICAD_SCRIPTING=OFF
KICAD_SCRIPTING_MODULES=OFF
KICAD_SCRIPTING_PYTHON3=OFF
KICAD_SCRIPTING_WXPYTHON=OFF
KICAD_SCRIPTING_WXPYTHON_PHOENIX=OFF
KICAD_SCRIPTING_ACTION_MENU=OFF
KICAD_USE_OCE=ON
KICAD_SPICE=ON
KICAD_STDLIB_DEBUG=OFF
KICAD_STDLIB_LIGHT_DEBUG=OFF
KICAD_SANITIZE=OFF