Skip to content

Commit ccc6e32

Browse files
committed
first commit
1 parent 728302a commit ccc6e32

File tree

687 files changed

+147328
-2
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

687 files changed

+147328
-2
lines changed

.flake8

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[flake8]
2+
extend-ignore = E501, E203
3+
per-file-ignores =
4+
Resources/constants.py:E704

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Auto detect text files and perform LF normalization
2+
* text=auto

.github/FUNDING.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
open_collective: oclp-r
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
name: CI - Build wxPython
2+
3+
on:
4+
push:
5+
paths-ignore:
6+
- 'docs/**'
7+
workflow_dispatch:
8+
release:
9+
types: [published]
10+
11+
jobs:
12+
build:
13+
name: Build wxPython
14+
runs-on: macos-15
15+
if: github.repository_owner == 'hackdoc'
16+
permissions:
17+
contents: write
18+
env:
19+
# GitHub Information
20+
branch: ${{ github.ref }}
21+
commiturl: ${{ github.event.head_commit.url }}${{ github.event.release.html_url }}
22+
commitdate: ${{ github.event.head_commit.timestamp }}${{ github.event.release.published_at }}
23+
24+
steps:
25+
- uses: actions/checkout@v4
26+
- name: Install Dependencies
27+
run: |
28+
rm -rf Univ*
29+
rm -rf *pay*.dmg
30+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip install -r requirements.txt
31+
32+
aria2c -x 16 "https://github.com/pyquick/PatcherSupportPkg/releases/download/1.9.8/Universal-Binaries.dmg"
33+
34+
- name: Force Universal2 charset for Python
35+
run: |
36+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip uninstall -y charset_normalizer
37+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip download --platform macosx_10_9_universal2 --only-binary=:all: charset-normalizer
38+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip install charset_normalizer-*-macosx_10_9_universal2.whl
39+
40+
- name: Prepare Assets (--prepare-assets)
41+
42+
run: >
43+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 Build-Project.command
44+
--run-as-individual-steps
45+
--prepare-assets
46+
47+
- name: Prepare Application (--prepare-application)
48+
run: >
49+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 Build-Project.command
50+
--git-branch "${{ env.branch }}" --git-commit-url "${{ env.commiturl }}" --git-commit-date "${{ env.commitdate }}"
51+
--reset-pyinstaller-cache
52+
--run-as-individual-steps
53+
--prepare-application
54+
55+
- name: Prepare Package (--prepare-package)
56+
run: >
57+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 Build-Project.command
58+
--prepare-package
59+
60+
61+
- name: Create Pre-Release on Push
62+
if: github.event_name == 'push'
63+
uses: softprops/action-gh-release@v2
64+
with:
65+
tag_name: push-${{ github.sha }}
66+
name: 3.0.0 Tahoe Test Version
67+
body: ${{ github.event.head_commit.message }}
68+
prerelease: true
69+
files: |
70+
./dist/AutoPkg-Assets.pkg
71+
./dist/OCLP-R.pkg
72+
./dist/OCLP-R-Uninstaller.pkg

.github/workflows/build-self.yml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: CI - Build self
2+
3+
on:
4+
push:
5+
paths-ignore:
6+
- 'docs/**'
7+
workflow_dispatch:
8+
release:
9+
types: [published]
10+
11+
jobs:
12+
build:
13+
name: Build self
14+
runs-on: self-hosted
15+
if: github.repository_owner == 'hackdoc'
16+
permissions:
17+
contents: write
18+
env:
19+
# GitHub Information
20+
branch: ${{ github.ref }}
21+
commiturl: ${{ github.event.head_commit.url }}${{ github.event.release.html_url }}
22+
commitdate: ${{ github.event.head_commit.timestamp }}${{ github.event.release.published_at }}
23+
24+
steps:
25+
- uses: actions/checkout@v4
26+
- name: Install Dependencies
27+
run: |
28+
rm -rf Univ*
29+
rm -rf *pay*.dmg
30+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip install -r requirements.txt
31+
/usr/local/aria2/bin/aria2c -x 16 "https://gitapi.simplehac.top/https://github.com/pyquick/PatcherSupportPkg/releases/download/1.9.8/Universal-Binaries.dmg"
32+
33+
- name: Force Universal2 charset for Python
34+
run: |
35+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip uninstall -y charset_normalizer
36+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip download --platform macosx_10_9_universal2 --only-binary=:all: charset-normalizer
37+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip install charset_normalizer-*-macosx_10_9_universal2.whl
38+
39+
- name: Prepare Assets (--prepare-assets)
40+
run: >
41+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 Build-Project.command
42+
--run-as-individual-steps
43+
--prepare-assets
44+
45+
- name: Prepare Application (--prepare-application)
46+
run: >
47+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 Build-Project.command
48+
--git-branch "${{ env.branch }}" --git-commit-url "${{ env.commiturl }}" --git-commit-date "${{ env.commitdate }}"
49+
--reset-pyinstaller-cache
50+
--run-as-individual-steps
51+
--prepare-application
52+
53+
- name: Prepare Package (--prepare-package)
54+
run: >
55+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 Build-Project.command
56+
--prepare-package

.github/workflows/validate.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: CI - Validation
2+
3+
on:
4+
push:
5+
paths-ignore:
6+
- 'docs/**'
7+
workflow_dispatch:
8+
release:
9+
types: [published]
10+
#/usr/local/aria2/bin/
11+
jobs:
12+
build:
13+
name: Validate
14+
runs-on: macOS-15
15+
if: github.repository_owner == 'hackdoc'
16+
steps:
17+
- uses: actions/checkout@v4
18+
- name: Set up Python
19+
uses: actions/setup-python@v5
20+
with:
21+
python-version: '3.13'
22+
- name: Validate
23+
run: |
24+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip install --upgrade pip
25+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip install -r requirements.txt
26+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 -m pip install packaging
27+
rm -rf Univ*
28+
aria2c -x 16 "https://github.com/pyquick/PatcherSupportPkg/releases/download/1.9.8/Universal-Binaries.dmg"
29+
/Library/Frameworks/Python.framework/Versions/3.11/bin/python3 OCLP-R-GUI.command --validate

.gitignore

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
.DS_Store
2+
OCLP-GUI.command
3+
/payloads/Apple
4+
/payloads/*.zip
5+
/payloads/BuildManifest.plist
6+
/payloads/*.sucatalog
7+
/payloads/*.pkg
8+
/payloads/__MACOSX
9+
/App
10+
/Build-Folder
11+
/build
12+
/dist
13+
/.vscode
14+
__pycache__/
15+
*.kext
16+
*.py[cod]
17+
*$py.class
18+
/docs/.vuepress/dist
19+
/docs/.vuepress/.config.js.swp
20+
/docs/yarn-error.log
21+
/docs/node_modules/
22+
/payloads/List.txt
23+
/payloads/Installer.sh
24+
/payloads/Info.plist
25+
/payloads/seed.plist
26+
/payloads/AutoPkg-Assets.pkg
27+
/payloads/AutoPkg-Assets.pkg.zip
28+
/payloads/Universal-Binaries
29+
/payloads/OpenCore-Legacy-Patcher
30+
/payloads/InstallAssistant.pkg.integrityDataV1
31+
/payloads.dmg
32+
/Universal-Binaries.dmg
33+
/payloads/OpenCore-Legacy-Patcher-*.plist
34+
/payloads/KDK.dmg
35+
*.log
36+
/Universal-Binaries.dmg
37+
/payloads/KDKInfo.plist
38+
/payloads/update.sh
39+
/payloads/OpenCore-Patcher.app
40+
/.x86_64_venv
41+
*afdesign~lock~
42+
main.py
43+
/.idea

.pylintrc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[MASTER]
2+
3+
init-hook="from pylint.config import find_pylintrc; import os, sys; sys.path.append(os.path.dirname(find_pylintrc()))"
4+
5+
[MESSAGES CONTROL]
6+
7+
disable=unused-import,
8+
subprocess-run-check,
9+
line-too-long,
10+
too-few-public-methods,
11+
missing-module-docstring,
12+
missing-class-docstring,
13+
missing-function-docstring

Build-Project.command

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
#!/usr/bin/env python3
2+
"""
3+
Build-Project.command: Generate OCLP-R.app and OCLP-R.pkg
4+
"""
5+
6+
import os
7+
import sys
8+
import time
9+
import argparse
10+
11+
from pathlib import Path
12+
13+
from ci_tooling.build_modules import (
14+
application,
15+
disk_images,
16+
package,
17+
sign_notarize
18+
)
19+
20+
21+
def main() -> None:
22+
"""
23+
Parse Command Line Arguments
24+
"""
25+
26+
parser = argparse.ArgumentParser(description="Build OCLP-R Suite", add_help=False)
27+
28+
# Signing Parameters
29+
parser.add_argument("--application-signing-identity", type=str, help="Application Signing Identity")
30+
parser.add_argument("--installer-signing-identity", type=str, help="Installer Signing Identity")
31+
32+
33+
# Notarization Parameters
34+
parser.add_argument("--notarization-apple-id", type=str, help="Notarization Apple ID", default=None)
35+
parser.add_argument("--notarization-password", type=str, help="Notarization Password", default=None)
36+
parser.add_argument("--notarization-team-id", type=str, help="Notarization Team ID", default=None)
37+
38+
# GitHub Actions CI/CD Parameters
39+
parser.add_argument("--git-branch", type=str, help="Git Branch", default=None)
40+
parser.add_argument("--git-commit-url", type=str, help="Git Commit URL", default=None)
41+
parser.add_argument("--git-commit-date", type=str, help="Git Commit Date", default=None)
42+
43+
# Local Build Parameters
44+
parser.add_argument("--reset-dmg-cache", action="store_true", help="Redownload PatcherSupportPkg.dmg and regenerate payloads.dmg", default=False)
45+
parser.add_argument("--reset-pyinstaller-cache", action="store_true", help="Clean PyInstaller Cache", default=False)
46+
47+
# CI/CD Parameters for individual steps
48+
# If not specified, will run all steps
49+
parser.add_argument("--run-as-individual-steps", action="store_true", help="CI: Run as individual steps", default=False)
50+
parser.add_argument("--prepare-application", action="store_true", help="CI: Prepare Application", default=False)
51+
parser.add_argument("--prepare-package", action="store_true", help="CI: Prepare Package", default=False)
52+
parser.add_argument("--prepare-assets", action="store_true", help="CI: Prepare Assets", default=False)
53+
54+
# Analytics Parameters
55+
parser.add_argument("--analytics-key", type=str, help="Analytics Key", default=None)
56+
parser.add_argument("--analytics-endpoint", type=str, help="Analytics Endpoint", default=None)
57+
58+
# Help
59+
parser.add_argument("--help", action="store_true", help="Show this help message and exit", default=False)
60+
61+
# Parse Arguments
62+
args = parser.parse_args()
63+
64+
if args.help:
65+
parser.print_help()
66+
print("\n\nIf running outside of CI/CD, simply run the following command:")
67+
print("$ python3 Build-Project.command")
68+
sys.exit(0)
69+
70+
# Set 'Current Working Directory' to script directory
71+
os.chdir(Path(__file__).resolve().parent)
72+
73+
74+
if (args.run_as_individual_steps is False) or (args.run_as_individual_steps and args.prepare_assets):
75+
# Prepare workspace
76+
disk_images.GenerateDiskImages(args.reset_dmg_cache).generate()
77+
78+
if (args.run_as_individual_steps is False) or (args.run_as_individual_steps and args.prepare_application):
79+
# Prepare Privileged Helper Tool
80+
sign_notarize.SignAndNotarize(
81+
path=Path("./ci_tooling/privileged_helper_tool/com.pyquick.oclp-r.privileged-helper"),
82+
signing_identity=args.application_signing_identity,
83+
notarization_apple_id=args.notarization_apple_id,
84+
notarization_password=args.notarization_password,
85+
notarization_team_id=args.notarization_team_id,
86+
).sign_and_notarize()
87+
88+
# Build OCLP-R.app
89+
application.GenerateApplication(
90+
reset_pyinstaller_cache=args.reset_pyinstaller_cache,
91+
git_branch=args.git_branch,
92+
git_commit_url=args.git_commit_url,
93+
git_commit_date=args.git_commit_date,
94+
analytics_key=args.analytics_key,
95+
analytics_endpoint=args.analytics_endpoint,
96+
).generate()
97+
98+
# Sign OCLP-R.app
99+
sign_notarize.SignAndNotarize(
100+
path=Path("dist/OCLP-R.app"),
101+
signing_identity=args.application_signing_identity,
102+
notarization_apple_id=args.notarization_apple_id,
103+
notarization_password=args.notarization_password,
104+
notarization_team_id=args.notarization_team_id,
105+
entitlements=Path("./ci_tooling/entitlements/entitlements.plist"),
106+
).sign_and_notarize()
107+
108+
109+
if (args.run_as_individual_steps is False) or (args.run_as_individual_steps and args.prepare_package):
110+
# Build OCLP-R.pkg and OCLP-R-Uninstaller.pkg
111+
package.GeneratePackage().generate()
112+
113+
# Sign OCLP-R.pkg
114+
sign_notarize.SignAndNotarize(
115+
path=Path("dist/OCLP-R.pkg"),
116+
signing_identity=args.installer_signing_identity,
117+
notarization_apple_id=args.notarization_apple_id,
118+
notarization_password=args.notarization_password,
119+
notarization_team_id=args.notarization_team_id,
120+
).sign_and_notarize()
121+
122+
# Sign OCLP-R-Uninstaller.pkg
123+
sign_notarize.SignAndNotarize(
124+
path=Path("dist/OCLP-R-Uninstaller.pkg"),
125+
signing_identity=args.installer_signing_identity,
126+
notarization_apple_id=args.notarization_apple_id,
127+
notarization_password=args.notarization_password,
128+
notarization_team_id=args.notarization_team_id,
129+
).sign_and_notarize()
130+
131+
132+
if __name__ == '__main__':
133+
_start = time.time()
134+
main()
135+
print(f"Build script completed in {str(round(time.time() - _start, 2))} seconds")

0 commit comments

Comments
 (0)