Skip to content

Ensure that all gems with native extensions are checked

The following discussion from !1208 (merged) should be addressed:

  • @leipert started a discussion: (+3 comments)

    @ashmckenzie That is an easy one 😆

    Say, does it make sense to expand the list, e.g. with all gems that GitLab depends on, that have native extensions?


TL;DR from the discussion:

Say, does it make sense to expand the list, e.g. with all gems that GitLab depends on, that have native extensions?

Found all gems that have native extensions with gem pristine --all --no-extensions

Skipped RedCloth-4.3.2, it needs to compile an extension
Skipped bcrypt-3.1.12, it needs to compile an extension
Skipped bcrypt_pbkdf-1.0.0, it needs to compile an extension
Skipped binding_ninja-0.2.3, it needs to compile an extension
Skipped binding_of_caller-0.8.0, it needs to compile an extension
Skipped bootsnap-1.4.6, it needs to compile an extension
Skipped byebug-9.1.0, it needs to compile an extension
Skipped character_set-1.1.2, it needs to compile an extension
Skipped charlock_holmes-0.7.6, it needs to compile an extension
Skipped commonmarker-0.20.1, it needs to compile an extension
Skipped debug_inspector-0.0.3, it needs to compile an extension
Skipped ed25519-1.2.4, it needs to compile an extension
Skipped enumerable-statistics-2.0.1, it needs to compile an extension
Skipped escape_utils-1.2.1, it needs to compile an extension
Skipped eventmachine-1.2.7, it needs to compile an extension
Skipped fast_blank-1.0.0, it needs to compile an extension
Skipped ffi-1.12.2, it needs to compile an extension
Skipped gitlab-puma-4.3.3.gitlab.2, it needs to compile an extension
Skipped gpgme-2.0.20, it needs to compile an extension
Skipped hamlit-2.11.0, it needs to compile an extension
Skipped http-parser-1.2.1, it needs to compile an extension
Skipped jaro_winkler-1.5.4, it needs to compile an extension
Skipped json-1.8.6, it needs to compile an extension
Skipped kgio-2.11.2, it needs to compile an extension
Skipped msgpack-1.3.1, it needs to compile an extension
Skipped murmurhash3-0.1.6, it needs to compile an extension
Skipped nio4r-2.5.2, it needs to compile an extension
Skipped nokogiri-1.10.8, it needs to compile an extension
Skipped nokogumbo-1.5.0, it needs to compile an extension
Skipped pg-1.2.2, it needs to compile an extension
Skipped prometheus-client-mmap-0.10.0, it needs to compile an extension
Skipped rainbow-2.2.2, it needs to compile an extension
Skipped raindrops-0.19.0, it needs to compile an extension
Skipped rblineprof-0.3.6, it needs to compile an extension
Skipped rbtrace-0.4.11, it needs to compile an extension
Skipped re2-1.1.1, it needs to compile an extension
Skipped regexp_property_values-0.3.4, it needs to compile an extension
Skipped rinku-2.0.0, it needs to compile an extension
Skipped ruby-prof-1.3.1, it needs to compile an extension
Skipped rugged-0.28.4.1, it needs to compile an extension
Skipped sassc-2.0.1, it needs to compile an extension
Skipped sqlite3-1.3.13, it needs to compile an extension
Skipped stackprof-0.2.15, it needs to compile an extension
Skipped thin-1.7.2, it needs to compile an extension
Skipped thrift-0.11.0.0, it needs to compile an extension
Skipped timfel-krb5-auth-0.8.3, it needs to compile an extension
Skipped unf_ext-0.0.7.5, it needs to compile an extension
Skipped unicorn-5.4.1, it needs to compile an extension
Skipped version_sorter-2.2.4, it needs to compile an extension
Skipped vmstat-2.3.0, it needs to compile an extension
Skipped websocket-driver-0.7.1, it needs to compile an extension

Personally I already had problems with some default gems which required me to reinstall ruby (e.g. fiddle)

Skipped bigdecimal-1.4.1, it is a default gem
Skipped bundler-1.17.2, it is a default gem
Skipped cmath-1.0.0, it is a default gem
Skipped csv-3.0.9, it is a default gem
Skipped date-2.0.0, it is a default gem
Skipped dbm-1.0.0, it is a default gem
Skipped e2mmap-0.1.0, it is a default gem
Skipped etc-1.0.1, it is a default gem
Skipped fcntl-1.0.0, it is a default gem
Skipped fiddle-1.0.0, it is a default gem
Skipped fileutils-1.1.0, it is a default gem
Skipped forwardable-1.2.0, it is a default gem
Skipped gdbm-2.0.0, it is a default gem
Skipped io-console-0.4.7, it is a default gem
Skipped ipaddr-1.2.2, it is a default gem
Skipped irb-1.0.0, it is a default gem
Skipped json-2.1.0, it is a default gem
Skipped logger-1.3.0, it is a default gem
Skipped matrix-0.1.0, it is a default gem
Skipped mutex_m-0.1.0, it is a default gem
Skipped openssl-2.1.2, it is a default gem
Skipped ostruct-0.1.0, it is a default gem
Skipped prime-0.1.0, it is a default gem
Skipped psych-3.1.0, it is a default gem
Skipped rdoc-6.1.2, it is a default gem
Skipped rexml-3.1.9, it is a default gem
Skipped rss-0.2.7, it is a default gem
Skipped scanf-1.0.0, it is a default gem
Skipped sdbm-1.0.0, it is a default gem
Skipped shell-0.7, it is a default gem
Skipped stringio-0.0.2, it is a default gem
Skipped strscan-1.0.0, it is a default gem
Skipped sync-0.5.0, it is a default gem
Skipped thwait-0.1.0, it is a default gem
Skipped tracer-0.1.0, it is a default gem
Skipped webrick-1.4.2, it is a default gem
Skipped zlib-1.0.0, it is a default gem

Checking against all is probably overkill, but maybe it makes sense to extend the list.

As a sidenote: We should make sure that the Gemfile.lock actually still contains the extension, not we error in case the extension is gone and GitLab has actually removed it from the dependency tree.

Edited by Lukas Eipert