The FuseSoC package manager

Core libraries

A collection of one or more cores in a directory tree is called a core library. FuseSoC supports working with multiple core libraries. The locations of the libraries are specified in the FuseSoC configuration file, fusesoc.conf

To find a configuration file, FuseSoC will first look for fusesoc.conf in the current directory, and if there is no file there, it will search next in $XDG_CONFIG_HOME/fusesoc (i.e. ~/.config/fusesoc on Linux and %HOMEPATH%\.config\fusesoc on Windows) and lastly in /etc/fusesoc

By running fusesoc library add fusesoc_cores after FuseSoC is installed, the standard libraries will be installed, and a default configuration file will be created in $XDG_CONFIG_HOME/fusesoc/fusesoc.conf on Linux and %HOMEPATH%\.config\fusesoc\fusesoc.conf on Windows with the following contents:

sync-uri =
sync-type = git

Core search order

Once FuseSoC has found its configuration file, it will parse the library sections in the order they appear in the file. Library sections are all sections named library.<library name>. The following keys are valid in the library sections.


Specifies the library’s location in the file system (required)


Boolean value specifying if the library should be automatically updated when running fusesoc library update (optional. defaults to true)


The URI for non-local libraries where to fetch the library (optional)


The type of library. Can be set to git or local. A missing value indicates a local library. (optional)

Additional library locations can be added on the command line by setting the --cores-root parameter when FuseSoC is launched. The library locations specified from the command-line will be parsed after those in fusesoc.conf

For each library location, FuseSoC will recursively search for files with a .core suffix. Each of these files will be parsed and addded to the in-memory FuseSoC database if they are valid .core files.

Several .core files can reside in the same directory and they will all be parsed.

If several cores with the same VLNV identifier are encountered the latter will replace the former. This can be used to override cores in a library with an alternative core in another library by specifying them in a library that will be parsed later, either temporarily by adding --cores-root to the command-line, or permanently by adding the other library at the end of fusesoc.conf

If FuseSoC encounters a file called FUSESOC_IGNORE in a directory, this directory and all subdirectories will be ignored.