Skip to content
Snippets Groups Projects
  1. Aug 28, 2020
    • Matthias Schiffer's avatar
      features: handle all feature files in a single pass of feature_lib.get_packages() · a9c2db93
      Matthias Schiffer authored
      All defined features need to be known at the same time, otherwise handling
      a feed-provided feature definition file would add gluon-web-advanced etc.
      to the package list when the corresponding feature flags appear in
      GLUON_FEATURES.
      
      Fixes: ee5ec5af ("build: rewrite features.sh in Lua")
      a9c2db93
    • Matthias Schiffer's avatar
      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
    • Matthias Schiffer's avatar
      scripts: feature_lib.lua: improve error handling for invalid feature files · 097efa9d
      Matthias Schiffer authored
      Print a proper error message, rather than just
      
          openwrt/staging_dir/hostpkg/bin/lua: scripts/feature_lib.lua:48: bad
          argument #1 to 'setfenv' (integer expected, got nil)
      Unverified
      097efa9d
  2. Jul 01, 2020
    • Matthias Schiffer's avatar
      build: rewrite features.sh in Lua · ee5ec5af
      Matthias Schiffer authored
      The `features` file is converted to a Lua-based DSL.
      
      A helper function `_` is used in the DSL; this will return the original
      string for enabled features, and nil for disabled features. This allows
      to use boolean operations on features without making the code too
      verbose.
      
      Besides having more readable and robust code, this also fixes the bug
      that all files `packages/*/features` were evaluated instead of only
      using the feature definitions of currently active feeds.
      ee5ec5af
Loading