Contributing
Thank you for your interest in contributing to the XFCE Linux BuildStream project!
Getting Startedβ
Prerequisitesβ
- BuildStream 2.7.0+
- Podman or Docker
- QEMU + KVM
- 200GB+ free disk space
- Git
Setup Development Environmentβ
# Clone repository
git clone <repo-url> xfce-linux
cd xfce-linux
# Verify BuildStream installation
bst --version # Should be 2.7.0+
# Check cache
du -sh ~/.cache/buildstream/
# Verify Podman
podman --version
Development Workflowβ
1. Creating a Feature Branchβ
git checkout -b feature/your-feature-name
2. Making Changesβ
Adding XFCE Componentsβ
Edit elements/core/meta-xfce-core-apps.bst:
- name: new-xfce-app
repo: xfce-wayland
checkout: main
track: main
build-depends:
- xfce-linux-deps.bst
Modifying Element Definitionsβ
- Edit relevant
.bstfile inelements/ - Validate syntax:
bst show elements/your-element.bst - Test build:
bst build elements/your-element.bst
Adding Patchesβ
- Create patch file in
patches/freedesktop-sdk/orpatches/gnome-build-meta/ - Reference in patch_queue sources
- Test:
just build
3. Testing Changesβ
# Quick validation
bst show elements/your-element.bst
# Single element build
bst build elements/your-element.bst
# Full rebuild (if major changes)
just build
# Boot test
just boot-vm
4. Documentationβ
Update relevant documentation:
- Code changes: docs/technical/
- Build process: docs/
- Known issues: docs/technical/SOLUTIONS_AND_ANALYSIS.md
5. Commit and Pushβ
git add -A
git commit -m "Description of changes
- Detailed list of changes
- Second point
- Third point"
git push origin feature/your-feature-name
Commit Message Guidelinesβ
Use clear, descriptive commit messages:
type(scope): Short description
Detailed explanation of what and why.
- Bullet point 1
- Bullet point 2
- Bullet point 3
Fixes: #issue-number (if applicable)
Commit Typesβ
feat:New featurefix:Bug fixdocs:Documentationrefactor:Code restructuringbuild:Build process changestest:Testing changeschore:Maintenance
Build Systemβ
Using just Commandsβ
# Show available commands
just --list
# Build phases
just build # Full OCI build
just export # Export to image
just generate-bootable # Create bootable disk
just boot-vm # Launch QEMU VM
# Development
just clean # Clean cache
just status # Show status
just logs # View logs
BuildStream Commandsβ
# Show element details
bst show elements/path/to/element.bst
# Build specific element
bst build elements/path/to/element.bst
# Build with progress
bst build --progress tty elements/path/to/element.bst
# Cache information
bst artifact show <artifact-id>
# View logs
bst log <artifact-id>
Project Structureβ
xfce-linux/
βββ docs/ # Documentation
βββ elements/ # BuildStream elements
β βββ core/ # XFCE core
β βββ xfce-linux/ # Integration layer
β βββ oci/ # OCI composition
βββ patches/ # BuildStream patches
βββ files/ # Build-time files
βββ scripts/ # Build scripts
βββ tools/ # Development tools
βββ Justfile # Build automation
Testingβ
Boot Testingβ
# Start VM
just boot-vm
# Access via serial console (in another terminal)
telnet 127.0.0.1 4444
# Or via SSH (after boot)
ssh root@127.0.0.1 -p 2221
# Or via VNC
vncviewer 127.0.0.1:99
Verify XFCE Installationβ
# List XFCE packages
dpkg -l | grep -i xfce
# Check XFCE binaries
ls /usr/bin | grep -E 'xfce|xf' | head -20
# Verify plugins
ls -la /usr/lib/x86_64-linux-gnu/xfce4/panel/plugins/
# Check GDM status
systemctl status gdm
# View XFCE log
journalctl -u xfce-session -n 50
Known Issues & Solutionsβ
See docs/technical/SOLUTIONS_AND_ANALYSIS.md for:
- Bootc multi-layer OCI issue (solutions provided)
- Artifact export dependency resolution
- SSH authentication workarounds
Code Review Processβ
-
Automated Checks:
- BuildStream syntax validation
- Git hooks (if configured)
-
Manual Review:
- Check for completeness
- Verify documentation
- Test build locally
-
Testing:
just buildpasses- Boot test successful
- No regressions
Performance Considerationsβ
- Large builds take time: 88-90 minutes typical
- Cache is essential: 127GB local cache with remotes
- Network critical: Build pulls from remote caches
- Disk space: ~200GB for cache + artifacts
Troubleshootingβ
Build Failsβ
# Check logs
bst log <artifact-id>
# View build directory
bst shell elements/path/to/element.bst
# Clean and retry
just clean
just build
Elements Don't Loadβ
# Validate all elements
bst show elements/
# Check specific element
bst show elements/path/to/element.bst
# View dependencies
bst show --deps elements/path/to/element.bst
VM Boot Issuesβ
- Check BuildStream artifacts exist
- Verify QEMU installation:
qemu-system-x86_64 --version - Check KVM availability:
kvm-okorgrep vmx /proc/cpuinfo
Documentation Standardsβ
- Use Markdown for all documentation
- Include code examples where helpful
- Keep README.md up-to-date
- Document breaking changes clearly
- Update SOLUTIONS_AND_ANALYSIS.md with new findings
Questions?β
- Check documentation first: See
docs/directory - Review build logs:
~/.cache/buildstream/logs/ - Check git history: Previous commits for context
- See SOLUTIONS_AND_ANALYSIS.md: Known issues documented
Licenseβ
This project integrates open-source components with various licenses (GPL, LGPL, MIT). Ensure contributions respect these licenses.
Happy Contributing! π
For more information, see:
- docs/README.md β Main guide
- docs/PROJECT_STATUS.md β Current status
- docs/technical/SOLUTIONS_AND_ANALYSIS.md β Known issues & solutions