Re: Fixing test failures on macOS

Branko Čibej <[email protected]> Thu, 18 Jun 2026 19:46:49 +0200
Newsgroups gmane.comp.apache.apr.devel
Organization The Apache Software Foundation
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------aM5AjM7Q6JM292Krw0RyT7jx
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 16. 6. 2026 09:51, Branko Čibej wrote:
> I've been looking at test failures on macOS for the last several days. 
> These are the failing tests that I see:
>
> testdbd:
>
>     Line 211: failed to fetch sqlite3 driver: DSO load failed
>
>     I haven't looked closely at this one yet, but since I didn't point
>     configure at a recent SQLite3 installation, I suspect it's picking
>     up the system libraries which are known to be ancient and
>     incomplete. Could also be related to how the macOS loader searches
>     for loadable modules at runtime.
>


Might have known. on macOS, System Integrity Protection removes 
DYLD_LIBRARY_PATH and similar variables that are considered dangerous 
from the environment that we just meticulously set in the Makefile, But 
only when you run a shell script ("programs" generated by libtool are 
shell scripts), the loader removes . Because of that, the 'dbm/.libs' 
and 'dbd/.libs' are never considered for search by the dynamic loader.

The test works if I `make install` first, because apu_dso_load() 
explicitly looks at the install prefix, or if I call the actual 
executable in ./libs/testall.

:(

-- Brane

--------------aM5AjM7Q6JM292Krw0RyT7jx
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">On 16. 6. 2026 09:51, Branko Čibej
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:[email protected]">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      I've been looking at test failures on macOS for the last several
      days. These are the failing tests that I see:<br>
      <br>
      testdbd:<br>
      <blockquote>Line 211: failed to fetch sqlite3 driver: DSO load
        failed<br>
        <br>
        I haven't looked closely at this one yet, but since I didn't
        point configure at a recent SQLite3 installation, I suspect it's
        picking up the system libraries which are known to be ancient
        and incomplete. Could also be related to how the macOS loader
        searches for loadable modules at runtime.</blockquote>
    </blockquote>
    <br>
    <br>
    Might have known. on macOS, System Integrity Protection removes
    DYLD_LIBRARY_PATH and similar variables that are considered
    dangerous from the environment that we just meticulously set in the
    Makefile, But only when you run a shell script ("programs" generated
    by libtool are shell scripts), the loader removes . Because of that,
    the 'dbm/.libs' and 'dbd/.libs' are never considered for search by
    the dynamic loader.<br>
    <br>
    The test works if I `make install` first, because apu_dso_load()
    explicitly looks at the install prefix, or if I call the actual
    executable in ./libs/testall.<br>
    <br>
    :(<br>
    <br>
    -- Brane<br>
    <br>
  </body>
</html>

--------------aM5AjM7Q6JM292Krw0RyT7jx--