Uploaded image for project: 'Puppet'
  1. Puppet
  2. PUP-7156

Puppet 4.9.0 removes vendored `semantic` gem, used publicly

    XMLWordPrintable

Details

    • Bug
    • Status: Closed
    • Normal
    • Resolution: Fixed
    • PUP 4.9.0
    • PUP 4.9.1
    • None
    • None
    • Hide

      Modules based on garethr/puppet-module-skeleton don't fail.

      Show
      Modules based on garethr/puppet-module-skeleton don't fail.
    • Agent
    • 2
    • AP 2017-02-08
    • Bug Fix
    • Hide
      Puppet 4.9.0 replace a vendored library, 'semantic' with a new one, 'semantic_puppet'. While strictly speaking these are private puppet internals, some modules have made use of the vendored library. Puppet 4.9.1 introduces a shim redirecting 'semantic' to 'semantic_puppet' so that modules / CI will not break as a result of requiring the non-existing 'semantic' library.
      Show
      Puppet 4.9.0 replace a vendored library, 'semantic' with a new one, 'semantic_puppet'. While strictly speaking these are private puppet internals, some modules have made use of the vendored library. Puppet 4.9.1 introduces a shim redirecting 'semantic' to 'semantic_puppet' so that modules / CI will not break as a result of requiring the non-existing 'semantic' library.
    • No Action
    • Current tests should catch this

    Description

      In Puppet 4.9.0, we removed the vendored `semantic` gem, replacing it with `semantic_puppet`. Per the twitter thread at https://twitter.com/rnelson0/status/826584129818984451, this causes issues with any module based on https://github.com/garethr/puppet-module-skeleton/. The Skeleton loads the `semantic` gem from Puppet's vendor dir to validate a module's metadata.json.

      A cursory github search shows a distressing number of instances of the string "puppet/vendor/semantic/lib/semantic", although this is probably over-representing usage https://github.com/search?q=puppet%2Fvendor%2Fsemantic%2Flib%2Fsemantic&type=Code&utf8=%E2%9C%93

      Some good news: Recent versions of the skeleton use a pure ruby validator for metadata.json, and the requirement on Puppet's vendored semantic is vestigal. Removing that line is an easy fix for those using recent versions's of the skeleton. Unfortunately, we don't yet know how widespread older versions are.

      Additional Notes

      In Scope

      • introduces a shim redirecting 'semantic' to 'semantic_puppet' so that modules / CI will not break as a result of requiring the non-existing 'semantic' library.

      Attachments

        Issue Links

          Activity

            People

              moses Moses Mendoza
              branan Branan Riley
              Stan Duffy Stan Duffy
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Zendesk Support