Skip to content

Conversation

@MatthijsBurgh
Copy link
Contributor

@MatthijsBurgh MatthijsBurgh commented Mar 4, 2024

Make it possible to configure the file extensions to be checked by xmllint from CMake.

This can be done by setting the ament_cmake_xmllint_EXTENSIONS as a space or comma separated string of extensions when using ament_lint_auto. Or by passing the EXTENSIONS to ament_xmllint function directly.

@MatthijsBurgh
Copy link
Contributor Author

Friendly ping @clalancette

1 similar comment
@MatthijsBurgh
Copy link
Contributor Author

Friendly ping @clalancette

@MatthijsBurgh
Copy link
Contributor Author

#
function(ament_xmllint)
cmake_parse_arguments(ARG "" "MAX_LINE_LENGTH;TESTNAME" "" ${ARGN})
cmake_parse_arguments(ARG "" "TESTNAME" "PATHS;EXCLUDE;EXTENSIONS" ${ARGN})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't look like either PATHS nor EXCLUDE are being used here, so let's just drop them.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will check whether I want to add these as well or remove them.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have update the macro to also use the PATHS and EXCLUDE args. (Though these are not use in the ament_lint_auto hook. As it looks for files, which eventually will be used by ament_xmllint. But then you are recreating the logic from ament_xmllint in CMake, which is undesired. But I don't think you want to call the python function from the ament_xmllint library here.


file(GLOB_RECURSE _source_files FOLLOW_SYMLINKS "*.xml")
# Forces ament_xmllint to consider ament_cmake_xmllint_EXTENSIONS as the given extensions if defined
set(_extensions "xml")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This feels a little weird. If the user doesn't specify anything for EXTENSIONS, then we won't pass --extensions to ament_xmllint at all, and then that script will choose the xml extension itself. If the user specifies some EXTENSIONS, then we will always pass --extensions xml, plus whatever they choose. There is no way for the user to ask for extensions that doesn't include xml.

I think we should do one of two things here:

  1. If the user specifies EXTENSIONS, then make that the complete set. Don't silently add .xml.
  2. Rename the variable from EXTENSIONS to EXTENSIONS_APPEND or something like that, to make it clear that we will always do at least xml.

Either way, we should document what we are doing in the documentation to ament_xmllint.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, I checked the behaviour. When setting ament_cmake_xmllint_EXTENSIONS, it will completely overwrite the _extensions variable. As I use REGEX REPLACE.

@MatthijsBurgh
Copy link
Contributor Author

@clalancette friendly ping ;)

1 similar comment
@MatthijsBurgh
Copy link
Contributor Author

@clalancette friendly ping ;)

@MatthijsBurgh
Copy link
Contributor Author

@clalancette I have updated the branch to be aligned with the upstream repo. Please have a look at the MR.

@sloretz sloretz self-assigned this Sep 12, 2025
@ahcorde
Copy link
Contributor

ahcorde commented Nov 11, 2025

@sloretz or @clalancette do you mind to take a look ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants