2022-12-01 13:08:43 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
2023-05-11 15:36:53 +00:00
|
|
|
if [ "$#" -lt 7 ]; then
|
|
|
|
echo "usage <BASE_DIR> <TEMP_DIRECTORY> <OUTPUT_DIRECTORY> <ENTITLEMENTS_FILE_PATH> <VERSION> <SOURCE_REVISION_ID> <CONFIGURATION> <EXTRA_ARGS>"
|
2022-12-01 13:08:43 +00:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2023-03-12 16:21:21 +00:00
|
|
|
mkdir -p "$1"
|
|
|
|
mkdir -p "$2"
|
|
|
|
mkdir -p "$3"
|
|
|
|
|
|
|
|
BASE_DIR=$(readlink -f "$1")
|
|
|
|
TEMP_DIRECTORY=$(readlink -f "$2")
|
|
|
|
OUTPUT_DIRECTORY=$(readlink -f "$3")
|
|
|
|
ENTITLEMENTS_FILE_PATH=$(readlink -f "$4")
|
2022-12-01 13:08:43 +00:00
|
|
|
VERSION=$5
|
|
|
|
SOURCE_REVISION_ID=$6
|
2023-05-11 15:36:53 +00:00
|
|
|
CONFIGURATION=$7
|
|
|
|
EXTRA_ARGS=$8
|
|
|
|
|
|
|
|
if [ "$VERSION" == "1.1.0" ];
|
|
|
|
then
|
2024-03-02 11:51:05 +00:00
|
|
|
RELEASE_TAR_FILE_NAME=ryujinx-$CONFIGURATION-$VERSION+$SOURCE_REVISION_ID-macos_universal.app.tar
|
2023-05-11 15:36:53 +00:00
|
|
|
else
|
2024-03-02 11:51:05 +00:00
|
|
|
RELEASE_TAR_FILE_NAME=ryujinx-$VERSION-macos_universal.app.tar
|
2023-05-11 15:36:53 +00:00
|
|
|
fi
|
2022-12-01 13:08:43 +00:00
|
|
|
|
2023-03-12 16:21:21 +00:00
|
|
|
ARM64_APP_BUNDLE="$TEMP_DIRECTORY/output_arm64/Ryujinx.app"
|
|
|
|
X64_APP_BUNDLE="$TEMP_DIRECTORY/output_x64/Ryujinx.app"
|
|
|
|
UNIVERSAL_APP_BUNDLE="$OUTPUT_DIRECTORY/Ryujinx.app"
|
2022-12-01 13:08:43 +00:00
|
|
|
EXECUTABLE_SUB_PATH=Contents/MacOS/Ryujinx
|
|
|
|
|
2023-03-12 16:21:21 +00:00
|
|
|
rm -rf "$TEMP_DIRECTORY"
|
|
|
|
mkdir -p "$TEMP_DIRECTORY"
|
2022-12-01 13:08:43 +00:00
|
|
|
|
2023-06-28 17:09:48 +00:00
|
|
|
DOTNET_COMMON_ARGS=(-p:DebugType=embedded -p:Version="$VERSION" -p:SourceRevisionId="$SOURCE_REVISION_ID" --self-contained true $EXTRA_ARGS)
|
2022-12-01 13:08:43 +00:00
|
|
|
|
|
|
|
dotnet restore
|
2024-03-02 11:51:05 +00:00
|
|
|
dotnet build -c "$CONFIGURATION" src/Ryujinx
|
|
|
|
dotnet publish -c "$CONFIGURATION" -r osx-arm64 -o "$TEMP_DIRECTORY/publish_arm64" "${DOTNET_COMMON_ARGS[@]}" src/Ryujinx
|
|
|
|
dotnet publish -c "$CONFIGURATION" -r osx-x64 -o "$TEMP_DIRECTORY/publish_x64" "${DOTNET_COMMON_ARGS[@]}" src/Ryujinx
|
2022-12-01 13:08:43 +00:00
|
|
|
|
2023-04-28 08:14:44 +00:00
|
|
|
# Get rid of the support library for ARMeilleure for x64 (that's only for arm64)
|
2023-03-12 16:21:21 +00:00
|
|
|
rm -rf "$TEMP_DIRECTORY/publish_x64/libarmeilleure-jitsupport.dylib"
|
2022-12-01 13:08:43 +00:00
|
|
|
|
2023-04-28 08:14:44 +00:00
|
|
|
# Get rid of libsoundio from arm64 builds as we don't have a arm64 variant
|
2022-12-01 13:08:43 +00:00
|
|
|
# TODO: remove this once done
|
2023-03-12 16:21:21 +00:00
|
|
|
rm -rf "$TEMP_DIRECTORY/publish_arm64/libsoundio.dylib"
|
2022-12-01 13:08:43 +00:00
|
|
|
|
2023-03-12 16:21:21 +00:00
|
|
|
pushd "$BASE_DIR/distribution/macos"
|
|
|
|
./create_app_bundle.sh "$TEMP_DIRECTORY/publish_x64" "$TEMP_DIRECTORY/output_x64" "$ENTITLEMENTS_FILE_PATH"
|
|
|
|
./create_app_bundle.sh "$TEMP_DIRECTORY/publish_arm64" "$TEMP_DIRECTORY/output_arm64" "$ENTITLEMENTS_FILE_PATH"
|
2022-12-01 13:08:43 +00:00
|
|
|
popd
|
|
|
|
|
2023-03-12 16:21:21 +00:00
|
|
|
rm -rf "$UNIVERSAL_APP_BUNDLE"
|
|
|
|
mkdir -p "$OUTPUT_DIRECTORY"
|
2022-12-01 13:08:43 +00:00
|
|
|
|
|
|
|
# Let's copy one of the two different app bundle and remove the executable
|
2023-03-12 16:21:21 +00:00
|
|
|
cp -R "$ARM64_APP_BUNDLE" "$UNIVERSAL_APP_BUNDLE"
|
|
|
|
rm "$UNIVERSAL_APP_BUNDLE/$EXECUTABLE_SUB_PATH"
|
2022-12-01 13:08:43 +00:00
|
|
|
|
|
|
|
# Make it libraries universal
|
2023-03-12 16:21:21 +00:00
|
|
|
python3 "$BASE_DIR/distribution/macos/construct_universal_dylib.py" "$ARM64_APP_BUNDLE" "$X64_APP_BUNDLE" "$UNIVERSAL_APP_BUNDLE" "**/*.dylib"
|
2022-12-01 13:08:43 +00:00
|
|
|
|
|
|
|
if ! [ -x "$(command -v lipo)" ];
|
|
|
|
then
|
|
|
|
if ! [ -x "$(command -v llvm-lipo-14)" ];
|
|
|
|
then
|
|
|
|
LIPO=llvm-lipo
|
|
|
|
else
|
|
|
|
LIPO=llvm-lipo-14
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
LIPO=lipo
|
|
|
|
fi
|
|
|
|
|
2023-05-11 15:36:53 +00:00
|
|
|
# Make the executable universal
|
2023-03-12 16:21:21 +00:00
|
|
|
$LIPO "$ARM64_APP_BUNDLE/$EXECUTABLE_SUB_PATH" "$X64_APP_BUNDLE/$EXECUTABLE_SUB_PATH" -output "$UNIVERSAL_APP_BUNDLE/$EXECUTABLE_SUB_PATH" -create
|
2022-12-01 13:08:43 +00:00
|
|
|
|
|
|
|
# Patch up the Info.plist to have appropriate version
|
2023-03-12 16:21:21 +00:00
|
|
|
sed -r -i.bck "s/\%\%RYUJINX_BUILD_VERSION\%\%/$VERSION/g;" "$UNIVERSAL_APP_BUNDLE/Contents/Info.plist"
|
|
|
|
sed -r -i.bck "s/\%\%RYUJINX_BUILD_GIT_HASH\%\%/$SOURCE_REVISION_ID/g;" "$UNIVERSAL_APP_BUNDLE/Contents/Info.plist"
|
|
|
|
rm "$UNIVERSAL_APP_BUNDLE/Contents/Info.plist.bck"
|
2022-12-01 13:08:43 +00:00
|
|
|
|
|
|
|
# Now sign it
|
|
|
|
if ! [ -x "$(command -v codesign)" ];
|
|
|
|
then
|
|
|
|
if ! [ -x "$(command -v rcodesign)" ];
|
|
|
|
then
|
|
|
|
echo "Cannot find rcodesign on your system, please install rcodesign."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# NOTE: Currently require https://github.com/indygreg/apple-platform-rs/pull/44 to work on other OSes.
|
|
|
|
# cargo install --git "https://github.com/marysaka/apple-platform-rs" --branch "fix/adhoc-app-bundle" apple-codesign --bin "rcodesign"
|
2023-05-11 15:36:53 +00:00
|
|
|
echo "Using rcodesign for ad-hoc signing"
|
2023-03-12 16:21:21 +00:00
|
|
|
rcodesign sign --entitlements-xml-path "$ENTITLEMENTS_FILE_PATH" "$UNIVERSAL_APP_BUNDLE"
|
2022-12-01 13:08:43 +00:00
|
|
|
else
|
2023-05-11 15:36:53 +00:00
|
|
|
echo "Using codesign for ad-hoc signing"
|
v1.2.73 (#231)
Significant changes include LDN functionality from @Vudjun (no more
separate build!) and an XCI trimmer from @amurgshere.
Merged PRs in this release (in the order they were merged):
#183, #150, #105, #160, #188, #98, #158, #13, #216, #73, #217, #122,
#228, #65, #226, #236, #247, #243, #249, #242, #260, #273, #272, #262,
#259, #241
## Versioning:
There now exists "stable" (release branch) and ["canary" (master
branch)](https://github.com/GreemDev/Ryujinx-Canary/releases) versions.
Instead of everyone using the same emulator, getting updates for every
code change, you now *opt-in* to the more frequent updates by using the
Canary version. Use stable and you'll get about an update a week, but
that update will be MUCH more significant as it's the entire previous
week's changes & PR merges.
## LDN
LDN functionality is now merged! Use
[this](https://github.com/GreemDev/Ryujinx/wiki/Multiplayer%E2%80%90(LDN%E2%80%90Local%E2%80%90Wireless)%E2%80%90Guide)
to get started.
Please note that LDN is only for local wireless; **this is not a
Nintendo Switch Online emulation feature**.
## UI
- Added an XCI trimmer (#105).
- You can use this feature to trim dead bytes & the embedded firmware
out of your dumped XCIs, to make them smaller.
- If you right-click an XCI and the trim button it is greyed out, that
means your XCI is already as small as possible.
- Fix for fullscreen not being really fullscreen (#150)
- Fix window sizing calculations when Show Title Bar is enabled (#247)
- The "Install/Uninstall file types" buttons will be enabled/disabled
depending on which one you contextually need; install will be clickable
when they aren't installed, and vice versa.
- Fix for showing default config screen when swapping players in
controller settings (#122)
- Command-line argument to prevent update checking `--hide-updates`
(#272)
- # RPC:
- Added a LOT of game images to Discord RPC.
- Play time will now show the time unit hours at a maximum.
## Localization
- Update outdated/incorrect & added missing translations for zh-TW
(#158)
- Add many missing locale strings to all languages (#160)
- Update & improve Korean translation (#226)
- Minor fixes & add missing translations to Spanish translation (#242)
## Headless
- Added `ignore-controller-applet` as an option you can configure via
headless command-line options.
## Graphics Backend
- ### Vulkan
- fix divide-by-zero when recovering from missed draw (#235)
- fixes crash in 'Baldo: The Guardian Owls' opening cutscene
## Horizon
- fix crash that occurs when launching an NSP forwarder generated by
Nro2Nsp (#237)
# Nerd Zone
Slightly more technical information. If you don't understand what's
under here, no worry.
- Updater now uses the release's Tag Name instead of its Name for
version checking.
- Baked in value change logging into ReactiveObject.
- Split ConfigurationState into 3, smaller partial classes of the same
name.
- Specify if the current version is Canary in the version log line
---------
Co-authored-by: James Duarte <GarnetSunset@users.noreply.github.com>
Co-authored-by: Luke Warner <65521430+LukeWarnut@users.noreply.github.com>
Co-authored-by: TheToid <amurgshere@gmail.com>
Co-authored-by: GabCoolGuy <gabrielfreville@proton.me>
Co-authored-by: Kekschen <52585984+Kek5chen@users.noreply.github.com>
Co-authored-by: WilliamWsyHK <WilliamWsyHK@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jacobwasbeast <38381609+Jacobwasbeast@users.noreply.github.com>
Co-authored-by: Piplup <100526773+piplup55@users.noreply.github.com>
Co-authored-by: Vladimir Sokolov <tehnicalmailone@gmail.com>
Co-authored-by: Jonas Henriksson <gr3ger@gmail.com>
Co-authored-by: Vudjun <Vudjun@users.noreply.github.com>
Co-authored-by: extherian <extherian@gmail.com>
Co-authored-by: Hack茶ん <120134269+Hackjjang@users.noreply.github.com>
Co-authored-by: EmulationEnjoyer <144477224+EmulationEnjoyer@users.noreply.github.com>
Co-authored-by: Nicola <61830443+nicola02nb@users.noreply.github.com>
Co-authored-by: jzumaran <juan.zumaran@gitz.cl>
Co-authored-by: Pitchoune <yrigaud@icloud.com>
Co-authored-by: Narugakuruga <31060534+Narugakuruga@users.noreply.github.com>
2024-11-19 14:33:32 +00:00
|
|
|
codesign --entitlements "$ENTITLEMENTS_FILE_PATH" -f -s - "$UNIVERSAL_APP_BUNDLE"
|
2022-12-01 13:08:43 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
echo "Creating archive"
|
2023-03-12 16:21:21 +00:00
|
|
|
pushd "$OUTPUT_DIRECTORY"
|
2023-06-28 17:09:48 +00:00
|
|
|
tar --exclude "Ryujinx.app/Contents/MacOS/Ryujinx" -cvf "$RELEASE_TAR_FILE_NAME" Ryujinx.app 1> /dev/null
|
|
|
|
python3 "$BASE_DIR/distribution/misc/add_tar_exec.py" "$RELEASE_TAR_FILE_NAME" "Ryujinx.app/Contents/MacOS/Ryujinx" "Ryujinx.app/Contents/MacOS/Ryujinx"
|
|
|
|
gzip -9 < "$RELEASE_TAR_FILE_NAME" > "$RELEASE_TAR_FILE_NAME.gz"
|
|
|
|
rm "$RELEASE_TAR_FILE_NAME"
|
2024-03-02 11:51:05 +00:00
|
|
|
|
2022-12-01 13:08:43 +00:00
|
|
|
popd
|
|
|
|
|
v1.2.73 (#231)
Significant changes include LDN functionality from @Vudjun (no more
separate build!) and an XCI trimmer from @amurgshere.
Merged PRs in this release (in the order they were merged):
#183, #150, #105, #160, #188, #98, #158, #13, #216, #73, #217, #122,
#228, #65, #226, #236, #247, #243, #249, #242, #260, #273, #272, #262,
#259, #241
## Versioning:
There now exists "stable" (release branch) and ["canary" (master
branch)](https://github.com/GreemDev/Ryujinx-Canary/releases) versions.
Instead of everyone using the same emulator, getting updates for every
code change, you now *opt-in* to the more frequent updates by using the
Canary version. Use stable and you'll get about an update a week, but
that update will be MUCH more significant as it's the entire previous
week's changes & PR merges.
## LDN
LDN functionality is now merged! Use
[this](https://github.com/GreemDev/Ryujinx/wiki/Multiplayer%E2%80%90(LDN%E2%80%90Local%E2%80%90Wireless)%E2%80%90Guide)
to get started.
Please note that LDN is only for local wireless; **this is not a
Nintendo Switch Online emulation feature**.
## UI
- Added an XCI trimmer (#105).
- You can use this feature to trim dead bytes & the embedded firmware
out of your dumped XCIs, to make them smaller.
- If you right-click an XCI and the trim button it is greyed out, that
means your XCI is already as small as possible.
- Fix for fullscreen not being really fullscreen (#150)
- Fix window sizing calculations when Show Title Bar is enabled (#247)
- The "Install/Uninstall file types" buttons will be enabled/disabled
depending on which one you contextually need; install will be clickable
when they aren't installed, and vice versa.
- Fix for showing default config screen when swapping players in
controller settings (#122)
- Command-line argument to prevent update checking `--hide-updates`
(#272)
- # RPC:
- Added a LOT of game images to Discord RPC.
- Play time will now show the time unit hours at a maximum.
## Localization
- Update outdated/incorrect & added missing translations for zh-TW
(#158)
- Add many missing locale strings to all languages (#160)
- Update & improve Korean translation (#226)
- Minor fixes & add missing translations to Spanish translation (#242)
## Headless
- Added `ignore-controller-applet` as an option you can configure via
headless command-line options.
## Graphics Backend
- ### Vulkan
- fix divide-by-zero when recovering from missed draw (#235)
- fixes crash in 'Baldo: The Guardian Owls' opening cutscene
## Horizon
- fix crash that occurs when launching an NSP forwarder generated by
Nro2Nsp (#237)
# Nerd Zone
Slightly more technical information. If you don't understand what's
under here, no worry.
- Updater now uses the release's Tag Name instead of its Name for
version checking.
- Baked in value change logging into ReactiveObject.
- Split ConfigurationState into 3, smaller partial classes of the same
name.
- Specify if the current version is Canary in the version log line
---------
Co-authored-by: James Duarte <GarnetSunset@users.noreply.github.com>
Co-authored-by: Luke Warner <65521430+LukeWarnut@users.noreply.github.com>
Co-authored-by: TheToid <amurgshere@gmail.com>
Co-authored-by: GabCoolGuy <gabrielfreville@proton.me>
Co-authored-by: Kekschen <52585984+Kek5chen@users.noreply.github.com>
Co-authored-by: WilliamWsyHK <WilliamWsyHK@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jacobwasbeast <38381609+Jacobwasbeast@users.noreply.github.com>
Co-authored-by: Piplup <100526773+piplup55@users.noreply.github.com>
Co-authored-by: Vladimir Sokolov <tehnicalmailone@gmail.com>
Co-authored-by: Jonas Henriksson <gr3ger@gmail.com>
Co-authored-by: Vudjun <Vudjun@users.noreply.github.com>
Co-authored-by: extherian <extherian@gmail.com>
Co-authored-by: Hack茶ん <120134269+Hackjjang@users.noreply.github.com>
Co-authored-by: EmulationEnjoyer <144477224+EmulationEnjoyer@users.noreply.github.com>
Co-authored-by: Nicola <61830443+nicola02nb@users.noreply.github.com>
Co-authored-by: jzumaran <juan.zumaran@gitz.cl>
Co-authored-by: Pitchoune <yrigaud@icloud.com>
Co-authored-by: Narugakuruga <31060534+Narugakuruga@users.noreply.github.com>
2024-11-19 14:33:32 +00:00
|
|
|
echo "Done"
|