apache / couchdb

Seamless multi-master syncing database with an intuitive HTTP/JSON API, designed for reliability
https://couchdb.apache.org/
Apache License 2.0
6.15k stars 1.02k forks source link

Make main build on FreeBSD #3399

Closed wohali closed 2 years ago

wohali commented 3 years ago

Description

Currently blocking CI builds from succeeding, along with a failed macOS node.

Steps to Reproduce

Until https://github.com/apache/couchdb-erlfdb/pull/15 lands and is tagged, you will need to edit rebar.config.script accordingly.

Then: gmake check

What I see:

Cannot start application 'fabric', reason {{shutdown,
                                            {failed_to_start_child,
                                             fabric2_server,
                                             {fdbserver_bin_not_found,
                                              [{erlfdb_util,
                                                find_fdbserver_bin,1,
                                                [{file,"src/erlfdb_util.erl"},
                                                 {line,188}]},
                                               {erlfdb_util,
                                                init_test_cluster_int,1,
                                                [{file,"src/erlfdb_util.erl"},
                                                 {line,115}]},
                                               {erlfdb_util,get_test_db,1,
                                                [{file,"src/erlfdb_util.erl"},
                                                 {line,37}]},
                                               {fabric2_server,
                                                get_db_and_cluster,1,
                                                [{file,
                                                  "src/fabric2_server.erl"},
                                                 {line,213}]},
                                               {fabric2_server,init,1,
                                                [{file,
                                                  "src/fabric2_server.erl"},
                                                 {line,133}]},
                                               {gen_server,init_it,2,
                                                [{file,"gen_server.erl"},
                                                 {line,374}]},
                                               {gen_server,init_it,6,
                                                [{file,"gen_server.erl"},
                                                 {line,342}]},
                                               {proc_lib,init_p_do_apply,3,
                                                [{file,"proc_lib.erl"},
                                                 {line,249}]}]}}},
                                           {fabric2_app,start,[normal,[]]}}

Your Environment

wohali commented 3 years ago

FYI, the build environment on these machines has both foundationdb and foundationdb-devel installed from binary packages. This is because foundationdb doesn't include the header files needed for compiling erlfdb.

However, the problem might be that while foundationdb is a 2.x release, foundationdb-devel is a 3.0.0 pre-release... need help from @dch here.

An alternative might be to install fdb completely from source until the ports tree stuff is sorted out.

dch commented 3 years ago

IIRC since ~ FDB 6.3, I switched ports to use the cmake-derived build, and the headers are since fixed. It wasn't possible in the previous 6.2.x series.

https://svnweb.freebsd.org/ports?view=revision&revision=537449 from 31 May, which is in 2020Q3 at least. Is it possible the builders aren't updated?

FWIW the current diff of installed files between 6.3.11 and 7.0.0-mumble-git-sha is:

dch@wintermute /u/p/databases> diff /tmp/fdb /tmp/devel
26,29c26,28
< /usr/local/lib/libthirdparty.a
< /usr/local/share/licenses/foundationdb-6.3.11/APACHE20
< /usr/local/share/licenses/foundationdb-6.3.11/LICENSE
< /usr/local/share/licenses/foundationdb-6.3.11/catalog.mk
---
> /usr/local/share/licenses/foundationdb-devel-7.0.0.a.20210224/APACHE20
> /usr/local/share/licenses/foundationdb-devel-7.0.0.a.20210224/LICENSE
> /usr/local/share/licenses/foundationdb-devel-7.0.0.a.20210224/catalog.mk
wohali commented 3 years ago

@dch OK, I've removed the foundationdb-devel package and it just has foundationdb now, which is currently 6.3.9.

This makes couchdb compile but it still fails on gmake check:

gmake[1]: Entering directory '/root/couchdb'
==> chttpd (compile)
==> couch_eval (compile)
==> couch_replicator (compile)
==> couch_views (compile)
==> ctrace (compile)
==> fabric (compile)
==> couch_jobs (compile)
==> couch_expiring_cache (compile)
==> mango (compile)
==> rel (compile)
==> couchdb (compile)
==> couchdb (setup_eunit)
Writing tmp/etc/default_eunit.ini
Writing tmp/etc/local_eunit.ini
Writing tmp/etc/eunit.ini
Writing tmp/etc/vm.args
==> couch_eval (eunit)
Compiled src/couch_eval.erl
======================== EUnit ========================
module 'couch_eval'
  There were no tests to run.
Cover analysis: /root/couchdb/src/couch_eval/.eunit/index.html

Code Coverage:
couch_eval :   0%

Total      : 0%
==> rel (eunit)
==> couchdb (eunit)
==> couch_expiring_cache (eunit)
Compiled src/couch_expiring_cache.erl
Compiled src/couch_expiring_cache_server.erl
Compiled src/couch_expiring_cache_fdb.erl
Compiled test/couch_expiring_cache_tests.erl
======================== EUnit ========================
module 'couch_expiring_cache_server'
module 'couch_expiring_cache'
  module 'couch_expiring_cache_tests'
    Test expiring cache basics
Cannot start application 'fabric', reason {{shutdown,
                                            {failed_to_start_child,
                                             fabric2_server,
                                             {fdbserver_bin_not_found,
                                              [{erlfdb_util,
                                                find_fdbserver_bin,1,
                                                [{file,"src/erlfdb_util.erl"},
                                                 {line,188}]},
                                               {erlfdb_util,
                                                init_test_cluster_int,1,
                                                [{file,"src/erlfdb_util.erl"},
                                                 {line,115}]},
                                               {erlfdb_util,get_test_db,1,
                                                [{file,"src/erlfdb_util.erl"},
                                                 {line,37}]},
                                               {fabric2_server,
                                                get_db_and_cluster,1,
                                                [{file,
                                                  "src/fabric2_server.erl"},
                                                 {line,213}]},
                                               {fabric2_server,init,1,
                                                [{file,
                                                  "src/fabric2_server.erl"},
                                                 {line,133}]},
                                               {gen_server,init_it,2,
                                                [{file,"gen_server.erl"},
                                                 {line,374}]},
                                               {gen_server,init_it,6,
                                                [{file,"gen_server.erl"},
                                                 {line,342}]},
                                               {proc_lib,init_p_do_apply,3,
                                                [{file,"proc_lib.erl"},
                                                 {line,249}]}]}}},
                                           {fabric2_app,start,[normal,[]]}}
      *** context setup failed ***
**in function test_util:start_applications/2 (src/test_util.erl, line 109)
in call from test_util:start_couch/2 (src/test_util.erl, line 79)
**throw:{error,
    {cannot_start,fabric,
        {{shutdown,
             {failed_to_start_child,fabric2_server,
                 {fdbserver_bin_not_found,
                     [{erlfdb_util,find_fdbserver_bin,1,[{...}|...]},
                      {erlfdb_util,init_test_cluster_int,1,[...]},
                      {erlfdb_util,get_test_db,1,...},
                      {fabric2_server,get_db_and_cluster,...},
                      {fabric2_server,...},
                      {...}|...]}}},
         {fabric2_app,start,[normal,[]]}}}}

    [done in 3.427 s]
  [done in 3.427 s]
module 'couch_expiring_cache_fdb'
=======================================================
  Failed: 0.  Skipped: 0.  Passed: 0.
One or more tests were cancelled.
Cover analysis: /root/couchdb/src/couch_expiring_cache/.eunit/index.html

Code Coverage:
couch_expiring_cache        :   0%
couch_expiring_cache_fdb    :   0%
couch_expiring_cache_server :   0%

Total                       : 0%
ERROR: One or more eunit tests failed.
ERROR: eunit failed while processing /root/couchdb/src/couch_expiring_cache: rebar_abort
gmake[1]: *** [Makefile:176: eunit] Error 1
gmake[1]: Leaving directory '/root/couchdb'
gmake: *** [Makefile:163: check] Error 2
kocolosk commented 2 years ago

I think this one has been resolved -- main seems to be building just fine on FreeBSD in Jenkins, including unit tests.