Giter Site home page Giter Site logo

Comments (3)

simolus3 avatar simolus3 commented on September 6, 2024

The broken reference in libsecret.so looks like something else, do you only get that after depending on sqlcipher_flutter_libs?

And the strtol error is likely this (since we're linking OpenSSL statically): openssl/openssl#22833 - that suggests a mismatch between the libc headers and the so on your system.

Do you also get this error when running these tests on Linux? (flutter test integration_test -d linux). And this is Ubuntu with the Flutter snap, right? I can try to reproduce this in a VM then.

from sqlite3.dart.

velten-dev avatar velten-dev commented on September 6, 2024

I ran the tests you suggested. They had the same error and just hang after the error.

test@test-pc-q35-7-2:~/Code/sqlite3.dart/integration_tests/sqlcipher_flutter$ flutter test integration_test -d linux -v
[  +25 ms] Unable to locate an Android SDK.
[   +5 ms] executing: uname -m
[   +5 ms] Exit code 0 from: uname -m
[        ] x86_64
[  +90 ms] Found 1 files which will be executed as Integration Tests.
[   +3 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required,
skipping update.
[   +1 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required,
skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping
update.
[   +4 ms] Artifact Instance of 'FlutterWebSdk' is not required, skipping
update.
[        ] Artifact Instance of 'LegacyCanvasKitRemover' is not required,
skipping update.
[   +1 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required,
skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping
update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping
update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required,
skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required,
skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required,
skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required,
skipping update.
[  +58 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required,
skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required,
skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping
update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping
update.
[        ] Artifact Instance of 'LegacyCanvasKitRemover' is not required,
skipping update.
[        ] Artifact Instance of 'WindowsEngineArtifacts' is not required,
skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping
update.
[   +1 ms] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required,
skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required,
skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required,
skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required,
skipping update.
[  +53 ms] Skipping pub get: version match.
[ +104 ms] Found plugin sqlcipher_flutter_libs at
/home/test/Code/sqlite3.dart/sqlcipher_flutter_libs/
[  +18 ms] Found plugin integration_test at
/home/test/snap/flutter/common/flutter/packages/integration_test/
[  +84 ms] Found plugin sqlcipher_flutter_libs at
/home/test/Code/sqlite3.dart/sqlcipher_flutter_libs/
[   +8 ms] Found plugin integration_test at
/home/test/snap/flutter/common/flutter/packages/integration_test/
[  +58 ms] Generating
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/android/app/src
/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
[ +200 ms] running test package with arguments: [--concurrency=1,
--chain-stack-traces, --,
file:///home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/integrat
ion_test/integration_test.dart]
00:00 +0: ...ests/sqlcipher_flutter/integration_test/integration_test.dart     [ +198 ms] test 0: starting test
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/integration_tes
t/integration_test.dart
[   +4 ms] Stopping scan for flutter_test_config.dart; found project root at
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter
[        ] test 0: starting test device
[   +6 ms] test 0: awaiting connection to test device
[  +20 ms] Building Linux application...
[   +6 ms] executing: [build/linux/x64/debug/] cmake -G Ninja
-DCMAKE_BUILD_TYPE=Debug -DFLUTTER_TARGET_PLATFORM=linux-x64
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux
[  +99 ms] -- Configuring done
[  +17 ms] -- Generating done
[        ] -- Build files have been written to:
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/build/linux/x64
/debug
[   +5 ms] executing: ninja -C build/linux/x64/debug install
[   +9 ms] ninja: Entering directory `build/linux/x64/debug'
00:12 +0: ...ests/sqlcipher_flutter/integration_test/integration_test.dart     [+12709 ms] [1/7] Generating
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/libflutter_linux_gtk.so,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_basic_message_channel.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_binary_codec.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_binary_messenger.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_dart_project.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_engine.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_json_message_codec.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_json_method_codec.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_message_codec.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_method_call.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_method_channel.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_method_codec.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_method_response.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_plugin_registrar.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_plugin_registry.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_standard_message_codec.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_standard_method_codec.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_string_codec.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_value.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/fl_view.h,
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/e
phemeral/flutter_linux/flutter_linux.h, _phony_
[   +3 ms] [  +27 ms] Unable to locate an Android SDK.
[        ] [   +5 ms] executing: uname -m
[        ] [   +5 ms] Exit code 0 from: uname -m
[        ] [        ] x86_64
[        ] [  +44 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is
not required, skipping update.
[        ] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required,
skipping update.
[        ] [        ] Artifact Instance of 'FlutterWebSdk' is not required,
skipping update.
[        ] [        ] Artifact Instance of 'LegacyCanvasKitRemover' is not
required, skipping update.
[        ] [   +2 ms] Artifact Instance of 'WindowsEngineArtifacts' is not
required, skipping update.
[   +4 ms] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'LinuxEngineArtifacts' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not
required, skipping update.
[        ] [  +70 ms] Artifact Instance of 'MaterialFonts' is not required,
skipping update.
[        ] [        ] Artifact Instance of 'GradleWrapper' is not required,
skipping update.
[        ] [        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is
not required, skipping update.
[        ] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required,
skipping update.
[        ] [        ] Artifact Instance of 'FlutterWebSdk' is not required,
skipping update.
[        ] [        ] Artifact Instance of 'LegacyCanvasKitRemover' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterSdk' is not required,
skipping update.
[        ] [        ] Artifact Instance of 'WindowsEngineArtifacts' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not
required, skipping update.
[        ] [   +2 ms] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required,
skipping update.
[   +1 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required,
skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required,
skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required,
skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required,
skipping update.
[        ] [        ] Artifact Instance of 'FontSubsetArtifacts' is not
required, skipping update.
[        ] [        ] Artifact Instance of 'PubDependencies' is not required,
skipping update.
[        ] [  +56 ms] Initializing file store
[        ] [  +18 ms] native_assets: Starting due to {}
[        ] [   +2 ms] Skipping target: gen_localizations
[        ] [  +11 ms] gen_dart_plugin_registrant: Starting due to
{InvalidatedReasonKind.inputChanged: The following inputs have updated contents:
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/.dart_tool/pack
age_config_subset}
[        ] [   +2 ms] unpack_linux: Starting due to {}
[        ] [  +92 ms] unpack_linux: Complete
[        ] [ +412 ms] Writing native_assets.yaml.
[        ] [  +14 ms] Writing
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/.dart_tool/flut
ter_build/d0d2ab68f0e311a9edb82340382a19c7/native_assets.yaml done.
[        ] [        ] native_assets: Complete
[        ] [  +48 ms] Found plugin sqlcipher_flutter_libs at
/home/test/Code/sqlite3.dart/sqlcipher_flutter_libs/
[        ] [  +15 ms] Found plugin integration_test at
/home/test/snap/flutter/common/flutter/packages/integration_test/
[        ] [   +3 ms] gen_dart_plugin_registrant: Complete
[        ] [        ] kernel_snapshot: Starting due to {}
[        ] [   +1 ms] Embedding native assets mapping
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/.dart_tool/flut
ter_build/d0d2ab68f0e311a9edb82340382a19c7/native_assets.yaml in kernel.
[   +2 ms] [   +5 ms]
/home/test/snap/flutter/common/flutter/bin/cache/dart-sdk/bin/dart
--disable-dart-dev
/home/test/snap/flutter/common/flutter/bin/cache/dart-sdk/bin/snapshots/frontend
_server.dart.snapshot --sdk-root
/home/test/snap/flutter/common/flutter/bin/cache/artifacts/engine/common/flutter
_patched_sdk/ --target=flutter --no-print-incremental-dependencies
-DFLUTTER_WEB_AUTO_DETECT=true
-DINTEGRATION_TEST_SHOULD_REPORT_RESULTS_TO_NATIVE=false -Ddart.vm.profile=false
-Ddart.vm.product=false --enable-asserts --track-widget-creation --packages
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/.dart_tool/pack
age_config.json --output-dill
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/.dart_tool/flut
ter_build/d0d2ab68f0e311a9edb82340382a19c7/app.dill --depfile
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/.dart_tool/flut
ter_build/d0d2ab68f0e311a9edb82340382a19c7/kernel_snapshot.d --incremental
--initialize-from-dill
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/.dart_tool/flut
ter_build/d0d2ab68f0e311a9edb82340382a19c7/app.dill --native-assets
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/.dart_tool/flut
ter_build/d0d2ab68f0e311a9edb82340382a19c7/native_assets.yaml --verbosity=error
file:///tmp/flutter_tools.RDSRUU/flutter_test_listener.RNBFRV/listener.dart
[   +1 ms] [+9970 ms] kernel_snapshot: Complete
[        ] [ +338 ms] debug_bundle_linux-x64_assets: Starting due to {}
[        ] [ +182 ms] shaderc command:
[/home/test/snap/flutter/common/flutter/bin/cache/artifacts/engine/linux-x64/imp
ellerc, --sksl, --iplr,
--sl=/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/build/flut
ter_assets/shaders/ink_sparkle.frag,
--spirv=/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/build/f
lutter_assets/shaders/ink_sparkle.frag.spirv,
--input=/home/test/snap/flutter/common/flutter/packages/flutter/lib/src/material
/shaders/ink_sparkle.frag, --input-type=frag,
--include=/home/test/snap/flutter/common/flutter/packages/flutter/lib/src/materi
al/shaders,
--include=/home/test/snap/flutter/common/flutter/bin/cache/artifacts/engine/linu
x-x64/shader_lib]
[        ] [ +274 ms] debug_bundle_linux-x64_assets: Complete
[        ] [ +397 ms] Persisting file store
[        ] [  +10 ms] Done persisting file store
[        ] [   +7 ms] build succeeded.
[        ] [  +15 ms] "flutter assemble" took 11,973ms.
[        ] [  +20 ms] ensureAnalyticsSent: 14ms
[        ] [        ] Running 0 shutdown hooks
[        ] [        ] Shutdown hooks complete
[        ] [        ] exiting with code 0
00:13 +0: ...ests/sqlcipher_flutter/integration_test/integration_test.dart     [ +513 ms] [2/7] Building CXX object CMakeFiles/sqlcipher_flutter.dir/my_application.cc.o
[ +144 ms] [3/7] Building CXX object
plugins/sqlcipher_flutter_libs/CMakeFiles/sqlcipher_flutter_libs_plugin.dir/sqlite3_flutter_libs_plugin.cc.o
[  +17 ms] [4/7] Building CXX object CMakeFiles/sqlcipher_flutter.dir/flutter/generated_plugin_registrant.cc.o
00:14 +0: ...ests/sqlcipher_flutter/integration_test/integration_test.dart     [ +418 ms] [5/7] Linking CXX shared library plugins/sqlcipher_flutter_libs/libsqlcipher_flutter_libs_plugin.so
[ +254 ms] [6/7] Linking CXX executable intermediates_do_not_run/sqlcipher_flutter
[        ] FAILED: intermediates_do_not_run/sqlcipher_flutter 
[   +5 ms] : && /snap/flutter/current/usr/bin/clang++  -g  -B/snap/flutter/current/usr/lib/gcc/x86_64-linux-gnu/9
-B/snap/flutter/current/usr/lib/x86_64-linux-gnu -B/snap/flutter/current/lib/x86_64-linux-gnu
-B/snap/flutter/current/usr/lib/ -L/snap/flutter/current/usr/lib/gcc/x86_64-linux-gnu/9
-L/snap/flutter/current/usr/lib/x86_64-linux-gnu -L/snap/flutter/current/lib/x86_64-linux-gnu
-L/snap/flutter/current/usr/lib/ -lblkid -lgcrypt -llzma -llz4 -lgpg-error -luuid -lpthread -ldl -lepoxy -lfontconfig
-B/snap/flutter/current/usr/lib/gcc/x86_64-linux-gnu/9 -B/snap/flutter/current/usr/lib/x86_64-linux-gnu
-B/snap/flutter/current/lib/x86_64-linux-gnu -B/snap/flutter/current/usr/lib/
-L/snap/flutter/current/usr/lib/gcc/x86_64-linux-gnu/9 -L/snap/flutter/current/usr/lib/x86_64-linux-gnu
-L/snap/flutter/current/lib/x86_64-linux-gnu -L/snap/flutter/current/usr/lib/ -lblkid -lgcrypt -llzma -llz4 -lgpg-error
-luuid -lpthread -ldl -lepoxy -lfontconfig CMakeFiles/sqlcipher_flutter.dir/main.cc.o
CMakeFiles/sqlcipher_flutter.dir/my_application.cc.o
CMakeFiles/sqlcipher_flutter.dir/flutter/generated_plugin_registrant.cc.o  -o
intermediates_do_not_run/sqlcipher_flutter
-Wl,-rpath,/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/build/linux/x64/debug/plugins/sqlcipher_flu
tter_libs:/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/ephemeral:
plugins/sqlcipher_flutter_libs/libsqlcipher_flutter_libs_plugin.so
/home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/linux/flutter/ephemeral/libflutter_linux_gtk.so
/snap/flutter/current/usr/lib/x86_64-linux-gnu/libgtk-3.so  /snap/flutter/current/usr/lib/x86_64-linux-gnu/libgdk-3.so
/snap/flutter/current/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so
/snap/flutter/current/usr/lib/x86_64-linux-gnu/libpango-1.0.so
/snap/flutter/current/usr/lib/x86_64-linux-gnu/libharfbuzz.so
/snap/flutter/current/usr/lib/x86_64-linux-gnu/libatk-1.0.so
/snap/flutter/current/usr/lib/x86_64-linux-gnu/libcairo-gobject.so
/snap/flutter/current/usr/lib/x86_64-linux-gnu/libcairo.so
/snap/flutter/current/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so
/snap/flutter/current/usr/lib/x86_64-linux-gnu/libgio-2.0.so
/snap/flutter/current/usr/lib/x86_64-linux-gnu/libgobject-2.0.so
/snap/flutter/current/usr/lib/x86_64-linux-gnu/libglib-2.0.so && :
[        ] /snap/flutter/current/usr/bin/ld: plugins/sqlcipher_flutter_libs/libsqlcipher_flutter_libs_plugin.so:
undefined reference to `__isoc23_strtol'
[        ] clang: error: linker command failed with exit code 1 (use -v to see invocation)
[   +1 ms] ninja: build stopped: subcommand failed.
[   +7 ms] Building Linux application... (completed in 14.2s)
00:14 +0 -1: loading /home/test/Code/sqlite3.dart/integration_tests/sqlcipher_flutter/integration_test/integration_test.dart [E]
  Exception: Build process failed
  package:flutter_tools/src/base/common.dart 10:3                    throwToolExit
  package:flutter_tools/src/linux/build_linux.dart 186:5             _runBuild
  ===== asynchronous gap ===========================
  package:flutter_tools/src/linux/build_linux.dart 80:5              buildLinux
  ===== asynchronous gap ===========================
  package:flutter_tools/src/linux/linux_device.dart 66:5             LinuxDevice.buildForDevice
  ===== asynchronous gap ===========================
  package:flutter_tools/src/desktop_device.dart 119:7                DesktopDevice.startApp
  ===== asynchronous gap ===========================
  package:flutter_tools/src/test/integration_test_device.dart 55:39  IntegrationTestTestDevice.start
  

from sqlite3.dart.

velten-dev avatar velten-dev commented on September 6, 2024

I have also found that creating a snap using the snapcraft snap does not produce the error. However, the snap I am creating uses core22 as the base which is equivalent to 22.04 base libraries. I suspect that core24 will encounter the same error when it is available to be used as a base.

from sqlite3.dart.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.