Skip to content

Commit 2013bfd

Browse files
committed
Update build info for Linux (and fix an obsolete script line).
1 parent 770a9af commit 2013bfd

File tree

2 files changed

+27
-23
lines changed

2 files changed

+27
-23
lines changed

AGENTS.md

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ The SDK uses CMake for C++ compilation and Gradle for Android-specific parts.
6666
(replace `firebase_analytics` with the desired library).
6767
Or omit the entire `--target` parameter to build all targets.
6868

69+
For development, building specific targets
70+
(e.g., `cmake --build . --target firebase_app`) is generally faster and
71+
recommended once CMake configuration is complete. The full build
72+
(`cmake --build .`) can be very time-consuming.
73+
6974
You can also use the `scripts/gha/build_desktop.py` script to build the full
7075
desktop SDK.
7176

@@ -88,17 +93,21 @@ generated in each library's build directory (e.g.,
8893
You can build the entire SDK for Android by running `./gradlew build` or
8994
`build_scripts/android/build.sh`.
9095

91-
### Desktop Platform Setup Details
96+
#### Troubleshooting Desktop Builds
9297

93-
When setting up for desktop, if you are using an iOS
94-
`GoogleService-Info.plist` file, convert it to the required
95-
`google-services-desktop.json` using the script:
96-
`python generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist`
97-
(run this from the script's directory, ensuring the plist file is accessible).
98+
* Linux: **Missing `libsecret-1-dev`**:
99+
CMake configuration may fail if `libsecret-1-dev` is not installed.
100+
The `scripts/gha/install_prereqs_desktop.py` script should handle this.
101+
If it doesn't, or if the package is removed, you might need to install it
102+
manually: `sudo apt-get update && sudo apt-get install -y libsecret-1-dev`.
98103

99-
The desktop SDK searches for configuration files in the current working
100-
directory, first for `google-services-desktop.json`, then for
101-
`google-services.json`.
104+
* Linux: **LevelDB Patch Failure when building Firestore**:
105+
If you are building the SDK with Firestore enabled
106+
(`-DFIREBASE_INCLUDE_FIRESTORE=ON`, which is the default for desktop) and
107+
encounter a patch error related to `leveldb-1.23_windows_paths.patch` (e.g.,
108+
`util/env_windows.cc: patch does not apply`), you can ignore this issue if
109+
it does not prevent the rest of the build from running. The patch is only
110+
important on Windows.
102111

103112
Common system library dependencies for desktop:
104113
* **Windows**: Common dependencies include `advapi32.lib`, `ws2_32.lib`,
@@ -109,6 +118,9 @@ Common system library dependencies for desktop:
109118
* **Linux**: Common dependencies include `pthread` (system library). When
110119
using GCC 5+, define `-D_GLIBCXX_USE_CXX11_ABI=0`.
111120

121+
On all desktop platforms, building with -DFIREBASE_USE_BORINGSSL=YES can help
122+
bypass any OpenSSL dependency issues.
123+
112124
## Including the SDK in Projects
113125

114126
### CMake Projects
@@ -151,18 +163,10 @@ coverage within the integration tests.
151163
(e.g., Firestore, Auth) are typically located in the `integration_test/`
152164
directory within that product's module (e.g.,
153165
`firestore/integration_test/`).
154-
* **Test Scripts**: The root of the repository contains scripts for running
155-
tests on various platforms, such as:
156-
* `test_windows_x32.bat`
157-
* `test_windows_x64.bat`
158-
* `test_linux.sh`
159-
* `test_mac_x64.sh`
160-
* `test_mac_ios.sh`
161-
* `test_mac_ios_simulator.sh`
162-
163-
These scripts typically build the SDKs and then execute the relevant tests
164-
(primarily integration tests) via CTest or other platform-specific test
165-
runners.
166+
167+
Because building integration tests requires internal google-services files,
168+
Jules cannot do it in its environment; instead, we rely on GitHub Actions's
169+
Integration Test workflow to build and run the integration tests.
166170

167171
## Writing Tests
168172

scripts/gha/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
platforms.
2020
"""
2121

22-
import distutils.spawn
22+
import shutil
2323
import glob
2424
import platform
2525
import shutil
@@ -63,7 +63,7 @@ def run_command(cmd, capture_output=False, cwd=None, check=False, as_root=False,
6363

6464
def is_command_installed(tool):
6565
"""Check if a command is installed on the system."""
66-
return distutils.spawn.find_executable(tool)
66+
return shutil.which(tool)
6767

6868

6969
def glob_exists(glob_path):

0 commit comments

Comments
 (0)