[Bug 247817] lang/ruby26 and lang/ruby27: fails to build with poudriere when 127.0.0.1 unavailable
    bugzilla-noreply at freebsd.org 
    bugzilla-noreply at freebsd.org
       
    Tue Jul  7 04:25:41 UTC 2020
    
    
  
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=247817
            Bug ID: 247817
           Summary: lang/ruby26 and lang/ruby27: fails to build with
                    poudriere when 127.0.0.1 unavailable
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: ruby at FreeBSD.org
          Reporter: bugs.freebsd at scourger.nl
                CC: andrew at tao11.riddles.org.uk
          Assignee: ruby at FreeBSD.org
             Flags: maintainer-feedback?(ruby at FreeBSD.org)
Created attachment 216274
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=216274&action=edit
Logfile of a failed build with poudriere.
Overview:
Both lang/ruby26 and lang/ruby27 fail to build with a jailed poudriere where
the loopback interface has an address other than "127.0.0.1".
How to reproduce:
* On a FreeBSD 11.3 system, create a jail with a non-standard address on the
loopback interface (such as 127.0.0.5).
* Install poudriere inside the jail.
* Build ruby26 using poudriere. The build-jails created by poudriere should
also use some IP other than 127.0.0.1.
With this setup, Ruby fails to build succesfully with "poudriere bulk -j
default -p default lang/ruby26". See the attached logfile for details of a
recent attempt.
When poudriere is run in 'interactive' mode with "poudriere bulk -j default -p
default -i lang/ruby26", it is possible to simply compile the port by running
"make" inside the build-jail. Manually building the port inside a jail (even
without a loopback address) also works. It only seems to fail whenever
poudriere is used to perform the build.
Expected cause:
The "configuring socket" stage of the build compiles and runs a test program
with getaddrinfo. At this point, a check is made if "127.0.0.1" exists (which
isn't the case).
Such hardcoded loopback addresses are used in "ext/socket/extconf.rb":
    if (strcmp(straddr, "127.0.0.1") != 0) {
      goto bad;
If I understand correctly, this results in the build script trying to compile
its own version of getaddrinfo (instead of using the one provided by the OS),
which ultimately fails due to a conflicting function name (see the log).
Credits to RhodiumToad on freenode, who helped diagnosing the problem and
pointing out the likely culprit.
-- 
You are receiving this mail because:
You are the assignee for the bug.
    
    
More information about the freebsd-ruby
mailing list