couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nick North <nort...@gmail.com>
Subject Re: Windows build failing on couch_ejson_compare.c
Date Sun, 19 Jul 2015 09:08:23 GMT
Thanks for the advice. I've submitted a PR and would be grateful for a +1
from a *nix person before merging.

Nick

On Sun, 19 Jul 2015 at 02:46 Paul J Davis <paul.joseph.davis@gmail.com>
wrote:

> The macro is totally fine. There are always plenty of those to account for
> windows/*nix differences so it's not dirty by any means.
>
>
>
> > On Jul 18, 2015, at 8:28 AM, Nick North <north.n@gmail.com> wrote:
> >
> > I see a couple of obvious solutions to this problem:
> >
> >
> >   1. Use the thread_local keyword rather than __thread. The semantics are
> >   not identical, so @davisp may have views on whether the behaviour is
> still
> >   OK. From the Windows build point of view, it would force us into
> building
> >   with Visual Studio 2015, which releases on 20 Jul, so we don't know
> whether
> >   it works with the rest of the build.
> >   2. Create a macro that expands to __declspec(thread) or __thread as
> >   appropriate. This feels less correct than the thread_local solution,
> but
> >   maybe better in the short term.
> >
> > Does anyone have any thoughts on which is the better way forward? Or have
> > alternative suggestions?
> >
> > Nick
> >
> >> On Fri, 17 Jul 2015 at 22:09 Nick North <north.n@gmail.com> wrote:
> >>
> >> Answering my own question: looks as if Microsoft uses __declspec(thread)
> >> rather than __thread.
> >>
> >> Nick
> >>
> >>> On Fri, 17 Jul 2015 at 22:02 Nick North <north.n@gmail.com> wrote:
> >>>
> >>> I'm trying out @wohali's Windows build, which went well up to
> compilation
> >>> of couch_ejson_compare.c, where it seems to be tripping up over the
> changes
> >>> in the recent commit
> >>> <
> https://github.com/apache/couchdb-couch/commit/6b38dfacbb97c5cb7c89a27115d1227c7c52dbba
> >
> >>> to optimise performance. Specifically it gives this series of errors:
> >>>
> >>> Compiling
> >>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c
> >>> ERROR: compile failed while processing c:/couchdb/src/couch:
> rebar_abort
> >>> Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86
> >>> Copyright (C) Microsoft Corporation.  All rights reserved.
> >>>
> >>> cl : Command line warning D9002 : ignoring unknown option '-fno-common'
> >>> couch_ejson_compare.c
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
> >>> warnin
> >>> g C4431: missing type specifier - int assumed. Note: C no longer
> supports
> >>> defaul
> >>> t-int
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
> >>> error
> >>> C2054: expected '(' to follow '__thread'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
> >>> error
> >>> C2085: 'collator' : not in formal parameter list
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
> >>> error
> >>> C2143: syntax error : missing ';' before '='
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(58) :
> >>> warnin
> >>> g C4255: 'get_collator' : no function prototype given: converting '()'
> to
> >>> '(void
> >>> )'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(62) :
> >>> warnin
> >>> g C4255: 'get_collator' : no function prototype given: converting '()'
> to
> >>> '(void
> >>> )'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(66) :
> >>> error
> >>> C2065: 'collator' : undeclared identifier
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(66) :
> >>> warnin
> >>> g C4047: '!=' : 'int' differs in levels of indirection from 'void *'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(67) :
> >>> error
> >>> C2065: 'collator' : undeclared identifier
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(67) :
> >>> warnin
> >>> g C4047: 'return' : 'UCollator *' differs in levels of indirection from
> >>> 'int'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(70) :
> >>> error
> >>> C2065: 'collator' : undeclared identifier
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(70) :
> >>> warnin
> >>> g C4047: '=' : 'int' differs in levels of indirection from 'UCollator
> *'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
> >>> error
> >>> C2065: 'collator' : undeclared identifier
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
> >>> warnin
> >>> g C4047: 'function' : 'UCollator *' differs in levels of indirection
> from
> >>> 'int'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
> >>> warnin
> >>> g C4024: 'ucol_close_55' : different types for formal and actual
> >>> parameter 1
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(78) :
> >>> error
> >>> C2065: 'collator' : undeclared identifier
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(78) :
> >>> warnin
> >>> g C4047: '=' : 'UCollator *' differs in levels of indirection from
> 'int'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(84) :
> >>> error
> >>> C2065: 'collator' : undeclared identifier
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(84) :
> >>> warnin
> >>> g C4047: 'return' : 'UCollator *' differs in levels of indirection from
> >>> 'int'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(256)
> >>> : warni
> >>> ng C4127: conditional expression is constant
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(296)
> >>> : warni
> >>> ng C4127: conditional expression is constant
> >>>
> >>> I'll look into this further tomorrow, but someone more knowledgeable
> may
> >>> immediately know what the problem is and be able to suggest a solution.
> >>>
> >>> Nick
> >>>
> >>>
> >>>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message