Boost updated to 1.58.0 in rawhide and f23

Jonathan Wakely jwakely at redhat.com
Thu Jul 23 17:50:47 UTC 2015


On 23/07/15 14:27 +0200, David Tardon wrote:
>Hi,
>
>On Sat, Jul 18, 2015 at 12:46:51PM +0100, Jonathan Wakely wrote:
>> Any problems rebuilding either open a bug or feel free to email me or
>> ping me on IRC (my freenode nick is 'redi') and I'll be happy to help.
>
>This is a work-in-progress list of FTBFS packages:
>
>* Build failures:
>
>- F23 + Rawhide
>
>xs

This seems to be a bug caused by the new std::string in GCC-5, the
error I get is:

initial.cxx:2590:34: error: redefinition of 'const char X_7ffd70a41bb0 []'
 static const char X_7ffd70a41bb0[] = "max-eval-depth";
                                  ^
initial.cxx:104:19: note: 'const char X_7ffd70a41bb0 [15]' previously defined here
 static const char X_7ffd70a41bb0[] = "fn-%background";
                   ^

which is due to this:

    const char *name = str("S_%F", string);
    if (strlen(name) > MAXVARNAME)
      name = str("X_%zulx", (long long) string);
    print("static const char %s[] = ", name);

This assumes that every const char* being printed has a unique
address, which is not a valid assumption, but probably worked with the
Copy-on-Write strings before GCC-5. Or maybe it's a change in
Boost.Foreach that causes it. Either way, the code makes invalid
assumptions.

I'm testing this patch.


-------------- next part --------------
--- dump.cxx~	2015-07-23 18:48:30.115033012 +0100
+++ dump.cxx	2015-07-23 18:48:31.567038423 +0100
@@ -263,7 +263,7 @@
 	const List *title = runfd(0, "initial.xs", 0);
 
 	printheader(title);
-	foreach (Dict::value_type var, vars) dumpvar(var.first.c_str(), var.second);
+	foreach (Dict::value_type& var, vars) dumpvar(var.first.c_str(), var.second);
 
 	/* these must be assigned in this order, or things just won't work */
 	varbuf << "\nstatic const struct { const char *name; List *value; } defs[] = {\n";


More information about the devel mailing list