Skip to main content

Accendino, a complex project builder

About

Accendino (lighter in italian) was originally an helper script that avoids the burden of following the Ogon installation instructions and do it for you. But it evolved to a program to build your complicated projects on multiple platforms.

Accendino can also be used to checkout all your project sources if you wish to quickly have a development environment.

You can see the manual or the changelog.

Installing

$ python3 -m venv _v
$ source _v/bin/activate
(_v) $ pip install accendino

Deploying Ogon

Even if Accendino aims to build any of your projects with multiple dependencies, it is still useful to deploy ogon.

Please note, that for now accendino doesn't perform system operation required for a working ogon installation (systemd units, PAM configuration, dbus authorizations). So refer to the ogon build guide to achieve these.

To quicky install all the Ogon stack in /opt/ogon in release mode:

# accendino --prefix=/opt/ogon ogon.accendino

To quickly install only the Ogon RDP server in /opt/ogon-dev in debug mode:

# accendino --prefix=/opt/ogon-dev --build-type=debug --targets=ogon ogon.accendino

To install the forgiare version of Ogon in /opt/forgiare in debug mode:

# accendino --prefix=/opt/forgiare --build-type=debug forgiare.accendino

Using Accendino for your projects

Accendino is a great tool to build complex projects on multiple platform. In Accendino source files you can:

  • pull your sources from git or from local locations;
  • express dependencies between your build artifacts;
  • list some platform packages that are needed for the build on a given platform. Currently we support dpkg, rpm, pacman, pkg, chocolatey and brew. And of course you can have dynamic lists, because it's very common that on your linux distribution a package has been renamed or removed between distro versions;
  • the Accendino source file is interpreted as a python file that means that you can code any kind of build logic using the python language;
  • Accendino provides some useful objects to express builds of artifacts that use cmake, qmake, autotools, meson, and if unhappy with these you can always specify the commands to invoke (or contribute yours);

See the manual for the documentation of what's available to your source file.

Here's some sample pieces of Accendino files for freerdp with the file to build the ffmpeg dependency or use system provided packages:

# ffmpeg.accendino
ffmpeg_pkgDeps = {
    UBUNTU_LIKE: ['libavcodec-dev', 'libavfilter-dev', 'libavformat-dev', 'libavutil-dev', 'libswscale-dev',
                      'libavdevice-dev', 'libpostproc-dev'],
    REDHAT_LIKE: ['libavcodec-free-devel', 'libswscale-free-devel'],
}
ffmpeg_fromSources = False

if targetDistribId in ('mingw', 'Windows', 'Darwin',):
    ffmpeg_fromSources = True

if ffmpeg_fromSources:
    extraArgs = []
    if crossCompilation:
        extraArgs.append('--enable-cross-compile')
        if targetDistribId == 'mingw':
            flags = {
                'i686': ['--arch=i686', '--target-os=mingw32', '--cross-prefix=i686-w64-mingw32-'],
                'x86_64': ['--arch=x86_64', '--target-os=mingw64', '--cross-prefix=x86_64-w64-mingw32-']
            }
            extraArgs += flags.get(targetArch, [])
            extraArgs.append('--disable-mediafoundation')

    if targetDistribId == 'Darwin':
        extraArgs += ['--enable-shared', '--disable-static',
            '--enable-swscale', '--disable-asm', '--disable-libxcb',
            '--disable-xlib', '--enable-avcodec',
        ]

    nasmForAll = {
        'Darwin': ['nasm'],
        'Windows': ['choco/nasm|path/nasm'],
    }

    for distrib in ('Ubuntu', 'Debian', 'Redhat', 'Fedora',):
        nasmForAll[f'{distrib}'] = ['nasm']
        nasmForAll[f'{distrib}->mingw@x86_64'] = ['nasm']

    ARTIFACTS += [
        CustomCommandBuildArtifact('ffmpeg', [],
            GitSource('https://github.com/FFmpeg/FFmpeg.git', 'n7.1'),
            prepare_cmds=[
                [NativePath('{srcdir}', 'configure'), '--prefix={prefix}', '--disable-doc', '--disable-programs', '--disable-securetransport'] + extraArgs
            ],
            pkgs=nasmForAll,
            provides=['ffmpeg-artifact']
        ),
    ]

else:
    ARTIFACTS += [
        DepsBuildArtifact('ffmpeg-artifact', [], pkgs=ffmpeg_pkgDeps)
    ]

Metadata

Release files for accendino 0.6.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for accendino 0.6.3
File Size Uploaded
accendino-0.6.3.tar.gz 79.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for accendino 0.6.3
File Interpreter ABI Platform
accendino-0.6.3-py3-none-any.whl Python 3 none any Details

Total release size: 163.6 kB

Release files / accendino-0.6.3.tar.gz

Download URL accendino-0.6.3.tar.gz
Size 79.5 kB
Tags Source
SHA-256 checksum
How to use checksums
444d805ee129d5d308fbb7a382c58336b073f603d806fc51b26f667a58073b7d
BLAKE2b-256 checksum
How to use checksums
04801a926ad103833498984964ffd30452f785050823f7eefaf8bc54657dc7d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / accendino-0.6.3-py3-none-any.whl

Download URL accendino-0.6.3-py3-none-any.whl
Size 84.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
37eb88d6ca99e00fb1e02d3b895f3d41d9e72b5265d2b03f68a862d0315728c4
BLAKE2b-256 checksum
How to use checksums
3d4720ad58f29d8611e46739fa76dac5bf84aac71e54b4e67946c422f8e5b79e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.6.3 This release

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.9

1 release file

0.5.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page