You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Nathan Hartman <ha...@gmail.com> on 2020/03/27 15:28:26 UTC

Late night unix-build weirdness

I wanted to run a full build and test all ra and backends overnight
using my slightly modified variant of tools/dev/unix-build (mostly
just different/newer versions of dependencies).

It built everything and ran through local|svn x fsfs|bdb, but when it
prepared to test serf x fsfs, it quit with:

[[[

/home/nate/svndev/prefix/httpd/bin/htpasswd -bc
/home/nate/svndev/prefix/httpd/conf/httpd-svn-check-users.tmp jrandom
rayjandom
/home/nate/svndev/prefix/httpd/bin/htpasswd: error while loading
shared libraries: libdb-18.1.so: cannot open shared object file: No
such file or directory
make: *** [Makefile:1775:
/home/nate/svndev/prefix/httpd/conf/httpd-svn-check-1.14.0-rc1.conf]
Error 127

]]]

Strange. This never happened before.

$ find . -name libdb-18.1.so -print
./src/db-18.1.32/build_unix/.libs/libdb-18.1.so
./prefix/bdb/lib/libdb-18.1.so

It's right where it should be, and Makefile.svn sets LD_LIBRARY_PATH.
There shouldn't be any problem. Right?

I made the following change and then was able to run the serf x fsfs
test successfully, but I have no idea how/why it worked before (it
worked two days ago!) and why I needed to make this change now:

[[[

Index: Makefile.svn
===================================================================
--- Makefile.svn (revision 1875781)
+++ Makefile.svn (working copy)
@@ -1820,11 +1820,11 @@

 $(HTTPD_CHECK_CONF): $(MOD_DONTDOTHAT_CONF) $(HTTPD_CHECK_GROUPS)
  mkdir -p $(dir $@)
- $(PREFIX)/httpd/bin/htpasswd -bc $(HTTPD_CHECK_USERS).tmp jrandom rayjandom
- $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp jconstant rayjandom
- $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp
__dumpster__ __loadster__
- $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp JRANDOM rayjandom
- $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp JCONSTANT rayjandom
+ env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd
-bc $(HTTPD_CHECK_USERS).tmp jrandom rayjandom
+ env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd
-b $(HTTPD_CHECK_USERS).tmp jconstant rayjandom
+ env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd
-b $(HTTPD_CHECK_USERS).tmp __dumpster__ __loadster__
+ env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd
-b $(HTTPD_CHECK_USERS).tmp JRANDOM rayjandom
+ env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd
-b $(HTTPD_CHECK_USERS).tmp JCONSTANT rayjandom
  mv -f $(HTTPD_CHECK_USERS).tmp $(HTTPD_CHECK_USERS)
  echo > $@.tmp '# httpd config for make check'
  echo >>$@.tmp 'ServerRoot "$(PREFIX)/httpd"'

]]]

Still baffled,
Nathan

Re: Late night unix-build weirdness

Posted by Nathan Hartman <ha...@gmail.com>.
On Fri, Mar 27, 2020 at 3:43 PM Stefan Sperling <st...@stsp.name> wrote:
> On Fri, Mar 27, 2020 at 01:41:31PM -0400, Nathan Hartman wrote:
> > On Fri, Mar 27, 2020 at 1:21 PM Stefan Sperling <st...@elego.de> wrote:
> > > On Fri, Mar 27, 2020 at 11:28:26AM -0400, Nathan Hartman wrote:
> > > > I made the following change and then was able to run the serf x fsfs
> > > > test successfully, but I have no idea how/why it worked before (it
> > > > worked two days ago!) and why I needed to make this change now:
> > >
> > > Not sure what happened either, but the change looks good and
> > > shouldn't hurt.
> >
> > Should I commit it (or something like it)? If so, is there a better / more
> > idiomatic way to write it?
>
> Please commit. In the unlikely case of fallout we can deal with it then.

Done in r1875794.

If it does break the buildbot, feel free to revert it.

Thanks,
Nathan

Re: Late night unix-build weirdness

Posted by Stefan Sperling <st...@stsp.name>.
On Fri, Mar 27, 2020 at 01:41:31PM -0400, Nathan Hartman wrote:
> On Fri, Mar 27, 2020 at 1:21 PM Stefan Sperling <st...@elego.de> wrote:
> 
> > On Fri, Mar 27, 2020 at 11:28:26AM -0400, Nathan Hartman wrote:
> > > I made the following change and then was able to run the serf x fsfs
> > > test successfully, but I have no idea how/why it worked before (it
> > > worked two days ago!) and why I needed to make this change now:
> >
> > Not sure what happened either, but the change looks good and
> > shouldn't hurt.
> 
> 
> Should I commit it (or something like it)? If so, is there a better / more
> idiomatic way to write it?

Please commit. In the unlikely case of fallout we can deal with it then.
 
> Perhaps you had another libdb-something.so sitting somewhere else
> > on your system which ld.so picked up and which happened to work,
> > and now doesn't work any longer after an upgrade or something?
> >
> Possible; maybe something changed in a recent system upgrade.
> 
> I wonder if the buildbot and other users are currently picking up some
> random lib that happens to work.

On the OpenBSD bot rpath in binaries takes care of most such problems.

Re: Late night unix-build weirdness

Posted by Nathan Hartman <ha...@gmail.com>.
On Fri, Mar 27, 2020 at 1:21 PM Stefan Sperling <st...@elego.de> wrote:

> On Fri, Mar 27, 2020 at 11:28:26AM -0400, Nathan Hartman wrote:
> > I made the following change and then was able to run the serf x fsfs
> > test successfully, but I have no idea how/why it worked before (it
> > worked two days ago!) and why I needed to make this change now:
>
> Not sure what happened either, but the change looks good and
> shouldn't hurt.


Should I commit it (or something like it)? If so, is there a better / more
idiomatic way to write it?

Perhaps you had another libdb-something.so sitting somewhere else
> on your system which ld.so picked up and which happened to work,
> and now doesn't work any longer after an upgrade or something?
>
Possible; maybe something changed in a recent system upgrade.

I wonder if the buildbot and other users are currently picking up some
random lib that happens to work.

Thanks,
Nathan

Re: Late night unix-build weirdness

Posted by Stefan Sperling <st...@elego.de>.
On Fri, Mar 27, 2020 at 11:28:26AM -0400, Nathan Hartman wrote:
> I wanted to run a full build and test all ra and backends overnight
> using my slightly modified variant of tools/dev/unix-build (mostly
> just different/newer versions of dependencies).
> 
> It built everything and ran through local|svn x fsfs|bdb, but when it
> prepared to test serf x fsfs, it quit with:
> 
> [[[
> 
> /home/nate/svndev/prefix/httpd/bin/htpasswd -bc
> /home/nate/svndev/prefix/httpd/conf/httpd-svn-check-users.tmp jrandom
> rayjandom
> /home/nate/svndev/prefix/httpd/bin/htpasswd: error while loading
> shared libraries: libdb-18.1.so: cannot open shared object file: No
> such file or directory
> make: *** [Makefile:1775:
> /home/nate/svndev/prefix/httpd/conf/httpd-svn-check-1.14.0-rc1.conf]
> Error 127
> 
> ]]]
> 
> Strange. This never happened before.
> 
> $ find . -name libdb-18.1.so -print
> ./src/db-18.1.32/build_unix/.libs/libdb-18.1.so
> ./prefix/bdb/lib/libdb-18.1.so
> 
> It's right where it should be, and Makefile.svn sets LD_LIBRARY_PATH.
> There shouldn't be any problem. Right?
> 
> I made the following change and then was able to run the serf x fsfs
> test successfully, but I have no idea how/why it worked before (it
> worked two days ago!) and why I needed to make this change now:
> 
> [[[
> 
> Index: Makefile.svn
> ===================================================================
> --- Makefile.svn (revision 1875781)
> +++ Makefile.svn (working copy)
> @@ -1820,11 +1820,11 @@
> 
>  $(HTTPD_CHECK_CONF): $(MOD_DONTDOTHAT_CONF) $(HTTPD_CHECK_GROUPS)
>   mkdir -p $(dir $@)
> - $(PREFIX)/httpd/bin/htpasswd -bc $(HTTPD_CHECK_USERS).tmp jrandom rayjandom
> - $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp jconstant rayjandom
> - $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp
> __dumpster__ __loadster__
> - $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp JRANDOM rayjandom
> - $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp JCONSTANT rayjandom
> + env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd
> -bc $(HTTPD_CHECK_USERS).tmp jrandom rayjandom
> + env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd
> -b $(HTTPD_CHECK_USERS).tmp jconstant rayjandom
> + env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd
> -b $(HTTPD_CHECK_USERS).tmp __dumpster__ __loadster__
> + env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd
> -b $(HTTPD_CHECK_USERS).tmp JRANDOM rayjandom
> + env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PREFIX)/httpd/bin/htpasswd
> -b $(HTTPD_CHECK_USERS).tmp JCONSTANT rayjandom
>   mv -f $(HTTPD_CHECK_USERS).tmp $(HTTPD_CHECK_USERS)
>   echo > $@.tmp '# httpd config for make check'
>   echo >>$@.tmp 'ServerRoot "$(PREFIX)/httpd"'
> 
> ]]]
> 
> Still baffled,
> Nathan
> 

Not sure what happened either, but the change looks good and
shouldn't hurt.

Perhaps you had another libdb-something.so sitting somewhere else
on your system which ld.so picked up and which happened to work,
and now doesn't work any longer after an upgrade or something?