Skip to main content

A build framework for your complex projects

Project description

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)
    ]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

accendino-0.5.10a2.tar.gz (69.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

accendino-0.5.10a2-py3-none-any.whl (65.0 kB view details)

Uploaded Python 3

File details

Details for the file accendino-0.5.10a2.tar.gz.

File metadata

  • Download URL: accendino-0.5.10a2.tar.gz
  • Upload date:
  • Size: 69.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for accendino-0.5.10a2.tar.gz
Algorithm Hash digest
SHA256 26246431c158ffd971ea90c7992d63221c0f3900401554f8c279debf702e11f1
MD5 bc7984ec403fe8d3e013a9ecbcba9644
BLAKE2b-256 725b154c24f101c093b6e4ff7fa38f3bdc23085122ee235c4ca84588958c2647

See more details on using hashes here.

File details

Details for the file accendino-0.5.10a2-py3-none-any.whl.

File metadata

  • Download URL: accendino-0.5.10a2-py3-none-any.whl
  • Upload date:
  • Size: 65.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for accendino-0.5.10a2-py3-none-any.whl
Algorithm Hash digest
SHA256 2c64aababe076e4f08137d39b54186bd8b5e18795d4231e88a8a88286e104bb0
MD5 1f4ae6c3ce97f9711ac5999d132bcccc
BLAKE2b-256 199b45a90738d9138abe8c52c732de383d1b683b6c38f94e29ef35c0dbf79b9e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page