Merge pull request #333 from dortania/gui-ci

Implement OpenCore GUI
This commit is contained in:
Mykola Grymalyuk
2021-06-24 09:26:48 -06:00
committed by GitHub
6 changed files with 91 additions and 10 deletions
+7 -8
View File
@@ -1,4 +1,4 @@
name: CI - Build App
name: CI - Build TUI
on:
push:
@@ -8,7 +8,7 @@ on:
jobs:
build:
name: Build App
name: Build TUI
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
@@ -19,20 +19,19 @@ jobs:
- run: pyinstaller OpenCore-Patcher.spec
- run: ./after_pyinstaller.sh
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --deep --timestamp --entitlements entitlements.plist -o runtime "dist/OpenCore-Patcher.app"'
- run: cd dist; zip ../OpenCore-Patcher.zip OpenCore-Patcher; zip -r ../OpenCore-Patcher.app.zip OpenCore-Patcher.app
- run: ./../sign-app.sh
- run: cd dist; zip -r ../OpenCore-Patcher-TUI.app.zip OpenCore-Patcher.app
- run: ./../sign-tui.sh
- name: Upload App to Artifacts
uses: actions/upload-artifact@v2
with:
name: OpenCore-Patcher.app
path: OpenCore-Patcher.app.zip
name: OpenCore-Patcher-TUI.app
path: OpenCore-Patcher-TUI.app.zip
- name: Upload to Release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: OpenCore-Patcher.app.zip
file: OpenCore-Patcher-TUI.app.zip
tag: ${{ github.ref }}
file_glob: true
+44
View File
@@ -0,0 +1,44 @@
name: CI - Build GUI
on:
push:
workflow_dispatch:
release:
types: [published]
jobs:
build:
name: Build GUI
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
- name: Install Python Dependencies
run: pip3 install --upgrade pyinstaller requests
- run: pyinstaller OCLP-CLI.spec
- run: cd dist; cp OCLP-CLI ../; cd ..
- name: Download latest nightly OCLP-GUI
run: curl -S -L https://nightly.link/dortania/OCLP-GUI/workflows/build-app/master/OpenCore-Patcher-GUI.app.zip --output ./OpenCore-Patcher-GUI.app.zip
- run: unzip -o OpenCore-Patcher-GUI.app.zip
- run: unzip OpenCore-Patcher-GUI.app.zip; rm OpenCore-Patcher-GUI.app.zip
- name: Merge new GUI
run: cp OCLP-CLI OpenCore\ Patcher.app/Contents/Resources/
- run: python3 merge_gui.py
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --force --deep --timestamp --entitlements entitlements.plist -o runtime "OpenCore Patcher.app/Contents/Resources/OCLP-CLI"'
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --force --deep --timestamp --entitlements entitlements.plist -o runtime "OpenCore Patcher.app/Contents/Resources/oclpd"'
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --force --deep --timestamp --entitlements entitlements.plist -o runtime "OpenCore Patcher.app"'
- run: ditto -c -k --sequesterRsrc --keepParent OpenCore\ Patcher.app OpenCore-Patcher-GUI.app.zip
- run: ./../sign-gui.sh
- name: Upload Binary to Artifacts
uses: actions/upload-artifact@v2
with:
name: OpenCore-Patcher-GUI.app
path: OpenCore-Patcher-GUI.app.zip
- name: Upload to Release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: OpenCore-Patcher-GUI.app.zip
tag: ${{ github.ref }}
file_glob: true
+4 -2
View File
@@ -52,6 +52,7 @@ class OpenCoreLegacyPatcher:
# Building args requiring value values
parser.add_argument("--model", action="store", help="Set custom model", required=False)
parser.add_argument("--disk", action="store", help="Specifies disk to patch", required=False)
parser.add_argument("--smbios_spoof", action="store", help="Set SMBIOS patching mode", required=False)
# SysPatch args
@@ -70,6 +71,9 @@ class OpenCoreLegacyPatcher:
else:
print("- Using default payloads location")
if args.disk:
print(f"- Disk set: {args.disk}")
self.constants.disk = args.disk
if args.verbose:
print("- Set verbose configuration")
self.constants.verbose_debug = True
@@ -104,8 +108,6 @@ class OpenCoreLegacyPatcher:
if args.moderate_smbios:
print("- Set Moderate SMBIOS Patching configuration")
self.constants.serial_settings = "Moderate"
if args.model:
host_is_target
if args.smbios_spoof:
if args.smbios_spoof == "Minimal":
self.constants.serial_settings = "Minimal"
+25
View File
@@ -98,6 +98,29 @@ class BuildOpenCore:
fw_mask = b"\xff\x3f\x08\xc0\x00\x00\x00\x00"
return fw_feature, fw_mask
def disk_type(self):
drive_host_info = plistlib.loads(subprocess.run(f"diskutil info -plist {self.constants.disk}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
sd_type = drive_host_info["MediaName"]
try:
ssd_type = drive_host_info["SolidState"]
except KeyError:
ssd_type = False
# Array filled with common SD Card names
# Note most USB-based SD Card readers generally report as "Storage Device", and no reliable way to detect further
if sd_type in ["SD Card Reader", "SD/MMC"]:
print("- Adding SD Card icon")
shutil.copy(self.constants.icon_path_sd, self.constants.opencore_release_folder)
elif ssd_type is True:
print("- Adding SSD icon")
shutil.copy(self.constants.icon_path_ssd, self.constants.opencore_release_folder)
elif drive_host_info["BusProtocol"] == "USB":
print("- Adding External USB Drive icon")
shutil.copy(self.constants.icon_path_external, self.constants.opencore_release_folder)
else:
print("- Adding Internal Drive icon")
shutil.copy(self.constants.icon_path_internal, self.constants.opencore_release_folder)
def build_efi(self):
Utilities.cls()
if not self.constants.custom_model:
@@ -639,6 +662,8 @@ class BuildOpenCore:
if self.model == self.constants.override_smbios:
print("- Adding -no_compat_check")
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -no_compat_check"
if self.constants.disk != "":
self.disk_type()
def set_smbios(self):
spoofed_model = self.model
+1
View File
@@ -42,6 +42,7 @@ class Constants:
self.debugenhancer_version = "1.0.3"
self.innie_version = "1.3.0"
self.fw_kext = "1.0.0"
self.disk = ""
self.patcher_support_pkg_version = "0.0.11" # PatcherSupportPkg
# Get resource path
+10
View File
@@ -0,0 +1,10 @@
# Updates build version in OCLP-GUI during CI builds
# Copyright (C) 2021 Mykola Grymalyuk
import plistlib
from pathlib import Path
from Resources import Constants
app_path = Path.cwd() / Path ("OpenCore Patcher.app/Contents/Info.plist")
info = plistlib.load(Path(app_path).open("rb"))
info["CFBundleShortVersionString"] = Constants.Constants().patcher_version
plistlib.dump(info, Path(app_path).open("wb"), sort_keys=True)