sigildocs

Package File Reference

Configuration for Sigil packages and workspaces.

The package.sgl file defines package metadata, dependencies, and build configuration.

File Extension

Package files must be named package.sgl (not package.sg or other variants).

Package Definition

A basic package:

(package
  name: "my-app"
  version: "0.1.0"
  description: "My application"
  license: "MIT"
  authors: (list "Your Name <you@example.com>")

  source-dirs: '("src"))

Required Fields

  • name: - Package name (string)
  • version: - Semantic version (string)

Optional Fields

  • description: - Short description
  • license: - License identifier (e.g., "MIT", "BSD-3-Clause")
  • authors: - List of author strings
  • url: - Repository URL
  • source-dirs: - Directories containing source files (default: '("src"))

Entry Point

For executable applications, specify the entry module:

(package
  name: "my-cli"
  version: "0.1.0"
  description: "A command-line tool"

  entry: '(my-cli main)

  source-dirs: '("src"))

The entry: field specifies the module that contains the application's main procedure. This is used when bundling the application into a standalone executable.

Dependencies

Workspace Dependencies

Reference other packages in the same workspace:

(package
  name: "my-app"
  version: "0.1.0"

  dependencies: (list
    (from-workspace name: "sigil-json")
    (from-workspace name: "sigil-http"))

  source-dirs: '("src"))

Workspace Definition

A workspace groups multiple packages together. The root package.sgl of a multi-package project:

(workspace
  name: "my-project"
  version: "0.1.0"
  description: "A multi-package project"
  license: "MIT"
  authors: (list "Your Name <you@example.com>")

  packages: (list
    "packages/my-lib"
    "packages/my-app")

  configs: (list
    (config
      name: 'dev
      output-dir: "build/dev"
      debug?: #t
      optimize: 0)

    (config
      name: 'release
      output-dir: "build/release"
      static?: #t
      optimize: 2))

  default-config: 'dev)

Workspace Fields

  • packages: - List of package directory paths
  • configs: - Build configurations
  • default-config: - Configuration used when none specified

Config Options

OptionDescription
name:Configuration name (symbol)
output-dir:Build output directory
debug?:Include debug symbols
optimize:Optimization level (0-3)
static?:Enable static linking
toolchain:Toolchain to use ('musl for static builds)

Running Your Application

During development, run your application with:

# Run the main module
sigil eval '(import (my-app main)) (main)'

# Or run a file directly
sigil eval -f src/my-app/main.sgl

To create a standalone executable:

sigil bundle my-app --config release

File Location

Sigil searches for package.sgl in:

  1. Current directory
  2. Parent directories (up to filesystem root)

This allows running commands from subdirectories within a project.