
- Modularize justfile system with dedicated modules: * alias.just: Command aliases (h, b, c, s) * build.just: Build and cross-compilation commands * distro.just: Collection and packaging commands * help.just: Comprehensive help system with areas * qa.just: Testing and quality assurance * tools.just: Development tools and utilities * upstream.just: Repository tracking and sync - Fix platform detection in collect script: * Use actual platform names (darwin-arm64) instead of generic "host" * Support both "host" argument and auto-detection * Filter out .d dependency files from distribution - Fix packaging script issues: * Correct uname command syntax (^uname -m) * Fix string interpolation and environment parsing * Include plugin binaries in archives (was only packaging metadata) * Use proper path join instead of string interpolation * Add --force flag to avoid interactive prompts - Fix justfile absolute paths: * Replace relative paths with {{justfile_directory()}} function * Enable commands to work from any directory 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
173 lines
4.7 KiB
TOML
173 lines
4.7 KiB
TOML
# Build Targets Configuration for Nushell Plugins
|
|
# Defines supported cross-compilation targets and their requirements
|
|
|
|
[metadata]
|
|
version = "1.0.0"
|
|
description = "Cross-compilation targets for nushell plugins"
|
|
last_updated = "2024-09-20"
|
|
|
|
# Default settings applied to all targets unless overridden
|
|
[defaults]
|
|
docker_image = "nushell-plugins-cross:latest"
|
|
strip_binaries = true
|
|
optimize_size = true
|
|
|
|
# Linux AMD64 - Most common Linux target
|
|
[targets.linux-amd64]
|
|
rust_target = "x86_64-unknown-linux-gnu"
|
|
platform_name = "linux-amd64"
|
|
archive_format = "tar.gz"
|
|
docker_required = false
|
|
native_build = true
|
|
description = "Linux x86_64 (64-bit Intel/AMD)"
|
|
|
|
# Linux ARM64 - Growing in popularity with cloud instances
|
|
[targets.linux-arm64]
|
|
rust_target = "aarch64-unknown-linux-gnu"
|
|
platform_name = "linux-arm64"
|
|
archive_format = "tar.gz"
|
|
docker_required = true
|
|
native_build = false
|
|
description = "Linux ARM64 (64-bit ARM)"
|
|
linker = "aarch64-linux-gnu-gcc"
|
|
|
|
# macOS AMD64 - Intel Macs
|
|
[targets.darwin-amd64]
|
|
rust_target = "x86_64-apple-darwin"
|
|
platform_name = "darwin-amd64"
|
|
archive_format = "tar.gz"
|
|
docker_required = false
|
|
native_build = true
|
|
host_required = "darwin"
|
|
description = "macOS x86_64 (Intel Macs)"
|
|
|
|
# macOS ARM64 - Apple Silicon Macs
|
|
[targets.darwin-arm64]
|
|
rust_target = "aarch64-apple-darwin"
|
|
platform_name = "darwin-arm64"
|
|
archive_format = "tar.gz"
|
|
docker_required = false
|
|
native_build = true
|
|
host_required = "darwin"
|
|
description = "macOS ARM64 (Apple Silicon)"
|
|
|
|
# Windows AMD64 - Standard Windows target
|
|
[targets.windows-amd64]
|
|
rust_target = "x86_64-pc-windows-msvc"
|
|
platform_name = "windows-amd64"
|
|
archive_format = "zip"
|
|
docker_required = true
|
|
native_build = false
|
|
description = "Windows x86_64 (64-bit)"
|
|
binary_extension = ".exe"
|
|
|
|
# Additional targets that can be enabled
|
|
[targets.linux-arm32]
|
|
rust_target = "armv7-unknown-linux-gnueabihf"
|
|
platform_name = "linux-arm32"
|
|
archive_format = "tar.gz"
|
|
docker_required = true
|
|
native_build = false
|
|
enabled = false
|
|
description = "Linux ARM32 (32-bit ARM)"
|
|
|
|
[targets.windows-arm64]
|
|
rust_target = "aarch64-pc-windows-msvc"
|
|
platform_name = "windows-arm64"
|
|
archive_format = "zip"
|
|
docker_required = true
|
|
native_build = false
|
|
enabled = false
|
|
description = "Windows ARM64"
|
|
binary_extension = ".exe"
|
|
|
|
# Docker configuration for cross-compilation
|
|
[docker]
|
|
dockerfile = "Dockerfile.cross"
|
|
image_tag = "nushell-plugins-cross:latest"
|
|
cache_from = ["nushell-plugins-cross:cache"]
|
|
build_args = []
|
|
|
|
# Platform-specific configurations
|
|
[platform_configs.linux]
|
|
package_formats = ["tar.gz", "deb", "rpm"]
|
|
install_prefix = "/usr/local/bin"
|
|
config_dir = "/etc/nushell-plugins"
|
|
|
|
[platform_configs.darwin]
|
|
package_formats = ["tar.gz", "dmg"]
|
|
install_prefix = "/usr/local/bin"
|
|
config_dir = "/usr/local/etc/nushell-plugins"
|
|
|
|
[platform_configs.windows]
|
|
package_formats = ["zip", "msi"]
|
|
install_prefix = "C:\\Program Files\\nushell-plugins"
|
|
config_dir = "C:\\ProgramData\\nushell-plugins"
|
|
|
|
# Build optimization settings
|
|
[optimization]
|
|
# Enable link-time optimization for release builds
|
|
lto = true
|
|
# Code generation units for parallel compilation
|
|
codegen_units = 1
|
|
# Panic strategy (abort for smaller binaries)
|
|
panic_strategy = "abort"
|
|
# Strip debug symbols
|
|
strip = "symbols"
|
|
|
|
# Environment variables for cross-compilation
|
|
[environment]
|
|
# Common variables for all builds
|
|
RUST_BACKTRACE = "1"
|
|
CARGO_INCREMENTAL = "0"
|
|
|
|
# Target-specific environment variables
|
|
[environment.linux-arm64]
|
|
CC = "aarch64-linux-gnu-gcc"
|
|
CXX = "aarch64-linux-gnu-g++"
|
|
AR = "aarch64-linux-gnu-ar"
|
|
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER = "aarch64-linux-gnu-gcc"
|
|
|
|
[environment.windows-amd64]
|
|
# Windows-specific environment setup would go here
|
|
# Usually handled by the Docker container
|
|
|
|
# Feature flags for conditional compilation
|
|
[features]
|
|
# Default features to enable for all builds
|
|
default = ["clipboard", "image", "networking"]
|
|
|
|
# Optional features that can be disabled for smaller binaries
|
|
optional = ["crypto", "database", "desktop-notifications"]
|
|
|
|
# Platform-specific features
|
|
[features.linux]
|
|
available = ["clipboard", "image", "networking", "desktop-notifications"]
|
|
|
|
[features.darwin]
|
|
available = ["clipboard", "image", "networking", "desktop-notifications"]
|
|
|
|
[features.windows]
|
|
available = ["clipboard", "image", "networking"]
|
|
|
|
# Validation rules for targets
|
|
[validation]
|
|
# Minimum required Rust version
|
|
min_rust_version = "1.70.0"
|
|
|
|
# Required tools for native compilation
|
|
required_tools = ["cargo", "rustc"]
|
|
|
|
# Required tools for Docker compilation
|
|
docker_tools = ["docker"]
|
|
|
|
# Testing configuration
|
|
[testing]
|
|
# Run tests for these targets during CI
|
|
ci_targets = ["linux-amd64", "darwin-amd64", "darwin-arm64"]
|
|
|
|
# Quick test targets for development
|
|
dev_targets = ["linux-amd64"]
|
|
|
|
# Full integration test targets
|
|
integration_targets = ["linux-amd64", "darwin-arm64"] |