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 descriptionlicense:- License identifier (e.g., "MIT", "BSD-3-Clause")authors:- List of author stringsurl:- Repository URLsource-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 pathsconfigs:- Build configurationsdefault-config:- Configuration used when none specified
Config Options
| Option | Description |
|---|---|
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.sglTo create a standalone executable:
sigil bundle my-app --config releaseFile Location
Sigil searches for package.sgl in:
- Current directory
- Parent directories (up to filesystem root)
This allows running commands from subdirectories within a project.