libport usage and extra inclusion line

Emery Hemingway emery at ...261...
Wed Jun 22 11:10:41 CEST 2016


I think I had the same issue with curl, I just filed an issue about this:
https://github.com/genodelabs/genode/issues/2021

Emery

On Wed, Jun 22, 2016 at 10:39:38AM +0200, Menno Valkema wrote:
> Hello Christian,
> 
> Thanks for your reply. A better example is the curl library. I've put
> together an example to reproduce the behavior.
> 
> Attached a patch which includes the curl library into the hello
> tutorial. It doesn't call any methods of the library, but it does
> include <curl/curl.h> and shows the necessity of the extra INC_DIR
> directive.
> 
> To run it I take the following steps:
> $ git clone https://github.com/genodelabs/genode.git hello_curl
> $ cd hello_curl
> 
> Patch the sources with the attached hello_curl.patch
> $ patch -p1 < ~/tmp/hello_curl.patch
> $ ./tool/create_builddir linux_x86
> $ cd build/linux_x86
> $ echo 'REPOSITORIES += $(GENODE_DIR)/repos/hello_tutorial' >> \
> 	etc/build.conf
> $ echo 'REPOSITORIES += $(GENODE_DIR)/repos/libports' >> etc/build.conf
> $ ../../tool/ports/prepare_port curl libc libssh openssl zlib
> $ make run/hello
> 
> This compiles and runs fine (not doing anything functional).
> 
> Now remove the following line from
> repos/hello_tutorial/src/hello/client/target.mk:
> 
> INC_DIR += $(REP_DIR)/../libports/src/lib/curl/spec/64bit/curl/
> 
> Running it again will give you an error about a missing "curlbuild.h".
> Hence our question what are we doing wrong? Is this behavior by design,
> or should we take different steps to include and use the library port?
> 
> Thanks, Menno
> 
> PS. I've tested lwip in a similar way, and you're right: the error is
> not there.
> 
> -- 
> Cyber Security Labs B.V. |  https://nlcsl.com
> Gooimeer 6-31 | 1411 DD Naarden | The Netherlands
> 
> 
> 
> On 21-06-16 14:10, Christian Helmuth wrote:
> > Hello Menno,
> > 
> > On Tue, Jun 21, 2016 at 01:01:55PM +0200, Menno Valkema wrote:
> >> However in some cases this is not sufficient. For example lwip requires
> >> an additional include directive:
> >>
> >> INC_DIR += $(REP_DIR)/src/lib/lwip/include
> >> (line from repos/libports/src/test/lwip/http_srv_static/target.mk)
> > 
> > If I remove this line from target.mk the test component compiles
> > without error.
> > 
> >> Leaving out this line will result in a compilation error of a local
> >> include file. Looking at various library ports (mbedtls, polarssl, curl,
> >> and probably more) we see similar behavior. Usually some library
> >> configuration header file should be added manually to the include path
> >> to make things work.
> > 
> > Could you please be more specific about the error message or maybe
> > point out an example in the public sources that breaks if the INC_DIR
> > directive is removed?
> > 
> > Regards
> > 

> diff --git a/repos/hello_tutorial/run/hello.run b/repos/hello_tutorial/run/hello.run
> index 0dd52d8..9f017f0 100644
> --- a/repos/hello_tutorial/run/hello.run
> +++ b/repos/hello_tutorial/run/hello.run
> @@ -14,6 +14,7 @@ install_config {
>  <config>
>  	<parent-provides>
>  		<service name="LOG"/>
> +		<service name="ROM"/>
>  	</parent-provides>
>  	<default-route>
>  		<any-service> <parent/> <any-child/> </any-service>
> @@ -31,7 +32,8 @@ install_config {
>  # Boot image
>  #
>  
> -build_boot_image { core init hello_client hello_server }
> +build_boot_image { core init hello_client hello_server 
> +	curl.lib.so ld.lib.so libc.lib.so libcrypto.lib.so libssh.lib.so libssl.lib.so zlib.lib.so }
>  
>  append qemu_args " -nographic "
>  
> diff --git a/repos/hello_tutorial/src/hello/client/main.cc b/repos/hello_tutorial/src/hello/client/main.cc
> index f600117..19bc1e4 100644
> --- a/repos/hello_tutorial/src/hello/client/main.cc
> +++ b/repos/hello_tutorial/src/hello/client/main.cc
> @@ -16,6 +16,7 @@
>  #include <base/log.h>
>  #include <hello_session/connection.h>
>  
> +#include <curl/curl.h>
>  
>  Genode::size_t Component::stack_size() { return 64*1024; }
>  
> diff --git a/repos/hello_tutorial/src/hello/client/target.mk b/repos/hello_tutorial/src/hello/client/target.mk
> index 3d69e29..7987979 100644
> --- a/repos/hello_tutorial/src/hello/client/target.mk
> +++ b/repos/hello_tutorial/src/hello/client/target.mk
> @@ -1,3 +1,4 @@
>  TARGET = hello_client
>  SRC_CC = main.cc
> -LIBS   = base
> +LIBS   = base curl libc
> +INC_DIR += $(REP_DIR)/../libports/src/lib/curl/spec/64bit/curl/

> ------------------------------------------------------------------------------
> Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
> Francisco, CA to explore cutting-edge tech and listen to tech luminaries
> present their vision of the future. This family event has something for
> everyone, including kids. Get more information and register today.
> http://sdm.link/attshape

> _______________________________________________
> genode-main mailing list
> genode-main at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://lists.genode.org/pipermail/users/attachments/20160622/1709fe33/attachment.sig>


More information about the users mailing list