Overview
Theseed.conf file contains one-time configuration settings that define where source code, build artifacts, and installed binaries are stored. It also specifies which CMake generator to use and which version set file to apply.
File Location
The file is created in the build-steps directory:Creation
The file is created by runningseed.sh:
- Directory paths
- CMake generator
- Version set file
- Source sharing option
seed.conf doesn’t exist, build.sh automatically runs seed.sh on first execution.
File Format
Configuration Variables
Version Set Selection
Path to the version set file that defines all package versions.Default:
version-set-8.8.confExamples:version-set-9.0.confversion-set-8.8.confversion-set-7.3.46.confversion-set-7.1.38.confversion-set-custom.conf
build.sh:
build.sh:34
Directory Paths
Base directory for downloaded source code.Default:
~/Downloads/sourceTilde expansion: The ~ is expanded to your home directory by the build script.Base directory for build artifacts (CMake build directories).Default:
~/Documents/temp/buildNote: Can be large (several GB). Consider using a dedicated disk or partition.Base directory for installed binaries and libraries.Default:
~/ApplicationsNote: This is where compiled libraries are installed after building.Directory Structure
The build script creates timestamped subdirectories:build.sh:58-63
CMake Generator
Use Unix Makefiles generator.When set:
GENERATOR="Unix Makefiles"Recommended for: Command-line builds, CI/CD, automated buildsUse Xcode generator.When set:
GENERATOR="Xcode"Recommended for: Interactive development in Xcode IDEKconfig-seed:25-35
build.sh:
build.sh:36-40
Source Sharing
Reuse source code across multiple builds.When enabled: Unpatched packages are stored in
$CONFIG_SRC_DIR (no timestamp subdirectory)When disabled: All sources go in $CONFIG_SRC_DIR/$TIMESTAMPDefault: disabled (not set)Benefit: Saves disk space and download time if building multiple versionsCaveat: Only safe for packages that don’t require patchingbuild.sh:58-79
Timestamp
Unique identifier for this build, appended by
build.sh on first run.Format: miele-easy-YYYYMMDD_HHMMExample: miele-easy-20210615_1423Purpose: Isolates builds from each otherbuild.sh:24-26
seed.sh Script
The script that createsseed.conf:
seed.sh:1-23
Script Behavior
- Create patch symlinks - Links newer patch to older patch if they’re identical
- Set configuration prefix -
CONFIG_=CONFIG_(all variables prefixed withCONFIG_) - Set output file -
KCONFIG_CONFIG=seed.conf - Launch menu -
kconfig-mconf Kconfig-seed
Kconfig-seed Structure
Defines the menu structure forseed.sh:
Kconfig-seed:1-44
Interactive Menu
When you runseed.sh, you see:
Entering String Values
For string options:- Navigate to option
- Press
Enter - Type new value (or accept default)
- Press
Enterto confirm
Selecting Generator
For choice options:- Navigate to “CMake generator”
- Press
Enterto open submenu - Select
makefilesorXcode - Press
Exit
Reconfiguration
To change seed configuration:Option 1: Re-run seed.sh
seed.conf with new settings.
Option 2: Edit Manually
Editseed.conf directly:
Path Expansion
The build script expands paths usingeval:
build.sh:58-62
- Tilde expansion:
~/Downloads→/Users/username/Downloads - Environment variables:
$HOME/source→/Users/username/source - Literal paths:
/Volumes/Storage/source→/Volumes/Storage/source
Common Configurations
Default Setup
External Drive Setup
Shared Sources Setup
Xcode Development Setup
Disk Space Considerations
Source Directory
- Size: ~500 MB - 2 GB (compressed archives)
- Growth: Grows with each build if not using shared sources
- Cleanup: Can delete old timestamped directories
Build Directory
- Size: ~5-20 GB (intermediate build files)
- Growth: Largest directory; grows significantly with each build
- Cleanup: Can delete entirely and rebuild from source
Install Directory
- Size: ~2-5 GB (compiled libraries and headers)
- Growth: Moderate; only final installed files
- Cleanup: Can delete old timestamped directories; keep current version
Environment Variables
Alternatively, you can override settings via environment variables:seed.conf but overrides its values for that run.
See Also
- build.sh Reference - Main build script that uses seed.conf
- Version Sets - Version set file format and options
- Kconfig Configuration - Menu structure and configuration language
- reconfigure.sh Reference - Build step configuration