Documentation

Mogrix is a deterministic SRPM conversion engine that transforms Fedora 40 packages into IRIX-compatible software.

Getting Started

Prerequisites

Installation Options

  1. Bundles - Self-contained tarballs, no package manager needed
  2. 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

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