Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(cmake_xmllint) make extensions configurable #479

Open
wants to merge 3 commits into
base: rolling
Choose a base branch
from

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

Signed-off-by: Matthijs van der Burgh <[email protected]>
@@ -23,7 +23,7 @@
# @public
#
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.

@@ -12,8 +12,26 @@
# See the License for the specific language governing permissions and
# limitations under the License.

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 ;)

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.

2 participants