Learn To Code KiCad Day @ FOSDEM 2024

FWIW on Ubuntu it’d be sudo apt install debhelper cmake doxygen libbz2-dev libcairo2-dev libglu1-mesa-dev libgl1-mesa-dev libglew-dev libx11-dev libwxgtk3.2-dev mesa-common-dev pkg-config libssl-dev build-essential cmake-curses-gui debhelper grep python3-dev swig4.0 dblatex po4a asciidoc python3-wxgtk4.0 libgit2-dev libsecret-1-dev source-highlight libboost-all-dev libglm-dev libcurl4-openssl-dev libgtk-3-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-data-exchange-dev libocct-visualization-dev libocct-foundation-dev libocct-ocaf-dev unixodbc-dev zlib1g-dev shared-mime-info python3-pytest python3-cairosvg python3-numpy

with on top libngspice-kicad-dev libngspice-kicad from the dedicated repository

Yes, but please note if anyone comes back to this thread in the future, the exact command changes over time, so make sure to confirm it via the method described above.

What was the linked PPA? I tried sudo add-apt-repository --yes ppa:kicad/kicad-dev-nightly but still can’t get ibngspice-kicad-dev libngspice-kicad

Hmm, that is the one I have

$ apt show libngspice-kicad
Package: libngspice-kicad
Version: 0.1-40~202311202316+6eeb48bb5~ubuntu22.04.1
Priority: optional
Section: electronics
Source: ngspice-kicad
Maintainer: Jean-Samuel Reynaud <js.reynaud@gmail.com>
Installed-Size: 8,429 kB
Depends: libc6 (>= 2.35), libgcc-s1 (>= 3.0), libgomp1 (>= 4.9), libstdc++6 (>= 4.5), dpkg (>= 1.15.4) | install-info
Conflicts: libngspice0
Breaks: libngspice0, ngspice-kicad
Replaces: ngspice-kicad
Download-Size: 2,418 kB
APT-Sources: https://ppa.launchpadcontent.net/kicad/kicad-dev-nightly/ubuntu jammy/main amd64 Packages
Description: Library (shared) for ngspice. Used by kica
1 Like

Naive question but is the PPA supporting the recent 23.10?

It looks like we haven’t published ngspice for 23.10 yet. The most recent supported is 23.04. I can try enabling it and see if it works in a bit.

You can still build on 23.10, you’ll just need to build ngspice yourself.

1 Like

No worries, I’m interested in actually digging into ngspice itself (for simulations and tests in XR once the glTF is exported thanks to kicad-cli) so good occasion!

The PPA should have the package now

1 Like

Getting libngspice-kicad but not libngspice-kicad-dev.

Yes, I’m not sure how to make the dev package, I’ll have to defer to one of our Ubuntu/Debian packagers.

For ref, below full recipe for building on Ubuntu and also Windows Subsystem for Linux (I just tested now on Ubuntu WSL).

Note I wouldn’t recommend WSL building as you’ll probably run into graphical gitches due to WSL as well as slowing it down but it’s fun to build linux on windows.

sudo add-apt-repository ppa:kicad/kicad-dev-nightly

sudo apt update

sudo apt install cmake libbz2-dev libcairo2-dev libglu1-mesa-dev libgl1-mesa-dev libglew-dev libx11-dev libwxgtk3.2-dev mesa-common-dev pkg-config libssl-dev build-essential cmake-curses-gui debhelper grep python3-dev swig4.0 dblatex po4a asciidoc python3-wxgtk4.0 libgit2-dev libsecret-1-dev source-highlight libboost-all-dev libglm-dev libcurl4-openssl-dev libgtk-3-dev libngspice-kicad-dev libngspice-kicad libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-data-exchange-dev libocct-visualization-dev libocct-foundation-dev libocct-ocaf-dev unixodbc-dev zlib1g-dev shared-mime-info  libngspice-kicad ninja-build 

git clone https://gitlab.com/kicad/code/kicad.git

cd kicad

mkdir -p build/debug 

cd build/debug 

cmake -DCMAKE_BUILD_TYPE=Debug ../../

make

Regarding your comment:

You might be missing a sudo apt update after adding the ppa repository to your configuration (sorry I forgot this step when presenting this)

Unfortunately I did update, will try again as the -dev package hits the repo though. Thanks

Actually it looks like it is there: Packages in “PPA for KiCad: nightly builds of dev version with s...” : PPA for KiCad: nightly builds of dev version with separation stable/nightly : “KiCad” team

It looks like the official build instructions have been changed after the last time I have looked at them. Instead of providing lists of dependencies it now refers to nightly packages and their up to date dependency lists which is a good thing.

I have written instructions which basically automate this dependency finding, see How to build KiCad on Linux (the easy way) · Wiki · eelik-kicad / kicad · GitLab.

For Ubuntu it’s as easy as

sudo add-apt-repository -s --yes ppa:kicad/kicad-dev-nightly
sudo apt build-dep kicad-nightly

This way there’s no need to copy/paste/write any dependency list. If the nightly build has been built by someone else already recently, it can be built after running those two commands (unless, of course, the package maintainer has done some mistake).

1 Like

Thanks @eelik that indeed it work including libngspice-kicad-dev.

Because building and linking takes a little while, would it be possible to mention estimations of speed-ups gained by using e.g ninja, or mold? For this process would it become 1% faster? 10%?

Hi all - we are back at Learn to code KiCad. Live with @twl on the internals of the router.

1 Like

I’m not an expert, but first you have to understand that ninja or some other similar build system doesn’t help at the first time build. It’s good for “incremental builds”, i.e. small edit->build cycles. For example, pulling even as often as once a day from the master git branch while development is ongoing results often to almost complete rebuild, and ninja doesn’t probably help much.

The linker has probably more effect. It depends on how many files must be linked. In any case I tried mold and I got a feeling that it reduces the build time considerably – more than changing from pure make to ninja. I have noticed earlier that linking one file may take longer time than compiling.

These are based on gut feelings, not on a timer.

Ok thanks, I’m at 47% with the default setup so I’ll just wait for this time. If I tinker regularly might switch to ninja and mold then.

Edit: yeay, got KiCAD 8.0.0 and can use kicad-cli for my tinkers, thanks for the help!