Date: Sat, 11 Oct 2025 09:30:26 GMT From: Yuri Victorovich <yuri@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: e432d0424f2f - main - databases/nanodbc: Fix compilation with clang19; Improve pkg-descr Message-ID: <202510110930.59B9UQfn049673@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by yuri: URL: https://cgit.FreeBSD.org/ports/commit/?id=e432d0424f2fc1a997fc8e1d10800bbecdc6d2c9 commit e432d0424f2fc1a997fc8e1d10800bbecdc6d2c9 Author: Yuri Victorovich <yuri@FreeBSD.org> AuthorDate: 2025-10-11 04:10:12 +0000 Commit: Yuri Victorovich <yuri@FreeBSD.org> CommitDate: 2025-10-11 09:30:23 +0000 databases/nanodbc: Fix compilation with clang19; Improve pkg-descr --- databases/nanodbc/Makefile | 5 +-- databases/nanodbc/files/patch-nanodbc_nanodbc.cpp | 47 +++++++++++++++++++++++ databases/nanodbc/pkg-descr | 12 +++++- 3 files changed, 59 insertions(+), 5 deletions(-) diff --git a/databases/nanodbc/Makefile b/databases/nanodbc/Makefile index 1cc6e298227b..5cb0f7394810 100644 --- a/databases/nanodbc/Makefile +++ b/databases/nanodbc/Makefile @@ -11,16 +11,13 @@ WWW= https://nanodbc.github.io/nanodbc/ \ LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE -BROKEN_FreeBSD_13= compilation fails with clang-19, see https://github.com/nanodbc/nanodbc/issues/421 -BROKEN_FreeBSD_15= compilation fails with clang-19, see https://github.com/nanodbc/nanodbc/issues/421 - LIB_DEPENDS= libodbc.so:databases/unixODBC USES= cmake:testing compiler:c++14-lang localbase:ldflags # pkgconfig python:build -USE_LDCONFIG= yes USE_CXXSTD= c++14 # fix build broken by deprecated feature std::char_traits, see https://github.com/nanodbc/nanodbc/issues/387 USE_GITHUB= yes +USE_LDCONFIG= yes CMAKE_ON= BUILD_SHARED_LIBS \ NANODBC_DISABLE_TESTS NANODBC_DISABLE_EXAMPLES diff --git a/databases/nanodbc/files/patch-nanodbc_nanodbc.cpp b/databases/nanodbc/files/patch-nanodbc_nanodbc.cpp new file mode 100644 index 000000000000..f0489859293b --- /dev/null +++ b/databases/nanodbc/files/patch-nanodbc_nanodbc.cpp @@ -0,0 +1,47 @@ +- Fix compilation with unsigned char SQLCHAR type + +--- nanodbc/nanodbc.cpp.orig 2023-01-13 22:42:27 UTC ++++ nanodbc/nanodbc.cpp +@@ -257,10 +257,20 @@ constexpr std::size_t size(const T (&array)[N]) noexc + } + #endif + ++// Helper function to compute string length for SQLCHAR types ++template <typename T> ++inline std::size_t sqlchar_length(const T* str) noexcept ++{ ++ const T* s = str; ++ while (*s) ++s; ++ return s - str; ++} ++ + template <std::size_t N> + inline std::size_t size(NANODBC_SQLCHAR const (&array)[N]) noexcept + { +- auto const n = std::char_traits<NANODBC_SQLCHAR>::length(array); ++ // Use custom length function instead of char_traits which doesn't support unsigned char ++ auto const n = sqlchar_length(array); + NANODBC_ASSERT(n < N); + return n < N ? n : N - 1; + } +@@ -3563,9 +3573,9 @@ std::list<datasource> list_datasources() + "incompatible SQLCHAR and string::value_type"); + + datasource dsn; +- dsn.name = string(&name[0], &name[std::char_traits<NANODBC_SQLCHAR>::length(name)]); ++ dsn.name = string(&name[0], &name[sqlchar_length(name)]); + dsn.driver = +- string(&driver[0], &driver[std::char_traits<NANODBC_SQLCHAR>::length(driver)]); ++ string(&driver[0], &driver[sqlchar_length(driver)]); + + dsns.push_back(std::move(dsn)); + direction = SQL_FETCH_NEXT; +@@ -3616,7 +3626,7 @@ std::list<driver> list_drivers() + "incompatible SQLCHAR and string::value_type"); + + driver drv; +- drv.name = string(&descr[0], &descr[std::char_traits<NANODBC_SQLCHAR>::length(descr)]); ++ drv.name = string(&descr[0], &descr[sqlchar_length(descr)]); + + drvs.push_back(std::move(drv)); + direction = SQL_FETCH_NEXT; diff --git a/databases/nanodbc/pkg-descr b/databases/nanodbc/pkg-descr index 263198cfcd6f..0ca544238dab 100644 --- a/databases/nanodbc/pkg-descr +++ b/databases/nanodbc/pkg-descr @@ -1 +1,11 @@ -nanodbc is a small library that makes ODBC API programming easy and fun again. +nanodbc is a small C++ library that simplifies ODBC API programming. + +nanodbc is a small C++ wrapper for the native C ODBC API. It aims to make +common database tasks easy with concise code, incorporating modern C++ +standards. + +Features: +* Portable and robust +* Transaction support +* Bound parameters +* Clean separation of interface and implementation using the pimpl idiomhome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202510110930.59B9UQfn049673>
