• Mahmood Ali's avatar
    dev: avoid codecgen code in downstream projects · 3a517614
    Mahmood Ali authored
    This is an attempt to ease dependency management for external driver
    plugins, by avoiding requiring them to compile ugorji/go generated
    files.  Plugin developers reported some pain with the brittleness of
    ugorji/go dependency in particular, specially when using go mod, the
    default go mod manager in golang 1.13.
    
    Context
    --------
    
    Nomad uses msgpack to persist and serialize internal structs, using
    ugorji/go library.  As an optimization, we use ugorji/go code generation
    to speedup process and aovid the relection-based slow path.
    
    We commit these generated files in repository when we cut and tag the
    release to ease reproducability and debugging old releases.  Thus,
    downstream projects that depend on release tag, indirectly depends on
    ugorji/go generated code.
    
    Sadly, the generated code is brittle and specific to the version of
    ugorji/go being used.  When go mod picks another version of ugorji/go
    then nomad (go mod by default uses release according to semver),
    d...
    3a517614