Windows developer setup · Daemon

Build Holder Daemon

Build and test the local Holder service that stores data and provides the command-line and web interfaces.

Install the tools

As explained in the Windows developer setup, you need to install Git and create $HOME\projects\holderteam. You do not need to build Core separately: Daemon builds Core as part of its own build, from the core folder in the same download.

If you don't have it yet, install Visual Studio Community (2022 or later), the program with the purple logo. Visual Studio Code is a different program. The installer groups tools into “workloads”; select Desktop development with C++, and accept the pre-selected CMake tools and Windows SDK.

Download the source code

Open PowerShell and run these commands. The extra --recurse-submodules argument downloads fixed copies of smaller projects that Daemon needs to build.

cd $HOME\projects\holderteam
git clone --recurse-submodules https://github.com/HolderTeam/holder.git

Daemon is the daemon folder inside holder. The Windows debug build compiles Core from the core folder next to it, so changes you make in Core are used the next time you build Daemon. To work on Core's logic and run its own tests, follow the Core guide.

If you cloned holder without --recurse-submodules, use these commands before building:

cd $HOME\projects\holderteam\holder
git submodule update --init --recursive

Build and test

In Visual Studio, choose Open a local folder and select holder\daemon. Visual Studio reads the project's saved build choices automatically.

  1. In the configuration drop-down, choose windows-vcpkg-debug. A configuration is a saved set of build choices; this one builds the programs for development. Wait for Visual Studio to finish preparing the project. The first preparation step uses vcpkg to download and build the libraries Daemon needs, so it can be slow.
  2. Choose Build → Build All. When it finishes, look in out\build\windows-vcpkg-debug inside your Daemon folder for holderd.exe, the backend, and holderctl.exe, the command-line tool.
  3. Change the configuration to windows-vcpkg-tests-debug and choose Build → Build All.
  4. Choose Test → Run Test Preset for windows-vcpkg-tests-debug → windows-vcpkg-tests-debug.

You have succeeded when the test run completes without failures. A few tests are deliberately skipped on Windows because they check behaviour that only exists on Linux and similar systems.

If a build seems stuck

The first vcpkg build can be long and quiet. Open Task Manager and check for active compiler processes before deciding that it has stopped.

If Visual Studio reports an error, copy it from the Output window and ask for help.

Continue

You can now share your first change. The Daemon README has more development details.

If you also want to work on the user interface, build the Holder desktop app. That guide also shows how to start Daemon and Desktop together.

If a Daemon change also needs a Core change, make it in holder\core, run Core's tests too, and include both in the same pull request.