mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-06-19 13:50:00 +10:00
@@ -1,4 +1,4 @@
|
|||||||
name: CI - Build App
|
name: CI - Build TUI
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@@ -8,7 +8,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Build App
|
name: Build TUI
|
||||||
runs-on: self-hosted
|
runs-on: self-hosted
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
@@ -19,20 +19,19 @@ jobs:
|
|||||||
- run: pyinstaller OpenCore-Patcher.spec
|
- run: pyinstaller OpenCore-Patcher.spec
|
||||||
- run: ./after_pyinstaller.sh
|
- 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: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --deep --timestamp --entitlements entitlements.plist -o runtime "dist/OpenCore-Patcher.app"'
|
||||||
|
- run: cd dist; zip -r ../OpenCore-Patcher-TUI.app.zip OpenCore-Patcher.app
|
||||||
- run: cd dist; zip ../OpenCore-Patcher.zip OpenCore-Patcher; zip -r ../OpenCore-Patcher.app.zip OpenCore-Patcher.app
|
- run: ./../sign-tui.sh
|
||||||
- run: ./../sign-app.sh
|
|
||||||
- name: Upload App to Artifacts
|
- name: Upload App to Artifacts
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: OpenCore-Patcher.app
|
name: OpenCore-Patcher-TUI.app
|
||||||
path: OpenCore-Patcher.app.zip
|
path: OpenCore-Patcher-TUI.app.zip
|
||||||
|
|
||||||
- name: Upload to Release
|
- name: Upload to Release
|
||||||
if: github.event_name == 'release'
|
if: github.event_name == 'release'
|
||||||
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
|
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
|
||||||
with:
|
with:
|
||||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
file: OpenCore-Patcher.app.zip
|
file: OpenCore-Patcher-TUI.app.zip
|
||||||
tag: ${{ github.ref }}
|
tag: ${{ github.ref }}
|
||||||
file_glob: true
|
file_glob: true
|
||||||
|
|||||||
@@ -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
@@ -52,6 +52,7 @@ class OpenCoreLegacyPatcher:
|
|||||||
|
|
||||||
# Building args requiring value values
|
# Building args requiring value values
|
||||||
parser.add_argument("--model", action="store", help="Set custom model", required=False)
|
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)
|
parser.add_argument("--smbios_spoof", action="store", help="Set SMBIOS patching mode", required=False)
|
||||||
|
|
||||||
# SysPatch args
|
# SysPatch args
|
||||||
@@ -70,6 +71,9 @@ class OpenCoreLegacyPatcher:
|
|||||||
else:
|
else:
|
||||||
print("- Using default payloads location")
|
print("- Using default payloads location")
|
||||||
|
|
||||||
|
if args.disk:
|
||||||
|
print(f"- Disk set: {args.disk}")
|
||||||
|
self.constants.disk = args.disk
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print("- Set verbose configuration")
|
print("- Set verbose configuration")
|
||||||
self.constants.verbose_debug = True
|
self.constants.verbose_debug = True
|
||||||
@@ -104,8 +108,6 @@ class OpenCoreLegacyPatcher:
|
|||||||
if args.moderate_smbios:
|
if args.moderate_smbios:
|
||||||
print("- Set Moderate SMBIOS Patching configuration")
|
print("- Set Moderate SMBIOS Patching configuration")
|
||||||
self.constants.serial_settings = "Moderate"
|
self.constants.serial_settings = "Moderate"
|
||||||
if args.model:
|
|
||||||
host_is_target
|
|
||||||
if args.smbios_spoof:
|
if args.smbios_spoof:
|
||||||
if args.smbios_spoof == "Minimal":
|
if args.smbios_spoof == "Minimal":
|
||||||
self.constants.serial_settings = "Minimal"
|
self.constants.serial_settings = "Minimal"
|
||||||
|
|||||||
@@ -98,6 +98,29 @@ class BuildOpenCore:
|
|||||||
fw_mask = b"\xff\x3f\x08\xc0\x00\x00\x00\x00"
|
fw_mask = b"\xff\x3f\x08\xc0\x00\x00\x00\x00"
|
||||||
return fw_feature, fw_mask
|
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):
|
def build_efi(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
if not self.constants.custom_model:
|
if not self.constants.custom_model:
|
||||||
@@ -639,6 +662,8 @@ class BuildOpenCore:
|
|||||||
if self.model == self.constants.override_smbios:
|
if self.model == self.constants.override_smbios:
|
||||||
print("- Adding -no_compat_check")
|
print("- Adding -no_compat_check")
|
||||||
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -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):
|
def set_smbios(self):
|
||||||
spoofed_model = self.model
|
spoofed_model = self.model
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ class Constants:
|
|||||||
self.debugenhancer_version = "1.0.3"
|
self.debugenhancer_version = "1.0.3"
|
||||||
self.innie_version = "1.3.0"
|
self.innie_version = "1.3.0"
|
||||||
self.fw_kext = "1.0.0"
|
self.fw_kext = "1.0.0"
|
||||||
|
self.disk = ""
|
||||||
self.patcher_support_pkg_version = "0.0.11" # PatcherSupportPkg
|
self.patcher_support_pkg_version = "0.0.11" # PatcherSupportPkg
|
||||||
|
|
||||||
# Get resource path
|
# Get resource path
|
||||||
|
|||||||
@@ -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)
|
||||||
Reference in New Issue
Block a user