From 096f0080147c8a1a0285416f5ff0ecfc353414b6 Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Thu, 23 Mar 2017 10:23:04 +0000 Subject: gnu: rcs: Fix build against gcc-5.4.0. * gnu/local.mk (dist_patch_DATA): Add patch. * gnu/packages/patches/rcs-5.9.4-noreturn.patch: New file. * gnu/packages/version-control.scm (rcs)[source]: Applied patch. Signed-off-by: Marius Bakke --- gnu/local.mk | 1 + gnu/packages/patches/rcs-5.9.4-noreturn.patch | 94 +++++++++++++++++++++++++++ gnu/packages/version-control.scm | 3 +- 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/rcs-5.9.4-noreturn.patch diff --git a/gnu/local.mk b/gnu/local.mk index f02967233f..1fa5a339ac 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -891,6 +891,7 @@ dist_patch_DATA = \ %D%/packages/patches/quickswitch-fix-dmenu-check.patch \ %D%/packages/patches/rapicorn-isnan.patch \ %D%/packages/patches/ratpoison-shell.patch \ + %D%/packages/patches/rcs-5.9.4-noreturn.patch \ %D%/packages/patches/readline-link-ncurses.patch \ %D%/packages/patches/readline-6.2-CVE-2014-2524.patch \ %D%/packages/patches/readline-7.0-mingw.patch \ diff --git a/gnu/packages/patches/rcs-5.9.4-noreturn.patch b/gnu/packages/patches/rcs-5.9.4-noreturn.patch new file mode 100644 index 0000000000..0c0c044ed5 --- /dev/null +++ b/gnu/packages/patches/rcs-5.9.4-noreturn.patch @@ -0,0 +1,94 @@ +Builds with GCC-5 failed due to misplaced `_Noreturn (__attribute__((noreturn)))` +statement. + +Patch copied from upstream source repository: + +http://git.savannah.gnu.org/cgit/rcs.git/commit/?h=p&id=260704a9164dd34cf7128d6b1e88075ffa3be054 + +Upstream bug URL: + +https://savannah.gnu.org/bugs/?49568 + +commit 260704a9164dd34cf7128d6b1e88075ffa3be054 +Author: Thien-Thi Nguyen +Date: Thu Jun 18 21:25:53 2015 +0200 + + [C slog] Move ‘exiting’ to beginning of func decl. + + Apparently, ‘gcc --std=c11’ does not abide the ‘exiting’ + attribute appearing at the end of the func decl. + Reported by Romain Francoise. + See also . + + * src/b-complain.h (generic_fatal, fatal_syntax, fatal_sys) + * src/b-fb.h (Ierror, Oerror) + * src/base.h (unexpected_EOF, thank_you_and_goodnight): + Move ‘exiting’ attribute to beginning of func decl. + +diff --git a/src/b-complain.h b/src/b-complain.h +index 0ffd157..ea0ffc5 100644 +--- a/src/b-complain.h ++++ b/src/b-complain.h +@@ -32,12 +32,14 @@ extern void generic_warn (char const *who, char const *fmt, ...) + printf_string (2, 3); + extern void generic_error (char const *who, char const *fmt, ...) + printf_string (2, 3); ++exiting + extern void generic_fatal (char const *who, char const *fmt, ...) +- printf_string (2, 3) exiting; ++ printf_string (2, 3); ++exiting + extern void fatal_syntax (size_t lno, char const *fmt, ...) +- printf_string (2, 3) exiting; +-extern void fatal_sys (char const *who) +- exiting; ++ printf_string (2, 3); ++exiting ++extern void fatal_sys (char const *who); + + /* Idioms. Here, prefix P stands for "program" (general operation); + M for "manifestation"; R for "repository". */ +diff --git a/src/b-fb.h b/src/b-fb.h +index c9850e7..bf5eaf8 100644 +--- a/src/b-fb.h ++++ b/src/b-fb.h +@@ -21,9 +21,11 @@ + */ + + extern int change_mode (int fd, mode_t mode); +-extern void Ierror (void) exiting; ++exiting ++extern void Ierror (void); + extern void testIerror (FILE *f); +-extern void Oerror (void) exiting; ++exiting ++extern void Oerror (void); + extern void testOerror (FILE *o); + extern FILE *fopen_safer (char const *filename, char const *type); + extern void Ozclose (FILE **p); +diff --git a/src/base.h b/src/base.h +index 163ee09..5e7a9f8 100644 +--- a/src/base.h ++++ b/src/base.h +@@ -755,8 +755,8 @@ int dorewrite (bool lockflag, int changed); + int donerewrite (int changed, time_t newRCStime); + void ORCSclose (void); + void ORCSerror (void); +-void unexpected_EOF (void) +- exiting; ++exiting ++void unexpected_EOF (void); + void initdiffcmd (struct diffcmd *dc); + int getdiffcmd (struct fro *finfile, bool delimiter, + FILE *foutfile, struct diffcmd *dc); +@@ -831,8 +831,8 @@ char const *date2str (char const date[datesize], + char datebuf[datesize + zonelenmax]); + + /* rcsutil */ +-void thank_you_and_goodnight (int const how) +- exiting; ++exiting ++void thank_you_and_goodnight (int const how); + /* These are for ‘thank_you_and_goodnight’. */ + #define TYAG_ORCSERROR (1 << 3) + #define TYAG_DIRTMPUNLINK (1 << 2) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 71e499085f..9136ea30a9 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -794,7 +794,8 @@ projects, from individuals to large-scale enterprise operations.") version ".tar.xz")) (sha256 (base32 - "1zsx7bb0rgvvvisiy4zlixf56ay8wbd9qqqcp1a1g0m1gl6mlg86")))) + "1zsx7bb0rgvvvisiy4zlixf56ay8wbd9qqqcp1a1g0m1gl6mlg86")) + (patches (search-patches "rcs-5.9.4-noreturn.patch")))) (build-system gnu-build-system) (native-inputs `(("ed" ,ed))) (home-page "http://www.gnu.org/software/rcs/") -- cgit v1.2.3