Bug 281193 - devel/rapidfuzz-cpp: fix tests with libc++ 19
Summary: devel/rapidfuzz-cpp: fix tests with libc++ 19
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Dimitry Andric
URL:
Keywords:
Depends on:
Blocks: 280562
  Show dependency treegraph
 
Reported: 2024-09-01 17:14 UTC by Dimitry Andric
Modified: 2024-09-02 07:55 UTC (History)
0 users

See Also:
yuri: maintainer-feedback+


Attachments
devel/rapidfuzz-cpp: fix tests with libc++ 19 (36.69 KB, patch)
2024-09-01 17:17 UTC, Dimitry Andric
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Dimitry Andric freebsd_committer freebsd_triage 2024-09-01 17:14:50 UTC
As noted in the libc++ 19 release notes [1], std::char_traits<> is now
only provided for char, char8_t, char16_t, char32_t and wchar_t, and any
instantiation for other types will fail.

This causes ports using devel/rapidfuzz-cpp to fail to compile with
clang 19 and libc++ 19, resulting in errors similar to:

    /usr/include/c++/v1/string:820:42: error: implicit instantiation of undefined template 'std::char_traits<unsigned int>'
      820 |   static_assert(is_same<_CharT, typename traits_type::char_type>::value,
          |                                          ^
    /wrkdirs/usr/ports/devel/py-rapidfuzz/work-py311/rapidfuzz-3.9.6/src/rapidfuzz/cpp_common.hpp:711:25: note: in instantiation of template class 'std::basic_string<unsigned int>' requested here
      711 |         auto proc_str = rf::opcodes_apply<uint32_t>(ops, s1, s2);
          |                         ^

The devel/rapidfuzz-cpp port itself does "build" since it only gathers a
bunch of headers and installs them into the stage area, but running
'make test' also fails similarly:

  /usr/include/c++/v1/string:820:42: error: implicit instantiation of undefined template 'std::char_traits<unsigned char>'
    820 |   static_assert(is_same<_CharT, typename traits_type::char_type>::value,
        |                                          ^
  /wrkdirs/usr/ports/devel/rapidfuzz-cpp/work/rapidfuzz-cpp-3.0.5/test/distance/examples/ocr.cpp:3:28: note: in instantiation of template class 'std::basic_string<unsigned char>' requested here
      3 | std::basic_string<uint8_t> ocr_example1 = {
        |                            ^
  /usr/include/c++/v1/__fwd/string.h:23:29: note: template is declared here
     23 | struct _LIBCPP_TEMPLATE_VIS char_traits;
        |                             ^

Unfortunately rapidfuzz-cpp makes heavy use of the no-longer-existing
`std::basic_string<uint8_t>`, so I had to do quite a lots of search and
replace operations, replacing these with equivalent `std::vector` types.

Note that as far as I can see, only devel/py-rapidfuzz is a consumer of
this port, applying these changes should not disrupt anything else. I
have a follow-up patch for that port too.

[1] https://libcxx.llvm.org/ReleaseNotes/19.html#deprecations-and-removals
Comment 1 Dimitry Andric freebsd_committer freebsd_triage 2024-09-01 17:17:44 UTC
Created attachment 253250 [details]
devel/rapidfuzz-cpp: fix tests with libc++ 19
Comment 2 Yuri Victorovich freebsd_committer freebsd_triage 2024-09-02 05:23:17 UTC
Thanks for the patch.
Approved, please commit it.
Comment 3 commit-hook freebsd_committer freebsd_triage 2024-09-02 07:51:34 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9830c5e79dca5b0a62ab7cbdd4c1e19739bbb84b

commit 9830c5e79dca5b0a62ab7cbdd4c1e19739bbb84b
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2024-09-01 15:03:00 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2024-09-02 07:45:38 +0000

    devel/rapidfuzz-cpp: fix tests with libc++ 19

    As noted in the libc++ 19 release notes [1], std::char_traits<> is now
    only provided for char, char8_t, char16_t, char32_t and wchar_t, and any
    instantiation for other types will fail.

    This causes ports using devel/rapidfuzz-cpp to fail to compile with
    clang 19 and libc++ 19, resulting in errors similar to:

        /usr/include/c++/v1/string:820:42: error: implicit instantiation of undefined template 'std::char_traits<unsigned int>'
          820 |   static_assert(is_same<_CharT, typename traits_type::char_type>::value,
              |                                          ^
        /wrkdirs/usr/ports/devel/py-rapidfuzz/work-py311/rapidfuzz-3.9.6/src/rapidfuzz/cpp_common.hpp:711:25: note: in instantiation of template class 'std::basic_string<unsigned int>' requested here
          711 |         auto proc_str = rf::opcodes_apply<uint32_t>(ops, s1, s2);
              |                         ^

    The devel/rapidfuzz-cpp port itself does "build" since it only gathers a
    bunch of headers and installs them into the stage area, but running
    'make test' also fails similarly:

      /usr/include/c++/v1/string:820:42: error: implicit instantiation of undefined template 'std::char_traits<unsigned char>'
        820 |   static_assert(is_same<_CharT, typename traits_type::char_type>::value,
            |                                          ^
      /wrkdirs/usr/ports/devel/rapidfuzz-cpp/work/rapidfuzz-cpp-3.0.5/test/distance/examples/ocr.cpp:3:28: note: in instantiation of template class 'std::basic_string<unsigned char>' requested here
          3 | std::basic_string<uint8_t> ocr_example1 = {
            |                            ^
      /usr/include/c++/v1/__fwd/string.h:23:29: note: template is declared here
         23 | struct _LIBCPP_TEMPLATE_VIS char_traits;
            |                             ^

    Unfortunately rapidfuzz-cpp makes heavy use of the no-longer-existing
    `std::basic_string<uint8_t>`, so I had to do quite a lots of search and
    replace operations, replacing these with equivalent `std::vector` types.

    Note that as far as I can see, only devel/py-rapidfuzz is a consumer of
    this port, applying these changes should not disrupt anything else. I
    have a follow-up patch for that port too.

    [1] https://libcxx.llvm.org/ReleaseNotes/19.html#deprecations-and-removals

    PR:             281193
    Approved by:    yuri (maintainer)
    MFH:            2024Q3

 devel/rapidfuzz-cpp/Makefile                       |  1 +
 .../files/patch-bench_bench-jarowinkler.cpp (new)  | 14 ++++
 .../files/patch-bench_bench-lcs.cpp (new)          | 14 ++++
 .../files/patch-bench_bench-levenshtein.cpp (new)  | 14 ++++
 .../patch-extras_rapidfuzz__amalgamated.hpp (new)  | 53 +++++++++++++
 ..._fuzz__damerau__levenshtein__distance.cpp (new) | 33 ++++++++
 .../patch-fuzzing_fuzz__indel__distance.cpp (new)  | 20 +++++
 .../patch-fuzzing_fuzz__indel__editops.cpp (new)   | 11 +++
 .../patch-fuzzing_fuzz__jaro__similarity.cpp (new) | 48 ++++++++++++
 .../patch-fuzzing_fuzz__lcs__similarity.cpp (new)  | 27 +++++++
 ...h-fuzzing_fuzz__levenshtein__distance.cpp (new) | 40 ++++++++++
 ...ch-fuzzing_fuzz__levenshtein__editops.cpp (new) | 20 +++++
 .../patch-fuzzing_fuzz__osa__distance.cpp (new)    | 33 ++++++++
 .../files/patch-fuzzing_fuzzing.hpp (new)          | 45 +++++++++++
 .../files/patch-rapidfuzz_distance.hpp (new)       | 53 +++++++++++++
 .../files/patch-test_common.hpp (new)              | 23 ++++++
 .../patch-test_distance_examples_ocr.cpp (new)     | 19 +++++
 .../patch-test_distance_examples_ocr.hpp (new)     | 12 +++
 ...ance_examples_pythonLevenshteinIssue9.cpp (new) | 20 +++++
 ...ance_examples_pythonLevenshteinIssue9.hpp (new) | 14 ++++
 .../patch-test_distance_tests-Hamming.cpp (new)    | 18 +++++
 .../patch-test_distance_tests-Indel.cpp (new)      | 11 +++
 ...patch-test_distance_tests-Levenshtein.cpp (new) | 88 ++++++++++++++++++++++
 23 files changed, 631 insertions(+)
Comment 4 commit-hook freebsd_committer freebsd_triage 2024-09-02 07:51:42 UTC
A commit in branch 2024Q3 references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ea00294d911ad7e0f7a9221413b1edc5c63670f6

commit ea00294d911ad7e0f7a9221413b1edc5c63670f6
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2024-09-01 15:03:00 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2024-09-02 07:50:55 +0000

    devel/rapidfuzz-cpp: fix tests with libc++ 19

    As noted in the libc++ 19 release notes [1], std::char_traits<> is now
    only provided for char, char8_t, char16_t, char32_t and wchar_t, and any
    instantiation for other types will fail.

    This causes ports using devel/rapidfuzz-cpp to fail to compile with
    clang 19 and libc++ 19, resulting in errors similar to:

        /usr/include/c++/v1/string:820:42: error: implicit instantiation of undefined template 'std::char_traits<unsigned int>'
          820 |   static_assert(is_same<_CharT, typename traits_type::char_type>::value,
              |                                          ^
        /wrkdirs/usr/ports/devel/py-rapidfuzz/work-py311/rapidfuzz-3.9.6/src/rapidfuzz/cpp_common.hpp:711:25: note: in instantiation of template class 'std::basic_string<unsigned int>' requested here
          711 |         auto proc_str = rf::opcodes_apply<uint32_t>(ops, s1, s2);
              |                         ^

    The devel/rapidfuzz-cpp port itself does "build" since it only gathers a
    bunch of headers and installs them into the stage area, but running
    'make test' also fails similarly:

      /usr/include/c++/v1/string:820:42: error: implicit instantiation of undefined template 'std::char_traits<unsigned char>'
        820 |   static_assert(is_same<_CharT, typename traits_type::char_type>::value,
            |                                          ^
      /wrkdirs/usr/ports/devel/rapidfuzz-cpp/work/rapidfuzz-cpp-3.0.5/test/distance/examples/ocr.cpp:3:28: note: in instantiation of template class 'std::basic_string<unsigned char>' requested here
          3 | std::basic_string<uint8_t> ocr_example1 = {
            |                            ^
      /usr/include/c++/v1/__fwd/string.h:23:29: note: template is declared here
         23 | struct _LIBCPP_TEMPLATE_VIS char_traits;
            |                             ^

    Unfortunately rapidfuzz-cpp makes heavy use of the no-longer-existing
    `std::basic_string<uint8_t>`, so I had to do quite a lots of search and
    replace operations, replacing these with equivalent `std::vector` types.

    Note that as far as I can see, only devel/py-rapidfuzz is a consumer of
    this port, applying these changes should not disrupt anything else. I
    have a follow-up patch for that port too.

    [1] https://libcxx.llvm.org/ReleaseNotes/19.html#deprecations-and-removals

    PR:             281193
    Approved by:    yuri (maintainer)
    MFH:            2024Q3

    (cherry picked from commit 9830c5e79dca5b0a62ab7cbdd4c1e19739bbb84b)

 devel/rapidfuzz-cpp/Makefile                       |  1 +
 .../files/patch-bench_bench-jarowinkler.cpp (new)  | 14 ++++
 .../files/patch-bench_bench-lcs.cpp (new)          | 14 ++++
 .../files/patch-bench_bench-levenshtein.cpp (new)  | 14 ++++
 .../patch-extras_rapidfuzz__amalgamated.hpp (new)  | 53 +++++++++++++
 ..._fuzz__damerau__levenshtein__distance.cpp (new) | 33 ++++++++
 .../patch-fuzzing_fuzz__indel__distance.cpp (new)  | 20 +++++
 .../patch-fuzzing_fuzz__indel__editops.cpp (new)   | 11 +++
 .../patch-fuzzing_fuzz__jaro__similarity.cpp (new) | 48 ++++++++++++
 .../patch-fuzzing_fuzz__lcs__similarity.cpp (new)  | 27 +++++++
 ...h-fuzzing_fuzz__levenshtein__distance.cpp (new) | 40 ++++++++++
 ...ch-fuzzing_fuzz__levenshtein__editops.cpp (new) | 20 +++++
 .../patch-fuzzing_fuzz__osa__distance.cpp (new)    | 33 ++++++++
 .../files/patch-fuzzing_fuzzing.hpp (new)          | 45 +++++++++++
 .../files/patch-rapidfuzz_distance.hpp (new)       | 53 +++++++++++++
 .../files/patch-test_common.hpp (new)              | 23 ++++++
 .../patch-test_distance_examples_ocr.cpp (new)     | 19 +++++
 .../patch-test_distance_examples_ocr.hpp (new)     | 12 +++
 ...ance_examples_pythonLevenshteinIssue9.cpp (new) | 20 +++++
 ...ance_examples_pythonLevenshteinIssue9.hpp (new) | 14 ++++
 .../patch-test_distance_tests-Hamming.cpp (new)    | 18 +++++
 .../patch-test_distance_tests-Indel.cpp (new)      | 11 +++
 ...patch-test_distance_tests-Levenshtein.cpp (new) | 88 ++++++++++++++++++++++
 23 files changed, 631 insertions(+)