diff options
Diffstat (limited to 'meta/recipes-extended/gperf')
3 files changed, 216 insertions, 3 deletions
diff --git a/meta/recipes-extended/gperf/gperf/0001-Make-the-code-C-17-compliant.patch b/meta/recipes-extended/gperf/gperf/0001-Make-the-code-C-17-compliant.patch new file mode 100644 index 0000000000..96e70cdb36 --- /dev/null +++ b/meta/recipes-extended/gperf/gperf/0001-Make-the-code-C-17-compliant.patch @@ -0,0 +1,29 @@ +From 6194f0027045433598a61965758b4531a3d06d1f Mon Sep 17 00:00:00 2001 +From: Bruno Haible <bruno@clisp.org> +Date: Sun, 30 Aug 2020 12:36:15 +0200 +Subject: [PATCH] Make the code C++17 compliant. + +* lib/getline.cc (getstr): Don't use the 'register' keyword. + +Upstream-Status: Backport [https://git.savannah.gnu.org/gitweb/?p=gperf.git;a=commit;h=a63b830554920476881837eeacd4a6b507632b19] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + lib/getline.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/getline.cc b/lib/getline.cc +index c57c633..0984a7c 100644 +--- a/lib/getline.cc ++++ b/lib/getline.cc +@@ -55,7 +55,7 @@ getstr (char **lineptr, size_t *n, FILE *stream, char terminator, size_t offset) + + for (;;) + { +- register int c = getc (stream); ++ int c = getc (stream); + + /* We always want at least one char left in the buffer, since we + always (unless we get an error while reading the first char) +-- +2.39.0 + diff --git a/meta/recipes-extended/gperf/gperf/1862c6e57a308a05889c80c048dbc58bdc378dcb.patch b/meta/recipes-extended/gperf/gperf/1862c6e57a308a05889c80c048dbc58bdc378dcb.patch new file mode 100644 index 0000000000..98959db0a8 --- /dev/null +++ b/meta/recipes-extended/gperf/gperf/1862c6e57a308a05889c80c048dbc58bdc378dcb.patch @@ -0,0 +1,181 @@ +From 1862c6e57a308a05889c80c048dbc58bdc378dcb Mon Sep 17 00:00:00 2001 +From: Bruno Haible <bruno@clisp.org> +Date: Tue, 5 Jul 2022 07:51:46 +0200 +Subject: [PATCH] Add support for reproducible builds. + +Suggested by Richard Purdie <richard.purdie@linuxfoundation.org> in +<https://lists.gnu.org/archive/html/bug-gperf/2022-07/msg00000.html>. + +* autogen.sh: Import also lib/filename.h. +* Makefile.in (IMPORTED_FILES): Add lib/filename.h. +* src/options.cc: Include filename.h. +(Options::print_options): Print only the base name of the program name. +* tests/*.exp: Update. + +Upstream-Status: Backport + +Index: gperf-3.1/ChangeLog +=================================================================== +--- gperf-3.1.orig/ChangeLog ++++ gperf-3.1/ChangeLog +@@ -1,3 +1,14 @@ ++2022-07-05 Bruno Haible <bruno@clisp.org> ++ ++ Add support for reproducible builds. ++ Suggested by Richard Purdie <richard.purdie@linuxfoundation.org> in ++ <https://lists.gnu.org/archive/html/bug-gperf/2022-07/msg00000.html>. ++ * autogen.sh: Import also lib/filename.h. ++ * Makefile.in (IMPORTED_FILES): Add lib/filename.h. ++ * src/options.cc: Include filename.h. ++ (Options::print_options): Print only the base name of the program name. ++ * tests/*.exp: Update. ++ + 2017-01-02 Marcel Schaible <marcel.schaible@studium.fernuni-hagen.de> + + * gperf-3.1 released. +Index: gperf-3.1/src/options.cc +=================================================================== +--- gperf-3.1.orig/src/options.cc ++++ gperf-3.1/src/options.cc +@@ -26,6 +26,7 @@ + #include <string.h> /* declares strcmp() */ + #include <ctype.h> /* declares isdigit() */ + #include <limits.h> /* defines CHAR_MAX */ ++#include "filename.h" + #include "getopt.h" + #include "version.h" + +@@ -280,6 +281,16 @@ Options::print_options () const + { + const char *arg = _argument_vector[i]; + ++ if (i == 0) ++ { ++ /* _argument_vector[0] is the program name. Print only its base name. ++ This is useful for reproducible builds. */ ++ const char *p = arg + strlen (arg); ++ while (p > arg && ! ISSLASH (p[-1])) ++ p--; ++ arg = p; ++ } ++ + /* Escape arg if it contains shell metacharacters. */ + if (*arg == '-') + { +Index: gperf-3.1/lib/filename.h +=================================================================== +--- /dev/null ++++ gperf-3.1/lib/filename.h +@@ -0,0 +1,112 @@ ++/* Basic filename support macros. ++ Copyright (C) 2001-2022 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ <https://www.gnu.org/licenses/>. */ ++ ++/* From Paul Eggert and Jim Meyering. */ ++ ++#ifndef _FILENAME_H ++#define _FILENAME_H ++ ++#include <string.h> ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* Filename support. ++ ISSLASH(C) tests whether C is a directory separator ++ character. ++ HAS_DEVICE(Filename) tests whether Filename contains a device ++ specification. ++ FILE_SYSTEM_PREFIX_LEN(Filename) length of the device specification ++ at the beginning of Filename, ++ index of the part consisting of ++ alternating components and slashes. ++ FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE ++ 1 when a non-empty device specification ++ can be followed by an empty or relative ++ part, ++ 0 when a non-empty device specification ++ must be followed by a slash, ++ 0 when device specification don't exist. ++ IS_ABSOLUTE_FILE_NAME(Filename) ++ tests whether Filename is independent of ++ any notion of "current directory". ++ IS_RELATIVE_FILE_NAME(Filename) ++ tests whether Filename may be concatenated ++ to a directory filename. ++ Note: On native Windows, OS/2, DOS, "c:" is neither an absolute nor a ++ relative file name! ++ IS_FILE_NAME_WITH_DIR(Filename) tests whether Filename contains a device ++ or directory specification. ++ */ ++#if defined _WIN32 || defined __CYGWIN__ \ ++ || defined __EMX__ || defined __MSDOS__ || defined __DJGPP__ ++ /* Native Windows, Cygwin, OS/2, DOS */ ++# define ISSLASH(C) ((C) == '/' || (C) == '\\') ++ /* Internal macro: Tests whether a character is a drive letter. */ ++# define _IS_DRIVE_LETTER(C) \ ++ (((C) >= 'A' && (C) <= 'Z') || ((C) >= 'a' && (C) <= 'z')) ++ /* Help the compiler optimizing it. This assumes ASCII. */ ++# undef _IS_DRIVE_LETTER ++# define _IS_DRIVE_LETTER(C) \ ++ (((unsigned int) (C) | ('a' - 'A')) - 'a' <= 'z' - 'a') ++# define HAS_DEVICE(Filename) \ ++ (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':') ++# define FILE_SYSTEM_PREFIX_LEN(Filename) (HAS_DEVICE (Filename) ? 2 : 0) ++# ifdef __CYGWIN__ ++# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0 ++# else ++ /* On native Windows, OS/2, DOS, the system has the notion of a ++ "current directory" on each drive. */ ++# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 1 ++# endif ++# if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE ++# define IS_ABSOLUTE_FILE_NAME(Filename) \ ++ ISSLASH ((Filename)[FILE_SYSTEM_PREFIX_LEN (Filename)]) ++# else ++# define IS_ABSOLUTE_FILE_NAME(Filename) \ ++ (ISSLASH ((Filename)[0]) || HAS_DEVICE (Filename)) ++# endif ++# define IS_RELATIVE_FILE_NAME(Filename) \ ++ (! (ISSLASH ((Filename)[0]) || HAS_DEVICE (Filename))) ++# define IS_FILE_NAME_WITH_DIR(Filename) \ ++ (strchr ((Filename), '/') != NULL || strchr ((Filename), '\\') != NULL \ ++ || HAS_DEVICE (Filename)) ++#else ++ /* Unix */ ++# define ISSLASH(C) ((C) == '/') ++# define HAS_DEVICE(Filename) ((void) (Filename), 0) ++# define FILE_SYSTEM_PREFIX_LEN(Filename) ((void) (Filename), 0) ++# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0 ++# define IS_ABSOLUTE_FILE_NAME(Filename) ISSLASH ((Filename)[0]) ++# define IS_RELATIVE_FILE_NAME(Filename) (! ISSLASH ((Filename)[0])) ++# define IS_FILE_NAME_WITH_DIR(Filename) (strchr ((Filename), '/') != NULL) ++#endif ++ ++/* Deprecated macros. For backward compatibility with old users of the ++ 'filename' module. */ ++#define IS_ABSOLUTE_PATH IS_ABSOLUTE_FILE_NAME ++#define IS_PATH_WITH_DIR IS_FILE_NAME_WITH_DIR ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _FILENAME_H */ diff --git a/meta/recipes-extended/gperf/gperf_3.1.bb b/meta/recipes-extended/gperf/gperf_3.1.bb index f61b2a329a..c57ade9fe3 100644 --- a/meta/recipes-extended/gperf/gperf_3.1.bb +++ b/meta/recipes-extended/gperf/gperf_3.1.bb @@ -1,18 +1,21 @@ DESCRIPTION = "GNU gperf is a perfect hash function generator" HOMEPAGE = "http://www.gnu.org/software/gperf" SUMMARY = "Generate a perfect hash function from a set of keywords" -LICENSE = "GPLv3+" +LICENSE = "GPL-3.0-or-later" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ file://src/main.cc;beginline=8;endline=19;md5=dec8f611845d047387ed56b5b85fa99b" -SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz" +SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \ + file://0001-Make-the-code-C-17-compliant.patch" SRC_URI[md5sum] = "9e251c0a618ad0824b51117d5d9db87e" SRC_URI[sha256sum] = "588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2" +SRC_URI += "file://1862c6e57a308a05889c80c048dbc58bdc378dcb.patch" + inherit autotools # The nested configures don't find the parent aclocal.m4 out of the box, so tell # it where to look explicitly (mirroring the behaviour of upstream's Makefile.devel). EXTRA_AUTORECONF += " -I ${S} --exclude=aclocal" -BBCLASSEXTEND = "native" +BBCLASSEXTEND = "native nativesdk" |