V7 -> V8: Updating symbol and footprint libraries

When starting a fresh install of V8 KiCad prompts the user on the first invocation of eeschem / pcbnew regarding “Configure Global Symbol Library Table” / “Configure Global Footprint Library Table”.

  • The first option copies the default library table from the template folder C:\Program Files\KiCad\8.0\share/kicad/template\... It does not include personal settings from previous installs.
  • The second allows to specify a custom file name. Since I want to continue to use my personal libs I choose to copy from C:\Users\me\AppData\Roaming\kicad\7.0\*-lib-table. Then I have my own libs in place, but all the default libraries still use the old ${KICAD7_*_DIR} path. Strangely, with this setting I can also add parts from the default library even if KiCad 7.0 is not installed (anymore). Symbols and footprints are picked out of the C:\Program Files\KiCad\8.0\share\kicad folders.

Also after doing so there is an empty “Available path substitution” in the library folder:
grafik

With the substituted path being invisible (Yeah KiCad is doing the right thing) this looks a bit like black magic.

I could imagine many users run into the issue that their private libs are lost when they update KiCad. They have to find out where their configuration files are located to get their system running again, which is kind of annoying when being not familiar with KiCad.

Wouldn’t it make sense that KiCad checks for library tables from existing installations in C:\Users\me\AppData\Roaming\kicad\*.*\*-lib-table and queries the user from which old installation the tables should be imported?

With an additional checkbox “use default Symbols/Footprints from current (V8) installation” the ${KICAD7_*_DIR} could be substituted with ${KICAD8_*_DIR}.

Would this be worth a feature request? Please comment!

BTW:
Why does KiCad add (version 7) into *_lib_table after modification with KiCad V8?

Private libraries should not be lost. They will be wherever the user placed them when creating.
Usually, the user creates folders somewhere in a read/write location and then places personal libraries in those folders.

What about me!
My libraries are kept in folders on a different hard drive; as well as an external drive and a thumb drive.
Kicad won’t find them just looking in C :slightly_frowning_face:

This might help explain . . .

I think OP used ‘lost’ in different sense - as being lost from library lists.

You miss library tables with libraries themselves, I think.
If you have library tables also at external drive than I’m wrong because I didn’t know it is even possible.

I use only my own libraries.
Don’t know how with V8, but with V7 I had to copy my lists to ‘not system’ directory before first run of Schematic and PCB because file browser window opened by KiCad didn’t saw hidden and system directories/files.
If I were using mix of my own libraries and standard libraries then I think I should have a choice if I want to use old libraries or new. New libraries can be a problem when opening old designs (I prefer to synchronize all symbols/footprints at schematic/PCB with current library), but using forever V7 libraries (even when V9,V10,…) is also a problematic.
I think that problem (not simple, I think) should be addressed when people move to new versions.

There’s a FAQ for managing personal libraries here: KiCad 7 Tips 'n Tricks when making Personal Symbol Libraries

Not sure if that FAQ includes restoring personal libraries to the table. I usually do this by grepping the old tables and inserting into the new ones.

Hi Raptor,

the default template copied from the KiCad installation directory has no version indication:

(sym_lib_table
  (lib (name "4xxx")(type "KiCad")(uri "${KICAD8_SYMBOL_DIR}/4xxx.kicad_sym")(options "")(descr "4xxx series symbols"))
  (lib (name "4xxx_IEEE")(type "KiCad")(uri "${KICAD8_SYMBOL_DIR}/4xxx_IEEE.kicad_sym")(options "")(descr "4xxx series IEEE symbols"))
...

after adding a local library with KiCad V8 Library Manager I find (version 7) in C:\Users\me\AppData\Roaming\kicad\8.0\*_lib_table:

(sym_lib_table
  (version 7)
  (lib (name "4xxx")(type "KiCad")(uri "${KICAD8_SYMBOL_DIR}/4xxx.kicad_sym")(options "")(descr "4xxx series symbols"))
  (lib (name "4xxx_IEEE")(type "KiCad")(uri "${KICAD8_SYMBOL_DIR}/4xxx_IEEE.kicad_sym")(options "")(descr "4xxx series IEEE symbols"))
	...
  (lib (name "test")(type "KiCad")(uri "${KICAD_USER_LIB}/symbols/OwnStuff.kicad_sym")(options "")(descr "Own messy libs"))
)

So this issue is not related to importing from previous libs!
Regarding your link I really like the term “automagically”.

Best Regards
Jan

Hi jmk,

as far as I understand the default libs from KiCad located in the program directory should not be altered.
They are a wealth of data to start projects with.
When I move from V7 to V8 and on I would expect to have KiCad point directly to the Read Only Libraries that come with the current installation. Unless for some strange reason I would not want to update to the latest libs. (I guess this makes sense when I am using a nightly snapshot and do not want to bloat my hdd with several versions of the default lib installed).

If you update from V7 to V8 your local settings folder will have the correct paths to all your libraries.
My proposal was to ask the user: “I found previous (a) installtion(s) of KiCad. Please specify from which installation the settings should be copied”

Processing your previous sym/fp_lib_table should have links to all of your installed libraries. These have to be copied 1:1 to the new installation.

Again: If you are a pro you can always use a merge tool to determine which libraries you want to use. But I think beginners will be destracted and unable to cope with the current dialog window.

Best regards
Jan

Since symbols and footprints are included in schematic and pcb files things are simpler - updating to new library don’t damage your old projects, how it was in past :slight_smile:

After some more checking I believe it is not a good idea to copy your *_lib_table from a previous version:

If you do so you will not receive new libraries that have been added by the KiCad Library team with the new release:

For Example: V8 contains Connector_Samtec_HSEC8, Connector_Samtec_MicroMate and more NEW libraries.

You will only receive these libraries if you first copy the V8.0 template table into your local settings (as suggested by KiCad) and then merge your local additions into this file later on.

After using diff I noticed that there is a different syntax between the template and the *_lib_table that is written by KiCad V8:

Template:

(fp_lib_table
  (lib (name Audio_Module)(type Kicad)(uri ${KICAD8_FOOTPRINT_DIR}/Audio_Module.pretty)(options "")(descr "Audio Module footprints"))

Generated by V8:

(fp_lib_table
  (version 7)
  (lib (name "Audio_Module")(type "KiCad")(uri "${KICAD7_FOOTPRINT_DIR}/Audio_Module.pretty")(options "")(descr "Audio Module footprints"))

If there is a (version 7) in the *_lib_tables there will be a lot of " embracing Entries.