Giter Club home page Giter Club logo

Comments (12)

dirk-thomas avatar dirk-thomas commented on June 16, 2024

We could first change the documentaiton to reflect this.

Please create a PR for the proposed change to address the current difference.

A better (maybe further looking) alternative would be to implement an equivalent to --build-tests in colcon.

Sounds like a good idea to me.

from colcon-core.

mikaelarguedas avatar mikaelarguedas commented on June 16, 2024

Please create a PR for the proposed change to address the current difference.

Sure thing, my understanding is that every where we give an example of using colcon build we will add BUILD_TESTING=OFF and modify the ament compatibility page to just say that --build-tests is the default behavior.

I'll open a PR with that tomorrow if there's no objection on this ticket.

from colcon-core.

dirk-thomas avatar dirk-thomas commented on June 16, 2024

A new option to control this sounds good to me. I would rather not change the default though. Why not? Because that is not what a CMake user would expect when not configuring anything different. So an option to disable building tests seems more appropriate to me.

from colcon-core.

mikaelarguedas avatar mikaelarguedas commented on June 16, 2024

should the behavior of the tool change (topological order, something else)?

e.g. test_depends would be removed from the dependency list of the package if the flag disabling test compilation is not provided

from colcon-core.

dirk-thomas avatar dirk-thomas commented on June 16, 2024

test_depends would be removed from the dependency list of the package if the flag disabling test compilation is not provided

That would be an option. It might confuse users though if the set of packages they selected changes based on the option being toggled.

from colcon-core.

mikaelarguedas avatar mikaelarguedas commented on June 16, 2024

I would like to bump the priority of this item.

It might confuse users though if the set of packages they selected changes based on the option being toggled.

I currently have a use case where this is the behavior I want to exercise:

  • One of the test dependencies of my packages cannot build on the platform I'm using
  • I want to build my workspace without tests so I don't need that dependency
  • I run colcon build --packages-skip my_missing_test_dep --cmake-args -DBUILD_TESTING=OFF
  • My build fails with the following error message:
colcon.colcon_cmake.task.cmake.build ERROR Failed to find the following files:
- C:\dev\ros2\install\share\my_missing_testing_dep\package.bat
Check that the following packages have been built:
- my_missing_testing_dep

Currently the only way to work around the issue is to remove the dependency from the package.xml of all the packages having that test dependency.
Having the --build-tests flag modify the list of required dependencies passed to each task would be valuable.

Does that sound reasonable?

from colcon-core.

dirk-thomas avatar dirk-thomas commented on June 16, 2024

My build fails with the following error message:

A package which is "skipped" during the build is still considered to be present (and assumed to be built previously). What you want is to "ignore" that package as if it isn't even present in the workspace (or has a COLCON_IGNORE marker). You should be able to achieve this with the following option: --packages-ignore my_missing_test_dep

from colcon-core.

mikaelarguedas avatar mikaelarguedas commented on June 16, 2024

Oh good to know I forgot an ignore option was available 👍

Then it can stay as an enhancement.

I still believe that a feature of this option (when not exercised) would be to demote test dependencies from the dependency list allowing people to not build their test dependencies when they decide to not build the tests

from colcon-core.

dirk-thomas avatar dirk-thomas commented on June 16, 2024

I still believe that a feature of this option (when not exercised) would be to demote test dependencies from the dependency list allowing people to not build their test dependencies when they decide to not build the tests

I see a "problem" with considering a test dependency a dependency in one build but not in another: basically the result of your build can become non-deterministic. When you do just one build with tests enabled the behavior might be different than a build which happens after a previous build was done without test dependencies (e.g. cached information in the CMakeCache.txt from previous run with different environment).

from colcon-core.

dirk-thomas avatar dirk-thomas commented on June 16, 2024

With the new mixin feature available this could be addressed by adding a new "recipe" to the mixin repository, e.g.

"build-tests": {
    "build": {
        "cmake-args": ["-DBUILD_TESTING=1"]
    }
}

I am just not sure about the naming of the mixin...

from colcon-core.

mikaelarguedas avatar mikaelarguedas commented on June 16, 2024

The build-testing mixins look good to me to be able to toggle the arguments.

I am just not sure about the naming of the mixin...

build-testing seems fine for now 👍

I see a "problem" with considering a test dependency a dependency in one build but not in another: basically the result of your build can become non-deterministic. When you do just one build with tests enabled the behavior might be different than a build which happens after a previous build was done without test dependencies (e.g. cached information in the CMakeCache.txt from previous run with different environment).

I understand the concern. What would be a recommended alternative to ignore all the dependencies listed as test_depend in a workspace? (basically building all packages up to foo but removing the ones that are only test_depend in the chain)

from colcon-core.

dirk-thomas avatar dirk-thomas commented on June 16, 2024

Since mixins for this flag have been added in colcon/colcon-mixin-repository#2 I will go ahead and close this.

from colcon-core.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.