Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 07 Jul 2020 04:25:38 +0000
From:      bugzilla-noreply@freebsd.org
To:        ruby@FreeBSD.org
Subject:   [Bug 247817] lang/ruby26 and lang/ruby27: fails to build with poudriere when 127.0.0.1 unavailable
Message-ID:  <bug-247817-21402@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D247817

            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@FreeBSD.org
          Reporter: bugs.freebsd@scourger.nl
                CC: andrew@tao11.riddles.org.uk
          Assignee: ruby@FreeBSD.org
             Flags: maintainer-feedback?(ruby@FreeBSD.org)

Created attachment 216274
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D216274&action=
=3Dedit
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 runni=
ng
"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 (whi=
ch
isn't the case).
Such hardcoded loopback addresses are used in "ext/socket/extconf.rb":
    if (strcmp(straddr, "127.0.0.1") !=3D 0) {
      goto bad;

If I understand correctly, this results in the build script trying to compi=
le
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.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-247817-21402>