Library and tool for transparently handling data and configuration file access in an Ada application. Supports MacOSX, Linux and Windows.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


ada-bundler transparently wraps the mechanisms for accessing resource files (e.g. configuration or data files) on different operating systems. It consists of a library that provides the application with an interface to access files, and a tool which automates the bundling process of the application.

Current Status

  • MacOSX: Working
  • Windows: Working
  • Linux_Universal: Working


The library provides an API to access files of your application. As you can access the files with numerious IO APIs, the library will return a string containing an absolute path to the file you requested.


The command-line tool provided by ada-bundler takes care of the post-compilation process of your application. You tell it the directories where the resource files are located, and it copies them into an output folder along with your executable(s). Third-party dynamically linked libraries will also be included in the bundle.

The tool is implemented in Python, for various reasons. Firstly, it is a single file which is very portable. Secondly, Python has better support for loading configuration files and doing file system operations. The tool takes two optional arguments:

  • The configuration file. This file is written in YAML and defines the files the project consists of. Defaults to bundle.yaml.
  • The target system name. This defaults to the current operating system and can currently take the values osx, windows and linux.


  • MacOSX: ada-bundler will create an OSX App bundle for your application. You can copy this bundle everywhere and just double-click it to start your application.

    User data files will be stored to and loaded from the ~/Library folder.

  • Windows: ada-bundler will move the executable directly into a directory bearing the name of your application, along with your resource files. As there is no standard layout of this folder, ada-bundler defines his own standard. Note that ada-bundler cannot stuff the resource files into your executable, as most Windows applications do. They wouldn't have a path there, which is required by the platform-agnistic interface.

    User data files will be located in places as defined by the CSIDL (constant special item ID list).

  • Linux_Universal: Similar to Windows, but locates user-specific data folders according to the XDG Base Directory Specification.

In the future, backends for RPM and DEB packages may be added.


Use the issue tracker of the GitHub project.


ada-bundler is available under the GNAT Modified GPL