~danyspin97/tt

A init/rc manager inspired by 66 and based on s6 suite
ac81a7d0 — Danilo Spinella 4 months ago
.travis.yml: Fix CXX environment variable
59ec1bd6 — Danilo Spinella 4 months ago
README: Add travis CI and sourcehut badges
d1b781b6 — Danilo Spinella 4 months ago
builds: Add freebsd manifesto

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~danyspin97/tt
read/write
git@git.sr.ht:~danyspin97/tt

You can also use your local clone with git send-email.

#tt

Build Status builds.sr.ht status Build Status Coveralls github CodeFactor Codacy Badge Total alerts Language grade: C/C++ CII Best Practices GitHub License

tt is a Work in Progress init and service manager inspired by 66 and based on the s6 suite.

tt tries to offer a valid alternative to systemd for PID 1 and service management. It uses the supervision to manage long running programs (deamons), log everything to files (no binary log interface) and provides an easy to use command line interface.

Inheriting s6-rc feature, the services must be compiled before being able to run. This is one of the biggest differences with the current service managers, which instead are based on runtime services.

tt is designed to run on both desktops and servers, and does not target embedded devices; if memory and space are constrained (e.g. you're configuring a router), then the use of s6 configured ad-hoc for that machine is recommended.

#Planned features

  • Support for different types of services: oneshot, deamons and bundles
  • Predictable dependencies at build time
  • Configurable parameters for services (i.e. change CMDARGS without editing the service file)
  • Asynchrounus start of the services (no run levels)
  • Log everything into files, no syslog needed for deamons
  • Low footprint
  • Target desktop and servers
  • Conditional dependencies for complex services (such as web apps)
  • Provides sane defaults
  • Prioritize usability

#Getting started

#Dependencies

tt supports the following compilers:

  • gcc >= 9.0 (gcc-8 does not have a good support for <filesystem>, despite including it)
  • clang >= 8.0

tt depends on the following libraries:

You can install them using your package manager.

#Building

To build tt run the following commands:

$ meson build
$ ninja -C build

#Testing

tt test suite uses catch2 header-only library. If this dependency is not found on the system, meson will download a copy to use in the local repository. To run the tt test suite, execute the following commands:

$ meson -Dtests=enabled build
$ ninja -C build test

#Contributing

Feel free to contribute by opening a Pull Request! Have a look at Github Issues for the current development tasks.

#Formatting your changes

tt follows the Google C++ Style Guide and uses clang-format to apply this style. If you have clang-format installed, run the following command to format your changes:

#Continuous Integration

tt uses Github Actions for CI, running and checking the test suite; in particular, the CI runs a meson unity build with -Werror enabled and address, undefined sanitizers enabled. All Pull Requests must pass the CI before being included.

$ ninja -C build clang-format

#Community

  • #tt IRC channel on freenode.

#Develoment updates

tt development updates are posted on @danyspin97 blog.

#Credits

tt is being developed by @danyspin97 and @Cogitri.

Thanks to @pac85 for its contributions and to all the people that shared ideas for tt.

Credits also to:

#License

tt is licensed under the GPL-3.0 License - see LICENSE file for more details.