pcl-1.9.0
·
3692 commits
to master
since this release
= 1.9.0 (06.11.2018) =
New Features:
Newly added functionalities.
- [common][visualization] Add Viridis color LUT [#2420]
- [octree] Implementation of the iterator 'OctreeLeafNodeBreadthIterator'. [#2204]
- [octree] Implementation of the iterator 'OctreeFixedDepthIterator'. [#1983]
- [ci] Enable Global Tests on Windows CI [#2137]
- [features] Add GASD global point cloud descriptor [#1652]
- [visualization] Add overload to
PCLVisualizer::addText3D()
that allows specifying text orientation [#2038] - [features] FLARELocalReferenceFrameEstimation class added [#1571]
- [surface][tools] Add new mls projection method. Deprecated
MovingLeastSquares::setPolynomialFit()
. [#1960]
Deprecated:
Deprecated code scheduled to be removed after two minor releases.
- [octree] Implementation of the iterator 'OctreeLeafNodeBreadthIterator'. [#2204]
- [common][segmentation] Provide proper EuclideanClusterComparator method depreciation. New Pragma macro. New Deprecated type. [#2096]
- [io] Add support pcl::PointXYZRGBA to pcl::VLPGrabber. Deprecate rgb signatures. [#2102]
- [surface][tools] Add new mls projection method. Deprecated
MovingLeastSquares::setPolynomialFit()
. [#1960]
Removed:
Removal of deprecated code.
- [filters][io][surface][visualization] Removal of deprecated code in filters, io, surface and visualization modules [#2077]
- [common] Remove deprecated ros headers [#2075]
- [registration] Remove registration module deprecated methods [#2076]
- [sample_consensus] Remove deprecated functions and variables from SAC module [#2071]
- [common] Removal of PCA deprecated constructor [#2070]
Behavioral changes:
Changes in the expected default behavior.
- [common] PointCloudDepthAndRGBtoXYZRGBA: initialize with the default alpha value (fix #2476) [#2533]
- [octree] Reverse octree's depth first iterator order [#2332]
- [common]
PointXYZRGBL
label
field is now default constructed to 0 [#2462] - [io] Fix PLYReader is_dense behavior [#2133]
API changes:
Changes to the API which didn't went through the proper deprecation and removal cycle.
- [octree] Implementation of the iterator 'OctreeLeafNodeBreadthIterator'. [#2204]
- [sample_consensus] Const-qualify most of the methods in SAC model classes [#2270]
- [simulation] Use GLuint rather than size_t to represent OpenGL indices. [#2238]
- [visualization] Fix access specifier in
PointCloudColorHandlerRGBAField
[#2226] - [docs] Misc. typos (cont.) [#2215]
- [octree] OctreeIterators special member revision [#2108]
- [io] Add support pcl::PointXYZRGBA to pcl::VLPGrabber. Deprecate rgb signatures. [#2102]
- [surface][tools] Add new mls projection method. Deprecated
MovingLeastSquares::setPolynomialFit()
. [#1960] - [surface] Add ability to cache mls results [#1952]
ABI changes:
Changes that cause ABI incompatibility but are still API compatible.
- [surface] Missing pcl::MovingLeastSquaresOMP declaration without /openmp [#2324]
- [common][filters][surface] Improved docstrings and error messages [#2300]
- [common] Modified
GlasbeyLUT
indexing type tosize_t
[#2297] - [octree] Implementation of the iterator 'OctreeFixedDepthIterator'. [#1983]
- [common][segmentation] Provide proper EuclideanClusterComparator method depreciation. New Pragma macro. New Deprecated type. [#2096]
- [gpu] Allow specifying decimation step in convertToTsdfCloud [#2099]
- [apps] More warning suppression in pcl apps [#2080]
- [io] Removed unused member from ply_parser [#2066]
- [filters] Fixes remove_indices in UniformSampling [#1902]
- [visualization] Add accessor for current rendering framerate in PCLVisualizer [#1974]
- [simulation] Redo: Simulation: enable returning of organized point clouds [#1687]
- [registration] Added option to specify translation and rotation convergence deltas in ICP and NDT algorithms. [#1724]
Modules:
Uncategorized:
- Change Log generation tool. Automates change log generation. [#2396]
- Compatibility reports generation script [#2410]
- Update logo [#2547]
- Never close stale issues/prs [#2400]
- Fix typos in the whole codebase [#2217]
- Fixed typo and rearragend items in the issue template [#2197]
- Change Stale daysTillClose to 100 years [#2166]
- set stale daysUntilClose to a really big number [#2162]
- Stale set up [#2101]
CMake:
- Fix checks for user-provided CXX flags [#2579]
- Fix FLANN path to lower case [#2576]
- Use pkg-config to find Flann [#2563]
- Update FindBoost versions [#2558]
- Add PCL_BUILD_WITH_QHULL_DYNAMIC_LINKING_WIN32 option [#2552]
- Fix app/CMakeLists to enable Apps under Windows [#2550]
- When configuring with WITH_DOCS, but Doxygen is not available, prevent generation. [#2516]
- CMake: Do not include test targets in PCLConfig.cmake [#2458]
- CMake Set temporarily the policy CMP0074 to OLD [#2454]
- prevent GCC flags propagating to NVCC [#2430]
- Mark visualization as an optional dependency of tools [#2439]
- Do not mark imported libraries as GLOBAL in PCLConfig [#2435]
- Intel fixes [#2432]
- Export
-march=native
for Clang and prevent it from being included during cross compilation. [#2416] - Do not search for PCL components that have been found already [#2428]
- Move SSE compiler options to
PCL_COMPILE_OPTIONS
. Expose PCL as a CMake imported target. [#2100] - Add Visual Studio compiler option /FS for Ninja build [#2414]
- Use rpath in the target's install name [#2241]
- Improve QHull finder script [#2344]
- Fix link order issue with boost [#2236]
- Mark found PCL component libraries and include dirs as advanced [#2235]
- Prevent search for disabled optional dependencies in targets. [#2229]
- Fix installation rules for ml module [#2192]
- Fix conditional branch of Visual C++ 2017 [#2121]
- Add *_USE_STATIC options to PCLConfig [#2086]
- Add search path suffixes for Vcpkg [#2085]
- Update finder scripts for Ensenso, OpenNI, and OpenNI2 [#2061]
- Fix PACKAGE to include cmake/Modules directory [#2053]
- Unifies Find scripts in PCLConfig [#1421]
- CUDA 9 Arch Flags [#2047]
- Suppress log when PCL_FIND_QUIETLY is turned on. [#2032]
- fix /MP option not generated for Visual Studio. [#2031]
- Generate pkgconfig for 2d module [#1979]
- Update Find Boost [#1972]
- Added CUDA compute capability 5.3 [#1929]
- Fix issue with finding pcl deployed out of path [#1923]
- Add new gtest path [#1920]
libpcl_2d:
- Avoid huge index jumps in
RandomSample
. Removeio
dependency from2d
. [#2141] - Fix header names [#2079]
- Generate pkgconfig for 2d module [#1979]
libpcl_common:
- Fix docstrings [#2591]
- Throw an early exception to prevent divide by zero error (#2481) [#2530]
- Relax requirements in eigen22d test. Always provide a normalized result in
pcl::transformPlane
. [#2503] - [behavior] PointCloudDepthAndRGBtoXYZRGBA: initialize with the default alpha value (fix #2476) [#2533]
- Throw
UnorganizedPointCloudException
inPointCloud::at
[#2521] - Add missing const specifier for getters in
PCLBase
. [#2502] - swap the header in pcl::PointCloud::swap [#2499]
- Add header guard and copyright info to polynomial_calculations.hpp [#2500]
- Add
header
to the print output ofPointCloud
[#2498] - Fix force recalculation option in
BivariatePolynomialT::calculateGradient
[#2479] - Fix various errors and typos in the docstrings and tutorials [#2486]
- Fix a bug in
PointRGBtoI
color conversion [#2475] - Provide
operator<<
forIntensity32u
point type [#2467] - [behavior]
PointXYZRGBL
label
field is now default constructed to 0 [#2462] - Add some missing eigen alignment operators [#2433]
- Intel fixes [#2432]
- [new-feature] Add Viridis color LUT [#2420]
- Remove malloc header to restore builds on BSDs [#2374]
- Add support for multiple extensions in
parse_file_extension_argument ()
. [#2347] - Improve speed of
transformPointCloud/WithNormals()
functions [#2247] - Add RGB constructor that takes R, G, and B components [#2329]
- [abi] Improved docstrings and error messages [#2300]
- [abi] Modified
GlasbeyLUT
indexing type tosize_t
[#2297] - Add GASDSignatures to
PCL_POINT_TYPES
andPCL_FEATURE_POINTTYPES
macros. [#2295] - [PARSE] Constness of the API [#2224]
- Fix two "unreachable code" warnings in
pca.hpp
[#2219] - Fix covariance calculation in PCA [#2130]
- [abi][deprecation] Provide proper EuclideanClusterComparator method depreciation. New Pragma macro. New Deprecated type. [#2096]
- [removal] Remove deprecated ros headers [#2075]
- Suppress (maybe) uninitialized warning [#2073]
- [removal] Removal of PCA deprecated constructor [#2070]
- [gcc] fixes -Wimplicit-fallthrough: common/io.h [#2041]
- Include pcl/point_cloud.h and pcl/point_types.h headers. [#1962]
- Add test for macro _USE_MATH_DEFINES. [#1956]
- instantiate: remove duplicate macro definition. Fixes #1924. [#1925]
libpcl_cuda:
- add support for latest Turing gpu and cuda 10 [#2560]
- Fix compilation issues with CUDA 9.1 [#2212]
- Fix some CUDA 9 related errors [#2181]
- Added CUDA compute capability 5.3 [#1929]
libpcl_features:
- Solve issues with failing features tests [#2544]
- Update the OpenMP implementations of normal and FPFH estimation [#2278]
- Make
MomentOfInertia
instantiations consistent with the rest of the library [#2266] - Docstring corrections [#2143]
- Improve Doxygen comments for HistogramInterpolationMethod [#2111]
- [new-feature] Add GASD global point cloud descriptor [#1652]
- Suppress (maybe) uninitialized warning [#2073]
- [new-feature] FLARELocalReferenceFrameEstimation class added [#1571]
- fix missing include file: from_meshes.h is using pcl::Vertices in it [#2009]
- Typo [#1968]
libpcl_filters:
- Corrections to CovarianceSampling class and corresponding test [#2512]
- Add the missing const modifier in
Filter::getRemovedIndices
. [#2523] - Add const modifiers to getters of pcl::PassThrough [#2524]
- Add const specifiers for getters in VoxelGrid. [#2526]
- Copy the pose info from the input cloud to the output cloud in NaN removal functions [#2522]
- Fix misc. typos in tutorials and docstrings [#2529]
- Fix various errors and typos in the docstrings and tutorials [#2486]
- Add some missing eigen alignment operators [#2433]
- Add PointNormal to ExtractIndices Instantiate Types [#2389]
- [abi] Improved docstrings and error messages [#2300]
- Public access to
VoxelGrid
boost pointer. [#2205] - Add const qualifiers to getters in
filter_indices.h
[#2193] - Avoid huge index jumps in
RandomSample
. Removeio
dependency from2d
. [#2141] - [removal] Removal of deprecated code in filters, io, surface and visualization modules [#2077]
- Suppress unused parameter warning [#2074]
- Suppress sign compare warnings [#2068]
- Transformation Fix for BoxClipper3D [#1961]
- [abi] Fixes remove_indices in UniformSampling [#1902]
- Inherit StatisticalOutlierRemoval from FilterIndices [#1663]
libpcl_gpu:
- Remove sm_72 from CUDA 9.0 [#2567]
- Fix compilation issues with CUDA 9.1 [#2212]
- Fix compilation error in
gpu_people
code [#2199] - Fix some CUDA 9 related errors [#2181]
- [abi] Allow specifying decimation step in convertToTsdfCloud [#2099]
- Fix the incorrect include directory. [#2024]
- need to include instantiate.hpp to use PCL_INSTANTIATE [#1943]
- Added CUDA compute capability 5.3 [#1929]
- Fix issue #1674 [#1926]
libpcl_io:
- Suppress miscelanious warnings [#2556]
- vtk2mesh: Add parsing support to the new RGBA scalar field added in vtk8 [#2492]
- Fix various errors and typos in the docstrings and tutorials [#2486]
- Improved obj file parsing efficiency. Make parsing robust against situations where there are more normals than points. Added unit tests. [#2450]
pcl::PCDReader::readHeader()
changenr_points
type tosize_t
to avoid possibleint32
overflow [#2408]- Fix raw_fallocate for Android and deal with unsupported filesystems. [#2363]
- Add low_level_io.h to the header list of the io module [#2356]
- Created header for low level I/O helpers. Fix for
::posix_fallocate
on Mac OSX [#2354] - Added warnings when the input data is too large for compressed pcds [#2323]
- Allocate disk space with posix_fallocate before mmapping. [#2325]
- Fix cmake warning: Logical block closes with mis-matching arguments [#2320]
- Added PCL_IO_ENABLE_MAND_LOCKING cmake flag. [#2315]
- Added missing 8 bytes to compressed binary pcd length. [#2281]
- Remove useless size check in PLYReader::endHeaderCallback() [#2246]
- [behavior] Fix PLYReader is_dense behavior [#2133]
EnsensoGrabber
uint
is undefined in Visual studio. [#2223]- Add protection from invalid WIDTH values in PCD reader [#2195]
PLYReader
Cast cloud point step as 64-bit integer [#2161]OpenNI2Device
Add device sensor check for IR and depth modesetting [#2150]- Adds a check for when CreateFileMappingA fails [#2146]
PCDWriter
changedtoff
tosize_t
inwriteBinaryCompressed
[#2144]- Prevent POINTS field parsing before point_step is specified [#2131]
- Check COUNT value specified in PCD files [#2126]
- Prevent mmapping more than the original PCD file size [#2125]
- [api][deprecation] Add support pcl::PointXYZRGBA to pcl::VLPGrabber. Deprecate rgb signatures. [#2102]
- [removal] Removal of deprecated code in filters, io, surface and visualization modules [#2077]
- Suppress strict alias warning [#2072]
- Suppress unused parameter warnings [#2067]
- [abi] Removed unused member from ply_parser [#2066]
- Suppress control reaches end of non-void function in io.h [#2057]
- Modify STRICT_ALIGN because macro expansion w/defined is undefined [#2043]
- Add necessary boost headers to pcl/io to build in CUDA mode [#2025]
- Fix MSVC compile issue related with ssize_t [#2027]
- Adds in-memory PCD serialization/deserialization; de-duplicates PCDReader::readHeader(). (take #2) [#1986]
libpcl_kdtree:
- Consistent ptr typedefs for kd tree flann [#1607]
libpcl_keypoints:
- Add
TrajkovicKeypoint2D/3D
to CMake build [#2179]
libpcl_ml:
- Fix installation rules for ml module [#2192]
libpcl_octree:
- [behavior] Reverse octree's depth first iterator order [#2332]
- Fix various errors and typos in the docstrings and tutorials [#2486]
- Make test conditions consistent with
OctreePointCloudSearch::boxSearch()
implementation. [#2457] octree_key.h
suppress GCC 8 ignored-qualifier warning [#2405]- [api][deprecation][new-feature] Implementation of the iterator 'OctreeLeafNodeBreadthIterator'. [#2204]
- [abi][new-feature] Implementation of the iterator 'OctreeFixedDepthIterator'. [#1983]
- Octree Iterator begin/end method and added tests [#2174]
- Remove parametrization of end iterators [#2168]
- Fix docstrings in octree test [#2173]
- [api] OctreeIterators special member revision [#2108]
- Remove unused variable from octree_viewer [#2069]
- Silence compile warning by removing superfluous call to std::max() [#2014]
- [OCTREE] Add bounding box checks in isVoxelOccupiedAtPoint() and deleteVoxelAtPoint() [#1976]
libpcl_outofcore:
- Explictly use mt19937 random generator for boost 1.67. [#2338]
- Fixed queryBBIncludes_subsample [#1988]
libpcl_people:
- Misleading indentation [#2034]
libpcl_recognition:
- Relax threshold in Hough3DGrouping test [#2507]
- Add some missing eigen alignment operators [#2433]
- Setting the resolution of the occupancy grid [#2273]
- Inline helper function gcCorrespSorter() [#2248]
- Misleading indentation [#2034]
libpcl_registration:
- Remove std::binary_function from Registration [#2599]
- Suppress miscelanious warnings [#2556]
- Relax precision requirements on TransformationEstimationLM test. [#2497]
- Relax rejector threshold in JointIterativeClosestPoint test. [#2496]
- Add some missing eigen alignment operators [#2433]
- Remove explicit initialization of
update_visualizer_
inRegistration
[#2423] - [removal] Remove registration module deprecated methods [#2076]
- Suppress (maybe) uninitialized warning [#2073]
- Remove unreachable code in DefaultConvergenceCriteria [#1967]
- [abi] Added option to specify translation and rotation convergence deltas in ICP and NDT algorithms. [#1724]
libpcl_sample_consensus:
- Revise direction test in SampleConsensusModelParallelLine/RANSAC to be consistent with set tolerance. [#2491]
- Fix error in SampleConsensusModelLine::isSampleGood [#2488]
- [api] Const-qualify most of the methods in SAC model classes [#2270]
- [removal] Remove deprecated functions and variables from SAC module [#2071]
libpcl_search:
- Correct testPoint for organized nearest neighbor search [#2198]
libpcl_segmentation:
- Add some missing eigen alignment operators [#2433]
- Add setter/getter for search method in ConditionalEuclideanClustering [#2437]
- Increase threshold for expected value in test_non_linear [#2424]
- Avoid infinite recursion in getPointCloudDifference [#2402]
- Correct setting of is_dense flag in SegmentDifferences. Deprecate unused parameter in method. [#2380]
- Dereference shared_ptr, fix for GCC8 [#2299]
- [abi][deprecation] Provide proper EuclideanClusterComparator method depreciation. New Pragma macro. New Deprecated type. [#2096]
- Removed normal related accessors and types from EuclideanClusterComparator [#1542]
libpcl_simulation:
- Add
const
qualifiers toRangeLikelihood
getters. [#2411] - [api] Use GLuint rather than size_t to represent OpenGL indices. [#2238]
- Support both RGB and RGBA colors in mesh loading [#2036]
- [abi] Redo: Simulation: enable returning of organized point clouds [#1687]
- Simulation: more access to camera parameters [#1650]
libpcl_surface:
- Fixed memory leak in Poisson's BSplineData [#2572]
- Suppress miscelanious warnings [#2556]
- Add some missing eigen alignment operators [#2433]
- Make pcl::MovingLeastSquares thread-safe [#2418]
- [abi] Missing pcl::MovingLeastSquaresOMP declaration without /openmp [#2324]
- [abi] Improved docstrings and error messages [#2300]
- opennurbs: fix
ON_Curve::EvaluatePoint
calculation [#2185] - [removal] Removal of deprecated code in filters, io, surface and visualization modules [#2077]
- Suppress (maybe) uninitialized warning [#2073]
- Suppress sign compare warnings [#2068]
- Fix incorrect Ptr/ConstPtr typedefs in MovingLeastSquaresOMP [#2055]
- Replace float indices with Eigen Index [#2017]
- [api][deprecation][new-feature] Add new mls projection method. Deprecated
MovingLeastSquares::setPolynomialFit()
. [#1960] - Avoid phantom surfces in marching cubes hoppe [#1874]
- [api] Add ability to cache mls results [#1952]
PCL Apps:
- Suppress miscelanious warnings [#2556]
- Fix 3d_rec_framework compilation error [#2495]
- Fix compilation issue in point cloud editor. [#2490]
demean_cloud
correct usage message. [#2443]- Do not use deprecated method in openni_mls_smoothing app [#2421]
- add windows.h for includes GL/gl.h; handle cancel for denoiseWidget. [#2267]
- Add missing dependecy to apps [#2251]
- Suppress the final set of warnings in pcl apps [#2082]
- [abi] More warning suppression in pcl apps [#2080]
PCL Docs:
- Fix misc. typos in tutorials and docstrings [#2529]
- Fix various errors and typos in the docstrings and tutorials [#2486]
- Docstring typos' corrections. [#2449]
demean_cloud
correct usage message. [#2443]- Set IMAGE_PATH explicitly in Doxygen config [#2442]
- Switch to using client-based search in Doxygen [#2391]
- [api] Misc. typos (cont.) [#2215]
- doc: misc. typos [#2213]
- Add url to API/ABI compatibity report [#2116]
- Improve Doxygen comments for HistogramInterpolationMethod [#2111]
- Update organized.h [#1965]
- Typo [#1968]
- Fixed spelling and grammar errors [#1959]
- Fixed error in documentation. [#1957]
PCL Tutorials:
- Fix dataset link in conditional euclidean clustering tutorial [#2546]
- Fix dead links in Walkthrough tutorial [#2532]
- Simplify explanation of PointXYZ structure in "Writing PCD" tutorial [#2534]
- Fix misc. typos in tutorials and docstrings [#2529]
- Fix a dead link to Radu Rusu's dissertation in the tutorial. [#2508]
- Fix various errors and typos in the docstrings and tutorials [#2486]
- Fix link to Institut Maupertuis's ensenso_extrinsic_calibration repo [#2447]
- Add settings for hypothesis verification [#2274]
- Fix ICP tutorial [#2244]
- Fix error in example code for estimate set of surface for a subset of points in the input dataset [#2203]
- Update message about legacy point cloud types in tutorial [#2175]
- Add descriptor unpacking to GASD tutorial [#2167]
- Fix convert to
Eigen::Map<const Eigen::Vector3f>
from Normal ofpcl::PointXYZINormal
[#2128] - Fix the tutorial qt_visualizer compilation issue: qt4 -> qt5. [#2051]
- Fix several documentation typos [#2020]
- Replace literal include of wrong CMakeLists file with correct script [#1971]
- Update Ensenso tutorial for Ensenso X devices [#1933]
PCL Examples:
- Suppress strict alias warning [#2072]
- Suppress (maybe) uninitialized warning [#2073]
- Fix CPC/LCCP segmentation examples for VTK 7.1 [#2063]
PCL Tests:
- Corrections to Windows unit tests. [#2596]
- Relax eigen22f test criteria [#2553]
- Solve issues with failing features tests [#2544]
- Relax requirements in eigen22d test. Always provide a normalized result in
pcl::transformPlane
. [#2503] - Enable tests_2d and tests_io in AppVeyor. [#2505]
- Relax threshold in Hough3DGrouping test [#2507]
- Relax precision requirements on TransformationEstimationLM test. [#2497]
- Relax rejector threshold in JointIterativeClosestPoint test. [#2496]
- vtk2mesh: Add parsing support to the new RGBA scalar field added in vtk8 [#2492]
- Revise direction test in SampleConsensusModelParallelLine/RANSAC to be consistent with set tolerance. [#2491]
- Make test conditions consistent with
OctreePointCloudSearch::boxSearch()
implementation. [#2457] - Increase threshold for expected value in test_non_linear [#2424]
- Replace floating point numerals when using
boost::posix_time
. Fix compatibility with Boost 1.67. [#2422] - Cleanup and improve unit test coverage for transformPointCloud functions [#2245]
- Fixes and new assertion macro in "pcl_tests.h" [#2237]
- Add new gtest path [#1920]
PCL Tools:
- Allow the
pcl_uniform_sampling
tool to deal with several formats (PCD, PLY and VTK) as input or output point cloud [#2348] - mesh_sampling tool: Add support for colors [#2257]
- Error message on non-recognized feature names [#2178]
- Suppress sign compare warnings [#2068]
- [OCTREE] Compute accurately the centroids of octree in 'pcl_octree_viewer' [#1981]
- [api][deprecation][new-feature] Add new mls projection method. Deprecated
MovingLeastSquares::setPolynomialFit()
. [#1960] - [OCTREE] Fix pcl_octree_viewer [#1973]
- [OCTREE] Remove a useless field in octree_viewer. [#1980]
CI:
- Disable Travis email notifications. Update PCL logo endpoint. [#2535]
- Migrate Travis to the new travis-ci.com platform [#2538]
- Enable tests_2d and tests_io in AppVeyor. [#2505]
- Fix docs on Travis CI. [#2441]
- Disable SSE flags in AppVeyor. [#2438]
- Split (yet again) Travis test job into two and tweak timings in building apps [#2182]
- [new-feature] Enable Global Tests on Windows CI [#2137]
- Travis merge test jobs. Expose VTK include directory for the visualization module. [#2163]
- Remove unnecessary PPAs and packages from Travis [#2153]
- AppVeyor - Change to simple style of specify triplet [#2135]
- Initial Appveyor CI integration [#2083]
- Change Travis to use pip3 for installing sphinx [#2124]
- [TRAVIS] Enable the build of apps. [#2012]
- [TRAVIS] Enable the build of tools. [#2007]
- Disable tools build in CI. [#2003]