#include <emmintrin.h> //SSE2 breaks PyECLib for other platforms in OpenStack

Issue #8 resolved
rafaelfolco . created an issue

This is breaking non-intel platforms on OpenStack that uses PyECLib > 1.0.3. This SSE include is intel specific. Without this PyECLib builds liberasurecode-1.0.5 successfully.

2015-03-17 12:50:03.504 | make[1]: Entering directory '/tmp/pip-build-U6vKop/PyECLib/src/c/liberasurecode-1.0.5/src' 2015-03-17 12:50:03.504 | Making all in builtin/xor_codes 2015-03-17 12:50:03.504 | make[2]: Entering directory '/tmp/pip-build-U6vKop/PyECLib/src/c/liberasurecode-1.0.5/src/builtin/xor_codes' 2015-03-17 12:50:03.505 | CC libXorcode_la-xor_code.lo 2015-03-17 12:50:03.505 | xor_code.c:25:31: fatal error: emmintrin.h: No such file or directory 2015-03-17 12:50:03.505 | #include <emmintrin.h> //SSE2 2015-03-17 12:50:03.505 | ^ 2015-03-17 12:50:03.505 | compilation terminated. 2015-03-17 12:50:03.506 | Makefile:361: recipe for target 'libXorcode_la-xor_code.lo' failed 2015-03-17 12:50:03.506 | make[2]: [libXorcode_la-xor_code.lo] Error 1 2015-03-17 12:50:03.506 | make[2]: Leaving directory '/tmp/pip-build-U6vKop/PyECLib/src/c/liberasurecode-1.0.5/src/builtin/xor_codes' 2015-03-17 12:50:03.506 | Makefile:654: recipe for target 'all-recursive' failed 2015-03-17 12:50:03.506 | make[1]: [all-recursive] Error 1 2015-03-17 12:50:03.507 | make[1]: Leaving directory '/tmp/pip-build-U6vKop/PyECLib/src/c/liberasurecode-1.0.5/src' 2015-03-17 12:50:03.507 | Makefile:403: recipe for target 'all-recursive' failed 2015-03-17 12:50:03.507 | make: [all-recursive] Error 1 2015-03-17 12:50:03.507 | CFLAGS=" -I/tmp/pip-build-U6vKop/PyECLib/src/c/liberasurecode-1.0.5/include -I/tmp/pip-build-U6vKop/PyECLib/src/c/liberasurecode-1.0.5/include -I/tmp/pip-build-U6vKop/PyECLib/src/c/liberasurecode-1.0.5/include/xor_codes -I/tmp/pip-build-U6vKop/PyECLib/src/c/liberasurecode-1.0.5/include/erasurecode" LDFLAGS=" -L/tmp/pip-build-U6vKop/PyECLib/src/c/liberasurecode-1.0.5/.libs -L/tmp/pip-build-U6vKop/PyECLib/src/c/liberasurecode-1.0.5/src/.libs " ./configure --prefix=//usr/local 2015-03-17 12:50:03.508 | ******** 2015-03-17 12:50:03.508 | Error: liberasurecode-1.0.5 install failed! 2015-03-17 12:50:03.508 | Please install liberasurecode-1.0.5 manually and retry 2015-03-17 12:50:03.508 | https://bitbucket.org/tsg-/liberasurecode.git 2015-03-17 12:50:03.508 | ********

Comments (11)

  1. Kevin Greenan

    Looking... FWIW, liberasurecode has pretty much only been tested on Intel gear, so I am not shocked that this happened. We had to deal with this for the NEON integration in gf-complete, so I'll just do something similar.

  2. mmedvede

    @kmgreen2 I can confirm that the a2f17bc fixes the compilation error for non-intel platform. Tested on ppc. Thank you for the fast response!

  3. Kevin Greenan

    @tsg- How do you feel about backporting to 1.0.5? I am fine with it, but think we should both agree...

  4. Tushar Gohad repo owner

    @kmgreen2 @rafaelfolco thanks for the report and the quick fix .. we can get this backported to 1.0.5, on a 1.0.5 branch perhaps?

    @rafaelfolco are you looking for a Debian update in particular?

  5. rafaelfolco . reporter

    No, PyECLib builds it with "setup.py install". It builds with liberasurecode-1.0.5. I assume they won't use top-of-master branch. Not sure how PyECLib consumes 1.0.5 though. But its easier to re-bundle 1.0.5 inside PyECLib if the backport is possible. http://logs.openstack.org/52/164252/3/check/check-tempest-dsvm-postgres-full/ba18a6b/logs/devstacklog.txt.gz Just for the record, the workaround is to create an empty header file: sudo touch /usr/lib/gcc/ppc64-redhat-linux/*/include/emmintrin.h

    Thanks for quick responses ! Very agile tool to report issues, liked it.

  6. Kevin Greenan

    We'll actually want to do both. The current PyECLib packaging is temporary to unblock progress for Kilo. It turned out that we did not have the correct versions up on Debian and RH repos, so we decided to temporarily package the dependencies with PyECLib until Debian and RH were updated.

  7. Tushar Gohad repo owner

    @rafaelfolco, @kmgreen2 is correct. The PyECLib packaged version of liberasurecode is only a temporary solution to make Jenkins happy. If you already have latest liberasurecode (master) installed, "setup.py install" will skip liberasurecode install step.

    If this is to get PyECLib building on PPC for Jenkins, we'll get a new update for PyECLib uploaded shortly. Thanks.

  8. rafaelfolco . reporter

    Yes, was referring to devstack-gate. Will keep the workaround until PyECLib does not include the fix.

  9. Log in to comment