Skip to content
  • David Rodríguez's avatar
    7285e764
    Fix truffleruby removing gems from lockfile · 7285e764
    David Rodríguez authored
    When resolving on truffleruby, and multiple platforms are included in
    the lockfile, Bundler will not respect existing platforms, but always
    force ruby variants. That means removal of existing version specific
    variants, introducing lockfile churn between implementations.
    
    To prevent this, we introduce the distinction between
    `Dependency#force_ruby_platform`, only settable via Gemfile, and
    `Dependency#default_force_ruby_platform`, which is always true on
    truffleruby for certain dependency names. This way, when resolving
    lockfile gems for other platforms on truffleruby, we keep platform
    specific variants in the lockfile.
    
    However, that introduces the problem that if only platform specific
    variants are locked in the lockfile, Bundler won't be able to
    materialize on truffleruby because the generic variant will be missing.
    To fix this additional problem, we make sure the generic "ruby" platform
    is always added when resolving on truffleruby.
    7285e764
    Fix truffleruby removing gems from lockfile
    David Rodríguez authored
    When resolving on truffleruby, and multiple platforms are included in
    the lockfile, Bundler will not respect existing platforms, but always
    force ruby variants. That means removal of existing version specific
    variants, introducing lockfile churn between implementations.
    
    To prevent this, we introduce the distinction between
    `Dependency#force_ruby_platform`, only settable via Gemfile, and
    `Dependency#default_force_ruby_platform`, which is always true on
    truffleruby for certain dependency names. This way, when resolving
    lockfile gems for other platforms on truffleruby, we keep platform
    specific variants in the lockfile.
    
    However, that introduces the problem that if only platform specific
    variants are locked in the lockfile, Bundler won't be able to
    materialize on truffleruby because the generic variant will be missing.
    To fix this additional problem, we make sure the generic "ruby" platform
    is always added when resolving on truffleruby.
Loading