scrapinghub / python-crfsuite

A python binding for crfsuite
MIT License
770 stars 222 forks source link

Cannot build 0.9.10 on M1/M2 Macbook with Python 3.12.6 #164

Open bachya opened 4 days ago

bachya commented 4 days ago

Running on macOS Sequoia 15.0.

❯ pip install python-crfsuite
Collecting python-crfsuite
  Downloading python-crfsuite-0.9.10.tar.gz (478 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: python-crfsuite
  Building wheel for python-crfsuite (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for python-crfsuite (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [421 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build/lib.macosx-11.0-arm64-cpython-312/pycrfsuite
      copying pycrfsuite/_dumpparser.py -> build/lib.macosx-11.0-arm64-cpython-312/pycrfsuite
      copying pycrfsuite/_logparser.py -> build/lib.macosx-11.0-arm64-cpython-312/pycrfsuite
      copying pycrfsuite/__init__.py -> build/lib.macosx-11.0-arm64-cpython-312/pycrfsuite
      running build_ext
      building 'pycrfsuite._pycrfsuite' extension
      creating build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/cqdb/src
      creating build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src
      creating build/temp.macosx-11.0-arm64-cpython-312/crfsuite/swig
      creating build/temp.macosx-11.0-arm64-cpython-312/liblbfgs/lib
      creating build/temp.macosx-11.0-arm64-cpython-312/pycrfsuite
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/cqdb/src/cqdb.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/cqdb/src/cqdb.o
      crfsuite/lib/cqdb/src/cqdb.c:552:26: warning: variable 'ksize' set but not used [-Wunused-but-set-variable]
        552 |                 uint32_t ksize;
            |                          ^
      1 warning generated.
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/cqdb/src/lookup3.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/cqdb/src/lookup3.o
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/crf1d_context.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crf1d_context.o
      crfsuite/lib/crf/src/crf1d_context.c:71:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
         71 |         if (ret = crf1dc_set_num_items(ctx, T)) {
            |             ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_context.c:71:17: note: place parentheses around the assignment to silence this warning
         71 |         if (ret = crf1dc_set_num_items(ctx, T)) {
            |                 ^
            |             (                                 )
      crfsuite/lib/crf/src/crf1d_context.c:71:17: note: use '==' to turn this assignment into an equality comparison
         71 |         if (ret = crf1dc_set_num_items(ctx, T)) {
            |                 ^
            |                 ==
      crfsuite/lib/crf/src/crf1d_context.c:438:38: warning: unused variable 'cur' [-Wunused-variable]
        438 |     const floatval_t *state = NULL, *cur = NULL, *trans = NULL;
            |                                      ^~~
      crfsuite/lib/crf/src/crf1d_context.c:440:15: warning: unused variable 'L' [-Wunused-variable]
        440 |     const int L = ctx->num_labels;
            |               ^
      3 warnings generated.
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/crf1d_encode.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crf1d_encode.o
      crfsuite/lib/crf/src/crf1d_encode.c:136:15: warning: unused variable 'L' [-Wunused-variable]
        136 |     const int L = crf1de->num_labels;
            |               ^
      crfsuite/lib/crf/src/crf1d_encode.c:172:15: warning: unused variable 'L' [-Wunused-variable]
        172 |     const int L = crf1de->num_labels;
            |               ^
      crfsuite/lib/crf/src/crf1d_encode.c:266:22: warning: unused variable 'ctx' [-Wunused-variable]
        266 |     crf1d_context_t* ctx = crf1de->ctx;
            |                      ^~~
      crfsuite/lib/crf/src/crf1d_encode.c:268:15: warning: unused variable 'L' [-Wunused-variable]
        268 |     const int L = crf1de->num_labels;
            |               ^
      crfsuite/lib/crf/src/crf1d_encode.c:319:22: warning: unused variable 'ctx' [-Wunused-variable]
        319 |     crf1d_context_t* ctx = crf1de->ctx;
            |                      ^~~
      crfsuite/lib/crf/src/crf1d_encode.c:321:15: warning: unused variable 'L' [-Wunused-variable]
        321 |     const int L = crf1de->num_labels;
            |               ^
      crfsuite/lib/crf/src/crf1d_encode.c:372:41: warning: unused variable 'trans' [-Wunused-variable]
        372 |     const feature_refs_t *attr = NULL, *trans = NULL;
            |                                         ^~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:551:13: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        551 |     if (ret = crf1dmw_open_features(writer)) {
            |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:551:13: note: place parentheses around the assignment to silence this warning
        551 |     if (ret = crf1dmw_open_features(writer)) {
            |             ^
            |         (                                  )
      crfsuite/lib/crf/src/crf1d_encode.c:551:13: note: use '==' to turn this assignment into an equality comparison
        551 |     if (ret = crf1dmw_open_features(writer)) {
            |             ^
            |             ==
      crfsuite/lib/crf/src/crf1d_encode.c:585:21: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        585 |             if (ret = crf1dmw_put_feature(writer, fmap[k], &feat)) {
            |                 ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:585:21: note: place parentheses around the assignment to silence this warning
        585 |             if (ret = crf1dmw_put_feature(writer, fmap[k], &feat)) {
            |                     ^
            |                 (                                                )
      crfsuite/lib/crf/src/crf1d_encode.c:585:21: note: use '==' to turn this assignment into an equality comparison
        585 |             if (ret = crf1dmw_put_feature(writer, fmap[k], &feat)) {
            |                     ^
            |                     ==
      crfsuite/lib/crf/src/crf1d_encode.c:592:13: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        592 |     if (ret = crf1dmw_close_features(writer)) {
            |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:592:13: note: place parentheses around the assignment to silence this warning
        592 |     if (ret = crf1dmw_close_features(writer)) {
            |             ^
            |         (                                   )
      crfsuite/lib/crf/src/crf1d_encode.c:592:13: note: use '==' to turn this assignment into an equality comparison
        592 |     if (ret = crf1dmw_close_features(writer)) {
            |             ^
            |             ==
      crfsuite/lib/crf/src/crf1d_encode.c:602:13: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        602 |     if (ret = crf1dmw_open_labels(writer, L)) {
            |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:602:13: note: place parentheses around the assignment to silence this warning
        602 |     if (ret = crf1dmw_open_labels(writer, L)) {
            |             ^
            |         (                                   )
      crfsuite/lib/crf/src/crf1d_encode.c:602:13: note: use '==' to turn this assignment into an equality comparison
        602 |     if (ret = crf1dmw_open_labels(writer, L)) {
            |             ^
            |             ==
      crfsuite/lib/crf/src/crf1d_encode.c:609:21: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        609 |             if (ret = crf1dmw_put_label(writer, l, str)) {
            |                 ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:609:21: note: place parentheses around the assignment to silence this warning
        609 |             if (ret = crf1dmw_put_label(writer, l, str)) {
            |                     ^
            |                 (                                      )
      crfsuite/lib/crf/src/crf1d_encode.c:609:21: note: use '==' to turn this assignment into an equality comparison
        609 |             if (ret = crf1dmw_put_label(writer, l, str)) {
            |                     ^
            |                     ==
      crfsuite/lib/crf/src/crf1d_encode.c:615:13: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        615 |     if (ret = crf1dmw_close_labels(writer)) {
            |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:615:13: note: place parentheses around the assignment to silence this warning
        615 |     if (ret = crf1dmw_close_labels(writer)) {
            |             ^
            |         (                                 )
      crfsuite/lib/crf/src/crf1d_encode.c:615:13: note: use '==' to turn this assignment into an equality comparison
        615 |     if (ret = crf1dmw_close_labels(writer)) {
            |             ^
            |             ==
      crfsuite/lib/crf/src/crf1d_encode.c:621:13: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        621 |     if (ret = crf1dmw_open_attrs(writer, B)) {
            |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:621:13: note: place parentheses around the assignment to silence this warning
        621 |     if (ret = crf1dmw_open_attrs(writer, B)) {
            |             ^
            |         (                                  )
      crfsuite/lib/crf/src/crf1d_encode.c:621:13: note: use '==' to turn this assignment into an equality comparison
        621 |     if (ret = crf1dmw_open_attrs(writer, B)) {
            |             ^
            |             ==
      crfsuite/lib/crf/src/crf1d_encode.c:629:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        629 |                 if (ret = crf1dmw_put_attr(writer, amap[a], str)) {
            |                     ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:629:25: note: place parentheses around the assignment to silence this warning
        629 |                 if (ret = crf1dmw_put_attr(writer, amap[a], str)) {
            |                         ^
            |                     (                                           )
      crfsuite/lib/crf/src/crf1d_encode.c:629:25: note: use '==' to turn this assignment into an equality comparison
        629 |                 if (ret = crf1dmw_put_attr(writer, amap[a], str)) {
            |                         ^
            |                         ==
      crfsuite/lib/crf/src/crf1d_encode.c:636:13: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        636 |     if (ret = crf1dmw_close_attrs(writer)) {
            |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:636:13: note: place parentheses around the assignment to silence this warning
        636 |     if (ret = crf1dmw_close_attrs(writer)) {
            |             ^
            |         (                                )
      crfsuite/lib/crf/src/crf1d_encode.c:636:13: note: use '==' to turn this assignment into an equality comparison
        636 |     if (ret = crf1dmw_close_attrs(writer)) {
            |             ^
            |             ==
      crfsuite/lib/crf/src/crf1d_encode.c:642:13: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        642 |     if (ret = crf1dmw_open_labelrefs(writer, L+2)) {
            |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:642:13: note: place parentheses around the assignment to silence this warning
        642 |     if (ret = crf1dmw_open_labelrefs(writer, L+2)) {
            |             ^
            |         (                                        )
      crfsuite/lib/crf/src/crf1d_encode.c:642:13: note: use '==' to turn this assignment into an equality comparison
        642 |     if (ret = crf1dmw_open_labelrefs(writer, L+2)) {
            |             ^
            |             ==
      crfsuite/lib/crf/src/crf1d_encode.c:647:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        647 |         if (ret = crf1dmw_put_labelref(writer, l, edge, fmap)) {
            |             ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:647:17: note: place parentheses around the assignment to silence this warning
        647 |         if (ret = crf1dmw_put_labelref(writer, l, edge, fmap)) {
            |                 ^
            |             (                                                )
      crfsuite/lib/crf/src/crf1d_encode.c:647:17: note: use '==' to turn this assignment into an equality comparison
        647 |         if (ret = crf1dmw_put_labelref(writer, l, edge, fmap)) {
            |                 ^
            |                 ==
      crfsuite/lib/crf/src/crf1d_encode.c:651:13: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        651 |     if (ret = crf1dmw_close_labelrefs(writer)) {
            |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:651:13: note: place parentheses around the assignment to silence this warning
        651 |     if (ret = crf1dmw_close_labelrefs(writer)) {
            |             ^
            |         (                                    )
      crfsuite/lib/crf/src/crf1d_encode.c:651:13: note: use '==' to turn this assignment into an equality comparison
        651 |     if (ret = crf1dmw_close_labelrefs(writer)) {
            |             ^
            |             ==
      crfsuite/lib/crf/src/crf1d_encode.c:657:13: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        657 |     if (ret = crf1dmw_open_attrrefs(writer, B)) {
            |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:657:13: note: place parentheses around the assignment to silence this warning
        657 |     if (ret = crf1dmw_open_attrrefs(writer, B)) {
            |             ^
            |         (                                     )
      crfsuite/lib/crf/src/crf1d_encode.c:657:13: note: use '==' to turn this assignment into an equality comparison
        657 |     if (ret = crf1dmw_open_attrrefs(writer, B)) {
            |             ^
            |             ==
      crfsuite/lib/crf/src/crf1d_encode.c:663:21: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        663 |             if (ret = crf1dmw_put_attrref(writer, amap[a], attr, fmap)) {
            |                 ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:663:21: note: place parentheses around the assignment to silence this warning
        663 |             if (ret = crf1dmw_put_attrref(writer, amap[a], attr, fmap)) {
            |                     ^
            |                 (                                                     )
      crfsuite/lib/crf/src/crf1d_encode.c:663:21: note: use '==' to turn this assignment into an equality comparison
        663 |             if (ret = crf1dmw_put_attrref(writer, amap[a], attr, fmap)) {
            |                     ^
            |                     ==
      crfsuite/lib/crf/src/crf1d_encode.c:668:13: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
        668 |     if (ret = crf1dmw_close_attrrefs(writer)) {
            |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:668:13: note: place parentheses around the assignment to silence this warning
        668 |     if (ret = crf1dmw_close_attrrefs(writer)) {
            |             ^
            |         (                                   )
      crfsuite/lib/crf/src/crf1d_encode.c:668:13: note: use '==' to turn this assignment into an equality comparison
        668 |     if (ret = crf1dmw_close_attrrefs(writer)) {
            |             ^
            |             ==
      crfsuite/lib/crf/src/crf1d_encode.c:508:22: warning: unused variable 'threshold' [-Wunused-variable]
        508 |     const floatval_t threshold = 0.01;
            |                      ^~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:546:9: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
        546 |     if (writer == NULL) {
            |         ^~~~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:691:12: note: uninitialized use occurs here
        691 |     return ret;
            |            ^~~
      crfsuite/lib/crf/src/crf1d_encode.c:546:5: note: remove the 'if' if its condition is always false
        546 |     if (writer == NULL) {
            |     ^~~~~~~~~~~~~~~~~~~~~
        547 |         goto error_exit;
            |         ~~~~~~~~~~~~~~~~
        548 |     }
            |     ~
      crfsuite/lib/crf/src/crf1d_encode.c:532:9: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
        532 |     if (amap == NULL) {
            |         ^~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:691:12: note: uninitialized use occurs here
        691 |     return ret;
            |            ^~~
      crfsuite/lib/crf/src/crf1d_encode.c:532:5: note: remove the 'if' if its condition is always false
        532 |     if (amap == NULL) {
            |     ^~~~~~~~~~~~~~~~~~~
        533 |         goto error_exit;
            |         ~~~~~~~~~~~~~~~~
        534 |     }
            |     ~
      crfsuite/lib/crf/src/crf1d_encode.c:520:9: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
        520 |     if (fmap == NULL) {
            |         ^~~~~~~~~~~~
      crfsuite/lib/crf/src/crf1d_encode.c:691:12: note: uninitialized use occurs here
        691 |     return ret;
            |            ^~~
      crfsuite/lib/crf/src/crf1d_encode.c:520:5: note: remove the 'if' if its condition is always false
        520 |     if (fmap == NULL) {
            |     ^~~~~~~~~~~~~~~~~~~
        521 |         goto error_exit;
            |         ~~~~~~~~~~~~~~~~
        522 |     }
            |     ~
      crfsuite/lib/crf/src/crf1d_encode.c:503:21: note: initialize the variable 'ret' to silence this warning
        503 |     int a, k, l, ret;
            |                     ^
            |                      = 0
      crfsuite/lib/crf/src/crf1d_encode.c:696:5: warning: variable '__ret' set but not used [-Wunused-but-set-variable]
        696 |     BEGIN_PARAM_MAP(params, mode)
            |     ^
      crfsuite/lib/crf/src/params.h:49:13: note: expanded from macro 'BEGIN_PARAM_MAP'
         49 |         int __ret = 0; \
            |             ^
      crfsuite/lib/crf/src/crf1d_encode.c:897:9: warning: unused variable 'i' [-Wunused-variable]
        897 |     int i;
            |         ^
      28 warnings generated.
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/crf1d_feature.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crf1d_feature.o
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/crf1d_model.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crf1d_model.o
      crfsuite/lib/crf/src/crf1d_model.c:487:21: warning: unused variable 'offset' [-Wunused-variable]
        487 |     uint32_t n = 0, offset = 0;
            |                     ^~~~~~
      crfsuite/lib/crf/src/crf1d_model.c:594:21: warning: unused variable 'offset' [-Wunused-variable]
        594 |     uint32_t n = 0, offset = 0;
            |                     ^~~~~~
      crfsuite/lib/crf/src/crf1d_model.c:691:13: warning: comparison of integers of different signs: 'int' and 'uint32_t' (aka 'unsigned int') [-Wsign-compare]
        691 |     if (fid != hfeat->num) {
            |         ~~~ ^  ~~~~~~~~~~
      3 warnings generated.
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/crf1d_tag.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crf1d_tag.o
      crfsuite/lib/crf/src/crf1d_tag.c:72:15: warning: unused variable 'L' [-Wunused-variable]
         72 |     const int L = crf1dt->num_labels;
            |               ^
      1 warning generated.
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/crfsuite.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crfsuite.o
      crfsuite/lib/crf/src/crfsuite.c:322:14: warning: unused function 'safe_strncpy' [-Wunused-function]
        322 | static char *safe_strncpy(char *dst, const char *src, size_t n)
            |              ^~~~~~~~~~~~
      1 warning generated.
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/crfsuite_train.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crfsuite_train.o
      crfsuite/lib/crf/src/crfsuite_train.c:135:11: warning: unused variable 'algorithm' [-Wunused-variable]
        135 |     char *algorithm = NULL;
            |           ^~~~~~~~~
      1 warning generated.
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/dataset.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/dataset.o
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/dictionary.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/dictionary.o
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/holdout.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/holdout.o
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/logging.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/logging.o
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/params.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/params.o
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/quark.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/quark.o
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/rumavl.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/rumavl.o
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/train_arow.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/train_arow.o
      crfsuite/lib/crf/src/train_arow.c:207:5: warning: variable '__ret' set but not used [-Wunused-but-set-variable]
        207 |     BEGIN_PARAM_MAP(params, mode)
            |     ^
      crfsuite/lib/crf/src/params.h:49:13: note: expanded from macro 'BEGIN_PARAM_MAP'
         49 |         int __ret = 0; \
            |             ^
      crfsuite/lib/crf/src/train_arow.c:288:20: warning: unused variable 'norm' [-Wunused-variable]
        288 |         floatval_t norm = 0., sum_loss = 0.;
            |                    ^~~~
      crfsuite/lib/crf/src/train_arow.c:245:16: warning: variable 'beta' set but not used [-Wunused-but-set-variable]
        245 |     floatval_t beta;
            |                ^
      crfsuite/lib/crf/src/train_arow.c:145:19: warning: unused function 'delta_norm2' [-Wunused-function]
        145 | static floatval_t delta_norm2(delta_t *dc)
            |                   ^~~~~~~~~~~
      crfsuite/lib/crf/src/train_arow.c:157:13: warning: unused function 'delta_add' [-Wunused-function]
        157 | static void delta_add(delta_t *dc, floatval_t *w, floatval_t *ws, const floatval_t tau, const floatval_t u)
            |             ^~~~~~~~~
      crfsuite/lib/crf/src/train_arow.c:180:19: warning: unused function 'cost_insensitive' [-Wunused-function]
        180 | static floatval_t cost_insensitive(floatval_t err, floatval_t d)
            |                   ^~~~~~~~~~~~~~~~
      crfsuite/lib/crf/src/train_arow.c:185:19: warning: unused function 'cost_sensitive' [-Wunused-function]
        185 | static floatval_t cost_sensitive(floatval_t err, floatval_t d)
            |                   ^~~~~~~~~~~~~~
      crfsuite/lib/crf/src/train_arow.c:190:19: warning: unused function 'tau0' [-Wunused-function]
        190 | static floatval_t tau0(floatval_t cost, floatval_t norm, floatval_t c)
            |                   ^~~~
      crfsuite/lib/crf/src/train_arow.c:195:19: warning: unused function 'tau1' [-Wunused-function]
        195 | static floatval_t tau1(floatval_t cost, floatval_t norm, floatval_t c)
            |                   ^~~~
      crfsuite/lib/crf/src/train_arow.c:200:19: warning: unused function 'tau2' [-Wunused-function]
        200 | static floatval_t tau2(floatval_t cost, floatval_t norm, floatval_t c)
            |                   ^~~~
      10 warnings generated.
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/train_averaged_perceptron.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/train_averaged_perceptron.o
      crfsuite/lib/crf/src/train_averaged_perceptron.c:87:5: warning: variable '__ret' set but not used [-Wunused-but-set-variable]
         87 |     BEGIN_PARAM_MAP(params, mode)
            |     ^
      crfsuite/lib/crf/src/params.h:49:13: note: expanded from macro 'BEGIN_PARAM_MAP'
         49 |         int __ret = 0; \
            |             ^
      crfsuite/lib/crf/src/train_averaged_perceptron.c:155:20: warning: unused variable 'norm' [-Wunused-variable]
        155 |         floatval_t norm = 0., loss = 0.;
            |                    ^~~~
      2 warnings generated.
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/train_l2sgd.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/train_l2sgd.o
      crfsuite/lib/crf/src/train_l2sgd.c:152:23: warning: unused variable 'clk_begin' [-Wunused-variable]
        152 |     clock_t clk_prev, clk_begin = clock();
            |                       ^~~~~~~~~
      crfsuite/lib/crf/src/train_l2sgd.c:390:5: warning: variable '__ret' set but not used [-Wunused-but-set-variable]
        390 |     BEGIN_PARAM_MAP(params, mode)
            |     ^
      crfsuite/lib/crf/src/params.h:49:13: note: expanded from macro 'BEGIN_PARAM_MAP'
         49 |         int __ret = 0; \
            |             ^
      crfsuite/lib/crf/src/train_l2sgd.c:454:15: warning: unused variable 'T' [-Wunused-variable]
        454 |     const int T = gm->cap_items;
            |               ^
      3 warnings generated.
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/train_lbfgs.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/train_lbfgs.o
      crfsuite/lib/crf/src/train_lbfgs.c:163:5: warning: variable '__ret' set but not used [-Wunused-but-set-variable]
        163 |     BEGIN_PARAM_MAP(params, mode)
            |     ^
      crfsuite/lib/crf/src/params.h:49:13: note: expanded from macro 'BEGIN_PARAM_MAP'
         49 |         int __ret = 0; \
            |             ^
      crfsuite/lib/crf/src/train_lbfgs.c:229:15: warning: unused variable 'N' [-Wunused-variable]
        229 |     const int N = trainset->num_instances;
            |               ^
      crfsuite/lib/crf/src/train_lbfgs.c:230:15: warning: unused variable 'L' [-Wunused-variable]
        230 |     const int L = trainset->data->labels->num(trainset->data->labels);
            |               ^
      crfsuite/lib/crf/src/train_lbfgs.c:231:15: warning: unused variable 'A' [-Wunused-variable]
        231 |     const int A =  trainset->data->attrs->num(trainset->data->attrs);
            |               ^
      4 warnings generated.
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/lib/crf/src/train_passive_aggressive.c -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/train_passive_aggressive.o
      crfsuite/lib/crf/src/train_passive_aggressive.c:209:5: warning: variable '__ret' set but not used [-Wunused-but-set-variable]
        209 |     BEGIN_PARAM_MAP(params, mode)
            |     ^
      crfsuite/lib/crf/src/params.h:49:13: note: expanded from macro 'BEGIN_PARAM_MAP'
         49 |         int __ret = 0; \
            |             ^
      crfsuite/lib/crf/src/train_passive_aggressive.c:318:20: warning: unused variable 'norm' [-Wunused-variable]
        318 |         floatval_t norm = 0., sum_loss = 0.;
            |                    ^~~~
      2 warnings generated.
      clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c crfsuite/swig/crfsuite.cpp -o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/swig/crfsuite.o
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c liblbfgs/lib/lbfgs.c -o build/temp.macosx-11.0-arm64-cpython-312/liblbfgs/lib/lbfgs.o
      clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c pycrfsuite/_pycrfsuite.cpp -o build/temp.macosx-11.0-arm64-cpython-312/pycrfsuite/_pycrfsuite.o
      pycrfsuite/_pycrfsuite.cpp:21005:13: warning: code will never be executed [-Wunreachable-code]
       21005 |             goto bad;
             |             ^~~~~~~~
      1 warning generated.
      clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -Icrfsuite/include/ -Icrfsuite/lib/cqdb/include -Iliblbfgs/include -Ipycrfsuite -I/Users/bachya/Git/liminal/liminal/.venv/include -I/Users/bachya/.local/share/mise/installs/python/3.12.6/include/python3.12 -c pycrfsuite/trainer_wrapper.cpp -o build/temp.macosx-11.0-arm64-cpython-312/pycrfsuite/trainer_wrapper.o
      Compiling with an SDK that doesn't seem to exist: /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk
      Please check your Xcode installation
      clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -bundle -undefined dynamic_lookup -arch arm64 -mmacosx-version-min=11.0 -isysroot /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk -LModules/_hacl build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/cqdb/src/cqdb.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/cqdb/src/lookup3.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crf1d_context.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crf1d_encode.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crf1d_feature.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crf1d_model.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crf1d_tag.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crfsuite.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/crfsuite_train.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/dataset.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/dictionary.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/holdout.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/logging.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/params.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/quark.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/rumavl.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/train_arow.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/train_averaged_perceptron.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/train_l2sgd.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/train_lbfgs.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/lib/crf/src/train_passive_aggressive.o build/temp.macosx-11.0-arm64-cpython-312/crfsuite/swig/crfsuite.o build/temp.macosx-11.0-arm64-cpython-312/liblbfgs/lib/lbfgs.o build/temp.macosx-11.0-arm64-cpython-312/pycrfsuite/_pycrfsuite.o build/temp.macosx-11.0-arm64-cpython-312/pycrfsuite/trainer_wrapper.o -L/install/lib -o build/lib.macosx-11.0-arm64-cpython-312/pycrfsuite/_pycrfsuite.cpython-312-darwin.so
      clang++: warning: no such sysroot directory: '/Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk' [-Wmissing-sysroot]
      ld: warning: search path 'Modules/_hacl' not found
      ld: warning: search path '/install/lib' not found
      ld: library 'c++' not found
      clang++: error: linker command failed with exit code 1 (use -v to see invocation)
      error: command '/usr/bin/clang++' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for python-crfsuite
Failed to build python-crfsuite
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (python-crfsuite)

It appears that the build is looking for a hardcoded Xcode SDK location (which no longer exists—the latest Xcode installs to /Applications/Xcode.app):

Compiling with an SDK that doesn't seem to exist: /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk

Symlinking the correct path to this hardcoded path allows the build to succeed:

sudo ln -s "$(xcode-select --print-path)/SDKs/MacOSX.sdk" "/Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk
❯ pip install python-crfsuite
Collecting python-crfsuite
  Using cached python-crfsuite-0.9.10.tar.gz (478 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: python-crfsuite
  Building wheel for python-crfsuite (pyproject.toml) ... done
  Created wheel for python-crfsuite: filename=python_crfsuite-0.9.10-cp312-cp312-macosx_11_0_arm64.whl size=173593 sha256=b353169ab0409b0644f9148fcc616685a090c7bb65e6348171b75594378e9229
  Stored in directory: /Users/bachya/Library/Caches/pip/wheels/fd/8b/f9/fd8ce1ca94b5c55a44b644546746ebf5dac5bd31c06d8cf5eb
Successfully built python-crfsuite
Installing collected packages: python-crfsuite
Successfully installed python-crfsuite-0.9.10
fgregg commented 1 day ago

did you run ./update_cpp.sh?

bachya commented 1 day ago

did you run ./update_cpp.sh?

Where would I do that? I'm installing this from pip, not manually kicking off a build myself.