mirror of
https://github.com/JaKooLit/Debian-Hyprland.git
synced 2025-12-21 18:20:13 +01:00
Hyprland 0.52.1 requires hyprgraphics >= 0.1.6, updated from v0.1.5. Changes: - install-scripts/hyprgraphics.sh: Updated tag from v0.1.5 to v0.1.6 - hypr-tags.env: Updated HYPRGRAPHICS_TAG to v0.1.6 - update-hyprland.sh: Updated default HYPRGRAPHICS_TAG to v0.1.6 - refresh-hypr-tags.sh: Updated HYPRGRAPHICS_TAG to v0.1.6 - Debian-Hyprland-Install-Upgrade.md: Updated documentation - Debian-Hyprland-Install-Upgrade.es.md: Updated Spanish documentation This resolves the CMake error: Package 'hyprgraphics' has version '0.1.5', required version is '>= 0.1.6'
423 lines
11 KiB
Markdown
423 lines
11 KiB
Markdown
# Debian-Hyprland Install & Upgrade Guide
|
||
|
||
This guide covers the enhanced installation and upgrade workflows for KooL's Debian-Hyprland project, including new automation features, centralized version management, and dry-run capabilities.
|
||
|
||
## Table of Contents
|
||
|
||
1. [Overview](#overview)
|
||
2. [New Features](#new-features)
|
||
3. [Central Version Management](#central-version-management)
|
||
4. [Installation Methods](#installation-methods)
|
||
5. [Upgrade Workflows](#upgrade-workflows)
|
||
6. [Dry-Run Testing](#dry-run-testing)
|
||
7. [Log Management](#log-management)
|
||
8. [Advanced Usage](#advanced-usage)
|
||
9. [Troubleshooting](#troubleshooting)
|
||
|
||
## Overview
|
||
|
||
The Debian-Hyprland project now includes enhanced automation and management tools while maintaining backward compatibility with the original install.sh script. The key additions are:
|
||
|
||
- **Centralized version management** via `hypr-tags.env`
|
||
- **Automated dependency ordering** for Hyprland 0.51.x requirements
|
||
- **Dry-run compilation testing** without system modifications
|
||
- **Selective component updates** via `update-hyprland.sh`
|
||
- **GitHub latest tag fetching** for automatic version discovery
|
||
|
||
## New Features
|
||
|
||
### Enhanced install.sh
|
||
The original install.sh script now includes:
|
||
|
||
- **Tag consistency**: Reads `hypr-tags.env` and exports version variables to all modules
|
||
- **Automatic wayland-protocols**: Installs wayland-protocols from source (≥1.45) before Hyprland
|
||
- **Robust dependency ordering**: Ensures prerequisites are built in the correct sequence
|
||
|
||
### New Scripts
|
||
|
||
#### update-hyprland.sh
|
||
A focused tool for managing and building just the Hyprland stack:
|
||
```bash
|
||
chmod +x ./update-hyprland.sh
|
||
./update-hyprland.sh --help # View all options
|
||
```
|
||
|
||
#### dry-run-build.sh
|
||
A testing tool that compiles components without installing:
|
||
```bash
|
||
chmod +x ./dry-run-build.sh
|
||
./dry-run-build.sh --help # View all options
|
||
```
|
||
|
||
#### wayland-protocols-src.sh
|
||
A new module that builds wayland-protocols from source to satisfy Hyprland 0.51.x requirements.
|
||
|
||
## Central Version Management
|
||
|
||
### hypr-tags.env
|
||
This file contains version tags for all Hyprland components:
|
||
|
||
```bash
|
||
# Current versions (example)
|
||
HYPRLAND_TAG=v0.51.1
|
||
AQUAMARINE_TAG=v0.9.3
|
||
HYPRUTILS_TAG=v0.8.2
|
||
HYPRLANG_TAG=v0.6.4
|
||
HYPRGRAPHICS_TAG=v0.1.6
|
||
HYPRWAYLAND_SCANNER_TAG=v0.4.5
|
||
HYPRLAND_PROTOCOLS_TAG=v0.6.4
|
||
HYPRLAND_QT_SUPPORT_TAG=v0.1.0
|
||
HYPRLAND_GUIUTILS_TAG=v0.1.4
|
||
WAYLAND_PROTOCOLS_TAG=1.45
|
||
```
|
||
|
||
### Version Override Priority
|
||
1. Environment variables (exported)
|
||
2. hypr-tags.env file values
|
||
3. Default hardcoded values in each module
|
||
|
||
## Installation Methods
|
||
|
||
### Method 1: Original Full Installation
|
||
```bash
|
||
# Standard installation with all components
|
||
chmod +x install.sh
|
||
./install.sh
|
||
```
|
||
|
||
This method now automatically:
|
||
- Loads versions from `hypr-tags.env`
|
||
- Installs wayland-protocols from source before Hyprland
|
||
- Maintains proper dependency ordering
|
||
|
||
### Method 2: Hyprland Stack Only
|
||
```bash
|
||
# Install only Hyprland and essential components
|
||
./update-hyprland.sh --install
|
||
```
|
||
|
||
### Method 3: Fresh Installation with Latest Versions
|
||
```bash
|
||
# Fetch latest GitHub releases and install
|
||
./update-hyprland.sh --fetch-latest --install
|
||
```
|
||
|
||
### Method 4: Preset-Based Installation
|
||
```bash
|
||
# Use preset file for automated choices
|
||
./install.sh --preset ./preset.sh
|
||
```
|
||
|
||
## Upgrade Workflows
|
||
|
||
Quick link: [Upgrade 0.49/0.50.x → 0.51.1](#upgrade-049050x--0511)
|
||
|
||
### Upgrading to Latest Hyprland Release
|
||
|
||
#### Option A: Automatic Discovery
|
||
```bash
|
||
# Fetch latest tags and install
|
||
./update-hyprland.sh --fetch-latest --install
|
||
```
|
||
|
||
#### Option B: Specific Version
|
||
```bash
|
||
# Set specific Hyprland version
|
||
./update-hyprland.sh --set HYPRLAND=v0.51.1 --install
|
||
```
|
||
|
||
#### Option C: Test Before Installing
|
||
```bash
|
||
# Test compilation first, then install if successful
|
||
./update-hyprland.sh --fetch-latest --dry-run
|
||
# If successful:
|
||
./update-hyprland.sh --install
|
||
```
|
||
|
||
### Upgrading Individual Components
|
||
|
||
```bash
|
||
# Update only core libraries (often needed for new Hyprland versions)
|
||
./update-hyprland.sh --fetch-latest --install --only hyprutils,hyprlang
|
||
|
||
# Update aquamarine specifically
|
||
./update-hyprland.sh --set AQUAMARINE=v0.9.3 --install --only aquamarine
|
||
```
|
||
|
||
### Selective Updates
|
||
|
||
```bash
|
||
# Install everything except Qt components
|
||
./update-hyprland.sh --install --skip hyprland-qt-support,hyprland-guiutils
|
||
|
||
# Install only specific components
|
||
./update-hyprland.sh --install --only hyprland,aquamarine
|
||
```
|
||
|
||
### Upgrade: 0.49/0.50.x ➜ 0.51.1
|
||
|
||
If you’re currently on Hyprland 0.49 or 0.50.x, you can upgrade directly to 0.51.1 without a full reinstall.
|
||
|
||
Recommended path:
|
||
```bash
|
||
# Ensure hypr-tags.env pins the target version (skip if already v0.51.1)
|
||
./update-hyprland.sh --set HYPRLAND=v0.51.1
|
||
|
||
# Upgrade Hyprland (prerequisites are auto-included and ordered)
|
||
./update-hyprland.sh --install --only hyprland
|
||
```
|
||
|
||
Notes:
|
||
- The command will automatically ensure and run, as needed: wayland-protocols-src, hyprland-protocols, hyprutils, hyprlang, aquamarine, then hyprland.
|
||
- Full install via install.sh is not required for this upgrade unless you also want to install/refresh optional modules (e.g., SDDM, Bluetooth, Thunar, AGS, dotfiles) or you’re recovering from a failed/partial setup.
|
||
- Optional: add --with-deps to re-run dependency installation first:
|
||
```bash
|
||
./update-hyprland.sh --with-deps --install --only hyprland
|
||
```
|
||
- You can dry-run first to validate:
|
||
```bash
|
||
./update-hyprland.sh --dry-run --only hyprland
|
||
```
|
||
|
||
## Dry-Run Testing
|
||
|
||
### Why Use Dry-Run?
|
||
- Test compilation compatibility before installing
|
||
- Validate version combinations
|
||
- Debug build issues without system changes
|
||
- CI/CD pipeline integration
|
||
|
||
### Basic Dry-Run Usage
|
||
|
||
```bash
|
||
# Test current tag configuration
|
||
./update-hyprland.sh --dry-run
|
||
|
||
# Test with latest GitHub releases
|
||
./update-hyprland.sh --fetch-latest --dry-run
|
||
|
||
# Test specific version
|
||
./update-hyprland.sh --set HYPRLAND=v0.51.1 --dry-run
|
||
```
|
||
|
||
### Advanced Dry-Run Testing
|
||
|
||
```bash
|
||
# Use alternative summary format
|
||
./update-hyprland.sh --via-helper
|
||
|
||
# Test with dependencies installation
|
||
./dry-run-build.sh --with-deps
|
||
|
||
# Test only specific components
|
||
./dry-run-build.sh --only hyprland,aquamarine
|
||
```
|
||
|
||
### Dry-Run Limitations
|
||
- **Dependencies still install**: apt operations run to ensure compilation succeeds
|
||
- **pkg-config requirements**: Some components need system-installed prerequisites
|
||
- **No system changes**: No files installed to /usr/local or /usr
|
||
|
||
## Log Management
|
||
|
||
### Log Location
|
||
All build activities generate timestamped logs in:
|
||
```
|
||
Install-Logs/
|
||
├── 01-Hyprland-Install-Scripts-YYYY-MM-DD-HHMMSS.log # Main install log
|
||
├── install-DD-HHMMSS_module-name.log # Per-module logs
|
||
├── build-dry-run-YYYY-MM-DD-HHMMSS.log # Dry-run summary
|
||
└── update-hypr-YYYY-MM-DD-HHMMSS.log # Update tool summary
|
||
```
|
||
|
||
### Log Analysis
|
||
```bash
|
||
# View most recent install log
|
||
ls -t Install-Logs/*.log | head -1 | xargs less
|
||
|
||
# Check for errors in specific module
|
||
grep -i error Install-Logs/install-*hyprland*.log
|
||
|
||
# View dry-run summary
|
||
cat Install-Logs/build-dry-run-*.log
|
||
```
|
||
|
||
### Log Retention
|
||
- Logs accumulate over time for historical reference
|
||
- Manual cleanup recommended periodically:
|
||
```bash
|
||
# Keep only logs from last 30 days
|
||
find Install-Logs/ -name "*.log" -mtime +30 -delete
|
||
```
|
||
|
||
## Advanced Usage
|
||
|
||
### Tag Management
|
||
|
||
#### Backup and Restore
|
||
```bash
|
||
# Tags are automatically backed up on changes
|
||
# Restore most recent backup
|
||
./update-hyprland.sh --restore --dry-run
|
||
```
|
||
|
||
#### Multiple Version Sets
|
||
```bash
|
||
# Save current configuration
|
||
cp hypr-tags.env hypr-tags-stable.env
|
||
|
||
# Try experimental versions
|
||
./update-hyprland.sh --fetch-latest --dry-run
|
||
|
||
# Restore stable if needed
|
||
cp hypr-tags-stable.env hypr-tags.env
|
||
```
|
||
|
||
### Environment Integration
|
||
|
||
#### Custom PKG_CONFIG_PATH
|
||
```bash
|
||
# Ensure /usr/local takes precedence
|
||
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:${PKG_CONFIG_PATH:-}"
|
||
./update-hyprland.sh --install
|
||
```
|
||
|
||
#### Parallel Builds
|
||
```bash
|
||
# Control build parallelism (default: all cores)
|
||
export MAKEFLAGS="-j4"
|
||
./update-hyprland.sh --install
|
||
```
|
||
|
||
### Development Workflow
|
||
|
||
#### Testing New Releases
|
||
```bash
|
||
# 1. Create test environment
|
||
cp hypr-tags.env hypr-tags.backup
|
||
|
||
# 2. Test new version
|
||
./update-hyprland.sh --set HYPRLAND=v0.52.0 --dry-run
|
||
|
||
# 3. Install if successful
|
||
./update-hyprland.sh --install
|
||
|
||
# 4. Rollback if issues
|
||
./update-hyprland.sh --restore --install
|
||
```
|
||
|
||
#### Component Development
|
||
```bash
|
||
# Install dependencies only
|
||
./update-hyprland.sh --with-deps --dry-run
|
||
|
||
# Manual module testing
|
||
DRY_RUN=1 ./install-scripts/hyprland.sh
|
||
|
||
# Check logs for specific module
|
||
tail -f Install-Logs/install-*hyprland*.log
|
||
```
|
||
|
||
## Troubleshooting
|
||
|
||
### Common Issues
|
||
|
||
#### CMake Configuration Fails
|
||
**Symptoms**: "Package dependency requirement not satisfied"
|
||
|
||
**Solutions**:
|
||
```bash
|
||
# Install missing prerequisites
|
||
./update-hyprland.sh --install --only wayland-protocols-src,hyprutils,hyprlang
|
||
|
||
# Clear build cache
|
||
rm -rf hyprland aquamarine hyprutils hyprlang
|
||
|
||
# Retry installation
|
||
./update-hyprland.sh --install --only hyprland
|
||
```
|
||
|
||
#### Compilation Errors
|
||
**Symptoms**: "too many errors emitted"
|
||
|
||
**Solutions**:
|
||
```bash
|
||
# Update core dependencies first
|
||
./update-hyprland.sh --fetch-latest --install --only hyprutils,hyprlang
|
||
|
||
# Check for API mismatches in logs
|
||
grep -A5 -B5 "error:" Install-Logs/install-*hyprland*.log
|
||
```
|
||
|
||
#### Tag Not Found
|
||
**Symptoms**: "Remote branch X not found"
|
||
|
||
**Solutions**:
|
||
```bash
|
||
# Check available tags
|
||
git ls-remote --tags https://github.com/hyprwm/Hyprland
|
||
|
||
# Use confirmed existing tag
|
||
./update-hyprland.sh --set HYPRLAND=v0.50.1 --install
|
||
```
|
||
|
||
### Debug Steps
|
||
|
||
1. **Check system compatibility**:
|
||
```bash
|
||
# Verify Debian version
|
||
cat /etc/os-release
|
||
|
||
# Ensure deb-src enabled
|
||
grep -E "^deb-src" /etc/apt/sources.list
|
||
```
|
||
|
||
2. **Verify environment**:
|
||
```bash
|
||
# Check current tags
|
||
cat hypr-tags.env
|
||
|
||
# Test dry-run first
|
||
./update-hyprland.sh --dry-run --only hyprland
|
||
```
|
||
|
||
3. **Analyze logs**:
|
||
```bash
|
||
# Most recent errors
|
||
grep -i "error\|fail" Install-Logs/*.log | tail -20
|
||
|
||
# Module-specific issues
|
||
ls -la Install-Logs/install-*[component]*.log
|
||
```
|
||
|
||
### Getting Help
|
||
|
||
1. **Check logs**: Always review Install-Logs/ for detailed error information
|
||
2. **Test dry-run**: Use --dry-run to validate before installing
|
||
3. **Community support**: Submit issues with relevant log excerpts
|
||
4. **Documentation**: Refer to main project README.md for base requirements
|
||
|
||
## Migration from Previous Versions
|
||
|
||
### Existing Installations
|
||
The new tools work alongside existing installations:
|
||
|
||
```bash
|
||
# Update existing installation
|
||
./update-hyprland.sh --install
|
||
|
||
# Test without affecting current system
|
||
./update-hyprland.sh --dry-run
|
||
```
|
||
|
||
### Converting to Tag Management
|
||
```bash
|
||
# Current versions are saved to hypr-tags.env automatically
|
||
# Verify with:
|
||
cat hypr-tags.env
|
||
|
||
# Modify versions as needed:
|
||
./update-hyprland.sh --set HYPRLAND=v0.51.1
|
||
```
|
||
|
||
The enhanced workflow provides better control, testing capabilities, and automation while maintaining full compatibility with the original installation process. |