Opened 20 months ago

Last modified 6 days ago

#62216 assigned defect

db53: error: Support for FCNTL mutexes was removed in BDB 4.8.

Reported by: minusf Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version:
Keywords: arm64 bigsur Cc: tgyurci (Teubel György), jmroot (Joshua Root), MarcusCalhoun-Lopez (Marcus Calhoun-Lopez), thynus, ctreleaven (Craig Treleaven), exg (Emanuele Giaquinta)
Port: db53 isync

Description

i am trying to build isync and it fails on db53.

i see non-arm64 packages built under https://packages.macports.org/db53/ and i use isync on an intel mac so i imagine this compiles fine on intel but not yet on arm64:

-->  Fetching archive for db53
--->  Attempting to fetch db53-5.3.28_0+sql.darwin_20.arm64.tbz2 from https://lil.fr.packages.macports.org/db53
--->  Attempting to fetch db53-5.3.28_0+sql.darwin_20.arm64.tbz2 from https://packages.macports.org/db53
--->  Attempting to fetch db53-5.3.28_0+sql.darwin_20.arm64.tbz2 from https://cph.dk.packages.macports.org/db53
--->  Fetching distfiles for db53
--->  Verifying checksums for db53
--->  Extracting db53
--->  Applying patches to db53
--->  Configuring db53
Error: Failed to configure db53, consult /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_databases_db53/db53/work/db-5.3.28/build_unix/config.log
Error: Failed to configure db53: configure failure: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_databases_db53/db53/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
Error: Processing of port isync failed

there are many failed tests in the configure log, but some of them are designed to catch stuff i guess. the last error is:

configure:22024: /usr/bin/clang -o conftest -pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk -arch arm64  -I/opt/local/include -DSQLITE_ENABLE_COLUMN_METADATA -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk -L/opt/local/lib -Wl,-headerpad_max_install_names -W
l,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk -arch arm64 conftest.c  >&5
configure:22024: $? = 0
configure:22032: result: UNIX/fcntl
configure:22214: error: Support for FCNTL mutexes was removed in BDB 4.8.

Attachments (3)

config.log (160.0 KB) - added by minusf 20 months ago.
main.log (25.5 KB) - added by minusf 20 months ago.
gramps_db5_config_failure.log (159.6 KB) - added by physicsbeany 10 days ago.
failure log from trying gramps installation

Download all attachments as: .zip

Change History (16)

comment:1 Changed 20 months ago by ryandesign (Ryan Schmidt)

Keywords: arm64 bigsur added
Port: db53 added
Summary: isync build fails on db53 dependency on arm64db53: error: Support for FCNTL mutexes was removed in BDB 4.8.

This was previously reported in #61409 and duplicates. It has been closed as fixed, but with a note that the problem remains on arm64. Please sudo port selfupdate to ensure you have at least the partial fix from that ticket and then sudo port clean db53 and try again and attach the main.log and config.log files so that we can have a full record of what's happening.

comment:2 Changed 20 months ago by tgyurci (Teubel György)

Cc: tgyurci added

Changed 20 months ago by minusf

Attachment: config.log added

Changed 20 months ago by minusf

Attachment: main.log added

comment:3 Changed 20 months ago by ryandesign (Ryan Schmidt)

Cc: jmroot MarcusCalhoun-Lopez added

Looks like we may need BerkeleyDB 12.1.6.2 (12.1.6.1.26) or newer for arm64 support.

https://docs.oracle.com/cd/E17076_05/html/installation/upgrade_supparm64.html

The current version is 18.1.40 so we are pretty out of date in MacPorts, having only BerkeleyDB 6.2 at newest in the db62 port.

Our failure to provide current versions of BerkeleyDB in MacPorts may relate to the acquisition of BerkeleyDB by Oracle in 2006 (and the resulting undesirable corporate flavor imparted to the project and its web site—for example, I have no idea how to download old versions of BerkeleyDB from Oracle now or how to browse or download its source code repository) and the switch to the possibly undesirable AGPL license as of BerkeleyDB 6.0.20 in 2013. According to Wikipedia, Linux distributions have phased out BerkeleyDB in favor of LMDB; perhaps MacPorts could embark on a similar effort.

Cc'ing maintainers of db47 and db48 for thoughts. Other db versions in MacPorts are not maintained, which may also contribute to our lack of updates.

comment:4 Changed 14 months ago by thynus

Cc: thynus added

comment:5 Changed 13 months ago by ctreleaven (Craig Treleaven)

Cc: ctreleaven added

comment:6 Changed 11 months ago by enckse (Sean Enck)

I never cross-referenced back the change to isync that allows for a variant around bdb and can unblock arm64 users that may have gotten here trying to use isync: https://github.com/macports/macports-ports/pull/11466

comment:7 Changed 9 months ago by mascguy (Christopher Nielsen)

Cc: mascguy added

Changed 10 days ago by physicsbeany

failure log from trying gramps installation

comment:8 Changed 10 days ago by physicsbeany

I just encountered this same db5 error when trying to install gramps on my M1 Macbook (MacOS 12.6 Monterey, Macports 2.7.2).

It's not clear to me from the more recent comments whether there's some kind of workaround for gramps.

comment:9 in reply to:  3 ; Changed 9 days ago by mascguy (Christopher Nielsen)

Replying to ryandesign:

According to Wikipedia, Linux distributions have phased out BerkeleyDB in favor of LMDB; perhaps MacPorts could embark on a similar effort.

Since db62 now builds for ARM, that eliminates one blocker. (Though I agree, we should also add a port(s) for LMDB.)

The key barrier, is Python support: Surprisingly, we only provide a port for BDB bindings, via legacy port py-bsddb3. (And that only supports Python versions up to 3.9.) We should also add a port for py-berkeleydb, as that's being actively developed.

And finally, once that's done, we may have to patch gramps to use py-berkeleydb: While the API is very similar, there is one potential breaking change. However, based on the docs, it should be relatively easy to deal with.

comment:10 Changed 9 days ago by mascguy (Christopher Nielsen)

Cc: mascguy removed
Owner: set to mascguy
Status: newassigned

comment:11 Changed 7 days ago by Christopher Nielsen <mascguy@…>

In 87cce7d40249d85ce6c10a8dcb36609e68574bd2/macports-ports (master):

py-berkeleydb: new port
See: #62216

comment:12 in reply to:  9 Changed 6 days ago by mascguy (Christopher Nielsen)

Replying to mascguy:

And finally, once that's done, we may have to patch gramps to use py-berkeleydb: While the API is very similar, there is one potential breaking change. However, based on the docs, it should be relatively easy to deal with.

It looks like gramps upstream has an open feature request, to formally migrate to py-berkeleydb:

12305 - Migrating the BerkeleyDB back-end from bsddb3 (that will not support Python 3.10 and newer) to berkeleydb

In terms of an ETA, this is presently targeted at upcoming release 5.2.0. There isn't a definitive date on that, but it may be forthcoming before the end of the year.

comment:13 Changed 6 days ago by mascguy (Christopher Nielsen)

Cc: exg added
Port: isync added

@exg, can isync be updated to use db62 instead, since the latter is supported for ARM?

Note: See TracTickets for help on using tickets.