Re: pgsql: Fix pg_isolation_regress to work outside its build directory.

From: Andres Freund <andres(at)2ndquadrant(dot)com>
To: Robert Haas <rhaas(at)postgresql(dot)org>
Cc: pgsql-committers(at)postgresql(dot)org
Subject: Re: pgsql: Fix pg_isolation_regress to work outside its build directory.
Date: 2013-11-12 12:05:38
Message-ID: 20131112120538.GA23777@awork2.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

On 2013-11-09 15:13:14 +0100, Andres Freund wrote:
> Hi,
>
> On 2013-11-08 20:02:30 +0000, Robert Haas wrote:
> > Fix pg_isolation_regress to work outside its build directory.
>
> > This makes it possible to, for example, use the isolation tester to
> > test a contrib module.
>
> Unfortunately this isn't working all that well on anole and currawong :/.
> Looking at the output on the former the reason becomes clear:
> ./pg_isolation_regress --temp-install=./tmp_check --inputdir=. --top-builddir=../../.. --schedule=./isolation_schedule
> /usr/lib/hpux64/dld.so: Unable to find library 'libpq.so.5'.
> sh: 15000 Killed
>
> isolationtester doesn't find libpq during find_other_exec(). I think that is because it normally
> only gets run when pg_regress.c has done:
> /*
> * Set up shared library paths to include the temp install.
> *
> * LD_LIBRARY_PATH covers many platforms. DYLD_LIBRARY_PATH works on
> * Darwin, and maybe other Mach-based systems. LIBPATH is for AIX.
> * Windows needs shared libraries in PATH (only those linked into
> * executables, not dlopen'ed ones). Feel free to account for others
> * as well.
> */
> add_to_path("LD_LIBRARY_PATH", ':', libdir);
> add_to_path("DYLD_LIBRARY_PATH", ':', libdir);
> add_to_path("LIBPATH", ':', libdir);
> #if defined(WIN32)
> add_to_path("PATH", ';', libdir);
> #elif defined(__CYGWIN__)
> add_to_path("PATH", ':', libdir);
> #endif
>
> but the initialization functions are run earlier:
> /*
> * We call the initialization function here because that way we can set
> * default parameters and let them be overwritten by the commandline.
> */
> ifunc(argc, argv);
>
> The only hack I currently can think of is to store argv[0] in a global
> variable and to run the find_other_exec() in the first run through
> isolation_start_test() :/.

A patch to that end attached.

Alternatively we could add a "startup_function startup" argument to
regression_main() that's called later, when the environment is setup.

Greetings,

Andres Freund

--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

Attachment Content-Type Size
0001-Fix-pg_isolation_regress-to-find_other_exec-after-en.patch text/x-patch 3.0 KB

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Robert Haas 2013-11-12 15:02:06 Re: [COMMITTERS] pgsql: Replace duplicate_oids with Perl implementation
Previous Message Magnus Hagander 2013-11-12 11:56:24 pgsql: Fix doc links in README file to work with new website layout

Browse pgsql-hackers by date

  From Date Subject
Next Message Craig Ringer 2013-11-12 12:22:21 Re: Information about Access methods
Previous Message Magnus Hagander 2013-11-12 11:57:11 Re: Links in README.git are broken