ros-infrastructure / ros_buildfarm

ROS buildfarm based on Docker
Apache License 2.0
77 stars 95 forks source link

Switch from 'include_package_data' to 'package_data' #1039

Closed cottsay closed 1 month ago

cottsay commented 3 months ago

The former results in quite a few warning messages during the package build with modern setuptools, such as:

``` ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'ros_buildfarm.templates.status.js' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'ros_buildfarm.templates.status.js' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'ros_buildfarm.templates.status.js' to be distributed and are already explicitly excluding 'ros_buildfarm.templates.status.js' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** ```
cottsay commented 3 months ago

Hmm, looks like this broke Python 3.6 somehow. Reverting to draft.

cottsay commented 1 month ago

For the curious: it looks like recursive glob support was added to setuptools in v62.3.0, and for whatever reason, pip is installing v59 for Python 3.6 and older.

I switched to non-recursive globs and it appears to have resolved the problem.