mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-06-15 03:46:28 +10:00
@@ -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
|
||||
|
||||
@@ -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
|
||||
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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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