Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Jan 2023 18:04:59 GMT
From:      Dimitry Andric <dim@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 9fbb5958d12c - main - graphics/sane-backends: fix build with clang 15
Message-ID:  <202301061804.306I4xjs009829@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by dim (src committer):

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

commit 9fbb5958d12c843b3ae52c74a6ecfe5a76623302
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-01-05 17:04:52 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-01-06 18:03:41 +0000

    graphics/sane-backends: fix build with clang 15
    
    During an exp-run for llvm 15 (see bug 265425), it turned out that
    graphics/sane-backends failed to build with clang 15:
    
      jpegtopdf.c:204:5: error: incompatible pointer to integer conversion assigning to 'long' from 'char *(int, int)' [-Wint-conversion]
              tz = timezone;
                 ^ ~~~~~~~~
      scanimage.c:1248:42: warning: call to undeclared function 'basename'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
                    png_set_iCCP(*png_ptr, *info_ptr, basename(icc_profile), PNG_COMPRESSION_TYPE_BASE, icc_buffer, icc_size);
                                                      ^
      scanimage.c:1248:42: error: incompatible integer to pointer conversion passing 'int' to parameter of type 'png_const_charp' (aka 'const char *') [-Wint-conversion]
                    png_set_iCCP(*png_ptr, *info_ptr, basename(icc_profile), PNG_COMPRESSION_TYPE_BASE, icc_buffer, icc_size);
                                                    ^~~~~~~~~~~~~~~~~~~~~
    
    The jpegtopdf error is because 'timezone' as a global external variable
    does not exist on FreeBSD: it is a glibc-ism. Use struct tm's tm_gmtoff
    field instead, which also has its sign reversed from the glibc global.
    
    The scanimage error is because basename(3) is used without including
    <libgen.h>. With glibc, basename() is declared in both string.h and
    libgen.h, where the former gives you the GNU specific variant, and the
    latter the POSIX variant.
    
    PR:             268771
    Approved by:    vvd@unislabs.com (maintainer)
    MFH:            2023Q1
---
 graphics/sane-backends/files/patch-frontend_jpegtopdf.c | 14 ++++++++++++++
 graphics/sane-backends/files/patch-frontend_scanimage.c | 12 ++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/graphics/sane-backends/files/patch-frontend_jpegtopdf.c b/graphics/sane-backends/files/patch-frontend_jpegtopdf.c
new file mode 100644
index 000000000000..f6e4be53ca79
--- /dev/null
+++ b/graphics/sane-backends/files/patch-frontend_jpegtopdf.c
@@ -0,0 +1,14 @@
+--- frontend/jpegtopdf.c.orig	2022-01-19 16:38:00 UTC
++++ frontend/jpegtopdf.c
+@@ -201,7 +201,11 @@ static SANE_Int _get_current_time( struct tm *pt, SANE
+ 		goto EXIT;
+ 	}
+ 	/* get time difference ( OHH'mm' ) */
++#ifdef __FreeBSD__
++	tz = -pt->tm_gmtoff;
++#else
+ 	tz = timezone;
++#endif
+ 	if ( tz > 0 ) {
+ 		*sign_c = '-';
+ 	}
diff --git a/graphics/sane-backends/files/patch-frontend_scanimage.c b/graphics/sane-backends/files/patch-frontend_scanimage.c
new file mode 100644
index 000000000000..cd7a92a0be01
--- /dev/null
+++ b/graphics/sane-backends/files/patch-frontend_scanimage.c
@@ -0,0 +1,12 @@
+--- frontend/scanimage.c.orig	2022-01-19 16:38:00 UTC
++++ frontend/scanimage.c
+@@ -39,6 +39,9 @@
+ #include <string.h>
+ #include <unistd.h>
+ #include <stdarg.h>
++#ifdef __FreeBSD__
++#include <libgen.h>
++#endif
+ 
+ #include <sys/types.h>
+ #include <sys/stat.h>



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