Skip to content

Commit 7fbc934

Browse files
build(packaging/macos)!: remove macports support
1 parent d50611c commit 7fbc934

File tree

3 files changed

+46
-369
lines changed

3 files changed

+46
-369
lines changed

.github/workflows/CI.yml

Lines changed: 46 additions & 256 deletions
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@ jobs:
547547
- name: Checkout
548548
uses: actions/checkout@v4
549549

550-
- name: Fix python
550+
- name: Fix homebrew python
551551
if: matrix.os_name == 'macos' && matrix.os_version == '13'
552552
run: |
553553
rm '/usr/local/bin/2to3'
@@ -562,7 +562,14 @@ jobs:
562562
rm '/usr/local/bin/python3.12-config'
563563
brew install python
564564
565+
- name: Setup python
566+
id: python
567+
uses: actions/setup-python@v5
568+
with:
569+
python-version: '3.11'
570+
565571
- name: Configure formula
572+
id: configure-formula
566573
run: |
567574
# variables for formula
568575
branch="${{ github.head_ref }}"
@@ -598,6 +605,8 @@ jobs:
598605
echo "Clone URL: ${clone_url}"
599606
echo "Tag: ${tag}"
600607
608+
echo "build-version=${build_version}" >> $GITHUB_OUTPUT
609+
601610
mkdir -p build
602611
cmake \
603612
-B build \
@@ -652,6 +661,42 @@ jobs:
652661
token: ${{ secrets.GH_BOT_TOKEN }}
653662
validate: true
654663

664+
- name: Generate gcov report
665+
# any except canceled or skipped
666+
if: >-
667+
always() &&
668+
matrix.release != true &&
669+
(steps.test.outcome == 'success' || steps.test.outcome == 'failure')
670+
id: test_report
671+
run: |
672+
cd $(brew --prefix)/Cellar/sunshine/${{ steps.configure-formula.outputs.build_version }}/bin
673+
674+
${{ steps.python.outputs.python-path }} -m pip install gcovr
675+
sudo ${{ steps.python.outputs.python-path }} -m gcovr . -r ${{ github.workspace }}/src \
676+
--exclude-noncode-lines \
677+
--exclude-throw-branches \
678+
--exclude-unreachable-branches \
679+
--gcov-object-directory $(pwd) \
680+
--verbose \
681+
--xml-pretty \
682+
-o ${{ github.workspace }}/build/coverage.xml
683+
684+
- name: Upload coverage
685+
# any except canceled or skipped
686+
if: >-
687+
always() &&
688+
matrix.release != true &&
689+
(steps.test_report.outcome == 'success') &&
690+
startsWith(github.repository, 'LizardByte/')
691+
uses: codecov/codecov-action@v5
692+
with:
693+
disable_search: true
694+
fail_ci_if_error: true
695+
files: ./build/coverage.xml
696+
flags: ${{ matrix.os_name }}-${{ matrix.os_version }} (Homebrew)
697+
token: ${{ secrets.CODECOV_TOKEN }}
698+
verbose: true
699+
655700
- name: Create/Update GitHub Release
656701
if: >-
657702
matrix.release &&
@@ -701,261 +746,6 @@ jobs:
701746
token: ${{ secrets.GH_BOT_TOKEN }}
702747
validate: false
703748

704-
build_mac_port:
705-
needs: [setup_release]
706-
strategy:
707-
fail-fast: false # false to test all, true to fail entire job if any fail
708-
matrix:
709-
include:
710-
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
711-
# while GitHub has larger macOS runners, they are not available for our repos :(
712-
- os_version: "13"
713-
release: true
714-
- os_version: "14"
715-
name: Macports (macOS-${{ matrix.os_version }})
716-
runs-on: macos-${{ matrix.os_version }}
717-
718-
steps:
719-
- name: Checkout
720-
uses: actions/checkout@v4
721-
722-
- name: Checkout ports
723-
uses: actions/checkout@v4
724-
with:
725-
repository: macports/macports-ports
726-
fetch-depth: 64
727-
path: ports
728-
729-
- name: Checkout mpbb
730-
uses: actions/checkout@v4
731-
with:
732-
repository: macports/mpbb
733-
path: mpbb
734-
735-
- name: Setup Dependencies Macports
736-
run: |
737-
# install dependencies using homebrew
738-
brew install cmake
739-
740-
- name: Setup python
741-
id: python
742-
uses: actions/setup-python@v5
743-
with:
744-
python-version: '3.11'
745-
746-
- name: Configure Portfile
747-
run: |
748-
# variables for Portfile
749-
branch="${{ github.head_ref }}"
750-
commit=${{ needs.setup_release.outputs.release_commit }}
751-
752-
# check the branch variable
753-
if [ -z "$branch" ]
754-
then
755-
echo "This is a PUSH event"
756-
branch="${{ github.ref_name }}"
757-
build_version=${{ needs.setup_release.outputs.release_tag }}
758-
clone_url=${{ github.event.repository.clone_url }}
759-
else
760-
echo "This is a PR event"
761-
clone_url=${{ github.event.pull_request.head.repo.clone_url }}
762-
fi
763-
echo "Commit: ${commit}"
764-
echo "Clone URL: ${clone_url}"
765-
766-
mkdir -p build
767-
cmake \
768-
-B build \
769-
-S . \
770-
-DBUILD_VERSION=${build_version} \
771-
-DGITHUB_BRANCH=${branch} \
772-
-DGITHUB_COMMIT=${commit} \
773-
-DGITHUB_CLONE_URL=${clone_url} \
774-
-DSUNSHINE_CONFIGURE_PORTFILE=ON \
775-
-DSUNSHINE_CONFIGURE_ONLY=ON
776-
777-
# copy Portfile to artifacts
778-
mkdir -p artifacts
779-
cp -f ./build/Portfile ./artifacts/
780-
781-
# copy Portfile to ports
782-
mkdir -p ./ports/multimedia/Sunshine
783-
cp -f ./build/Portfile ./ports/multimedia/Sunshine/Portfile
784-
785-
# testing
786-
cat ./artifacts/Portfile
787-
788-
- name: Bootstrap MacPorts
789-
run: |
790-
. ports/.github/workflows/bootstrap.sh
791-
792-
# Add getopt, mpbb and the MacPorts paths to $PATH for the subsequent steps.
793-
echo "/opt/mports/bin" >> $GITHUB_PATH
794-
echo "${PWD}/mpbb" >> $GITHUB_PATH
795-
echo "/opt/local/bin" >> $GITHUB_PATH
796-
echo "/opt/local/sbin" >> $GITHUB_PATH
797-
798-
- name: Run port lint
799-
run: |
800-
port -q lint "Sunshine"
801-
802-
- name: Build port
803-
env:
804-
subportlist: ${{ steps.subportlist.outputs.subportlist }}
805-
id: build
806-
run: |
807-
subport="Sunshine"
808-
809-
workdir="/tmp/mpbb/$subport"
810-
mkdir -p "$workdir/logs"
811-
812-
echo "::group::Installing dependencies"
813-
sudo mpbb \
814-
--work-dir "$workdir" \
815-
install-dependencies \
816-
"$subport"
817-
echo "::endgroup::"
818-
819-
echo "::group::Installing ${subport}"
820-
sudo mpbb \
821-
--work-dir "$workdir" \
822-
install-port \
823-
--source \
824-
"$subport"
825-
echo "::endgroup::"
826-
827-
- name: Build Logs
828-
if: always()
829-
run: |
830-
logfile="/opt/local/var/macports/logs/_Users_runner_work_Sunshine_Sunshine_ports_multimedia_Sunshine/Sunshine/main.log"
831-
cat "$logfile"
832-
sudo mv "${logfile}" "${logfile}.bak"
833-
834-
- name: Upload Artifacts
835-
if: ${{ matrix.release }}
836-
uses: actions/upload-artifact@v4
837-
with:
838-
name: sunshine-macports
839-
path: artifacts/
840-
841-
- name: Fix permissions
842-
run: |
843-
# https://apple.stackexchange.com/questions/362865/macos-list-apps-authorized-for-full-disk-access
844-
# https://github.com/actions/runner-images/issues/9529
845-
# https://github.com/actions/runner-images/pull/9530
846-
847-
# function to execute sql query for each value
848-
function execute_sql_query {
849-
local value=$1
850-
local dbPath=$2
851-
852-
echo "Executing SQL query for value: $value"
853-
sudo sqlite3 "$dbPath" "INSERT OR IGNORE INTO access VALUES($value);"
854-
}
855-
856-
# Find all provisioner paths and store them in an array
857-
readarray -t provisioner_paths < <(sudo find /opt /usr -name provisioner)
858-
echo "Provisioner paths: ${provisioner_paths[@]}"
859-
860-
# Create an empty array
861-
declare -a values=()
862-
863-
# Loop through the provisioner paths and add them to the values array
864-
for p_path in "${provisioner_paths[@]}"; do
865-
# Adjust the service name and other parameters as needed
866-
values+=("'kTCCServiceAccessibility','${p_path}',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,NULL,1592919552")
867-
values+=("'kTCCServiceScreenCapture','${p_path}',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159")
868-
done
869-
870-
echo "Values: ${values[@]}"
871-
872-
if [[ "${{ matrix.os_version }}" == "14" ]]; then
873-
# TCC access table in Sonoma has extra 4 columns: pid, pid_version, boot_uuid, last_reminded
874-
for i in "${!values[@]}"; do
875-
values[$i]="${values[$i]},NULL,NULL,'UNUSED',${values[$i]##*,}"
876-
done
877-
fi
878-
879-
# system and user databases
880-
dbPaths=(
881-
"/Library/Application Support/com.apple.TCC/TCC.db"
882-
"$HOME/Library/Application Support/com.apple.TCC/TCC.db"
883-
)
884-
885-
for value in "${values[@]}"; do
886-
for dbPath in "${dbPaths[@]}"; do
887-
echo "Column names for $dbPath"
888-
echo "-------------------"
889-
sudo sqlite3 "$dbPath" "PRAGMA table_info(access);"
890-
echo "Current permissions for $dbPath"
891-
echo "-------------------"
892-
sudo sqlite3 "$dbPath" "SELECT * FROM access WHERE service='kTCCServiceScreenCapture';"
893-
execute_sql_query "$value" "$dbPath"
894-
echo "Updated permissions for $dbPath"
895-
echo "-------------------"
896-
sudo sqlite3 "$dbPath" "SELECT * FROM access WHERE service='kTCCServiceScreenCapture';"
897-
done
898-
done
899-
900-
- name: Run tests
901-
id: test
902-
timeout-minutes: 10
903-
working-directory:
904-
/opt/local/var/macports/build/_Users_runner_work_Sunshine_Sunshine_ports_multimedia_Sunshine/Sunshine/work/build/tests
905-
run: |
906-
sudo ./test_sunshine --gtest_color=yes
907-
908-
- name: Generate gcov report
909-
# any except canceled or skipped
910-
if: always() && (steps.test.outcome == 'success' || steps.test.outcome == 'failure')
911-
id: test_report
912-
working-directory:
913-
/opt/local/var/macports/build/_Users_runner_work_Sunshine_Sunshine_ports_multimedia_Sunshine/Sunshine/work
914-
run: |
915-
base_dir=$(pwd)
916-
build_dir=${base_dir}/build
917-
918-
# get the directory name that starts with Sunshine-*
919-
dir=$(ls -d Sunshine-*)
920-
921-
cd ${build_dir}
922-
${{ steps.python.outputs.python-path }} -m pip install gcovr
923-
sudo ${{ steps.python.outputs.python-path }} -m gcovr . -r ../${dir}/src \
924-
--exclude-noncode-lines \
925-
--exclude-throw-branches \
926-
--exclude-unreachable-branches \
927-
--gcov-object-directory $(pwd) \
928-
--verbose \
929-
--xml-pretty \
930-
-o ${{ github.workspace }}/build/coverage.xml
931-
932-
- name: Upload coverage
933-
# any except canceled or skipped
934-
if: >-
935-
always() &&
936-
(steps.test_report.outcome == 'success') &&
937-
startsWith(github.repository, 'LizardByte/')
938-
uses: codecov/codecov-action@v5
939-
with:
940-
disable_search: true
941-
fail_ci_if_error: false # todo: re-enable this when action is fixed
942-
files: ./build/coverage.xml
943-
flags: ${{ runner.os }}-${{ matrix.os_version }}
944-
token: ${{ secrets.CODECOV_TOKEN }}
945-
verbose: true
946-
947-
- name: Create/Update GitHub Release
948-
if: ${{ needs.setup_release.outputs.publish_release == 'true' }}
949-
uses: LizardByte/[email protected]
950-
with:
951-
allowUpdates: true
952-
body: ${{ needs.setup_release.outputs.release_body }}
953-
generateReleaseNotes: ${{ needs.setup_release.outputs.release_generate_release_notes }}
954-
name: ${{ needs.setup_release.outputs.release_tag }}
955-
prerelease: true
956-
tag: ${{ needs.setup_release.outputs.release_tag }}
957-
token: ${{ secrets.GH_BOT_TOKEN }}
958-
959749
build_win:
960750
name: Windows
961751
runs-on: windows-2019

docs/getting_started.md

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -271,42 +271,6 @@ brew uninstall sunshine
271271

272272
@tip{For beta you can replace `sunshine` with `sunshine-beta` in the above commands.}
273273

274-
#### Portfile
275-
This package requires that you have [MacPorts](https://www.macports.org/install.php) installed.
276-
277-
##### Install
278-
1. Update the Macports sources.
279-
```bash
280-
sudo nano /opt/local/etc/macports/sources.conf
281-
```
282-
283-
Add this line, replacing your username, below the line that starts with `rsync`.
284-
```bash
285-
file:///Users/<username>/ports
286-
```
287-
288-
`Ctrl+x`, then `Y` to exit and save changes.
289-
290-
2. Download and install by running the following commands.
291-
```bash
292-
mkdir -p ~/ports/multimedia/sunshine
293-
cd ~/ports/multimedia/sunshine
294-
curl -OL https://github.com/LizardByte/Sunshine/releases/latest/download/Portfile
295-
cd ~/ports
296-
portindex
297-
sudo port install sunshine
298-
```
299-
300-
##### Install service (optional)
301-
```bash
302-
sudo port load sunshine
303-
```
304-
305-
##### Uninstall
306-
```bash
307-
sudo port uninstall sunshine
308-
```
309-
310274
### Windows
311275

312276
#### Installer (recommended)

0 commit comments

Comments
 (0)