You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Yann Ylavic <yl...@gmail.com> on 2017/09/08 15:14:55 UTC

Re: svn commit: r1807777 - /httpd/httpd/trunk/modules/md/Makefile.in

Hi Stefan,

On Fri, Sep 8, 2017 at 5:06 PM,  <ic...@apache.org> wrote:
> Author: icing
> Date: Fri Sep  8 15:06:44 2017
> New Revision: 1807777
>
> URL: http://svn.apache.org/viewvc?rev=1807777&view=rev
> Log:
> On the trunk:
>
> mod_md: added necessary CPPFLAGS for a2md build.

Thanks, it fixed some APR dependencies for me.

Now I'm here:

|| *** Warning: Linking the shared library mod_md.la against the non-libtool
|| *** objects  md_acme.o md_acme_acct.o md_acme_authz.o
md_acme_drive.o md_core.o md_curl.o md_crypt.o md_http.o md_json.o
md_jws.o md_log.o md_reg.o md_store.o md_store_fs.o md_util.o is not
portable!
|| /home/yle/bin/ld: error: md_json.o: requires dynamic R_X86_64_PC32
reloc against 'md_json_destroy' which may overflow at runtime;
recompile with -fPIC
|| /home/yle/bin/ld: error: md_reg.o: requires dynamic R_X86_64_PC32
reloc against 'md_reg_find_overlap' which may overflow at runtime;
recompile with -fPIC
|| /home/yle/bin/ld: error: md_util.o: requires dynamic R_X86_64_PC32
reloc against 'md_array_str_index' which may overflow at runtime;
recompile with -fPIC
|| collect2: error: ld returned 1 exit status

Any idea?

Re: svn commit: r1807777 - /httpd/httpd/trunk/modules/md/Makefile.in

Posted by Stefan Eissing <st...@greenbytes.de>.
Yann, thanks for testing. I had the build working on MacOS, but gcc on my
Ubuntu was not happy. The problem is something that plagued me already in
mod_http2: having the same source/objects shared in two link targets.

Previously, I build libmd.la and linked that to mod_md and a2md (the cmd 
line util). libmd.la's objects were built with -prefer-non-pic by our
build system and linking that into mod_md.so was refused by Linux linker.

I did not manage to build a libmd.* that then gets statically linked into
mod_md and a2md and uses pic.

So, I added the objects themselves to the targets of mod_md and a2md. That
made it working on Linux (Ubuntu) and MacOS for me.

Why linking statically? I did not want to have to install a libmd.so in
the system and manage that. I just have some common code between a
module and a cmd line tool.

I'd really appreciate if someone with a deeper understanding of our
ancient build system could come up with a solution to this.

> Am 08.09.2017 um 17:43 schrieb William A Rowe Jr <wr...@rowe-clan.net>:
> 
> On Fri, Sep 8, 2017 at 10:14 AM, Yann Ylavic <yl...@gmail.com> wrote:
>> Hi Stefan,
>> 
>> On Fri, Sep 8, 2017 at 5:06 PM,  <ic...@apache.org> wrote:
>>> Author: icing
>>> Date: Fri Sep  8 15:06:44 2017
>>> New Revision: 1807777
>>> 
>>> URL: http://svn.apache.org/viewvc?rev=1807777&view=rev
>>> Log:
>>> On the trunk:
>>> 
>>> mod_md: added necessary CPPFLAGS for a2md build.
>> 
>> Thanks, it fixed some APR dependencies for me.
>> 
>> Now I'm here:
>> 
>> || *** Warning: Linking the shared library mod_md.la against the non-libtool
>> || *** objects  md_acme.o md_acme_acct.o md_acme_authz.o
>> md_acme_drive.o md_core.o md_curl.o md_crypt.o md_http.o md_json.o
>> md_jws.o md_log.o md_reg.o md_store.o md_store_fs.o md_util.o is not
>> portable!
>> || /home/yle/bin/ld: error: md_json.o: requires dynamic R_X86_64_PC32
>> reloc against 'md_json_destroy' which may overflow at runtime;
>> recompile with -fPIC
>> || /home/yle/bin/ld: error: md_reg.o: requires dynamic R_X86_64_PC32
>> reloc against 'md_reg_find_overlap' which may overflow at runtime;
>> recompile with -fPIC
>> || /home/yle/bin/ld: error: md_util.o: requires dynamic R_X86_64_PC32
>> reloc against 'md_array_str_index' which may overflow at runtime;
>> recompile with -fPIC
>> || collect2: error: ld returned 1 exit status
>> 
>> Any idea?

I assume you had done a make clean? Those objects should have been build using pic now.



Re: svn commit: r1807777 - /httpd/httpd/trunk/modules/md/Makefile.in

Posted by William A Rowe Jr <wr...@rowe-clan.net>.
On Fri, Sep 8, 2017 at 10:14 AM, Yann Ylavic <yl...@gmail.com> wrote:
> Hi Stefan,
>
> On Fri, Sep 8, 2017 at 5:06 PM,  <ic...@apache.org> wrote:
>> Author: icing
>> Date: Fri Sep  8 15:06:44 2017
>> New Revision: 1807777
>>
>> URL: http://svn.apache.org/viewvc?rev=1807777&view=rev
>> Log:
>> On the trunk:
>>
>> mod_md: added necessary CPPFLAGS for a2md build.
>
> Thanks, it fixed some APR dependencies for me.
>
> Now I'm here:
>
> || *** Warning: Linking the shared library mod_md.la against the non-libtool
> || *** objects  md_acme.o md_acme_acct.o md_acme_authz.o
> md_acme_drive.o md_core.o md_curl.o md_crypt.o md_http.o md_json.o
> md_jws.o md_log.o md_reg.o md_store.o md_store_fs.o md_util.o is not
> portable!
> || /home/yle/bin/ld: error: md_json.o: requires dynamic R_X86_64_PC32
> reloc against 'md_json_destroy' which may overflow at runtime;
> recompile with -fPIC
> || /home/yle/bin/ld: error: md_reg.o: requires dynamic R_X86_64_PC32
> reloc against 'md_reg_find_overlap' which may overflow at runtime;
> recompile with -fPIC
> || /home/yle/bin/ld: error: md_util.o: requires dynamic R_X86_64_PC32
> reloc against 'md_array_str_index' which may overflow at runtime;
> recompile with -fPIC
> || collect2: error: ld returned 1 exit status
>
> Any idea?


Missing CFLAGS or wrong CC invocation.

Re: svn commit: r1807777 - /httpd/httpd/trunk/modules/md/Makefile.in

Posted by Luca Toscano <to...@gmail.com>.
2017-09-11 10:23 GMT+02:00 Stefan Eissing <st...@greenbytes.de>:

>
> > Am 08.09.2017 um 17:14 schrieb Yann Ylavic <yl...@gmail.com>:
> >
> > Hi Stefan,
> >
> > On Fri, Sep 8, 2017 at 5:06 PM,  <ic...@apache.org> wrote:
> >> Author: icing
> >> Date: Fri Sep  8 15:06:44 2017
> >> New Revision: 1807777
> >>
> >> URL: http://svn.apache.org/viewvc?rev=1807777&view=rev
> >> Log:
> >> On the trunk:
> >>
> >> mod_md: added necessary CPPFLAGS for a2md build.
> >
> > Thanks, it fixed some APR dependencies for me.
> >
> > Now I'm here:
> >
> > || *** Warning: Linking the shared library mod_md.la against the
> non-libtool
> > || *** objects  md_acme.o md_acme_acct.o md_acme_authz.o
> > md_acme_drive.o md_core.o md_curl.o md_crypt.o md_http.o md_json.o
> > md_jws.o md_log.o md_reg.o md_store.o md_store_fs.o md_util.o is not
> > portable!
> > || /home/yle/bin/ld: error: md_json.o: requires dynamic R_X86_64_PC32
> > reloc against 'md_json_destroy' which may overflow at runtime;
> > recompile with -fPIC
> > || /home/yle/bin/ld: error: md_reg.o: requires dynamic R_X86_64_PC32
> > reloc against 'md_reg_find_overlap' which may overflow at runtime;
> > recompile with -fPIC
> > || /home/yle/bin/ld: error: md_util.o: requires dynamic R_X86_64_PC32
> > reloc against 'md_array_str_index' which may overflow at runtime;
> > recompile with -fPIC
> > || collect2: error: ld returned 1 exit status
> >
> > Any idea?
>
> Really did a buildconf && configure && make clean? This worked
> for others...


Just tried and this is what I get:

./buildconf --with-apr=srclib/apr --with-apr-util=srclib/apr-uti
./configure --with-included-apr --enable-mods-shared=most
make clean && make

Debian Jessie (Vagrant image)

/home/vagrant/httpd-trunk/srclib/apr/libtool --silent --mode=link gcc
-I/usr/include/x86_64-linux-gnu -g -O2 -pthread    -lssl -lcrypto  -luuid
-lrt -lcrypt  -lpthread -ldl -ljansson -lcurl       -o mod_md.la -rpath
/usr/local/apache2/modules -module -avoid-version  mod_md.lo
mod_md_config.lo mod_md_os.lo  md_acme.o md_acme_acct.o md_acme_authz.o
md_acme_drive.o md_core.o md_curl.o md_crypt.o md_http.o md_json.o md_jws.o
md_log.o md_reg.o md_store.o md_store_fs.o md_util.o

*** Warning: Linking the shared library mod_md.la against the non-libtool
*** objects  md_acme.o md_acme_acct.o md_acme_authz.o md_acme_drive.o
md_core.o md_curl.o md_crypt.o md_http.o md_json.o md_jws.o md_log.o
md_reg.o md_store.o md_store_fs.o md_util.o is not portable!

Luca

Re: svn commit: r1807777 - /httpd/httpd/trunk/modules/md/Makefile.in

Posted by Stefan Eissing <st...@greenbytes.de>.
Thanks!

> Am 11.09.2017 um 12:22 schrieb Luca Toscano <to...@gmail.com>:
> 
> 
> 
> 2017-09-11 12:20 GMT+02:00 Yann Ylavic <yl...@gmail.com>:
> On Mon, Sep 11, 2017 at 12:14 PM, Yann Ylavic <yl...@gmail.com> wrote:
> >
> > Index: modules/md/Makefile.in
> > ===================================================================
> > --- modules/md/Makefile.in      (revision 1807999)
> > +++ modules/md/Makefile.in      (working copy)
> > @@ -41,7 +41,7 @@ a2md_OBJECTS = \
> >         md_cmd_reg.c \
> >         md_cmd_store.c
> >
> > -a2md: $(a2md_OBJECTS) $(COMMON_SHOBJECTS) md.h
> > +a2md: $(a2md_OBJECTS) $(COMMON_OBJECTS) $(COMMON_SHOBJECTS) md.h
> >         $(LINK) $(a2md_CFLAGS) $(a2md_LTFLAGS) $(a2md_OBJECTS)
> > $(COMMON_OBJECTS) $(A2MD_LDADD) $(AP_LIBS)
> >
> >  # top be installed in bin dir
> > _
> >
> > Looks good to commit?
> 
> Committed in r1808005 for a better look (gmail mangled the above).
> 
> Fixed the warning for me! Thanks!
> 
> Luca 
> 


Re: svn commit: r1807777 - /httpd/httpd/trunk/modules/md/Makefile.in

Posted by Luca Toscano <to...@gmail.com>.
2017-09-11 12:20 GMT+02:00 Yann Ylavic <yl...@gmail.com>:

> On Mon, Sep 11, 2017 at 12:14 PM, Yann Ylavic <yl...@gmail.com>
> wrote:
> >
> > Index: modules/md/Makefile.in
> > ===================================================================
> > --- modules/md/Makefile.in      (revision 1807999)
> > +++ modules/md/Makefile.in      (working copy)
> > @@ -41,7 +41,7 @@ a2md_OBJECTS = \
> >         md_cmd_reg.c \
> >         md_cmd_store.c
> >
> > -a2md: $(a2md_OBJECTS) $(COMMON_SHOBJECTS) md.h
> > +a2md: $(a2md_OBJECTS) $(COMMON_OBJECTS) $(COMMON_SHOBJECTS) md.h
> >         $(LINK) $(a2md_CFLAGS) $(a2md_LTFLAGS) $(a2md_OBJECTS)
> > $(COMMON_OBJECTS) $(A2MD_LDADD) $(AP_LIBS)
> >
> >  # top be installed in bin dir
> > _
> >
> > Looks good to commit?
>
> Committed in r1808005 for a better look (gmail mangled the above).
>

Fixed the warning for me! Thanks!

Luca

Re: svn commit: r1807777 - /httpd/httpd/trunk/modules/md/Makefile.in

Posted by Yann Ylavic <yl...@gmail.com>.
On Mon, Sep 11, 2017 at 12:14 PM, Yann Ylavic <yl...@gmail.com> wrote:
>
> Index: modules/md/Makefile.in
> ===================================================================
> --- modules/md/Makefile.in      (revision 1807999)
> +++ modules/md/Makefile.in      (working copy)
> @@ -41,7 +41,7 @@ a2md_OBJECTS = \
>         md_cmd_reg.c \
>         md_cmd_store.c
>
> -a2md: $(a2md_OBJECTS) $(COMMON_SHOBJECTS) md.h
> +a2md: $(a2md_OBJECTS) $(COMMON_OBJECTS) $(COMMON_SHOBJECTS) md.h
>         $(LINK) $(a2md_CFLAGS) $(a2md_LTFLAGS) $(a2md_OBJECTS)
> $(COMMON_OBJECTS) $(A2MD_LDADD) $(AP_LIBS)
>
>  # top be installed in bin dir
> _
>
> Looks good to commit?

Committed in r1808005 for a better look (gmail mangled the above).

Re: svn commit: r1807777 - /httpd/httpd/trunk/modules/md/Makefile.in

Posted by Yann Ylavic <yl...@gmail.com>.
On Mon, Sep 11, 2017 at 10:23 AM, Stefan Eissing
<st...@greenbytes.de> wrote:
>
>> Am 08.09.2017 um 17:14 schrieb Yann Ylavic <yl...@gmail.com>:
>>
>> Hi Stefan,
>>
>> On Fri, Sep 8, 2017 at 5:06 PM,  <ic...@apache.org> wrote:
>>> Author: icing
>>> Date: Fri Sep  8 15:06:44 2017
>>> New Revision: 1807777
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1807777&view=rev
>>> Log:
>>> On the trunk:
>>>
>>> mod_md: added necessary CPPFLAGS for a2md build.
>>
>> Thanks, it fixed some APR dependencies for me.
>>
>> Now I'm here:
>>
>> || *** Warning: Linking the shared library mod_md.la against the non-libtool
>> || *** objects  md_acme.o md_acme_acct.o md_acme_authz.o
>> md_acme_drive.o md_core.o md_curl.o md_crypt.o md_http.o md_json.o
>> md_jws.o md_log.o md_reg.o md_store.o md_store_fs.o md_util.o is not
>> portable!
>> || /home/yle/bin/ld: error: md_json.o: requires dynamic R_X86_64_PC32
>> reloc against 'md_json_destroy' which may overflow at runtime;
>> recompile with -fPIC
>> || /home/yle/bin/ld: error: md_reg.o: requires dynamic R_X86_64_PC32
>> reloc against 'md_reg_find_overlap' which may overflow at runtime;
>> recompile with -fPIC
>> || /home/yle/bin/ld: error: md_util.o: requires dynamic R_X86_64_PC32
>> reloc against 'md_array_str_index' which may overflow at runtime;
>> recompile with -fPIC
>> || collect2: error: ld returned 1 exit status
>>
>> Any idea?
>
> Really did a buildconf && configure && make clean? This worked
> for others...

Yes, but then make -j8...
Looks like a dependencies race, and indeed with the below it now works with -j.

Index: modules/md/Makefile.in
===================================================================
--- modules/md/Makefile.in      (revision 1807999)
+++ modules/md/Makefile.in      (working copy)
@@ -41,7 +41,7 @@ a2md_OBJECTS = \
        md_cmd_reg.c \
        md_cmd_store.c

-a2md: $(a2md_OBJECTS) $(COMMON_SHOBJECTS) md.h
+a2md: $(a2md_OBJECTS) $(COMMON_OBJECTS) $(COMMON_SHOBJECTS) md.h
        $(LINK) $(a2md_CFLAGS) $(a2md_LTFLAGS) $(a2md_OBJECTS)
$(COMMON_OBJECTS) $(A2MD_LDADD) $(AP_LIBS)

 # top be installed in bin dir
_

Looks good to commit?

Re: svn commit: r1807777 - /httpd/httpd/trunk/modules/md/Makefile.in

Posted by Stefan Eissing <st...@greenbytes.de>.
> Am 08.09.2017 um 17:14 schrieb Yann Ylavic <yl...@gmail.com>:
> 
> Hi Stefan,
> 
> On Fri, Sep 8, 2017 at 5:06 PM,  <ic...@apache.org> wrote:
>> Author: icing
>> Date: Fri Sep  8 15:06:44 2017
>> New Revision: 1807777
>> 
>> URL: http://svn.apache.org/viewvc?rev=1807777&view=rev
>> Log:
>> On the trunk:
>> 
>> mod_md: added necessary CPPFLAGS for a2md build.
> 
> Thanks, it fixed some APR dependencies for me.
> 
> Now I'm here:
> 
> || *** Warning: Linking the shared library mod_md.la against the non-libtool
> || *** objects  md_acme.o md_acme_acct.o md_acme_authz.o
> md_acme_drive.o md_core.o md_curl.o md_crypt.o md_http.o md_json.o
> md_jws.o md_log.o md_reg.o md_store.o md_store_fs.o md_util.o is not
> portable!
> || /home/yle/bin/ld: error: md_json.o: requires dynamic R_X86_64_PC32
> reloc against 'md_json_destroy' which may overflow at runtime;
> recompile with -fPIC
> || /home/yle/bin/ld: error: md_reg.o: requires dynamic R_X86_64_PC32
> reloc against 'md_reg_find_overlap' which may overflow at runtime;
> recompile with -fPIC
> || /home/yle/bin/ld: error: md_util.o: requires dynamic R_X86_64_PC32
> reloc against 'md_array_str_index' which may overflow at runtime;
> recompile with -fPIC
> || collect2: error: ld returned 1 exit status
> 
> Any idea?

Really did a buildconf && configure && make clean? This worked
for others...