mozilla-services / syncserver

Run-Your-Own Firefox Sync Server
Mozilla Public License 2.0
1.87k stars 145 forks source link

Problem building syncserver -- issue with umemcache #50

Closed truckershitch closed 9 years ago

truckershitch commented 9 years ago

I upgraded to Fedora 21 a few days ago and tried to build syncserver. There seems to be a problem with umemcache:

...

Running setup.py install for umemcache building 'umemcache' extension gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -Wno-error -fPIC -DWIN32_LEAN_AND_MEAN -I./lib/ -I/usr/include/python2.7 -c ./python/umemcache.cpp -o build/temp.linux-x86_64-2.7/./python/umemcache.o ./python/umemcache.cpp: In function ‘int Clientinit(PyClient, PyObject, PyObject)’: ./python/umemcache.cpp:255:60: warning: deprecated conversion from string constant to ‘char_’ [-Wwrite-strings] static char _kwlist[] = {"address", "max_itemsize", NULL}; ^ ./python/umemcache.cpp:255:60: warning: deprecated conversion from string constant to ‘char’ [-Wwrite-strings] ./python/umemcache.cpp: In function ‘PyObject* Clientincr(PyClient, PyObject_)’: ./python/umemcache.cpp:822:62: error: format not a string literal and no format arguments [-Werror=format-security] return PyErr_Format(umemcache_MemcachedError, pResult); ^ ./python/umemcache.cpp: In function ‘PyObject* Clientdecr(PyClient, PyObject_)’: ./python/umemcache.cpp:870:62: error: format not a string literal and no format arguments [-Werror=format-security] return PyErr_Format(umemcacheMemcachedError, pResult); ^ ./python/umemcache.cpp: At global scope: ./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char’ [-Wwrite-strings] }; ^ ./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char’ [-Wwrite-strings] ./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char’ [-Wwrite-strings] ./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char’ [-Wwrite-strings] ./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char’ [-Wwrite-strings] ./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char’ [-Wwrite-strings] ./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char’ [-Wwrite-strings] ./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char_’ [-Wwrite-strings] ./python/umemcache.cpp: In function ‘void initumemcache()’: ./python/umemcache.cpp:1124:31: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] PyExc_RuntimeError, NULL); ^ cc1plus: some warnings being treated as errors error: command 'gcc' failed with exit status 1 Complete output from command /var/www/weave/syncserver/local/bin/python2 -c "import setuptools, tokenize;file='/var/www/weave/syncserver/local/build/umemcache/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-MZOSi1-record/install-record.txt --single-version-externally-managed --compile --install-headers /var/www/weave/syncserver/local/include/site/python2.7: running install

running build

running build_ext

building 'umemcache' extension

creating build

creating build/temp.linux-x86_64-2.7

creating build/temp.linux-x86_64-2.7/python

creating build/temp.linux-x86_64-2.7/lib

gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -Wno-error -fPIC -DWIN32_LEAN_AND_MEAN -I./lib/ -I/usr/include/python2.7 -c ./python/umemcache.cpp -o build/temp.linux-x86_64-2.7/./python/umemcache.o

./python/umemcache.cpp: In function ‘int Clientinit(PyClient, PyObject_, PyObject*)’:

./python/umemcache.cpp:255:60: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

static char *kwlist[] = {"address", "max_item_size", NULL};

                                                        ^

./python/umemcache.cpp:255:60: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

./python/umemcache.cpp: In function ‘PyObject* Clientincr(PyClient, PyObject_)’:

./python/umemcache.cpp:822:62: error: format not a string literal and no format arguments [-Werror=format-security]

     return PyErr_Format(umemcache_MemcachedError, pResult);

                                                          ^

./python/umemcache.cpp: In function ‘PyObject* Clientdecr(PyClient, PyObject_)’:

./python/umemcache.cpp:870:62: error: format not a string literal and no format arguments [-Werror=format-security]

     return PyErr_Format(umemcache_MemcachedError, pResult);

                                                          ^

./python/umemcache.cpp: At global scope:

./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

};

^

./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

./python/umemcache.cpp:1056:1: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

./python/umemcache.cpp: In function ‘void initumemcache()’:

./python/umemcache.cpp:1124:31: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

   PyExc_RuntimeError, NULL);

                           ^

cc1plus: some warnings being treated as errors

error: command 'gcc' failed with exit status 1


Cleaning up... Command /var/www/weave/syncserver/local/bin/python2 -c "import setuptools, tokenize;file='/var/www/weave/syncserver/local/build/umemcache/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-MZOSi1-record/install-record.txt --single-version-externally-managed --compile --install-headers /var/www/weave/syncserver/local/include/site/python2.7 failed with error code 1 in /var/www/weave/syncserver/local/build/umemcache Traceback (most recent call last): File "./local/bin/pip", line 11, in sys.exit(main()) File "/var/www/weave/syncserver/local/lib/python2.7/site-packages/pip/init.py", line 185, in main return command.main(cmd_args) File "/var/www/weave/syncserver/local/lib/python2.7/site-packages/pip/basecommand.py", line 161, in main text = '\n'.join(complete_log) UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 40: ordinal not in range(128) Makefile:22: recipe for target 'local/COMPLETE' failed make: *\ [local/COMPLETE] Error 1

python --version

Python 2.7.8

rpm -qa | grep virtualenv

python-virtualenv-1.11.6-1.fc21.noarch

gcc --version

gcc (GCC) 4.9.2 20141101 (Red Hat 4.9.2-1) Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

uname -r

3.17.4-301.fc21.x86_64

This seems related to an earlier closed bug. This is with a fresh pull done this evening, so that compiler flag should be in effect.

What else do you need from me?

Thanks!

rfk commented 9 years ago

I see this in the output:

cc1plus: some warnings being treated as errors

So I guess the fix from https://github.com/mozilla-services/syncserver/commit/1f32e713502f96ab7f9c1cec8e788ccc4fb72e12 is not taking effect for some reason. Are you e.g. passing any custom $CFLAGS into the build process yourself, or is this just with a vanilla make build?

truckershitch commented 9 years ago

This is a vanilla 'make build'. I am not passing in any custom flags that I'm aware of. I just did a fresh 'git pull' and ran 'make build' immediately afterward.

rfk commented 9 years ago

Can you please grab the entire output of make build from start to finish (rather than just the part about umemcached) and put it in a pastebin on http://pastebin.mozilla.org/ for me to review? There may be some clues earlier in the build about what's going on here.

truckershitch commented 9 years ago

No problem. Here is the whole log: http://pastebin.mozilla.org/8001719

rfk commented 9 years ago

Please try changing the CFLAGS declaration in the makefile from this:

CFLAGS = -Wno-error

To this:

CFLAGS = "-Wno-error -Wno-error=format-security"
truckershitch commented 9 years ago

Ok, that seems to have worked. Log is here: http://pastebin.mozilla.org/8003436

I will report back if I have any more errors. Thanks!

rfk commented 9 years ago

Great, I committed this fix in https://github.com/mozilla-services/syncserver/commit/043fa9e6510d58d012c4f33b307916677f3d7fcc. Thanks for taking to time to work through this.