Table of Contents

Currently viewing version: 0.8.2.1

Changelog for 66

In 0.8.2.1

Overview

This is an hot fix release and only concern a build make by the Meson build system. Compilation with the previous build system is not affected.

Bug Fixes


In 0.8.2.0

Overview

This document outlines the changes, new features, and bug fixes introduced in the 66 service management system from version 0.8.1.1 to 0.8.2.0. It is intended for users and administrators upgrading their systems to version 0.8.2.0. Please read these notes carefully to understand the changes.

New Features

A new [Execute] section has been added to configure tasks executed just before calling exec for a service’s start and stop processes. This section enhances service configuration flexibility.

A new Conflict key allows the declaration of conflicting services, improving service dependency management.

The Description, User, and Version keys are no longer mandatory.

Defaults are:

Trees can now be enabled at creation time, streamlining tree administration.

The project has transitioned to the Meson build system, offering improved cross-platform support and build efficiency. The traditional configure and make system remains functional during the transition. Users are encouraged to test the Meson system and provide feedback. See INSTALL_MESON.md for details.

Bug Fixes

Fixed a significant bug introduced in version 0.8.0.0 that incorrectly set the logger destination owner to root for s6log type loggers and removed the runas field during migration. This release fix the ownership of the logger destination during the migration phase but only for service logger of type StdOut=s6log.

Ensured a fatal error is triggered when a service crashes, improving reliability.

Addressed a memory leak issue.

Enhancements

A new boolean syntax has been introduced, documented for the BlockPrivileges key.

Adapted to the new version_compare API interface and added tests for the function.

Migration Notes

A dedicated migration process has been provided to ensure a smooth transition to version 0.8.2.0. Please, consider the introduced bug below. The migration try its best to fix this issue by itself but it may impact your migration process as the migration process only handle with service logger of type StdOut=s6log. If after a restart of a service logger you get a down process, ensure that your loggers directories have the correct permissions. The error should be visible at the /run/66/log/0/current uncaught-logs file.

If you are upgrading from version 0.8.0.0 or 0.8.1.1, verify the ownership of logger destinations for s6log type loggers, as the bug fix may affect existing configurations and upgrade process.

Users are encouraged to switch to the Meson build system and to consider the old build system as deprecated. The old configure and make system remains supported during the transition. Refer to INSTALL_MESON.md for setup instructions.

Notes


In 0.8.1.1

Bug Fixes


In 0.8.1.0

Overview

This release of the 66 project includes several bug fixes, new features, and improvements to enhance the functionality and maintainability of the service management system. Below is a summary of the key changes introduced in this release.

New Features

Bug Fixes

Improvements

Notes


In 0.8.0.2

Bug Fixes


In 0.8.0.1

Bug Fixes


In 0.8.0.0

Synthesized Release Notes

New features

Frontend files

To help with this, use the script below by running: ./migration_service.sh /path/to/my/<FrontendFile>

#!/bin/sh

service="${1}"

sed -e "s:\[main\]:\[Main\]:g" \
    -e "s:@type:Type:g" \
    -e "s:@description:Description:g" \
    -e "s:@version:Version:g" \
    -e "s:@depends:Depends:g" \
    -e "s:@requiredby:RequiredBy:g" \
    -e "s:@optsdepends:OptsDepends:g" \
    -e "s:@options:Options:g" \
    -e "s:@flags:Flags:g" \
    -e "s:@notify:Notify:g" \
    -e "s:@user:User:g" \
    -e "s:@timeout-kill:TimeoutStart:g" \
    -e "s:@timeout-up:TimeoutStart:g" \
    -e "s:@timeout-finish:TimeoutStop:g" \
    -e "s:@timeout-down:TimeoutStop:g" \
    -e "s:@maxdeath:MaxDeath:g" \
    -e "s:@down-signal:DownSignal:g" \
    -e "s:@hiercopy:CopyFrom:g" \
    -e "s:@intree:InTree:g" \
    -e "s:\[start\]:\[Start\]:g" \
    -e "s:@build:Build:g" \
    -e "s:@runas:RunAs:g" \
    -e "s:@execute:Execute:g" \
    -e "s:\[stop\]:\[Stop\]:g" \
    -e "s:\[logger\]:\[Logger\]:g" \
    -e "s:@destination:Destination:g" \
    -e "s:@backup:Backup:g" \
    -e "s:@maxsize:MaxSize:g" \
    -e "s:@timestamp:Timestamp:g" \
    -e "s:\[environment\]:\[Environment\]:g" \
    -e "s:\[regex\]:\[Regex\]:g" \
    -e "s:@configure:Configure:g" \
    -e "s:@directories:Directories:g" \
    -e "s:@files:Files:g" \
    -e "s:@infiles:InFiles:g" \
    -i ${service}

See Rosetta Stone for the list of keyword name changes.

Behavior enhancements

Deprecated and Obsolete keywords

The deprecated key @shebang has been completely removed and is no longer recognized by the parser.

The Destination key (previously @destination) in the [Logger] section is now deprecated and replaced by new StdIn, StdOut, and StdErr keywords. For compatibility, the parser will automatically handle the conversion.

Removal of Deprecated Options:

Bug Fixes


In 0.7.2.1


In 0.7.2.0


In 0.7.1.1


In 0.7.1.0


In 0.7.0.2


In 0.7.0.1


In 0.7.0.0

This release marks a significant rewrite of 66, introducing a new UI and serving as a comprehensive service supervision suite and independent service manager.

Primarily, expect no compatibility with previous versions due to:

For UI changes, frontend file convertion and clean of the 66 architecture, a Rosetta stone is available.

Frontend Files

New fields have been added:

The following field has been removed:

Frontend files for regular account must be now localized at /usr/share/66/service/user, /etc/66/service/user or ${HOME}/.66/service.

Behavioral changes:

The classic type now accepts the fields @depends and @requiredby. The classic type replaces the longrun type.

Logger destinations for oneshot type services can now be declared on a tmpfs directory, particularly useful during boot time.

Services can be started without being enabled first. In this case, the service won't start on the next reboot.

The bundle and longrun types have been removed, replaced by classic, oneshot, and module types. For compatibility reasons, if your old frontend file declares the service as a longrun type, the parser will convert it to a classic type automatically. No automatic conversion is made for services of type bundle.

[Environment] Section

This section now allows reusing the same variable from the actual environment. For instance:

socket_name=!/run/dbus/system_bus_socket
cmd_args=!--system --address=unix:path=${socket_name}
PATH=/usr/local/bin:${PATH}

The order of key-value pair declaration doesn't matter:

cmd_args=!--system --address=unix:path=${socket_name}
socket_name=!/run/dbus/system_bus_socket

Variable name must be between ${} to get it value. For instance, $var is not replaced by its value.

Double-quote within value must be escaped with backslash \. Refers to the updated documentation of execl-envfile for futhers information.

Module Changes

The module directory structure has been completely redesigned for better intuitiveness and comprehensiveness. Expect no compatibility with the previous version; a rewrite is required if you use module on your system.

A module cannot contain another module; instead, you can declare it as a dependency via @depends or @requiredby. These can also be specified through the configure module script.

Refer to the specific module page for furthers information.

Trees

Trees now react as services regarding graph dependencies. You can declare a tree depending on or required-by others.

A default named global tree is provided. Services without their localization defined or users not specifying a tree to use will be defined within that tree.

A seed file can be provided for automatic tree configuration at creation time. For example, it defines depends/requiredby dependencies of the tree.

If a service declares a non-existing tree, the tree will be created automatically with a default configuration, but without any depends/requiredby dependencies. To configure the tree with specific requirements at creation time, provide and install seed file with your service.

Configure Script

Removed flags: - --with-system-module=DIR - --with-sysadmin-module=DIR - --with-user-module=DIR

Added flags: - --with-default-tree-name=NAME - --max-path-size=KB - --max-service-size=KB - --max-tree-name-size=KB - --with-system-seed=DIR - --with-sysadmin-seed=DIR - --with-user-seed=DIR

The slashpackage convention was removed.

Skeleton files

The skeleton files shudown, reboot, poweroff and halt are removed and replaced by 66 reboot, 66 poweroff, 66 halt command respectively.

Code Changes

The code has been largely rewritten and simplified, offering more features with approximately the same number of code lines. Additionally, the code now uses less HEAP memory, although this optimization is ongoing.

The parser was completely rewritten and heavily optimized, significantly reducing the time to parse a service(by three times).

The start process was rewritten due to the removal of s6-rc. Oblibs now provide general functions to build any Acyclic graph.

The code for the module part was revamped and greatly simplified.


In 0.6.2.0


In 0.6.1.3


In 0.6.1.2


In 0.6.1.1


In 0.6.1.0


In 0.6.0.1


In 0.6.0.0


In 0.5.1.0


In 0.5.0.1


In 0.5.0.0

This is a Major release, you need to update your trees with 66-update tool. If you skip from a version earlier than 0.4.0.1, the 66-update will not work. In this case, you need to reconstruct your trees manually. Downgrading to a previous version will not work either, due to the new format of the resolve inner files.


In 0.4.0.1


In 0.4.0.0

This is a Major release, you need to update your trees with 66-update tool.


In 0.3.0.3


In 0.3.0.2


In 0.3.0.1


In 0.3.0.0

This is a Major release, you need to update your trees with 66-update tool.


In 0.2.5.2


In 0.2.5.1


In 0.2.5.0


In 0.2.4.1


In 0.2.4.0


In 0.2.3.2


In 0.2.3.1


In 0.2.3.0


In 0.2.2.2


In 0.2.2.1


In 0.2.2.0


In 0.2.1.2


In 0.2.1.1


In 0.2.1.0


In 0.2.0.4


In 0.2.0.3


In 0.2.0.2


In 0.2.0.0


In 0.1.0.1


In 0.1.0.0


In 0.0.2.2


In 0.0.2.1


In 0.0.2.0


In 0.0.1.1