From 463d6e68a8f42423169e4359cc5c8636f6c92589 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Fri, 24 Jul 2020 17:28:11 +0300 Subject: Release version 1.6.3+4 Fix GCC 10 -Wformat warning Canonicalize license in manifest Add glue buildfile Fix typo in .gitattributes --- .gitattributes | 2 +- buildfile | 7 +++ libpkgconf/README-DEV | 7 +++ libpkgconf/fix-mingw-wformat-warning.patch | 53 ++++++++++++++++++++ libpkgconf/libpkgconf/libpkgconf.h | 12 ++++- libpkgconf/libpkgconf/stdinc.h | 80 +++++++++++++++++++++++++++++- libpkgconf/libpkgconf/stdinc.h.orig | 1 + libpkgconf/manifest | 4 +- libpkgconf/tests/api/driver.c | 17 +++---- libpkgconf/tests/basic/driver.c | 18 +++---- 10 files changed, 173 insertions(+), 28 deletions(-) create mode 100644 buildfile create mode 100644 libpkgconf/fix-mingw-wformat-warning.patch mode change 120000 => 100644 libpkgconf/libpkgconf/stdinc.h create mode 120000 libpkgconf/libpkgconf/stdinc.h.orig diff --git a/.gitattributes b/.gitattributes index 9fce1b0..1631641 100644 --- a/.gitattributes +++ b/.gitattributes @@ -10,7 +10,7 @@ #*.bat text eol=crlf # Use `eol=lf` for files that should have the LF line ending both in the -# working tree (even on Windows) in the repository. +# working tree (even on Windows) and in the repository. # #*.sh text eol=lf diff --git a/buildfile b/buildfile new file mode 100644 index 0000000..c50bc3c --- /dev/null +++ b/buildfile @@ -0,0 +1,7 @@ +# file : buildfile +# license : ISC; see accompanying COPYING file + +# Glue buildfile that "pulls" all the packages. + +import pkgs = {*/ -upstream/} +./: $pkgs diff --git a/libpkgconf/README-DEV b/libpkgconf/README-DEV index 37a1317..06cd737 100644 --- a/libpkgconf/README-DEV +++ b/libpkgconf/README-DEV @@ -44,3 +44,10 @@ $ git apply dont-merge-fragments.patch Note that the patch is produces by the following command: $ git diff >dont-merge-fragments.patch + +Also fix the MinGW GCC 10 -Wformat warning: + +$ mv stdinc.h stdinc.h.orig +$ cp stdinc.h.orig stdinc.h + +$ git apply fix-mingw-wformat-warning.patch diff --git a/libpkgconf/fix-mingw-wformat-warning.patch b/libpkgconf/fix-mingw-wformat-warning.patch new file mode 100644 index 0000000..f4961c5 --- /dev/null +++ b/libpkgconf/fix-mingw-wformat-warning.patch @@ -0,0 +1,53 @@ +diff --git a/libpkgconf/libpkgconf/libpkgconf.h b/libpkgconf/libpkgconf/libpkgconf.h +index 6f4c8b5..a7d9f9d 100644 +--- a/libpkgconf/libpkgconf/libpkgconf.h ++++ b/libpkgconf/libpkgconf/libpkgconf.h +@@ -257,9 +257,17 @@ PKGCONF_API pkgconf_cross_personality_t *pkgconf_cross_personality_find(const ch + #define PKGCONF_PKG_ERRF_PACKAGE_CONFLICT 0x4 + #define PKGCONF_PKG_ERRF_DEPGRAPH_BREAK 0x8 + ++/* Note that MinGW's printf() format semantics have changed starting GCC 10 ++ * (see stdinc.h for details). ++ */ + #if defined(__GNUC__) || defined(__INTEL_COMPILER) +-#define PRINTFLIKE(fmtarg, firstvararg) \ +- __attribute__((__format__ (__printf__, fmtarg, firstvararg))) ++# if defined (_WIN32) && defined(__GNUC__) && __GNUC__ >= 10 ++# define PRINTFLIKE(fmtarg, firstvararg) \ ++ __attribute__((__format__ (gnu_printf, fmtarg, firstvararg))) ++# else ++# define PRINTFLIKE(fmtarg, firstvararg) \ ++ __attribute__((__format__ (__printf__, fmtarg, firstvararg))) ++#endif + #define DEPRECATED \ + __attribute__((deprecated)) + #else +diff --git a/libpkgconf/libpkgconf/stdinc.h b/libpkgconf/libpkgconf/stdinc.h +index 6858503..361f27e 100644 +--- a/libpkgconf/libpkgconf/stdinc.h ++++ b/libpkgconf/libpkgconf/stdinc.h +@@ -31,11 +31,21 @@ + # include + # include + # define PATH_DEV_NULL "nul" +-# ifdef _WIN64 +-# define SIZE_FMT_SPECIFIER "%I64u" ++ ++/* Note that MinGW's printf() format semantics have changed starting GCC 10. ++ * In particular, GCC 10 complains about MSVC's 'I64' length modifier but now ++ * accepts the standard (C99) 'z' modifier. ++ */ ++# if defined(__GNUC__) && __GNUC__ >= 10 ++# define SIZE_FMT_SPECIFIER "%zu" + # else +-# define SIZE_FMT_SPECIFIER "%u" ++# ifdef _WIN64 ++# define SIZE_FMT_SPECIFIER "%I64u" ++# else ++# define SIZE_FMT_SPECIFIER "%u" ++# endif + # endif ++ + # ifndef ssize_t + # ifndef __MINGW32__ + # include diff --git a/libpkgconf/libpkgconf/libpkgconf.h b/libpkgconf/libpkgconf/libpkgconf.h index 6f4c8b5..a7d9f9d 100644 --- a/libpkgconf/libpkgconf/libpkgconf.h +++ b/libpkgconf/libpkgconf/libpkgconf.h @@ -257,9 +257,17 @@ PKGCONF_API pkgconf_cross_personality_t *pkgconf_cross_personality_find(const ch #define PKGCONF_PKG_ERRF_PACKAGE_CONFLICT 0x4 #define PKGCONF_PKG_ERRF_DEPGRAPH_BREAK 0x8 +/* Note that MinGW's printf() format semantics have changed starting GCC 10 + * (see stdinc.h for details). + */ #if defined(__GNUC__) || defined(__INTEL_COMPILER) -#define PRINTFLIKE(fmtarg, firstvararg) \ - __attribute__((__format__ (__printf__, fmtarg, firstvararg))) +# if defined (_WIN32) && defined(__GNUC__) && __GNUC__ >= 10 +# define PRINTFLIKE(fmtarg, firstvararg) \ + __attribute__((__format__ (gnu_printf, fmtarg, firstvararg))) +# else +# define PRINTFLIKE(fmtarg, firstvararg) \ + __attribute__((__format__ (__printf__, fmtarg, firstvararg))) +#endif #define DEPRECATED \ __attribute__((deprecated)) #else diff --git a/libpkgconf/libpkgconf/stdinc.h b/libpkgconf/libpkgconf/stdinc.h deleted file mode 120000 index a0d601c..0000000 --- a/libpkgconf/libpkgconf/stdinc.h +++ /dev/null @@ -1 +0,0 @@ -../../upstream/libpkgconf/stdinc.h \ No newline at end of file diff --git a/libpkgconf/libpkgconf/stdinc.h b/libpkgconf/libpkgconf/stdinc.h new file mode 100644 index 0000000..361f27e --- /dev/null +++ b/libpkgconf/libpkgconf/stdinc.h @@ -0,0 +1,79 @@ +/* + * stdinc.h + * pull in standard headers (including portability hacks) + * + * Copyright (c) 2012 pkgconf authors (see AUTHORS). + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * This software is provided 'as is' and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising + * from the use of this software. + */ + +#ifndef LIBPKGCONF_STDINC_H +#define LIBPKGCONF_STDINC_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _WIN32 +# define WIN32_LEAN_AND_MEAN +# include +# include +# define PATH_DEV_NULL "nul" + +/* Note that MinGW's printf() format semantics have changed starting GCC 10. + * In particular, GCC 10 complains about MSVC's 'I64' length modifier but now + * accepts the standard (C99) 'z' modifier. + */ +# if defined(__GNUC__) && __GNUC__ >= 10 +# define SIZE_FMT_SPECIFIER "%zu" +# else +# ifdef _WIN64 +# define SIZE_FMT_SPECIFIER "%I64u" +# else +# define SIZE_FMT_SPECIFIER "%u" +# endif +# endif + +# ifndef ssize_t +# ifndef __MINGW32__ +# include +# else +# include +# endif +# define ssize_t SSIZE_T +# endif +# ifndef __MINGW32__ +# include "win-dirent.h" +# else +# include +# endif +# define PKGCONF_ITEM_SIZE (_MAX_PATH + 1024) +#else +# define PATH_DEV_NULL "/dev/null" +# define SIZE_FMT_SPECIFIER "%zu" +# ifdef __HAIKU__ +# include +# endif +# include +# include +# include +# ifdef PATH_MAX +# define PKGCONF_ITEM_SIZE (PATH_MAX + 1024) +# else +# define PKGCONF_ITEM_SIZE (4096 + 1024) +# endif +#endif + +#endif diff --git a/libpkgconf/libpkgconf/stdinc.h.orig b/libpkgconf/libpkgconf/stdinc.h.orig new file mode 120000 index 0000000..a0d601c --- /dev/null +++ b/libpkgconf/libpkgconf/stdinc.h.orig @@ -0,0 +1 @@ +../../upstream/libpkgconf/stdinc.h \ No newline at end of file diff --git a/libpkgconf/manifest b/libpkgconf/manifest index 6099c0f..6d3c37a 100644 --- a/libpkgconf/manifest +++ b/libpkgconf/manifest @@ -1,9 +1,9 @@ : 1 name: libpkgconf -version: 1.6.3+3 +version: 1.6.3+4 project: pkgconf summary: C library for retriving pkg-config compiler and linker flags -license: ISC, MIT ; ISC for the most of original files. +license: ISC AND MIT ; ISC for the most of original files. topics: C, build system, build toolchain description-file: README url: https://git.sr.ht/~kaniini/pkgconf diff --git a/libpkgconf/tests/api/driver.c b/libpkgconf/tests/api/driver.c index 6035771..15b0685 100644 --- a/libpkgconf/tests/api/driver.c +++ b/libpkgconf/tests/api/driver.c @@ -2,8 +2,7 @@ * license : ISC; see accompanying COPYING file */ -/* - * Enable assertions. +/* Enable assertions. */ #ifdef NDEBUG # undef NDEBUG @@ -23,8 +22,7 @@ error_handler (const char* msg, const pkgconf_client_t* c, const void* d) (void) c; /* Unused. */ (void) d; /* Unused. */ - /* - * Seems it always have a trailing newline char. Probably it still a good + /* Seems it always have a trailing newline char. Probably it still a good * idea to check if it is. Let's see if it ever be missed. * */ @@ -53,15 +51,14 @@ tuples_print (pkgconf_list_t *list) { pkgconf_tuple_t *tuple = node->data; - // Skip the automatically added variable. - // + /* Skip the automatically added variable. + */ if (strcmp (tuple->key, "pcfiledir") != 0) printf("%s %s\n", tuple->key, tuple->value); } } -/* - * Usage: argv[0] (--cflags|--libs|--vars) +/* Usage: argv[0] (--cflags|--libs|--vars) * * Print package compiler flags, linker flags or variable name/values one per * line. The specified package file must have .pc extension. @@ -115,8 +112,8 @@ main (int argc, const char* argv[]) assert (i + 1 == argc); const char* path = argv[i]; - // Make sure the file has .pc extension. - // + /* Make sure the file has .pc extension. + */ size_t n = strlen (path); assert (n > 3 && strcmp (path + n - 3, ".pc") == 0); diff --git a/libpkgconf/tests/basic/driver.c b/libpkgconf/tests/basic/driver.c index c443d1a..b974592 100644 --- a/libpkgconf/tests/basic/driver.c +++ b/libpkgconf/tests/basic/driver.c @@ -2,8 +2,7 @@ * license : ISC; see accompanying COPYING file */ -/* - * Enable assertions. +/* Enable assertions. */ #ifdef NDEBUG # undef NDEBUG @@ -24,8 +23,7 @@ error_handler (const char* msg, const pkgconf_client_t* c, const void* d) (void) c; /* Unused. */ (void) d; /* Unused. */ - /* - * Seems it always have a trailing newline char. Probably it still a good + /* Seems it always have a trailing newline char. Probably it still a good * idea to check if it is. Let's see if it ever be missed. * */ @@ -45,8 +43,7 @@ print_and_free (pkgconf_list_t* list) pkgconf_fragment_free (list); } -/* - * Usage: argv[0] [--cflags] [--libs] (--with-path )* +/* Usage: argv[0] [--cflags] [--libs] (--with-path )* * * Print package compiler and linker flags. If the package name has '.pc' * extension it is interpreted as a file name. Prints all flags, as pkgconf @@ -109,8 +106,7 @@ main (int argc, const char* argv[]) pkgconf_client_set_flags (c, client_flags); - /* - * Bootstrap the package search default paths if not specified explicitly. + /* Bootstrap the package search default paths if not specified explicitly. */ if (default_dirs) pkgconf_client_dir_list_build (c, pkgconf_cross_personality_default ()); @@ -121,8 +117,7 @@ main (int argc, const char* argv[]) { int e = PKGCONF_PKG_ERRF_OK; - /* - * Print C flags. + /* Print C flags. */ if (cflags) { @@ -139,8 +134,7 @@ main (int argc, const char* argv[]) pkgconf_client_set_flags (c, client_flags); /* Restore. */ } - /* - * Print libs. + /* Print libs. */ if (libs && e == PKGCONF_PKG_ERRF_OK) { -- cgit v1.1