LMDB is an ultra-fast, ultra-compact key-value data
store developed by Symas for the OpenLDAP Project.
It uses memory-mapped files, so it has the read
performance of a pure in-memory database while still
offering the persistence of standard disk-based
databases, and is only limited to the size of the
virtual address space, (it is not limited to the
size of physical RAM). LMDB was originally called
MDB, but was renamed to avoid confusion with other
software associated with the name MDB.
LMDB 1.0 introduced an incompatible on-disk file format change.
Databases created with LMDB 0.9.x cannot be opened with LMDB 1.0.
If you are migrating from LMDB 0.9.x, you must export your existing
databases using the old mdb_dump and re-import them with the new
mdb_load:
# mdb_dump -a /path/to/db > /tmp/mydb.dump
# mdb_load -f /tmp/mydb.dump /path/to/newdb
There is no support in LMDB 1.0 for operating directly on v0.9 DB files.
If upgrading from < 1.0.0:
LMDB 1.0 introduced an incompatible on-disk file format change.
Databases created with LMDB 0.9.x cannot be opened with LMDB 1.0.
Before using the new library, export your existing databases using the
old mdb_dump utility and re-import them with the new mdb_load:
# mdb_dump -a /path/to/db > /tmp/mydb.dump
# mdb_load -f /tmp/mydb.dump /path/to/newdb
There is no support in LMDB 1.0 for operating directly on v0.9 DB files.
Reason:
LMDB 1.0 introduced an incompatible on-disk file format change.
Versions 0.9.x and 1.0.x databases are mutually incompatible.
Before upgrading, export all existing databases using the old v0.9
mdb_dump utility, then import them with the new v1.0 mdb_load after
upgrading. There is no support for opening v0.9 database files
directly with LMDB 1.0.
Example migration procedure:
# mdb_dump -a /path/to/db > /tmp/mydb.dump
# pkg upgrade databases/lmdb
# mdb_load -f /tmp/mydb.dump /path/to/newdb
databases/lmdb0: Add port for LMDB 0.9.x legacy ABI
LMDB 1.0 introduced an incompatible on-disk format change and subtle
API breakage: applications that compiled cleanly against 1.0 headers
could fail silently at run time. Known affected ports include dns/knot3,
mail/bogofilter, and mail/postfix; the postfix issue has been confirmed
upstream. Linux distributions such as Arch Linux have observed the same
breakage. Samba can also be affected in certain configurations.
Because the regression is not detectable in an -exp build run -- the
postfix failure only manifests at run time, and bogofilter was caught
only because post-build self-tests happen to exercise this path -- we
cannot rely on package builds to validate the 1.0 upgrade.
This commit introduces databases/lmdb0 as a holding port for the 0.9.35
(Only the first 15 lines of the commit message are shown above )
databases/lmdb: add migration notice for 0.9.x -> 1.0.0 upgrade
LMDB 1.0 introduced an incompatible on-disk file format; v0.9 databases
must be exported with mdb_dump and re-imported with mdb_load before use.
Add a pkg-message (install always, upgrade only from <1.0.0) and an
UPDATING entry documenting the required migration procedure.
Suggested by: Kevin Bowling <kevin.bowling@kev009.com>
Remove WWW entries moved into port Makefiles
Commit b7f05445c00f has added WWW entries to port Makefiles based on
WWW: lines in pkg-descr files.
This commit removes the WWW: lines of moved-over URLs from these
pkg-descr files.
Approved by: portmgr (tcberner)
Add WWW entries to port Makefiles
It has been common practice to have one or more URLs at the end of the
ports' pkg-descr files, one per line and prefixed with "WWW:". These
URLs should point at a project website or other relevant resources.
Access to these URLs required processing of the pkg-descr files, and
they have often become stale over time. If more than one such URL was
present in a pkg-descr file, only the first one was tarnsfered into
the port INDEX, but for many ports only the last line did contain the
port specific URL to further information.
There have been several proposals to make a project URL available as
a macro in the ports' Makefiles, over time.
(Only the first 15 lines of the commit message are shown above )
databases/lmdb: Fix static library installation.
INSTALL_LIB will strip symbols, and should not be used for static
libraries.
PR: ports/263884
Reported by: yuri
MFH: 2022Q2
databases/lmdb: in db_env_close0(), destroy robust mutexes if we are
the only remaining user.
When closing an lmdb database, all memory and file descriptor resources
are released, including the shared memory pages that contained the
robust mutex.
However, before this commit, prior to unmapping the pages that contained
the robust mutexex, lmdb did not destroy the mutexes first. This would
create a problem when an application opens and closes a database, then
open it again.
According to libthr(3), by default, a shared lock backed by a mapped
file in memory is automatically destroyed on the last unmap of the
corresponding file' page, which is allowed by POSIX.
(Only the first 15 lines of the commit message are shown above )
databases/lmdb: back out r478269 due to cyrus-imapd30 instability
Robust mutexes were already enabled but r478269 disabled POSIX
semaphores. It appears both are only mutually exclusive on Android and
old GNU libc.
PR: 230564
Reported by: Volodymyr Kostyrko
Pointy hat to: jbeich
databases/lmdb: update to 0.9.22
LMDB 0.9.22 Release (2018-03-22)
Fix MDB_DUPSORT alignment bug (ITS#8819)
Fix regression with new db from 0.9.19 (ITS#8760)
Fix liblmdb to build on Solaris (ITS#8612)
Fix delete behavior with DUPSORT DB (ITS#8622)
Fix mdb_cursor_get/mdb_cursor_del behavior (ITS#8722)
PR: 227103
Submitted by: gahr
Approved by: delphij (maintainer)
Add soname and cleanup
Using soname allows pkg(8) to register the library, and it helps on
upgrades.
Use WRKSRC_SUBDIR
Use MAKE_ARGS instead of MAKE_ENV so the patch can be simplified.
PR: 211700
Submitted by: mat
Approved by: delphij (maintainer)
Sponsored by: Absolight
Convert all :U to :tu and :L to :tl
Since FreeBSD 8.4 and FreeBSD 9.1 make(1) do support :tu and :tl as a
replacement for :U and :L (which has been marked as deprecated)
bmake which is the default on FreeBSD 10+ only support by default
:tu/:tl a hack has been added at the time to support :U and :L to ease
migration. This hack is now not necessary anymore
Note that this makes the ports tree incompatible with make(1) from
FreeBSD 8.3 or earlier
With hat: portmgr