aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@inbox.ru>2017-03-23 10:23:04 +0000
committerMarius Bakke <mbakke@fastmail.com>2017-03-23 19:26:27 +0100
commit096f0080147c8a1a0285416f5ff0ecfc353414b6 (patch)
tree0201add79da867d15d74fc35e55b4a3057c27a09
parentce54f5db7d072244c115b4790987b6faca0031b1 (diff)
downloadguix-096f0080147c8a1a0285416f5ff0ecfc353414b6.tar.gz
guix-096f0080147c8a1a0285416f5ff0ecfc353414b6.zip
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 <mbakke@fastmail.com>
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/patches/rcs-5.9.4-noreturn.patch94
-rw-r--r--gnu/packages/version-control.scm3
3 files changed, 97 insertions, 1 deletions
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 <ttn@gnu.org>
+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 <https://bugs.debian.org/778100>.
+
+ * 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/")