CI: Stop doing static builds #311

Closed
opened 2022-10-16 22:05:46 +00:00 by jfowl · 5 comments
jfowl commented 2022-10-16 22:05:46 +00:00 (Migrated from gitlab.com)

CI is currently broken. While at the time of writing, the issue appears to be dependency-related, the bigger problem is flaky static and static cross-compilation of the Conduit binary. Part of the complication is the mix of Rust with C dependencies (like RocksDB and SQLite).

To reduce the burden of maintenance, I propose to switch to “normal” glibc targeting. To make the resulting binaries as compatible as possible, builds should happen against an older version of glibc, which should be possible by building on an older Debian release.

Following this up, we might even start building .deb files.

I can't currently guarantee a fast implementation of those fixes, due to semester start stress, but at least that is my plan of action. If anyone wants to chime in and help, please comment under this issue and ping me :)


Some maybe-actionable items:

  • Start by removing all current build jobs:
  • Start with a simple build using the rust:1.64.0-bullseye docker image
  • Add native runners for arm64 and armv6?
  • Add jobs to build for arm64 and armv6 on those runners, again using the rust:1.64.0-bullseye docker image?
  • Ditch the alpine docker image building and switch to using a debian-slim-based one for glibc-glory
CI is currently broken. While at the time of writing, the issue appears to be [dependency-related](https://gitlab.com/famedly/conduit/-/jobs/3178335973#L109), the bigger problem is flaky static and static cross-compilation of the Conduit binary. Part of the complication is the mix of Rust with C dependencies (like RocksDB and SQLite). To reduce the burden of maintenance, I propose to switch to “normal” glibc targeting. To make the resulting binaries as compatible as possible, builds should happen against an older version of glibc, which should be possible by building [on an older Debian release](https://qa.debian.org/madison.php?package=glibc). Following this up, we might even start building .deb files. I can't currently guarantee a fast implementation of those fixes, due to semester start stress, but at least that is my plan of action. If anyone wants to chime in and help, please comment under this issue and ping me :) ------ Some maybe-actionable items: - Start by removing all current build jobs: - Start with a simple build using the `rust:1.64.0-bullseye` docker image - Add native runners for arm64 and armv6? - Add jobs to build for arm64 and armv6 on those runners, again using the `rust:1.64.0-bullseye` docker image? - Ditch the alpine docker image building and switch to using a debian-slim-based one for glibc-glory
jfowl commented 2022-10-16 22:05:46 +00:00 (Migrated from gitlab.com)

assigned to @jfowl

assigned to @jfowl
CobaltCause commented 2022-10-16 22:58:06 +00:00 (Migrated from gitlab.com)

The reason we're seeing the "dependency-related build error" is this issue: https://github.com/rust-lang/cargo/issues/10623

We can resolve it by upgrading Rust to 1.60 or greater in CI. I believe it's using 1.58 currently.

The reason we're seeing the "dependency-related build error" is this issue: https://github.com/rust-lang/cargo/issues/10623 We can resolve it by upgrading Rust to 1.60 or greater in CI. I believe it's using 1.58 currently.
Chasethechicken commented 2022-11-01 17:04:14 +00:00 (Migrated from gitlab.com)

mentioned in merge request !412

mentioned in merge request !412
wu2305790321 commented 2023-09-23 10:34:37 +00:00 (Migrated from gitlab.com)

Is there any methods to build conduit binary statistically? Seems the error mainly occurs at the time when builiding librocksdb.

Here is the Log

error occurred: Command "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "/workspace/target/release/build/lz4-sys-711881759522cfc2/out/include" "-I" "/usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/zstd-sys-2.0.8+zstd.1.5.5/zstd/lib" "-I" "/workspace/target/release/build/libz-sys-ce9d4a822ea5110c/out/include" "-I" "/workspace/target/release/build/bzip2-sys-c1f18d3cfe3705b2/out/include" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DLZ4=1" "-DZSTD=1" "-DZLIB=1" "-DBZIP2=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-o" "/workspace/target/release/build/librocksdb-sys-bdcba13b27419f50/out/rocksdb/db/db_impl/compacted_db_impl.o" "-c" "rocksdb/db/db_impl/compacted_db_impl.cc" with args "c++" did not execute successfully (status code exit status: 1).

The rustc version is 1.74.0-nightly (b3aa8e716 2023-09-21), and libclang-dev has already been installed

Is there any methods to build conduit binary statistically? Seems the error mainly occurs at the time when builiding librocksdb. Here is the Log `error occurred: Command "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "/workspace/target/release/build/lz4-sys-711881759522cfc2/out/include" "-I" "/usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/zstd-sys-2.0.8+zstd.1.5.5/zstd/lib" "-I" "/workspace/target/release/build/libz-sys-ce9d4a822ea5110c/out/include" "-I" "/workspace/target/release/build/bzip2-sys-c1f18d3cfe3705b2/out/include" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DLZ4=1" "-DZSTD=1" "-DZLIB=1" "-DBZIP2=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-o" "/workspace/target/release/build/librocksdb-sys-bdcba13b27419f50/out/rocksdb/db/db_impl/compacted_db_impl.o" "-c" "rocksdb/db/db_impl/compacted_db_impl.cc" with args "c++" did not execute successfully (status code exit status: 1).` The rustc version is 1.74.0-nightly (b3aa8e716 2023-09-21), and libclang-dev has already been installed
CobaltCause commented 2024-01-25 00:10:20 +00:00 (Migrated from gitlab.com)

Stop doing static builds

No :P

> Stop doing static builds [No :P](https://gitlab.com/famedly/conduit/-/merge_requests/569)
Sign in to join this conversation.
No labels
Android
CS::needs customer feedback
CS::needs follow up
CS::needs on prem installation
CS::waiting
Chrome
Design:: Ready
Design:: in progress
Design::UX
E2EE
Edge
Firefox
GDPR
Iteration 13 IM
Linux
MacOS
Need::Discussion
Need::Steps to reproduce
Need::Upstream fix
Needs:: Planning
Needs::Dev-Team
Needs::More information
Needs::Priority
Needs::Product
Needs::Refinement
Needs::Severity
Priority::1-Critical
Priority::2-Max
Priority::3-Impending
Priority::4-High
Priority::5-Medium
Priority::6-Low
Priority::7-None
Progress::Backlog
Progress::Review
Progress::Started
Progress::Testing
Progress::Triage
Progress::Waiting
Reporter::Sentry
Safari
Target::Community
Target::Customer
Target::Internal
Target::PoC
Target::Security
Team:Customer-Success
Team:Design
Team:Infrastructure
Team:Instant-Messaging
Team:Product
Team:Workflows
Type::Bug
Type::Design
Type::Documentation
Type::Feature
Type::Improvement
Type::Support
Type::Tests
Windows
blocked
blocked-by-spec
cla-signed
conduit
contribution::advanced
contribution::easy
contribution::help needed
from::review
iOS
p::ti-tenant
performance
product::triage
proposal
refactor
release-blocker
s: dart_openapi_codegen
s::Famedly-Patient
s::Org-Directory
s::Passport-Generator
s::Requeuest
s:CRM
s:Famedly-App
s:Famedly-Web
s:Fhiroxide
s:Fhiroxide-cli
s:Fhiroxide-client
s:Fhirs
s:Hedwig
s:LISA
s:Matrix-Dart-SDK
s:Role-Manager
s:Synapse
s:User-Directory
s:WFS-Matrix
s:Workflow Engine
s:dtls
s:famedly-error
s:fcm-shared-isolate
s:matrix-api-lite
s:multiple-tab-detector
s:native-imaging
severity::1
severity::2
severity::3
severity::4
technical-debt
voip
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Matthias/conduit#311
No description provided.