Build mantohtml with the build architecture compiler

mantohtml is run during build. Thus it needs to be built with the build
architecture compiler (or execution fails). The obvious part is switching to
CC_FOR_BUILD. That also depends on it not requiring any other cups components.
In particular, removing uses of strlcpy and replacing host architecture-
specific includes is thus needed.
Bug-Debian: https://bugs.debian.org/837936
Patch-Name Build-mantohtml-with-the-build-architecture-compiler.patch

Gbp-Pq: Name 0033-Build-mantohtml-with-the-build-architecture-compiler.patch
This commit is contained in:
Helmut Grohne 2016-08-09 18:11:49 +02:00 committed by openKylinBot
parent baff351789
commit b3aa21acc1
4 changed files with 22 additions and 8 deletions

View File

@ -22,6 +22,7 @@ CUPS_VERSION = @CUPS_VERSION@
AR = @AR@
AWK = @AWK@
CC = @LIBTOOL_CC@ @CC@
CC_FOR_BUILD = @CC_FOR_BUILD@
CHMOD = @CHMOD@
CXX = @LIBTOOL_CXX@ @CXX@
DSO = @DSO@

View File

@ -19,6 +19,15 @@ sinclude(config-scripts/cups-common.m4)
sinclude(config-scripts/cups-directories.m4)
sinclude(config-scripts/cups-manpages.m4)
AC_MSG_CHECKING([for build system compiler])
if test "$cross_compiling" = yes; then
CC_FOR_BUILD=${CC_FOR_BUILD-cc}
else
CC_FOR_BUILD=${CC}
fi
AC_MSG_RESULT(${CC_FOR_BUILD})
AC_SUBST(CC_FOR_BUILD)
sinclude(config-scripts/cups-sharedlibs.m4)
sinclude(config-scripts/cups-libtool.m4)
sinclude(config-scripts/cups-compiler.m4)

View File

@ -222,6 +222,5 @@ html: $(MAN1) $(MAN5) $(MAN7) $(MAN8) mantohtml
./mantohtml $$file >../doc/help/man-`basename $$file .8`.html; \
done
mantohtml: mantohtml.o ../cups/$(LIBCUPSSTATIC)
$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ mantohtml.o $(LINKCUPSSTATIC)
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
mantohtml: mantohtml.c
$(CC_FOR_BUILD) -o $@ $<

View File

@ -11,8 +11,10 @@
* Include necessary headers.
*/
#include <cups/string-private.h>
#include <cups/array-private.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@ -811,7 +813,8 @@ main(int argc, /* I - Number of command-line args */
* Anchor for HTML output...
*/
strlcpy(anchor, line + 4, sizeof(anchor));
strncpy(anchor, line + 4, sizeof(anchor) - 1);
anchor[sizeof(anchor) - 1] = '\0';
}
else if (strncmp(line, ".\\\"", 3))
{
@ -940,7 +943,8 @@ html_alternate(const char *s, /* I - String */
manfile[1024], /* Man page filename */
manurl[1024]; /* Man page URL */
strlcpy(name, s, sizeof(name));
strncpy(name, s, sizeof(name) - 1);
name[sizeof(name) - 1] = '\0';
if ((size_t)(end - s) < sizeof(name))
name[end - s] = '\0';
@ -1173,7 +1177,8 @@ html_fputs(const char *s, /* I - String */
if (end[-1] == ',' || end[-1] == '.' || end[-1] == ')')
end --;
strlcpy(temp, s, sizeof(temp));
strncpy(temp, s, sizeof(temp) - 1);
temp[sizeof(temp) - 1] = '\0';
if ((size_t)(end -s) < sizeof(temp))
temp[end - s] = '\0';