Skip to content
Snippets Groups Projects
  • Matthias Schiffer's avatar
    13b743d5
    features: fix handling of logical expressions · 13b743d5
    Matthias Schiffer authored
    The rewrite of the feature handling introduced multiple major bugs. One
    of them was caused by the way Lua's logical operators work:
    
    An expression of the form
    
        _'autoupdater' and _'web-advanced'
    
    would return 'web-advanced' rather than the boolean true when _ returned
    both strings unchanged (because the features are enabled).
    
    As entries with more than a single feature name in their expressions did
    not set no_default, Gluon would then attempt to add gluon-web-advanced to
    the package selection, as web-advanced is a "pure" feature.
    
    To fix this, and get rid of the annoying nodefault, separate handling of
    "pure" feature and handling of logical expressions into two separate
    functions, called feature() and when(). To simplify the feature
    definitions, the package list is now passed directly to these functions
    rather than in a table with a single field 'packages'.
    
    Fixes: ee5ec5af ("build: rewrite features.sh in Lua")
    13b743d5
    History
    features: fix handling of logical expressions
    Matthias Schiffer authored
    The rewrite of the feature handling introduced multiple major bugs. One
    of them was caused by the way Lua's logical operators work:
    
    An expression of the form
    
        _'autoupdater' and _'web-advanced'
    
    would return 'web-advanced' rather than the boolean true when _ returned
    both strings unchanged (because the features are enabled).
    
    As entries with more than a single feature name in their expressions did
    not set no_default, Gluon would then attempt to add gluon-web-advanced to
    the package selection, as web-advanced is a "pure" feature.
    
    To fix this, and get rid of the annoying nodefault, separate handling of
    "pure" feature and handling of logical expressions into two separate
    functions, called feature() and when(). To simplify the feature
    definitions, the package list is now passed directly to these functions
    rather than in a table with a single field 'packages'.
    
    Fixes: ee5ec5af ("build: rewrite features.sh in Lua")