Skip site navigation (1)Skip section navigation (2)
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 idiom


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202510110930.59B9UQfn049673>