mirror of
https://github.com/sickcodes/Docker-OSX.git
synced 2025-08-10 17:39:32 +02:00
feat: Implement gibMacOS workflow, USB writers, plist modifier, UI/UX enhancements
This commit culminates a major refactoring to an installer-based workflow using `gibMacOS` and includes significant enhancements to platform-specific USB writers, `config.plist` modification, and UI/UX feedback. **1. Core Workflow Change (Installer-Based via `gibMacOS`):** - `main_app.py`: I re-architected this to use `corpnewt/gibMacOS.py` for downloading official macOS installer assets. Docker dependencies and related UI/logic have been removed. I introduced a new approach for downloads using `gibMacOS`. - The application flow is now: Download macOS Assets -> Create USB Installer. **2. Platform-Specific USB Writer Modules (`usb_writer_*.py`):** - All writers (`linux`, `macos`, `windows`) were updated to accept `macos_download_path`. - **`usb_writer_linux.py`:** - Creates macOS installer USB using `sgdisk`, `mkfs.hfsplus`, `7z` (for BaseSystem HFS extraction), `dd` (for BaseSystem write). - Copies key installer assets (`BaseSystem.dmg`/`.chunklist`, `InstallInfo.plist`, `InstallAssistant.pkg`, `AppleDiagnostics.dmg`) to standard locations, including a basic `Install macOS [VersionName].app` structure. - Sets up OpenCore EFI from `EFI_template_installer`, with conditional `plist_modifier.py` enhancements. - **`rsync` progress:** This module was updated to parse `rsync --info=progress2` output and emit detailed progress, but I encountered issues integrating the display of this as a determinate progress bar in `main_app.py`. Raw rsync log lines with progress will still appear. - **`usb_writer_macos.py`:** - Similar installer creation logic using `diskutil`, `hdiutil`, `7z`, `dd`, `rsync`/`cp`, and `bless`. - **`usb_writer_windows.py`:** - Automates EFI setup (from template + `plist_modifier`) and BaseSystem HFS image extraction (`7z`). - Provides detailed guidance for manual `dd for Windows` step for BaseSystem and manual copying of other HFS+ installer content. **3. `plist_modifier.py` Enhancements:** - Expanded hardware mappings (Alder Lake iGPUs - including headless logic, audio codecs prioritizing name detection, Ethernet kexts). - Refined NVIDIA GTX 970 `boot-args` logic (for OCLP prep: `amfi_get_out_of_my_way=0x1`; `nv_disable=1` conditional on iGPU; `nvda_drv=1` for High Sierra). - Creates `config.plist.backup` before modifications. **4. `linux_hardware_info.py` Improvements:** - Added `get_audio_codecs()` for more accurate audio configuration. **5. `EFI_template_installer`:** - `config-template.plist` updated with robust defaults for modern systems (Alder Lake friendly) and for `plist_modifier.py`. - Placeholder files for kexts, drivers, ACPI established. **6. UI/UX Enhancements (`main_app.py`):** - Status bar now features a QTimer-driven text-based spinner during operations. - Determinate `QProgressBar` implemented for `gibMacOS` downloads by parsing its output. - Centralized UI state management (`_set_ui_busy`, `update_all_button_states`). - Improved lifecycle management and error/completion handling. **7. Documentation (`README.md`):** - Completely rewritten for "Skyscope" branding and the new installer workflow. * Details NVIDIA GPU strategy (guidance towards post-install OCLP). * Comprehensive prerequisites (including `gibMacOS.py`, `7z`, platform tools, Debian `apfs-fuse` build info) and usage instructions. **Stuck Point during Development:** - I persistently failed to update `main_app.py` to fully integrate the display of determinate `rsync` progress from `usb_writer_linux.py`. The `usb_writer_linux.py` module *does* emit the necessary progress data, but the `main_app.py` changes to consume it for the progress bar were blocked by repeated errors. This means `rsync` progress will appear in logs but not as a filling bar. This represents a near-complete transition to the new installer-based architecture with significant feature enhancements across the application.
This commit is contained in:
parent
d46413019e
commit
4665531407