-
Notifications
You must be signed in to change notification settings - Fork 120
Auto populate the namespace list to rename in desktop packaging #1000
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…ces to rename. This prevents some namespaces from accidentally being omitted. Instead, the script will rename all namespaces except for std:: and __gnu_cxx.
Also add 'firestore' to top-level namespaces. Also upgrade demumble to 1.2.2 which handles more MSVC demangling cases.
This reverts commit d01a21e.
Fix windows BFD target.
This fixes grpc_resource_quota_arg_vtable::$_0::__invoke
Remove strict_cpp as it should no longer be required for Windows.
) | ||
cache_param=--cache=${cache_file} | ||
|
||
if [[ ${platform} == "windows" ]]; then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No longer needed with the newer Demumble version.
@@ -544,6 +549,9 @@ jobs: | |||
cd sdk-src | |||
python scripts/gha/install_prereqs_desktop.py --ssl boringssl | |||
cd .. | |||
if [[ $(uname) == "Darwin"* ]]; then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixes an issue where Mac packaging was not done in parallel due to the "parallel" tool not being installed. Speeds up packaging on Mac.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
@@ -544,6 +549,9 @@ jobs: | |||
cd sdk-src | |||
python scripts/gha/install_prereqs_desktop.py --ssl boringssl | |||
cd .. | |||
if [[ $(uname) == "Darwin"* ]]; then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
❌ Integration test FAILEDRequested by @jonsimantov on commit c046c8a
Add flaky tests to go/fpl-cpp-flake-tracker |
Description
Currently, there is a large list of C++ namespaces that are renamed in the binary version of the desktop SDK. This allows the Firebase C++ SDK to embed its own C++ dependencies (e.g. absl, BoringSSL, gRPC, etc.) without affecting any other versions of those dependencies that may be present in the build (for example, if the developer's desktop app uses OpenSSL or a different version of gRPC).
Because that list of C++ namespaces is manually maintained in the desktop packaging script, it's possible that when dependencies changed (as grpc recently did), there can be new namespaces introduced in dependencies that are not added to that list. This would result in duplicate symbols when a developer ultimately links their desktop app—which, for example, already uses gRPC—with the Firebase C++ SDK, which embeds its own version of gRPC.
Fortunately, the script that performs this renaming has a mode where it will scan for all C++ namespaces and rename them all automatically, except the ones we specifically want to preserve (in this case, just "firebase::"). This will rename all namespaces inside the C++ libraries, except for certain system namespaces (currently "std" and "__gnu_cxx").
This PR enables this option. Ultimately the binary SDK created in this PR will need to be checked to make sure it does not have any extraneous frameworks. (This PR also adds such a check to the end of the packaging workflow.)
Finally, this PR brings back the merge_libraries_test script from the internal repo, which runs a battery of tests on merge_libraries, including new ones added to catch these very issues. The script is not in CI but can be run locally via scripts/merge_libraries_test.sh.
Testing
CPP binary SDK packaging runs
Type of Change
Place an
x
the applicable box:Notes
Release Notes
section ofrelease_build_files/readme.md
.