Documentation
Mogrix is a deterministic SRPM conversion engine that transforms Fedora 40 packages into IRIX-compatible software.
Getting Started
Prerequisites
- SGI IRIX 6.5.22 or later (6.5.30 recommended)
- SGUG-RSE base installation
- Network connectivity for package downloads
Installation Options
- Bundles - Self-contained tarballs, no package manager needed
- Repository - Use tdnf for package management with dependencies
How Mogrix Works
Mogrix converts Fedora 40 SRPMs through a deterministic, rules-based transformation:
FC40 SRPM → [Extract] → Spec + Sources
↓
MOGRIX Engine
↓
┌─────────┬──────────┬──────────┐
↓ ↓ ↓ ↓
Rules Headers Compat Analysis
(YAML) Overlays Sources (Static)
↓
[Rewrite Spec]
↓
RSE SRPM (self-contained)
↓
[Cross-compile]
↓
MIPS N32 RPM Key Features
- Rules-based conversion - YAML rules applied hierarchically (generic → class → package)
- Compat function injection - 30+ POSIX functions bundled per-package (strdup, getline, asprintf, openat, etc.)
- Header overlays - IRIX-compatible headers for modern code
- Self-contained packages - All fixes embedded, no external libdicl dependency
Bundle Installation
Directory Structure
/opt/mogrix-apps/
bin/ # Shared directory - add to PATH once
nano # Trampoline script
weechat # Another trampoline
nano-7.2-6-irix-bundle/ # Self-contained bundle
_bin/ # Actual binaries
_lib32/ # Required libraries (pruned)
share/ # Data files
install # Setup script
uninstall # Cleanup script Installation Steps
# 1. Create the apps directory (first time only)
mkdir -p /opt/mogrix-apps/bin
# 2. Extract the bundle
tar xzf nano-7.2-6-irix-bundle.tar.gz -C /opt/mogrix-apps/
# 3. Install (creates trampoline)
cd /opt/mogrix-apps/nano-7.2-6-irix-bundle
./install
# 4. Add to PATH (add to .profile for persistence)
PATH=/opt/mogrix-apps/bin:$PATH; export PATH
# 5. Run
nano Repository Usage
Setup
# Create repo config
cat > /etc/yum.repos.d/mogrix.repo << 'EOF'
[mogrix]
name=Mogrix IRIX Packages
baseurl=https://packages.mogrix.unxmaal.com/repo/
enabled=1
gpgcheck=0
EOF
# Refresh cache
tdnf makecache Common Commands
tdnf search <package> # Search for packages
tdnf install <package> # Install a package
tdnf update # Update all packages
tdnf remove <package> # Remove a package
tdnf list installed # List installed packages Known IRIX Limitations
Mogrix works around these IRIX-specific issues:
| Issue | Workaround |
|---|---|
fopencookie crashes | Use funopen (BSD-style) |
%zu format corrupts varargs | Use %u/%d (32-bit) |
No __thread TLS | Remove via patch, use static |
| brk() heap limited to 176MB | Use dlmalloc (mmap-based) |
| Global GOT > 4370 entries | -Bsymbolic-functions flag |
| Missing setenv/unsetenv | Compat wraps putenv |
Resources
- Mogrix on GitHub - Source code, rules, documentation
- SGUG-RSE - The underlying RSE environment