1. 24 Feb, 2019 3 commits
  2. 05 Dec, 2018 1 commit
    • Michael Pyne's avatar
      Apply a consistent ordering of module list generation. · 671140a6
      Michael Pyne authored
      This fixes one of the most annoying outstanding issues with
      kdesrc-build. Though if I had known it would be this easy I'd have done
      it sooner.
      
      The issue is that running the same build command, with the same
      dependencies applied, would often come up with different build orders.
      
      $ kdesrc-build -p --print-modules --resume-from kcoreaddons
       ... build list shown
      $ kdesrc-build -p --print-modules --resume-from kcoreaddons
       ... a different build list shown
      
      The major cause of this is that the implicit ordering is derived from
      how the KDE project modules are loaded, using a filesystem search.
      Sorting the list of loaded modules when doing a search through the KDE
      project hierarchy is enough to handle this.
      
      A more theoretical issue is that the loaded dependencies themselves
      could be reordered even though the dependencies haven't really changed.
      To pre-emptively address this before the next kde-build-metadata cleanup
      we also canonicalize all loaded dependencies into a sorted order.
      
      Test suite passes.
      671140a6
  3. 21 Oct, 2018 1 commit
    • Michael Pyne's avatar
      first-run: Reduce use of ksb::Util, remove dead code. · 8f5daca9
      Michael Pyne authored
      Some minimal versions of popular Linux distros have Docker images that
      provide a stripped-down Perl install to save space. You cannot rely on
      "core" modules being present in this case.
      
      kdesrc-build should be able to at least spit out a message of which
      packages are required on the distribution. This means that
      ksb::OSSupport and ksb::FirstRun must be loadable in this distros, and
      kdesrc-build must not load "full fat" Perl modules until after checking
      whether to handle initial setup.
      
      Making this happen leads me to refactor exception code out of ksb::Util.
      While doing so I noticed that download_file is no longer needed
      (kde_projects.xml support drove that need), so that is removed as well
      to eliminate a dependency on HTTP::Tiny (a core module, but not
      available in minimal distros).
      8f5daca9
  4. 12 Jan, 2018 1 commit
    • Michael Pyne's avatar
      Downgrade missing dependency warning. · 1e6b6e5d
      Michael Pyne authored
      The warning here complains about conditions which are already pretty
      much fixed from outside of the kdesrc-build user population anyways.
      It's still something notable so instead of removing completely I
      downgrade it to a debugging message.
      
      BUG:388657
      FIXED-IN:18.02
      1e6b6e5d
  5. 20 May, 2015 1 commit
  6. 24 Apr, 2015 1 commit
    • Michael Pyne's avatar
      dep-resolv: Fix wildcard handling for dependency-data. · 6b7decf8
      Michael Pyne authored
      The recent(-ish) switch to allow short name from a few months ago in the
      dependency-data files was buggy in the way it handles "catch all"
      dependencies.
      
      Dependency information was already shortened down to just the module
      name when it was compared against the wildcard dependency rules, which
      made it impossible for most of the rules to match (e.g. a dependency for
      kde/kdemultimedia/* wouldn't match against 'juk' anymore because at that
      portion of the code it's not clear that juk is actually a part of that
      set).
      
      I will still have to make some other fixes to permit wildcarded
      dependencies to work through indirect modules. E.g. a dependency exists
      for kde/foo/bar/bar* to "first-module". A second module depends on
      "bar-intermedia-module", which is really under kde/foo/bar/. If
      "bar-intermedia-module" is actually being built this is not an issue as
      the dependency resolver can read the full path to detect the recursive
      dependency onto "first-module". But if "bar-intermedia-module" is not
      being built then there's no way to tell that there's really a dependency
      on "first-module" since the wildcard dependency would not match.
      6b7decf8
  7. 07 Mar, 2015 1 commit
  8. 06 Mar, 2015 1 commit
    • Michael Pyne's avatar
      dep-resolv: Properly handle 'virtual' dependencies with auto-deps. · 8ada5bdb
      Michael Pyne authored
      Remove the special-case check on kf5umbrella by supporting all
      virtual/misspelled dependencies in dependency-data without raising fatal
      errors. --verbose still warns about missing dependencies (even with
      kf5umbrella) and the worst case is that we try to build modules out of
      order until someone notices the metadata is wrong.
      
      That's a much better worst case than that of a couple of days ago
      ("kdesrc-build won't even start").
      
      BUG:344814
      8ada5bdb
  9. 05 Mar, 2015 1 commit
    • Michael Pyne's avatar
      dep-resolv: Workaround kf5umbrella errors introduced by v2 change. · 0ce3244a
      Michael Pyne authored
      So now I remember why kdesrc-build didn't recursively include
      dependencies.... we took advantage of the fact that dependencies in
      kdesrc-build were just for ordering (not for generating the build list)
      by using 'kf5umbrella' as a fake module. This allowed workspace modules
      to depend on only kf5umbrella instead of all of the frameworks
      individually.
      
      The recent changes to support recursive dependencies broke this, but I
      wasn't able to reproduce until I introduce a module-set that actually
      ran directly across kf5umbrella as a dependency, which is why I didn't
      catch earlier.
      
      This is only a workaround for kf5umbrella in particular, but should tide
      things over until I can understand and fix it properly. Apologies for
      the inconvenience.
      0ce3244a
  10. 28 Feb, 2015 1 commit
  11. 22 Feb, 2015 3 commits
    • Michael Pyne's avatar
      dep-resolv: There's a reason I included a visit-guard before. · 96fe204e
      Michael Pyne authored
      Even without include-dependencies, without this visit guard the tree
      traversal code will add a ksb::Module dependency (when they are
      encountered) to the build list every time it is encountered, not just
      the first time it's encountered.
      96fe204e
    • Michael Pyne's avatar
      Add new option 'include-dependencies'. · b452401f
      Michael Pyne authored
      Currently it (probably) doesn't support pulling in options for these
      modules from their host module-sets (although using 'options' sections
      might actually work). I think it ignores the 'ignore-modules' option as
      well.
      
      Other than that, it should do pretty much what it says on the tin,
      although I had to implement a few other bug fixes as well to get it to
      that point.
      
      I want to say that there was an open bug for this but I can't seem to
      find it now.
      b452401f
    • Michael Pyne's avatar
      dep-resolv: Shorten catch-all source names too. · 6f5e4f85
      Michael Pyne authored
      Source items can never be catch-all/wildcard items, so we must
      canonicalize these too to prevent e.g. extra-cmake-modules from
      depending on kdesupport/extra-cmake-modules due to a '*:
      kdesupport/extra-cmake-modules' rule.
      6f5e4f85
  12. 21 Feb, 2015 1 commit
    • Michael Pyne's avatar
      Indent --print-modules output based on dependency resolution. · 22e77dea
      Michael Pyne authored
      This is somewhat confusing; since modules are listed in build order,
      indented modules show up *before* the modules that require them.
      Essentially, the module that caused an indented module to show up in its
      position in the build is the next module in the build that is more
      outdented.
      
      Additionally, this only indents in situations where a module's build
      order had to be rearranged. Modules that were already in the right order
      are not specially indented even if a valid dependency exists.
      
      With all that said, this can be a useful way of determining why
      kdesrc-build thinks a given order is required without having to go the
      route of a complicated ASCII DAG renderer.
      22e77dea
  13. 15 Feb, 2015 2 commits
    • Michael Pyne's avatar
      dep-resolv: Do not implicitly add base-path modules as dependencies. · f6e2022e
      Michael Pyne authored
      This feature had been intended for cases where a module kde/foo was a
      git repository while also being a base for other git repositories
      kde/foo/bar, kde/foo/baz, etc. For instance, kde/kdelibs is a git
      repository that also held sub-children like kde/kdelibs/kactivities.
      
      However this is fairly rare in KDE repositories now, and this feature in
      its easiest-to-implement form has always had to navigate around several
      corner cases, so it's better just to explicitly specify dependencies.
      f6e2022e
    • Michael Pyne's avatar
      dep-resolv: Allow the use of short module names in dependency-data. · abbd7530
      Michael Pyne authored
      This change also prefers the use of short module names. Additionally the
      'inherent module dependencies' feature would likely be removed, although
      I'm commiting the ported version here in case we'd ever need to bring it
      back.
      abbd7530
  14. 14 Jul, 2014 1 commit
  15. 16 Mar, 2014 1 commit
  16. 13 Mar, 2014 1 commit
    • Michael Pyne's avatar
      dep-resolv: Follow indirect dependencies for kde-projects. · 598ad622
      Michael Pyne authored
      This makes it safe for things like extragear software to simply
      generically depend on kf5umbrella and have kdesrc-build do the right
      thing.
      
      Fixes bug 331940, though I know dfaure mentioned it at some point as
      well.
      
      FIXED-IN:1.16
      BUG:331940
      598ad622
  17. 04 Mar, 2014 2 commits
  18. 18 Aug, 2013 1 commit
  19. 12 Aug, 2013 1 commit
    • Michael Pyne's avatar
      module: Use fullProjectPath. · 4818d239
      Michael Pyne authored
      As opposed to directly using an internal specific option name
      everywhere. 'xml-full-path' is still used, but now only within Module.
      4818d239
  20. 30 Dec, 2012 3 commits
    • Michael Pyne's avatar
      api: Document API of DependencyResolver. · acdcae5a
      Michael Pyne authored
      acdcae5a
    • Michael Pyne's avatar
      kde-projects: Support "catch-all" dependencies. · a456c51b
      Michael Pyne authored
      The most noticeable effect is probably that it should be damn near
      impossible not to have automoc build first now, at least in comparison
      to other kde-projects modules. It also should take care of the vast
      majority of the code needed for bug 312324. Still needed is handling for
      Qt/Qt5.
      
      BUG:312324
      FIXED-IN:1.16
      a456c51b
    • Michael Pyne's avatar
      kde-projects: Expand dependency-data support. · 1683307a
      Michael Pyne authored
      We now read in and should be able to handle branch-specific dependencies
      and module dependency exclusions.
      
      For full support we still need to find a way to properly handle Qt vs.
      Qt5 modules (e.g. for phonon Five and automoc).
      1683307a
  21. 15 Dec, 2012 1 commit
  22. 25 Nov, 2012 1 commit