find ruby gems & make coverage conditional on BUILD_COVERAGE

Authored by sitter on Mar 18 2019, 2:37 PM.


find ruby gems & make coverage conditional on BUILD_COVERAGE

new finding tech:

  • find_gem function configures gem-specific FindFoo files and wraps around find_package
  • FindFoo files look for ruby and then attempt to require the gem name i.e. it checks if the gem can be successfully loaded by the interpreter
  • since this is based on find_package it may be influenced in all the regular ways (e.g. forced found or disabled from finding altogether via CMAKE_DISABLE_FIND_PACKAGE_$PKGNAME)

various notes for the future:

  • technically this isn't 100% correct because the require name of a gem and the gem name may not be the same. e.g. the gem docker-api has the require name docker. for all currently used gems the names are however the same and so simply requiring the gem name is expected to work
  • the implementation doesn't care about versions, again because we don't need it to
  • test-unit is a bundled gem, some distributions (e.g. Arch) do split it out without making suitable dependency arrangements on a package level though

the tech is heavily inspired by Aleix Pol's tech for finding QML modules
as seen in extra-cmake-modules

Test Plan:

  • ruby not found: none of the modules found
  • test-unit not present: error
  • simplecov not prseent: never errors
  • having a module installed or not is reported in the cmake output

Reviewers: Dolphin, elvisangelaccio

Reviewed By: Dolphin, elvisangelaccio

Subscribers: elvisangelaccio, kfm-devel

Tags: Dolphin

Differential Revision:


sitterMar 21 2019, 9:56 AM
Differential Revision
D19856: find ruby gems & make coverage conditional on BUILD_COVERAGE
R318:1775002247ec: Merge branch 'Applications/19.04'