make fails on master
John Ralls
jralls at ceridwen.us
Sun Jun 14 22:42:55 EDT 2015
> On Jun 14, 2015, at 6:44 PM, Alex Aycinena <alex.aycinena at gmail.com> wrote:
>
> John,
>
> On Sun, Jun 7, 2015 at 1:34 PM, John Ralls <jralls at ceridwen.us <mailto:jralls at ceridwen.us>> wrote:
>
> > On Jun 7, 2015, at 12:38 PM, Derek Atkins <derek at ihtfp.com <mailto:derek at ihtfp.com>> wrote:
> >
> >
> > On Sun, June 7, 2015 3:02 pm, John Ralls wrote:
> >
> >> Alex,
> >>
> >> Turns out that for some flavors of GCC -std=gnu99 is required for strdup
> >> to be provided. I’d made the default c99, which in those cases doesn’t
> >> support it, hence the error.
> >>
> >> Fixed and pushed.
> >
> > Why are we using strdup() and not g_strdup()?
>
> Oversight? It’s used in several places. The earliest I found was a5d4c7cf from 2004.
>
> Regards,
> John Ralls
>
>
> I upgraded My Fedora 20 machine to Fedora 22, which came out a few weeks ago, and got the same problem again. In order to make sure it was not my new build environment, I cloned a new gnucash, checked out maint, and was able to make, make-clean, and make-install OK. So the new F22 build environment is OK. But when I checked out master on the new clone and wiped out my build directory and tried make again, I got the same error, as follows:
>
> /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c: In function 'gfec_catcher':
> /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c:60:25: error: implicit declaration of function 'strdup' [-Werror=implicit-function-declaration]
> *(char**)data = strdup("Guile error: Too many recursions in error catch handler.");
> ^
> /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c:60:23: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
> *(char**)data = strdup("Guile error: Too many recursions in error catch handler.");
> ^
> /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c:79:13: warning: 'scm_internal_stack_catch' is deprecated [-Wdeprecated-declarations]
> scm_internal_stack_catch(SCM_BOOL_T,
> ^
> In file included from /usr/include/guile/2.0/libguile.h:126:0,
> from /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.h:12,
> from /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c:13:
> /usr/include/guile/2.0/libguile/deprecated.h:648:45: note: declared here
> SCM_DEPRECATED SCM scm_internal_stack_catch (SCM tag,
> ^
> /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c:99:23: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
> *(char**)data = strdup("Error running guile function.");
> ^
> /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c:103:23: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
> *(char**)data = strdup(msg);
> ^
> /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c: In function 'gfec_eval_string':
> /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c:135:5: warning: 'scm_internal_stack_catch' is deprecated [-Wdeprecated-declarations]
> result = scm_internal_stack_catch(SCM_BOOL_T,
> ^
> In file included from /usr/include/guile/2.0/libguile.h:126:0,
> from /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.h:12,
> from /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c:13:
> /usr/include/guile/2.0/libguile/deprecated.h:648:45: note: declared here
> SCM_DEPRECATED SCM scm_internal_stack_catch (SCM tag,
> ^
> /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c: In function 'gfec_apply':
> /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c:203:5: warning: 'scm_internal_stack_catch' is deprecated [-Wdeprecated-declarations]
> result = scm_internal_stack_catch(SCM_BOOL_T,
> ^
> In file included from /usr/include/guile/2.0/libguile.h:126:0,
> from /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.h:12,
> from /home/gnucash-dev/gitcheckouts/gnucash-new/src/app-utils/gfec.c:13:
> /usr/include/guile/2.0/libguile/deprecated.h:648:45: note: declared here
> SCM_DEPRECATED SCM scm_internal_stack_catch (SCM tag,
> ^
> cc1: all warnings being treated as errors
> Makefile:860: recipe for target 'gfec.lo' failed
> make[4]: *** [gfec.lo] Error 1
> make[4]: Leaving directory '/home/gnucash-dev/gitcheckouts/gnucash-new-build/src/app-utils'
>
> So your last fix seems to have worked for F20 & F21 but not for F22. Is there any further information I can provide you?
Alex,
Well, make sure that it’s getting -std=gnu99 in CFLAGS, for one. Then root around in /usr/include and try to figure out why strdup isn’t being declared.
If all else fails we can just replace the dozen-or-so instances with g_strdup, which will suffice until those are all replaced with std::string::operator=().
Regards,
John Ralls
More information about the gnucash-devel
mailing list