Skip to main content

Dependency manager for WanadevStudio

Project description

Github Discord PYPI Version Build Status Black License

Gonto is a tool we developed to handle our multiple Unreal Engine versions on our CI and our developers’ PCs. It can automatically download our UE versions (and some other dependencies like Android SDK with its associated JDK) from our centralised repository, prepare the environment and run our build scripts.

Gonto handles dependencies as disk images, mounts them on Windows drive letters (for example U:) and adapts the environment and registry to point to the right places. Using disk images allows us to directly use the dependencies without having to extract them.

When you have a Zip, you need twice the disk space (for the Zip itself and the extracted files), and it can take hours to extract (a complete Unreal Engine build contains more than 200 000 files and requires more than 140 GiB of disk space).

Features:

  • Dependency management (download and cache on disk).

  • Centralised repository (any HTTP server with a specific file organization).

  • Targets, like a Makefile (e.g. "build-windows", "build-android", "build-meta", "build-playstation",…).

  • Complete pipeline execution with the "gonto run <TARGET>" command (download images missing from the cache, mount all dependencies and update environment, run build script, cleanup).

  • A way to permanently mount the dependencies of a specific target without running the scripts (for developers’ PCs): "gonto mount <TARGET>".

  • A command to create a disk image from a source folder: "gonto create <SOURCE_FOLDER> <DEST_IMAGE>.vhd".

Gonto Logo

Requirements

  • Windows 10 or Windows 11

  • Python >= 3.11 (for the source code version, standalone builds do not require any Python installation)

Usage

Example Gonto config:

gonto:

  cache_dir: "W:\\gonto-cache\\"
  repository: "https://example.org/gonto-repo/"

targets:

  build-windows:
    requires:
      - name: "unreal"
        version: "5.4.0"
        env:
          UNREAL_PATH: "{{mount_point}}"
        reg:
          - root: "HKEY_CURRENT_USER"
            path: "Software\\Epic Games\\Unreal Engine\\Builds"
            name: "5.4"
            data: "{{mount_point}}"
    script: |
      .\build.bat --target=windows

  build-android:
    requires:
      - name: "unreal"
        version: "5.4.0"
        env:
          UNREAL_PATH: "{{mount_point}}"
      - name: "android"
        version: "36"
        env:
          ANDROID_HOME: "{{mount_point}}android\\"
          JAVA_HOME: "{{mount_point}}java\\JDK25\\"
    script: |
      .\build.bat --target=android

List available targets:

gonto.exe list

Run a target:

gonto.exe run build-windows

Download and mount dependencies from a target:

gonto.exe mount build-android

Create a new disk image from a folder:

gonto.exe create  --label "UE 5.5 Custom"  .\build_output  unreal_v5.5-custom1_win64.vhd

Documentation

Contributing

Lint and test the code

You must install Nox first:

pip3 install nox

Then you can check for lint errors:

nox -s lint

Run the tests:

nox -s test

And you can fix coding style errors automatically with:

nox -s black_fix

Build the documentation

You must install Nox first:

pip3 install nox

Then you can build the documentation with the following command:

nox -s gendoc

The result goes to build/html/.

Changelog

  • [NEXT] (changes on master, but not released yet):

    • Nothing yet ;)

  • v0.3.0:

    • feat: Added “create” command to create VHDs from a folder

    • feat: Improved error/success reporting

    • feat: Improved titles drawing

    • fix(main): Do not read config for “create” command

    • fix(mount): Try to detach all disk images if mount fails

  • v0.2.0:

    • feat: Added “mount” command to download and permanently mount target images

    • feat: Added “reg” option to requirements allowing to set registry key after mounting disk images

  • v0.1.1:

    • fix(download): Do not continue running target on incomplete download

    • misc(winbuild): Build with unbuffered output option

  • v0.1.0 (initial release):

    • feat: Multiple config files with overrides (gonto.yaml)

    • feat: List targets (gonto list)

    • feat: Run target (gonto run <TARGET>):

      • Download missing VHDs from a repository

      • VHD cache

      • Mount/Unmount VHDs

      • before_script/script/after_script

      • Handle environment variable with dynamic replacement of the mount point

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

gonto-0.3.0.tar.gz (42.8 kB view details)

Uploaded Source

Built Distribution

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

gonto-0.3.0-py3-none-any.whl (47.5 kB view details)

Uploaded Python 3

File details

Details for the file gonto-0.3.0.tar.gz.

File metadata

  • Download URL: gonto-0.3.0.tar.gz
  • Upload date:
  • Size: 42.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for gonto-0.3.0.tar.gz
Algorithm Hash digest
SHA256 28257fe266547616ad3821b2d081816dc77287aa480d761dd9e335aea5820345
MD5 abde63aa7c03acb539fd56ad19fcae3a
BLAKE2b-256 073f07a2d12e35338f21c41ea862c03ec82f23ee4ffe81440855c3761abfb9cc

See more details on using hashes here.

File details

Details for the file gonto-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: gonto-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 47.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for gonto-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1057a2ff9d0b134e659b56b137443c18e5775c24ab401064e5c49830645b09df
MD5 67da2ecec2c10f60a2a3483eafb9c441
BLAKE2b-256 ae9a413328effb8273d831b2aa7701135db31f5f16e45faa40100d8f4307a5bb

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