1. 17 Dec, 2020 1 commit
  2. 12 Jul, 2020 1 commit
    • Michael Pyne's avatar
      rc-file: Add "num-cores-low-mem" and move num-cores* defs to initial-setup. · 654e1392
      Michael Pyne authored
      It is annoying to be maintaining kdesrc-build-setup and --initial-setup
      but combining those two can be a subsequent refactoring.
      
      This adds a separate num-cores-low-mem to address the qtwebengine case
      and makes both num-cores and num-cores-low-mem into an option generated
      during initial setup, and only used by the default config (rather than
      any part of the kdesrc-build internals directly).
      
      There is a fallback reference in the code in case there is a usage of
      the default configuration file sections (e.g. qt5-build-include) but
      this is set conservatively (4 cores, 2 cores during low-mem).
      
      At this point it's almost "just" a configuration convention with a bit
      of code in the setup wizard so perhaps it's best not to touch the rest
      of the code/docs at all, but I'm happy with where this is at.
      
      I've tested --initial-setup in a Docker container (Fedora 29 with perl
      manually installed first) and tested kdesrc-build-setup separately.
      654e1392
  3. 08 Jul, 2020 1 commit
  4. 07 Jul, 2020 1 commit
    • Michael Pyne's avatar
      rc-file: Add "num-cpus" option by default and use it in default setup. · 57e6c0c3
      Michael Pyne authored
      This change introduces a "num-cpus" option that is inherently present in
      the build context.
      
      This permits config file reading code to refer to this option (due to an
      existing kdesrc-build feature). So I also update the various available
      methods of generating a default configuration to use this option instead
      of hardcoding a -j value for make-options (or leaving it blank).
      
      This should provide maximum performance for most users (who aren't using
      or can't use the existing Ninja support, anyways), as long as they are
      able to start from a generated configuration.
      
      Users with existing configuration files would need to regenerate it or
      edit it to add "make-options -j ${num-cpus}" (including separately to
      their Qt5 options if applicable, as global options are ignored for
      non-KDE modules).
      
      See issue #39.
      57e6c0c3
  5. 20 Jun, 2020 1 commit
    • Michael Pyne's avatar
      kde_projects: Adjust new location for dep/branch info (kde-build-metadata). · 3f1e6b3b
      Michael Pyne authored
      The sysadmins have migrated kde-build-metadata into repo-metadata (under
      /dependencies for now). This helps with project management and reduces
      the risk of having kdesrc-build in an inconsistent state based on when
      repo-metadata is updated vs. kde-build-metadata.
      
      Update kdesrc-build to look for the dependency graph and
      branch/branch-group information in the updated location so that we can
      adapt to the move.
      
      This passes test suite and has been tested by an actual short set of
      compile jobs here.
      3f1e6b3b
  6. 17 May, 2020 3 commits
  7. 03 May, 2020 2 commits
  8. 11 Jan, 2020 1 commit
    • Michael Pyne's avatar
      Use https as default git protocol. · ad0d1bd0
      Michael Pyne authored
      Per the sysadmins, this will in the near future be the only way to
      access anongit, so make the switch here to be ready for that when it
      happens. Besides, it's already a more secure (and therefore recommended)
      way to access git using unauthenticated access.
      ad0d1bd0
  9. 01 Sep, 2019 1 commit
    • Michael Pyne's avatar
      dep-resolv: Fix --no-include-dependencies to have same default. · 2bfbbd99
      Michael Pyne authored
      When I added the flag yesterday it changed the value of
      'include-dependencies' for users who had never referenced it in their
      config. This was not intentional.
      
      Users who have set the option explicitly (either by using default config
      file or from a generated config file) should see no change here.
      2bfbbd99
  10. 31 Aug, 2019 1 commit
    • Michael Pyne's avatar
      dep-resolv: Introduce --no-include-dependencies cmdline opt. · 6c10817e
      Michael Pyne authored
      Does what it says on the tin, to permit disabling dependency inclusion
      on a one-time basis without editing config file. This just involved
      moving changing this option internally to be a 'global flag' which
      already are automagically able to be negated by precedining with --no-.
      
      When adding documentation for it I noticed I had not documented it in
      the Docbook docs so I've added docs for that and --include-dependencies
      also and updated copyright.
      
      This should also support updating other documentation for the issue
      being tracked at #31
      6c10817e
  11. 25 Dec, 2018 1 commit
    • Michael Pyne's avatar
      Fix broken cmdline parsing when --stop-on-failure in use. · e743b5bb
      Michael Pyne authored
      As reported in bug 402509, as position of command line argument changes
      the module build list.
      
      What was happening was --stop-on-failure in particular could 'eat' the
      next command line argument, because even though it was manually
      specified as a 'flag' argument to Getopt::Long, the 'stop-on-failure'
      entry was then overridden in the function call to read options by
      including the options in ksb::BuildContext::defaultGlobalFlags.
      
      A coding error on my part caused this inclusion of options to treat the
      options as requiring string values instead of boolean flags. As a result
      Getopt::Long would read the next non-option value and assign it to the
      'stop-on-failure' result.
      
      Fixed by treating the included flags as boolean flags instead of string
      valued, and by ensuring that the two sources for cmdline options are
      fully disjoint. I also added a test that fails with the old code and
      works with the new.
      
      Fixes #8
      
      BUG:402509
      FIXED-IN:19.01
      e743b5bb
  12. 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
  13. 22 Aug, 2018 1 commit
  14. 15 Aug, 2018 1 commit
    • Michael Pyne's avatar
      logs: Postpone log dir mutable setup until a log is to be generated. · 685e68ea
      Michael Pyne authored
      The logfiles generated for each module are stored in a log directory (again for
      each module). The converse is also supposed to apply, a log directory should
      only exist for a module if it has logs.
      
      kdesrc-build enforced this in the past by taking extreme care not to call
      "getLogDir" unless needed. At some point I missed that nuance and used that
      call elsewhere, even when no log was to be generated.
      
      This had the effect of creating a new log directory for the module that had its
      log directory looked up, but without ever adding logs to it. kdesrc-build would
      also move the latest symlink to point to this empty directory, and then later
      remove the directory containing the actual set of latest logs during cleanup.
      
      Even worse, this would happen for every module (since we forced a call to
      "getLogDir" so that later code in new async processes would all resolve to the
      same log directory)
      
      I fix this by splitting up the "getLogDir" functionality into a read-only part
      (creates the base log directory but not the module log directory and does not
      move latest symlinks), and a read-write part for log_command.
      685e68ea
  15. 23 Dec, 2017 2 commits
    • Michael Pyne's avatar
      persistence: Fix regression in saving options, v2. · d6d40e12
      Michael Pyne authored
      I left out a comma and thought I had already fixed with an amended
      commit, but it turns out I had forgotten to run git-add first. :(
      d6d40e12
    • Michael Pyne's avatar
      persistence: Fix regression in saving options. · 25e7bfc2
      Michael Pyne authored
      The move to JSON storage of persistent opts break first-time users,
      since the refactored code never actually gets around to setting a
      persistent_options key in the build context object.
      
      This seemed to work previously with Data::Dumper, but JSON::PP is not
      happy with being asked to serialize an undef.  On the other hand I had
      always thought that sub setPersistentOption would have 'autovivified'
      the needed hash table, and the reporter's build process should have
      resulted in many calls to setPersistentOption over the build.
      
      BUG:388180
      FIXED-IN:18.01
      25e7bfc2
  16. 21 Dec, 2017 3 commits
  17. 15 Dec, 2017 1 commit
  18. 06 Aug, 2017 1 commit
    • Michael Pyne's avatar
      Reduce importance of qtdir option, default to ''. · 02c616cb
      Michael Pyne authored
      The qtdir setting took on much less importance with Qt 5.  We've never
      officially supported building Qt 5 with kdesrc-build, and qmake and
      cmake both use qmake or similar Qt-provided config information to find
      Qt, rather than using the unsupported QTDIR environment variable.
      
      As a result, default the value to an empty string (interpreted as use of
      system Qt) and stop adding it automatically to the environment variables
      defined during the build.  If set, it will continue to be used for now.
      
      This also helps the environment setup driver detect when it should look
      for the system Qt5 qmake.
      02c616cb
  19. 30 Jul, 2017 1 commit
    • Michael Pyne's avatar
      Add install-environment-driver option. · 9031e6c8
      Michael Pyne authored
      This installs needed KDE-related environment settings without going so
      far as to install .xsession support.  For that, see
      install-session-driver, whose documentation has been fixed to make clear
      it's not a default.
      9031e6c8
  20. 23 Jul, 2017 1 commit
    • Michael Pyne's avatar
      Add install-environment-driver option. · 65ad4c42
      Michael Pyne authored
      This installs needed KDE-related environment settings without going so
      far as to install .xsession support.  For that, see
      install-session-driver, whose documentation has been fixed to make clear
      it's not a default.
      65ad4c42
  21. 09 Oct, 2016 1 commit
    • Michael Pyne's avatar
      kde-projects: Use YAML metadata directly from repo-management. · f48fd5c3
      Michael Pyne authored
      The XML file is not needed anymore, and is no longer downloaded.
      But there's a regression with bug 307694 (stripping out modules not in
      the branch group) if left this way. However the port to the new project
      management framework should also solve that.
      f48fd5c3
  22. 08 Oct, 2016 4 commits
  23. 20 Aug, 2016 1 commit
  24. 01 Aug, 2016 1 commit
  25. 23 Mar, 2016 1 commit
  26. 27 Dec, 2015 1 commit
    • Michael Pyne's avatar
      Read in kde-projects data all at once instead of once-per-set. · 8ef27e24
      Michael Pyne authored
      This has the nice side effect of (finally) making KDEXMLReader free of
      per-class global state (I keep forgetting Perl supports closures...),
      but mostly this is to keep pace with the way we're using the source
      repositories and grabbing potentially many dozens of modules at once
      from the XML data. Better to just read it once and query rather than
      parse anew for each and every set of queries.
      8ef27e24
  27. 21 Dec, 2015 1 commit
  28. 10 Oct, 2015 1 commit
  29. 25 Aug, 2015 1 commit
  30. 17 May, 2015 1 commit
  31. 11 Mar, 2015 1 commit
    • Michael Pyne's avatar
      dep-resolv: --include-dependencies; cmdline selections override rcfile. · e1afbc94
      Michael Pyne authored
      Add and document the --include-dependencies option. Useful with
      --print-modules as a quick way to determine what dependencies a given
      module on the command line has, especially if you do a quick
      "kdesrc-build --metadata-only" first.
      
      Also, make selecting modules on the command line override
      "include-dependencies" as an rc file option, since otherwise it's
      impossible to ask just to build a single module if that module is in a
      module set with included dependencies.
      
      Use the newly-added --include-dependencies option to force dependency
      resolution to happen even if you specify modules to build on the command
      line.
      e1afbc94