Open
Description
There are a few interconnected issues with how we use bundler for both the build chain and the plugin manager. This is not an exhaustive list.
- The runtime and development dependencies of logstash-core are somewhat arbitrarily split between
Gemfile.template
andlogstash-core/logstash-core.gemspec
- use
gemspec path: 'logstash-core'
in theGemfile.template
instead of makinglogstash-core
a runtime dependency; this ensures that theadd_development_dependency
declarations inlogstash-core/logstash-core.gemspec
are effectively development dependencies of theGemfile.template
- move non-plugin (a) runtime dependency declarations and (b) development declarations from
Gemfile.template
to the gemspec - NOTE: version constraints for plugins must be in
Gemfile.template
in order to support plugin upgrades in shipped artifacts - temporary pins of transitive dependencies can continue to live in
Gemfile.template
- use
bin/logstash-plugin install --development
installs not only the development dependencies of logstash core, but also of each of the plugins that are currently installed, and it does not merge the requirements so that the last one wins (even if it overrides a runtime requirement that is in the checked-inlogstash-core.gemspec
orGemfile.template
).- do we ever actually need the development dependencies of all of the plugins while developing Logstash core? Why aren't the dev dependencies we need specified as development dependencies of logstash core?
- Because we build artifacts directly from source, the dependencies that are required for building the artifacts but not required for the built artifact itself are a part of the shipped bundle (e.g.,
rake
,octokit
,childprocess
,minitar
,fpm
).- I believe this can be solved by using an intermediate staging directory and installing its bundle using its plugin manager, at which point the
build
group of dependencies in theGemfile.template
could be made development dependencies inlogstash-core/logstash-core.gemspec
, which would ensure that they're never installed in the built artifact.
- I believe this can be solved by using an intermediate staging directory and installing its bundle using its plugin manager, at which point the
Metadata
Metadata
Assignees
Labels
No labels
Activity