• Dridi Boukelmoune's avatar
    Introduce `$ABI [strict|vrt]` for VMOD descriptors · 3199e694
    Dridi Boukelmoune authored
    When versioning appeared in the VRT API, the goal was to allow loose
    ABI compliance on loaded VMODs based on the major/minor revision against
    which it was built. Strict checking was performed if Varnish was built
    from the master branch in the VCC code, but omitted by the child.
    
    This however has two flaws:
    
    1) Release management might go wrong like it happened in 5.1.2 that got
       released from the master branch.
    
    2) This doesn't solve the original problem that some VMODs might rely
       on supported symbols encompassed by the VRT major/minor while others
       may choose to integrate deeper with Varnish and lose guarantees.
    
    This patch retires the `VCS_Branch` macro that is no longer needed and
    provides a new `$ABI` stanza that defaults to strict when omitted. To
    help discovery, in-tree modules advertise a strict match.
    
    To indicate that a VMOD needs the exact Varnish build to be loaded,
    the VMOD's metadata contains 0.0 for the VRT major/minor revision.
    
    In addition, both the VCC and child now perform the full ABI compliance
    check, picking the strict or vrt option depending on the VMOD's metadata.
    
    Closes #2330
    3199e694
vmod.vcc 9.41 KB