Skip to content

firebase

firebase #199

Workflow file for this run

name: firebase
on:
workflow_dispatch:
jobs:
windows:
runs-on: windows-latest
if: false
strategy:
fail-fast: true
matrix:
include:
- arch: 'amd64'
platform: 'x64'
- arch: 'arm64'
platform: 'ARM64'
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
path: ${{ github.workspace }}/SourceCache/flatbuffers
ref: 99aa1ef21dd9dc3f9d4fb0eb82f4b59d0bb5e4c5
repository: google/flatbuffers
- uses: actions/checkout@v3
with:
fetch-depth: 1
path: ${{ github.workspace }}/SourceCache/firebase-cpp-sdk
ref: refs/heads/compnerd/swift
repository: thebrowsercompany/firebase-cpp-sdk
- uses: compnerd/gha-setup-vsdevenv@main
with:
host_arch: amd64
components: 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64;Microsoft.VisualStudio.Component.VC.Tools.ARM64'
arch: ${{ matrix.arch }}
- uses: actions/setup-python@v4
id: python
with:
python-version: 3.9
architecture: 'x64'
- name: Install absl-py
run: pip install absl-py
- name: Configure flatbuffers
run:
cmake -B ${{ github.workspace }}/BinaryCache/flatbuffers `
-D CMAKE_BUILD_TYPE=Release `
-G "Visual Studio 17 2022" `
-A x64 `
-S ${{ github.workspace }}/SourceCache/flatbuffers
- name: Build flatc
run: cmake --build ${{ github.workspace }}/BinaryCache/flatbuffers --config Release --target flatc
- name: Adjust cmake build settings for debugging
run: powershell ${{ github.workspace }}/SourceCache/firebase-cpp-sdk/build_scripts/windows/fix_cmake_debugflags.ps1 ${{ github.workspace }}/SourceCache/firebase-cpp-sdk/CMakeLists.txt
- name: Configure firebase
run:
cmake -B ${{ github.workspace }}/BinaryCache/firebase `
-D BUILD_SHARED_LIBS=NO `
-D CMAKE_BUILD_TYPE=Release `
-D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/firebase/usr `
-G "Visual Studio 17 2022" `
-A ${{ matrix.platform }} `
-S ${{ github.workspace }}/SourceCache/firebase-cpp-sdk `
-D FLATBUFFERS_BUILD_FLATC=NO `
-D FIREBASE_CPP_BUILD_PACKAGE=YES `
-D FIREBASE_GITHUB_ACTION_BUILD=YES `
-D FIREBASE_INCLUDE_LIBRARY_DEFAULT=OFF `
-D FIREBASE_INCLUDE_AUTH=YES `
-D FIREBASE_INCLUDE_FIRESTORE=YES `
-D FIREBASE_USE_BORINGSSL=YES `
-D MSVC_RUNTIME_LIBRARY_STATIC=NO `
-D CMAKE_C_FLAGS="/D_HAS_EXCEPTIONS=0 /EHsc- /arch:AVX2"`
-D CMAKE_CXX_FLAGS="/D_HAS_EXCEPTIONS=0 /EHsc- /arch:AVX2" `
-D CMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded `
-D FIREBASE_PYTHON_HOST_EXECUTABLE:FILEPATH=${{ steps.python.outputs.python-path }} `
-D FLATBUFFERS_FLATC_EXECUTABLE=${{ github.workspace }}/BinaryCache/flatbuffers/Release/flatc.exe
- name: Adjust external project build settings for debugging
run: |
$names = Get-ChildItem -Path "${{ github.workspace }}/BinaryCache/firebase" -File -Recurse -Filter CMakeLists.txt
foreach ($name in $names) {
$fullName = $name.FullName
powershell ${{ github.workspace }}/SourceCache/firebase-cpp-sdk/build_scripts/windows/fix_cmake_debugflags.ps1 $fullName
Write-Host "... fixed up debug options for ${fullName}"
}
- name: Configure firebase after build setting adjustments
run:
cmake -B ${{ github.workspace }}/BinaryCache/firebase `
-D BUILD_SHARED_LIBS=NO `
-D CMAKE_BUILD_TYPE=Release `
-D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/firebase/usr `
-G "Visual Studio 17 2022" `
-A ${{ matrix.platform }} `
-S ${{ github.workspace }}/SourceCache/firebase-cpp-sdk `
-D FLATBUFFERS_BUILD_FLATC=NO `
-D FIREBASE_CPP_BUILD_PACKAGE=YES `
-D FIREBASE_GITHUB_ACTION_BUILD=YES `
-D FIREBASE_INCLUDE_LIBRARY_DEFAULT=OFF `
-D FIREBASE_INCLUDE_AUTH=YES `
-D FIREBASE_INCLUDE_FIRESTORE=YES `
-D FIREBASE_USE_BORINGSSL=YES `
-D MSVC_RUNTIME_LIBRARY_STATIC=NO `
-D CMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded `
-D FIREBASE_PYTHON_HOST_EXECUTABLE:FILEPATH=${{ steps.python.outputs.python-path }} `
-D FLATBUFFERS_FLATC_EXECUTABLE=${{ github.workspace }}/BinaryCache/flatbuffers/Release/flatc.exe
- name: Build firebase
run: cmake --build ${{ github.workspace }}/BinaryCache/firebase --config RelWithDebInfo
- name: Install firebase
run: cmake --build ${{ github.workspace }}/BinaryCache/firebase --config RelWithDebInfo --target install
- name: Install firebase (manual)
run: |
Copy-Item "${{ github.workspace }}/BinaryCache/firebase/external/src/firestore/Firestore/core/include/firebase/firestore/firestore_errors.h" "${{ github.workspace }}/BuildRoot/Library/firebase/usr/include/firebase/firestore/firestore_errors.h"
Copy-Item "${{ github.workspace }}/BinaryCache/firebase/external/src/firestore/Firestore/core/include/firebase/firestore/geo_point.h" "${{ github.workspace }}/BuildRoot/Library/firebase/usr/include/firebase/firestore/geo_point.h"
Copy-Item "${{ github.workspace }}/BinaryCache/firebase/external/src/firestore/Firestore/core/include/firebase/firestore/timestamp.h" "${{ github.workspace }}/BuildRoot/Library/firebase/usr/include/firebase/firestore/timestamp.h"
Write-Host "Copying static libraries ..."
$source = "${{ github.workspace }}/BinaryCache/firebase"
$libraries = Get-ChildItem -Path $source -File -Recurse -Filter *.lib
foreach ($library in $libraries) {
$destination = Join-Path -Path "${{ github.workspace }}/BuildRoot/Library/firebase/usr/libs/windows" -ChildPath $library.Name
Copy-Item -Path $library.FullName -Destination $destination -Force
Write-Host "... copied ${destination}"
}
- uses: actions/upload-artifact@v3
with:
name: firebase-windows-${{ matrix.arch }}
path: ${{ github.workspace }}/BuildRoot/Library/firebase
- name: Create Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
Compress-Archive -Path "${{ github.workspace }}/BuildRoot/Library/firebase" -DestinationPath firebase-windows-${{ matrix.arch }}.zip
$SHA256 = Get-FileHash -Path firebase-windows-${{ matrix.arch }}.zip -Algorithm SHA256 > firebase-windows-${{ matrix.arch }}.zip.sha256
$Date = Get-Date -Format 'yyyyMMdd'
$Release = $(gh release list -R ${{ github.repository }} | Select-String -Pattern $Date -AllMatches).Count
gh release create "$Date.$Release" -R ${{ github.repository }}
gh release upload "$Date.$Release" firebase-windows-${{ matrix.arch }}.zip -R ${{ github.repository }}
gh release upload "$Date.$Release" firebase-windows-${{ matrix.arch }}.zip.sha256 -R ${{ github.repository }}
- name: Package firebase-cpp-sdk
run: |
@"
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>com.google.firebase.windows.${{ matrix.arch }}</id>
<version>0.0.0.0</version>
<title>Firebase C++ SDK</title>
<description>C++ Firebase SDK</description>
<authors>Google, Inc.</authors>
<projectUrl>https://firebase.google.com</projectUrl>
<repository type="git" url="https://github.com/google/firebase-cpp-sdk" branch="main" />
</metadata>
<files>
<file src="`$BUILDROOT`$\usr\include\firebase\app.h" target="include/firebase" />
<file src="`$BUILDROOT`$\usr\include\firebase\auth.h" target="include/firebase" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore.h" target="include/firebase" />
<file src="`$BUILDROOT`$\usr\include\firebase\future.h" target="include/firebase" />
<file src="`$BUILDROOT`$\usr\include\firebase\log.h" target="include/firebase" />
<file src="`$BUILDROOT`$\usr\include\firebase\util.h" target="include/firebase" />
<file src="`$BUILDROOT`$\usr\include\firebase\variant.h" target="include/firebase" />
<file src="`$BUILDROOT`$\usr\include\firebase\auth\credential.h" target="include/firebase/auth" />
<file src="`$BUILDROOT`$\usr\include\firebase\auth\types.h" target="include/firebase/auth" />
<file src="`$BUILDROOT`$\usr\include\firebase\auth\user.h" target="include/firebase/auth" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\aggregate_query.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\aggregate_query_snapshot.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\aggregate_source.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\collection_reference.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\document_change.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\document_reference.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\document_snapshot.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\field_path.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\field_value.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\firestore_errors.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\geo_point.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\listener_registration.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\load_bundle_task_progress.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\map_field_value.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\metadata_changes.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\query.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\query_snapshot.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\settings.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\set_options.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\snapshot_metadata.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\source.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\timestamp.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\transaction.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\transaction_options.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\firestore\write_batch.h" target="include/firebase/firestore" />
<file src="`$BUILDROOT`$\usr\include\firebase\internal\common.h" target="include/firebase/internal" />
<file src="`$BUILDROOT`$\usr\include\firebase\internal\future_impl.h" target="include/firebase/internal" />
<file src="`$BUILDROOT`$\usr\include\firebase\internal\mutex.h" target="include/firebase/internal" />
<file src="`$BUILDROOT`$\usr\include\firebase\internal\platform.h" target="include/firebase/internal" />
<file src="`$BUILDROOT`$\usr\include\firebase\internal\type_traits.h" target="include/firebase/internal" />
<!-- FIXME(compnerd) is this header actually required? -->
<file src="`$BUILDROOT`$\usr\include\google_play_services\availability.h" target="include/google_play_services" />
<file src="`$BUILDROOT`$\usr\libs\windows\firebase_app.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\firebase_auth.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\firebase_firestore.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\firebase_rest_lib.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\firestore_core.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\firestore_nanopb.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\firestore_protos_nanopb.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\firestore_util.lib" target="lib" />
<!-- dependencies -->
<file src="`$BUILDROOT`$\usr\libs\windows\absl_bad_optional_access.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_bad_variant_access.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_base.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_city.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_civil_time.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_cord.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_cord_internal.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_cordz_functions.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_cordz_handle.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_cordz_info.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_debugging_internal.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_demangle_internal.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_exponential_biased.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_graphcycles_internal.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_hash.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_hashtablez_sampler.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_int128.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_log_severity.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_low_level_hash.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_malloc_internal.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_random_distributions.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_random_internal_seed_material.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_random_internal_platform.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_random_internal_pool_urbg.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_random_internal_randen.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_random_internal_randen_hwaes.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_random_internal_randen_hwaes_impl.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_random_internal_randen_slow.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_random_seed_gen_exception.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_random_seed_sequences.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_raw_hash_set.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_raw_logging_internal.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_spinlock_wait.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_stacktrace.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_status.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_statusor.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_str_format_internal.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_strerror.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_strings.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_strings_internal.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_symbolize.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_synchronization.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_throw_delegate.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_time.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\absl_time_zone.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\address_sorting.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\cares.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\crypto.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\fipsmodule.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\flatbuffers.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\gpr.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\grpc.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\grpc++.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\leveldb.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\libcurl.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\libprotobuf.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\libuWS.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\protobuf-nanopb.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\re2.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\snappy.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\ssl.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\upb.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\uv_a.lib" target="lib" />
<file src="`$BUILDROOT`$\usr\libs\windows\zlibstatic.lib" target="lib" />
</files>
</package>
"@ | Out-File -Encoding UTF8 firebase.nuspec
nuget pack -Properties BUILDROOT=${{ github.workspace }}\BuildRoot\Library\firebase -Suffix (git -C ${{ github.workspace }}/SourceCache/firebase-cpp-sdk log -1 --format=%h) firebase.nuspec
shell: pwsh
- uses: actions/upload-artifact@v3
with:
name: windows-${{ matrix.arch }}.nupkg
path: com.google.firebase.windows.${{ matrix.arch }}.*.nupkg
- name: Publish NuGet Packages
env:
NUGET_SOURCE_NAME: TheBrowserCompany
NUGET_SOURCE_URL: https://nuget.pkg.github.com/thebrowsercompany/index.json
NUGET_SOURCE_USERNAME: thebrowsercompany-bot2
NUGET_SOURCE_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
NUGET_API_KEY: ${{ secrets.GITHUB_TOKEN }}
run: |
if ((nuget sources List | Select-String "${env:NUGET_SOURCE_NAME}").Count -gt 0) {
nuget sources Remove -Name "${env:NUGET_SOURCE_NAME}"
}
nuget sources Add -Name ${env:NUGET_SOURCE_NAME} -Source ${env:NUGET_SOURCE_URL} -Username ${env:NUGET_SOURCE_USERNAME} -Password ${env:NUGET_SOURCE_PASSWORD} -StorePasswordInClearText
nuget setApiKey ${env:NUGET_API_KEY} -Source ${env:NUGET_SOURCE_URL}
$pkgs = Get-ChildItem -Path com.google.firebase.windows.${{ matrix.arch }}.*.nupkg
nuget push $pkgs[0].Name -Source ${env:NUGET_SOURCE_URL} -SkipDuplicate
shell: pwsh
android:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
include:
- arch: 'arm64-v8a'
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
path: ${{ github.workspace }}/SourceCache/firebase-cpp-sdk
ref: refs/heads/compnerd/swift
repository: thebrowsercompany/firebase-cpp-sdk
- name: Set up JDK
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: test
run:
ls ${{ github.workspace }}/SourceCache/firebase-cpp-sdk