Skip to content

fix: preserve generic Linux ffi lock entry - #323

Merged
jbeckwith-oai merged 1 commit into
mainfrom
codex/fix-linux-bundler-lock
Jul 31, 2026
Merged

fix: preserve generic Linux ffi lock entry#323
jbeckwith-oai merged 1 commit into
mainfrom
codex/fix-linux-bundler-lock

Conversation

@jbeckwith-oai

Copy link
Copy Markdown
Contributor

Summary

  • record the generic ffi 1.17.2 variant selected by Ruby reporting x86_64-linux
  • prevent Bundler 4.0.17 from mutating Gemfile.lock during Linux x86_64 installs
  • preserve every existing lock platform and platform-specific ffi variant

Root cause

The lockfile contained the x86_64-linux-gnu and x86_64-linux-musl variants, but Ruby 4.0.6 reports Gem::Platform.local as x86_64-linux. Bundler 4.0.17 selects the generic source ffi variant for that platform and added the missing spec on every clean checkout.

Validation

  • reproduced the original one-line drift with Ruby 4.0.6 and Bundler 4.0.17 on Linux x86_64
  • ran bundle install and bundle check twice from a fresh fixed checkout; the lockfile checksum remained unchanged and Git stayed clean after both passes
  • loaded FFI successfully as x86_64/linux
  • preserved all eight existing lock platforms
  • focused self-contained tests: 137 runs, 738 assertions, 0 failures or errors
  • git diff --check

Copilot AI review requested due to automatic review settings July 31, 2026 21:19
@jbeckwith-oai
jbeckwith-oai requested a review from a team as a code owner July 31, 2026 21:19

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review any files in this pull request.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@openai-sdks

openai-sdks Bot commented Jul 31, 2026

Copy link
Copy Markdown

OkTest Summary

237/237 SDK tests passed in 8.597s for Ruby SDK PR #323.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 168ms
tests/chat-completions-create.test.ts ✅ Passed 239ms
tests/chat-completions-stream.test.ts ✅ Passed 128ms
tests/files-content-binary.test.ts ✅ Passed 213ms
tests/files-create-multipart.test.ts ✅ Passed 239ms
tests/files-list-pagination.test.ts ✅ Passed 174ms
tests/initialize-config.test.ts ✅ Passed 167ms
tests/instance-isolation.test.ts ✅ Passed 221ms
tests/models-list.test.ts ✅ Passed 199ms
tests/responses-background-lifecycle.test.ts ✅ Passed 219ms
tests/responses-body-method-errors.test.ts ✅ Passed 421ms
tests/responses-cancel-timeout.test.ts ✅ Passed 208ms
tests/responses-cancel.test.ts ✅ Passed 218ms
tests/responses-compact-retries.test.ts ✅ Passed 262ms
tests/responses-compact.test.ts ✅ Passed 214ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 136ms
tests/responses-create-advanced.test.ts ✅ Passed 199ms
tests/responses-create-disconnect.test.ts ✅ Passed 142ms
tests/responses-create-errors.test.ts ✅ Passed 221ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 128ms
tests/responses-create-retries.test.ts ✅ Passed 278ms
tests/responses-create-stream-failures.test.ts ✅ Passed 131ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 241ms
tests/responses-create-stream-wire.test.ts ✅ Passed 2.011s
tests/responses-create-stream.test.ts ✅ Passed 138ms
tests/responses-create-terminal-states.test.ts ✅ Passed 314ms
tests/responses-create-timeout.test.ts ✅ Passed 235ms
tests/responses-create.test.ts ✅ Passed 336ms
tests/responses-delete.test.ts ✅ Passed 332ms
tests/responses-input-items-errors.test.ts ✅ Passed 197ms
tests/responses-input-items-list.test.ts ✅ Passed 196ms
tests/responses-input-items-options.test.ts ✅ Passed 185ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 232ms
tests/responses-input-tokens-count.test.ts ✅ Passed 242ms
tests/responses-malformed-inputs.test.ts ✅ Passed 2.162s
tests/responses-not-found-errors.test.ts ✅ Passed 323ms
tests/responses-parse.test.ts ✅ Passed 172ms
tests/responses-retrieve-retries.test.ts ✅ Passed 270ms
tests/responses-retrieve.test.ts ✅ Passed 278ms
tests/responses-stored-method-errors.test.ts ✅ Passed 701ms
tests/retry-behavior.test.ts ✅ Passed 1.915s
tests/sdk-error-shape.test.ts ✅ Passed 330ms

View OkTest run #30666176338

SDK merge (3c9e96b34dc5) · head (b363beeca52a) · base (f40aef1892a4) · OkTest (91635c6a2723)

@HAYDEN-OAI HAYDEN-OAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified that ffi 1.17.2 native variants exclude Ruby >= 3.5, so the generic spec is required for Ruby 4. Existing platforms/native variants and the published gem runtime dependency contract remain unchanged. No substantive issues found.

@jbeckwith-oai
jbeckwith-oai merged commit 491eacb into main Jul 31, 2026
12 checks passed
@jbeckwith-oai
jbeckwith-oai deleted the codex/fix-linux-bundler-lock branch July 31, 2026 21:33
@stainless-app stainless-app Bot mentioned this pull request Jul 31, 2026
@jbeckwith-oai jbeckwith-oai added the generator Touches generated SDK files label Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

generator Touches generated SDK files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants