Jon,

> On 8 Mar 2017, at 01:34, Jon Loeliger <j...@netgate.com> wrote:
> 
> On Mon, Mar 6, 2017 at 2:57 PM, Jon Loeliger <j...@netgate.com> wrote:
> 
> Hi Billy,
> 
> Soooo, despite the Peanut Gallery, I'm not yet crazy... :-)
> 
> Now all we have to do is find the missing dependency in a Makefile! :-)
> 
> Thanks,
> jdl
> 
> I may not be crazy (yet), but I am in a vacuum.
> 
> OK, as a review, here is the error message:
> 
> running build_ext
> building 'vpp_api' extension
> creating build
> creating build/temp.linux-x86_64-2.7
> creating build/temp.linux-x86_64-2.7/vpp_papi
> gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -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 -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 -fPIC 
> -I/var/lib/jenkins/workspace/build-ngr-rpm/build_root/BUILD/vpp/build-root/install-vpp-native/vpp/include/
>  -I/usr/include/python2.7 -c vpp_papi/pneum_wrap.c -o 
> build/temp.linux-x86_64-2.7/vpp_papi/pneum_wrap.o
> creating build/lib.linux-x86_64-2.7
> gcc -pthread -shared -Wl,-z,relro 
> build/temp.linux-x86_64-2.7/vpp_papi/pneum_wrap.o 
> -L/var/lib/jenkins/workspace/build-ngr-rpm/build_root/BUILD/vpp/build-root/install-vpp-native/vpp/lib64
>  -L. -lpneum -lpython2.7 -o build/lib.linux-x86_64-2.7/vpp_api.so
> /bin/ld: cannot find -lpneum
> collect2: error: ld returned 1 exit status
> error: command 'gcc' failed with exit status 1
> make[7]: *** [install-exec-local] Error 1
> 
> 
> So, let's pick on install-exec-local.  That is from 
> src/vpp-api/python/Makefile.am:
> 
> install-exec-local:
>         cd $(srcdir);                                                   \
>         mkdir -p $(pythondir);                                          \
>         mkdir -p $(pyexecdir);                                          \
>         PYTHONUSERBASE=$(prefix)                                        \
>         python setup.py build_ext -L $(libdir)                          \
>       -I $(prefix)/include/ install --user
> 
> And the setup.py in that directory says:
> 
> setup (name = 'vpp_papi',
>        version = '1.3',
>        description = 'VPP Python binding',
>        author = 'Ole Troan',
>        author_email = 'o...@cisco.com',
>        test_suite = 'tests',
>        packages=['vpp_papi'],
>        ext_modules = [
>            Extension(
>                'vpp_api',
>                sources = ['vpp_papi/pneum_wrap.c'],
>                libraries = ['pneum'],
>            )],
>        long_description = '''VPP Python language binding.''',
>        zip_safe = True,
> )
> 
> Good, it lists pneum.  But the problem is, we shouldn't run this
> setup.py until after pneum is fully linked and on disk.  This happened
> too soon:
> 
> gcc -pthread -shared -Wl,-z,relro 
> build/temp.linux-x86_64-2.7/vpp_papi/pneum_wrap.o 
> -L/var/lib/jenkins/workspace/build-ngr-rpm/build_root/BUILD/vpp/build-root/install-vpp-native/vpp/lib64
>  -L. -lpneum -lpython2.7 -o build/lib.linux-x86_64-2.7/vpp_api.so
> /bin/ld: cannot find -lpneum
> 
> 
> Which means, the rule for vpp_api.so's dependencies, isn't listing the
> real pneum library properly.
> 
> I have no idea where that is supposed to take place yet.

I have also seen this error. What I suspect happens is that while pneum is 
already built and that the build dependency is correct, the library isn't 
installed under the install- directory yet.

I didn't manage to reproduce it right now, but would you mind trying this to 
see if it works:

diff --git a/src/vpp-api/python/Makefile.am b/src/vpp-api/python/Makefile.am
index 5407682..c60e4f4 100644
--- a/src/vpp-api/python/Makefile.am
+++ b/src/vpp-api/python/Makefile.am
@@ -39,7 +39,7 @@ libpneum_la_LDFLAGS = -module
 libpneum_la_CPPFLAGS =

 # TODO: Support both Python 2 and 3.
-install-exec-local:
+install-exec-local: install-libLTLIBRARIES
        cd $(srcdir);                                                   \
        mkdir -p $(pythondir);                                          \
        mkdir -p $(pyexecdir);                                          \


(In other news I am looking at using CFFI instead, and then the whole 
vpp_api.so would go away).

Cheers,
Ole

Attachment: signature.asc
Description: Message signed with OpenPGP

_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev

Reply via email to