Skip to content

Commit 749c72c

Browse files
authored
Switch to using static libs on Linux (#424)
* Switch to using `sentry-native` static libs on Linux * Fix artifacts path * Add debug message * Fix path * Fix build errors * Fix more build errors * Try another build settings for sentry-native * Fix * Fix * Fix * Fix * Fix * Fix Linux deps * Fix * Update plugin snapshot * Update gitignore * Script formatting * Update changelog
1 parent 72dedd8 commit 749c72c

File tree

8 files changed

+45
-21
lines changed

8 files changed

+45
-21
lines changed

.github/workflows/sdk.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
if: ${{ inputs.target == 'Linux' && steps.cache.outputs.cache-hit != 'true' }}
4848
run: |
4949
sudo apt-get update
50-
sudo apt-get install zlib1g-dev libcurl4-openssl-dev
50+
sudo apt-get install zlib1g-dev libcurl4-openssl-dev clang libc++-dev
5151
5252
- uses: actions/setup-java@v3
5353
if: ${{ inputs.target == 'Android' }}

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## Unreleased
44

5+
### Features
6+
7+
- Switch to using static libs on Linux ([#424](https://github.com/getsentry/sentry-unreal/pull/424))
8+
59
### Fixes
610

711
- Fix invalid breadcrumbs level for Win/Linux ([#426](https://github.com/getsentry/sentry-unreal/pull/426))

plugin-dev/Source/Sentry/Private/SentryModule.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,9 @@ void FSentryModule::StartupModule()
3333
const FString SentryLibName = TEXT("sentry.dll");
3434
#elif PLATFORM_MAC
3535
const FString SentryLibName = TEXT("sentry.dylib");
36-
#elif PLATFORM_LINUX
37-
const FString SentryLibName = TEXT("libsentry.so");
3836
#endif
3937

40-
#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
38+
#if PLATFORM_WINDOWS || PLATFORM_MAC
4139
const FString BinariesDirPath = GetBinariesPath();
4240
FPlatformProcess::PushDllDirectory(*BinariesDirPath);
4341
mDllHandleSentry = FPlatformProcess::GetDllHandle(*FPaths::Combine(BinariesDirPath, SentryLibName));

plugin-dev/Source/Sentry/Sentry.Build.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,20 @@ public Sentry(ReadOnlyTargetRules Target) : base(Target)
123123
PublicIncludePaths.Add(Path.Combine(PlatformThirdPartyPath, "include"));
124124
PrivateIncludePaths.Add(Path.Combine(ModuleDirectory, "Private", "Desktop"));
125125

126-
RuntimeDependencies.Add(Path.Combine(PlatformBinariesPath, "libsentry.so"), Path.Combine(PlatformThirdPartyPath, "bin", "libsentry.so"));
127126
RuntimeDependencies.Add(Path.Combine(PlatformBinariesPath, "crashpad_handler"), Path.Combine(PlatformThirdPartyPath, "bin", "crashpad_handler"));
128127

129-
PublicRuntimeLibraryPaths.Add(PlatformBinariesPath);
130-
131-
PublicAdditionalLibraries.Add(Path.Combine(PlatformBinariesPath, "libsentry.so"));
128+
PublicAdditionalLibraries.Add(Path.Combine(PlatformThirdPartyPath, "lib", "libcrashpad_client.a"));
129+
PublicAdditionalLibraries.Add(Path.Combine(PlatformThirdPartyPath, "lib", "libcrashpad_compat.a"));
130+
PublicAdditionalLibraries.Add(Path.Combine(PlatformThirdPartyPath, "lib", "libcrashpad_handler_lib.a"));
131+
PublicAdditionalLibraries.Add(Path.Combine(PlatformThirdPartyPath, "lib", "libcrashpad_minidump.a"));
132+
PublicAdditionalLibraries.Add(Path.Combine(PlatformThirdPartyPath, "lib", "libcrashpad_snapshot.a"));
133+
PublicAdditionalLibraries.Add(Path.Combine(PlatformThirdPartyPath, "lib", "libcrashpad_tools.a"));
134+
PublicAdditionalLibraries.Add(Path.Combine(PlatformThirdPartyPath, "lib", "libcrashpad_util.a"));
135+
PublicAdditionalLibraries.Add(Path.Combine(PlatformThirdPartyPath, "lib", "libmini_chromium.a"));
136+
PublicAdditionalLibraries.Add(Path.Combine(PlatformThirdPartyPath, "lib", "libsentry.a"));
132137

133138
PublicDefinitions.Add("USE_SENTRY_NATIVE=1");
139+
PublicDefinitions.Add("SENTRY_BUILD_STATIC=1");
134140
}
135141

136142
// Additional routine for Mac

sample/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,6 @@ Plugins/*/Intermediate/*
7676
DerivedDataCache/*
7777

7878
**/sentry.properties
79+
**/*.uproject.DotSettings.user
80+
7981
dist

scripts/build-linux.sh

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,15 @@ export sentryArtifactsDestination=$2
66

77
rm -rf "${sentryArtifactsDestination}/"*
88

9-
cmake -S "${sentryNativeRoot}" -B "${sentryNativeRoot}/build" -D SENTRY_BACKEND=crashpad -D SENTRY_TRANSPORT=none -D SENTRY_SDK_NAME=sentry.native.unreal -D CMAKE_BUILD_TYPE=RelWithDebInfo
9+
cmake -S "${sentryNativeRoot}" -B "${sentryNativeRoot}/build" -D SENTRY_BACKEND=crashpad -D SENTRY_TRANSPORT=none -D SENTRY_SDK_NAME=sentry.native.unreal -D SENTRY_BUILD_SHARED_LIBS=OFF \
10+
-D CMAKE_BUILD_TYPE=RelWithDebInfo -D CMAKE_C_COMPILER=clang -D CMAKE_CXX_COMPILER="clang++" -D CMAKE_CXX_FLAGS="-stdlib=libc++" -D CMAKE_EXE_LINKER_FLAGS="-stdlib=libc++"
1011
cmake --build "${sentryNativeRoot}/build" --target sentry --parallel
12+
cmake --install "${sentryNativeRoot}/build" --prefix "${sentryNativeRoot}/install"
1113

1214
mkdir "${sentryArtifactsDestination}/bin"
1315
mkdir "${sentryArtifactsDestination}/include"
16+
mkdir "${sentryArtifactsDestination}/lib"
1417

15-
strip -s "${sentryNativeRoot}/build/libsentry.so" -w -K sentry_[^_]* -o "${sentryArtifactsDestination}/bin/libsentry.so"
16-
cp "${sentryNativeRoot}/build/libsentry.so" "${sentryArtifactsDestination}/bin/libsentry.dbg.so"
17-
strip -x "${sentryNativeRoot}/build/crashpad_build/handler/crashpad_handler" -o "${sentryArtifactsDestination}/bin/crashpad_handler"
18-
cp "${sentryNativeRoot}/include/sentry.h" "${sentryArtifactsDestination}/include/sentry.h"
19-
20-
pushd ${sentryArtifactsDestination}/bin
21-
objcopy --add-gnu-debuglink="libsentry.dbg.so" "libsentry.so"
22-
popd
18+
cp -r "${sentryNativeRoot}/install/lib/"*.a "${sentryArtifactsDestination}/lib"
19+
strip -x "${sentryNativeRoot}/install/bin/crashpad_handler" -o "${sentryArtifactsDestination}/bin/crashpad_handler"
20+
cp "${sentryNativeRoot}/install/include/sentry.h" "${sentryArtifactsDestination}/include/sentry.h"

scripts/packaging/package-github.snapshot

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,10 +250,18 @@ Source/ThirdParty/IOS/Sentry.framework/Sentry
250250
Source/ThirdParty/Linux/
251251
Source/ThirdParty/Linux/bin/
252252
Source/ThirdParty/Linux/bin/crashpad_handler
253-
Source/ThirdParty/Linux/bin/libsentry.dbg.so
254-
Source/ThirdParty/Linux/bin/libsentry.so
255253
Source/ThirdParty/Linux/include/
256254
Source/ThirdParty/Linux/include/sentry.h
255+
Source/ThirdParty/Linux/lib/
256+
Source/ThirdParty/Linux/lib/libcrashpad_client.a
257+
Source/ThirdParty/Linux/lib/libcrashpad_compat.a
258+
Source/ThirdParty/Linux/lib/libcrashpad_handler_lib.a
259+
Source/ThirdParty/Linux/lib/libcrashpad_minidump.a
260+
Source/ThirdParty/Linux/lib/libcrashpad_snapshot.a
261+
Source/ThirdParty/Linux/lib/libcrashpad_tools.a
262+
Source/ThirdParty/Linux/lib/libcrashpad_util.a
263+
Source/ThirdParty/Linux/lib/libmini_chromium.a
264+
Source/ThirdParty/Linux/lib/libsentry.a
257265
Source/ThirdParty/Mac/
258266
Source/ThirdParty/Mac/bin/
259267
Source/ThirdParty/Mac/bin/sentry.dylib

scripts/packaging/package-marketplace.snapshot

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,10 +247,18 @@ Source/ThirdParty/IOS/Sentry.framework/Sentry
247247
Source/ThirdParty/Linux/
248248
Source/ThirdParty/Linux/bin/
249249
Source/ThirdParty/Linux/bin/crashpad_handler
250-
Source/ThirdParty/Linux/bin/libsentry.dbg.so
251-
Source/ThirdParty/Linux/bin/libsentry.so
252250
Source/ThirdParty/Linux/include/
253251
Source/ThirdParty/Linux/include/sentry.h
252+
Source/ThirdParty/Linux/lib/
253+
Source/ThirdParty/Linux/lib/libcrashpad_client.a
254+
Source/ThirdParty/Linux/lib/libcrashpad_compat.a
255+
Source/ThirdParty/Linux/lib/libcrashpad_handler_lib.a
256+
Source/ThirdParty/Linux/lib/libcrashpad_minidump.a
257+
Source/ThirdParty/Linux/lib/libcrashpad_snapshot.a
258+
Source/ThirdParty/Linux/lib/libcrashpad_tools.a
259+
Source/ThirdParty/Linux/lib/libcrashpad_util.a
260+
Source/ThirdParty/Linux/lib/libmini_chromium.a
261+
Source/ThirdParty/Linux/lib/libsentry.a
254262
Source/ThirdParty/Mac/
255263
Source/ThirdParty/Mac/bin/
256264
Source/ThirdParty/Mac/bin/sentry.dylib

0 commit comments

Comments
 (0)