On 03/07/2016 08:39 PM, Andres Freund wrote:
Hi,

I'm setting up a buildfarm animal that runs under
valgrind. Unfortunately there's not really any good solution to force
make check et al. to start postgres wrapped in valgrind.  For now I've
resorted to adding something like

sub replace_postgres
{
     my $srcdir=$use_vpath ? "../pgsql/" : ".";
     my $builddir=abs_path("$pgsql");
     $srcdir=abs_path("$pgsql/$srcdir");
     chdir "$pgsql/src/backend/";
     rename "postgres", "postgres.orig";
     sysopen my $fh, "postgres", O_CREAT|O_TRUNC|O_RDWR, 0700
         or die "Could not create postgres wrapper";
     print $fh <<"END";
#!/bin/bash
~/src/valgrind/vg-in-place \\
     --quiet \\
     --error-exitcode=128 \\
     --suppressions=$srcdir/src/tools/valgrind.supp \\
     --trace-children=yes --track-origins=yes --read-var-info=yes \\
     --leak-check=no \\
     $builddir/src/backend/postgres.orig \\
     "\$@"
END
     close $fh;
     chdir $branch_root;
}
to the buildfarm client.

i.e. a script that replaces the postgres binary with a wrapper that
invokes postgres via valgrind.

That's obviously not a very good approach though. It's buildfarm
specific and thus can't be invoked by developers and it doesn't really
support being installed somewhere.

Does anybody have a better idea about how to do this?




Why not just create a make target which does this? It could be run after 'make' and before 'make check'. I would make it assume valgrind was installed and in the path rather than using vg-in-place.

If that doesn't work and you want to do something with the buildfarm, probably a buildfarm module would be the way to go. We might need to add a new module hook to support it, to run right after make(), but that would be a one line addition to run_build.pl.

cheers

andrew









--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to