Monday, November 30, 2020

[Update] databases/leveldb: 1.21 -> 1.22

diff --git a/databases/leveldb/Makefile b/databases/leveldb/Makefile
index cf6320ce74b..8831f06deb6 100644
--- a/databases/leveldb/Makefile
+++ b/databases/leveldb/Makefile
@@ -1,40 +1,30 @@
# $OpenBSD: Makefile,v 1.20 2019/07/12 20:43:53 sthen Exp $

-#'atomic_pointer.h: error Please implement AtomicPointer for this platform' on other archs
-ONLY_FOR_ARCHS = i386 amd64
+#'atomic_pointer.h: error Please implement AtomicPointer for this
+# platform' on other archs
+ONLY_FOR_ARCHS= i386 amd64

-COMMENT = fast key-value storage library
+COMMENT= fast key-value storage library
+CATEGORIES= databases devel
+GH_ACCOUNT= google
+GH_PROJECT= leveldb
+GH_TAGNAME= 1.22

-GH_ACCOUNT = google
-GH_PROJECT = leveldb
-GH_TAGNAME = v1.20
+SHARED_LIBS= leveldb 3.0 # 0.0

-SHARED_LIBS += leveldb 2.0 # 0.0
-
-CATEGORIES = databases devel
+MAINTAINER= Ashton Fagg <ashton@fagg.id.au>

# BSD3
-PERMIT_PACKAGE = Yes
-
-MAKE_ENV = CC="${CC}" CXX="${CXX}" OPT="${CXXFLAGS}" \
- SHARED_VERSION_MAJOR=${LIBleveldb_VERSION:R} \
- SHARED_VERSION_MINOR=${LIBleveldb_VERSION:E}
-
-USE_GMAKE = Yes
+PERMIT_PACKAGE= Yes

-TEST_TARGET = check
+WANTLIB= ${COMPILER_LIBCXX} m pthread

-DOC = ${PREFIX}/share/doc/leveldb/
+# C++11
+COMPILER= base-clang ports-gcc
+MODULES= devel/cmake

-do-install:
- ${INSTALL_DATA_DIR} ${PREFIX}/include/leveldb
- ${INSTALL_DATA} ${WRKSRC}/include/leveldb/* ${PREFIX}/include/leveldb
- ${INSTALL_DATA} ${WRKSRC}/out-static/*.a \
- ${PREFIX}/lib
- ${INSTALL_DATA} ${WRKSRC}/out-shared/libleveldb.so.${LIBleveldb_VERSION} \
- ${PREFIX}/lib/libleveldb.so.${LIBleveldb_VERSION}
- ${INSTALL_DATA_DIR} ${DOC}
- ${INSTALL_DATA} ${WRKSRC}/doc/*.md ${DOC}
- ${INSTALL_DATA} ${WRKSRC}/LICENSE ${DOC}
+CONFIGURE_ARGS+= -DBUILD_SHARED_LIBS=on \
+ -DLEVELDB_INSTALL=on \
+ -DLEVELDB_BUILD_BENCHMARKS=off

.include <bsd.port.mk>
diff --git a/databases/leveldb/distinfo b/databases/leveldb/distinfo
index abd336a865d..ae4cf1d8f0c 100644
--- a/databases/leveldb/distinfo
+++ b/databases/leveldb/distinfo
@@ -1,2 +1,2 @@
-SHA256 (leveldb-1.20.tar.gz) = 9avotbIJwvNlYLdfMs5hQS85opIvcEWudkosIzNbZmQ=
-SIZE (leveldb-1.20.tar.gz) = 223141
+SHA256 (leveldb-1.22.tar.gz) = VUI8rJ4zBvSpUCxzigAeSjOdGjj/vudXLUoH1dY5SbI=
+SIZE (leveldb-1.22.tar.gz) = 239365
diff --git a/databases/leveldb/patches/patch-CMakeLists_txt b/databases/leveldb/patches/patch-CMakeLists_txt
new file mode 100644
index 00000000000..06c01609581
--- /dev/null
+++ b/databases/leveldb/patches/patch-CMakeLists_txt
@@ -0,0 +1,22 @@
+$OpenBSD$
+
+This adds the install logic for the documentation. Keeps the Makefile nice and tidy.
+
+Index: CMakeLists.txt
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -448,4 +448,14 @@ if(LEVELDB_INSTALL)
+ "${PROJECT_BINARY_DIR}/leveldbConfigVersion.cmake"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/leveldb"
+ )
++ install(
++ FILES
++ "${PROJECT_SOURCE_DIR}/doc/impl.md"
++ "${PROJECT_SOURCE_DIR}/doc/index.md"
++ "${PROJECT_SOURCE_DIR}/doc/log_format.md"
++ "${PROJECT_SOURCE_DIR}/doc/table_format.md"
++ "${PROJECT_SOURCE_DIR}/LICENSE"
++ DESTINATION "${CMAKE_INSTALL_PREFIX}/share/doc/leveldb"
++ )
++
+ endif(LEVELDB_INSTALL)
diff --git a/databases/leveldb/patches/patch-Makefile b/databases/leveldb/patches/patch-Makefile
deleted file mode 100644
index 292fb04cba0..00000000000
--- a/databases/leveldb/patches/patch-Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-$OpenBSD: patch-Makefile,v 1.5 2018/01/03 20:25:25 rsadowski Exp $
-
-Allow SHARED_MAJOR and SHARED_MINOR to be overridden.
-This doesn't affect kMajorVersion and kMinorVersion in db.h,
-but nothing uses them anyway.
-
-Index: Makefile
---- Makefile.orig
-+++ Makefile
-@@ -121,8 +121,8 @@ SHARED_LIBS = $(SHARED_LIB1)
- SHARED_MEMENVLIB = $(SHARED_OUTDIR)/libmemenv.a
- else
- # Update db.h if you change these.
--SHARED_VERSION_MAJOR = 1
--SHARED_VERSION_MINOR = 20
-+SHARED_VERSION_MAJOR ?= 1
-+SHARED_VERSION_MINOR ?= 20
- SHARED_LIB1 = libleveldb.$(PLATFORM_SHARED_EXT)
- SHARED_LIB2 = $(SHARED_LIB1).$(SHARED_VERSION_MAJOR)
- SHARED_LIB3 = $(SHARED_LIB1).$(SHARED_VERSION_MAJOR).$(SHARED_VERSION_MINOR)
-@@ -135,7 +135,7 @@ SHARED_MEMENVLIB = $(SHARED_OUTDIR)/libmemenv.a
- endif
-
- $(SHARED_OUTDIR)/$(SHARED_LIB3): $(SHARED_LIBOBJECTS)
-- $(CXX) $(LDFLAGS) $(PLATFORM_SHARED_LDFLAGS)$(SHARED_LIB2) $(SHARED_LIBOBJECTS) -o $(SHARED_OUTDIR)/$(SHARED_LIB3) $(LIBS)
-+ $(CXX) $(LDFLAGS) $(PLATFORM_SHARED_LDFLAGS) $(SHARED_LIBOBJECTS) -o $(SHARED_OUTDIR)/$(SHARED_LIB3) $(LIBS)
-
- endif # PLATFORM_SHARED_EXT
-
diff --git a/databases/leveldb/patches/patch-build_detect_platform b/databases/leveldb/patches/patch-build_detect_platform
deleted file mode 100644
index 076a666a2f7..00000000000
--- a/databases/leveldb/patches/patch-build_detect_platform
+++ /dev/null
@@ -1,69 +0,0 @@
-$OpenBSD: patch-build_detect_platform,v 1.7 2018/01/03 20:25:25 rsadowski Exp $
-
-Don't use SONAME.
-Skip checks for optional features.
-
-Index: build_detect_platform
---- build_detect_platform.orig
-+++ build_detect_platform
-@@ -123,6 +123,7 @@ case "$TARGET_OS" in
- PLATFORM_LDFLAGS="-pthread"
- PORT_FILE=port/port_posix.cc
- PORT_SSE_FILE=port/port_posix_sse.cc
-+ PLATFORM_SHARED_LDFLAGS="-shared"
- ;;
- DragonFly)
- PLATFORM=OS_DRAGONFLYBSD
-@@ -187,51 +188,7 @@ if [ "$CROSS_COMPILE" = "true" ]; then
- # Cross-compiling; do not try any compilation tests.
- true
- else
-- CXXOUTPUT="${TMPDIR}/leveldb_build_detect_platform-cxx.$$"
--
-- # If -std=c++0x works, use <atomic> as fallback for when memory barriers
-- # are not available.
-- $CXX $CXXFLAGS -std=c++0x -x c++ - -o $CXXOUTPUT 2>/dev/null <<EOF
-- #include <atomic>
-- int main() {}
--EOF
-- if [ "$?" = 0 ]; then
-- COMMON_FLAGS="$COMMON_FLAGS -DLEVELDB_PLATFORM_POSIX -DLEVELDB_ATOMIC_PRESENT"
-- PLATFORM_CXXFLAGS="-std=c++0x"
-- else
-- COMMON_FLAGS="$COMMON_FLAGS -DLEVELDB_PLATFORM_POSIX"
-- fi
--
-- # Test whether Snappy library is installed
-- # http://code.google.com/p/snappy/
-- $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT 2>/dev/null <<EOF
-- #include <snappy.h>
-- int main() {}
--EOF
-- if [ "$?" = 0 ]; then
-- COMMON_FLAGS="$COMMON_FLAGS -DSNAPPY"
-- PLATFORM_LIBS="$PLATFORM_LIBS -lsnappy"
-- fi
--
-- # Test whether tcmalloc is available
-- $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT -ltcmalloc 2>/dev/null <<EOF
-- int main() {}
--EOF
-- if [ "$?" = 0 ]; then
-- PLATFORM_LIBS="$PLATFORM_LIBS -ltcmalloc"
-- fi
--
-- rm -f $CXXOUTPUT 2>/dev/null
--
-- # Test if gcc SSE 4.2 is supported
-- $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT -msse4.2 2>/dev/null <<EOF
-- int main() {}
--EOF
-- if [ "$?" = 0 ]; then
-- PLATFORM_SSEFLAGS="-msse4.2"
-- fi
--
-- rm -f $CXXOUTPUT 2>/dev/null
-+ COMMON_FLAGS="$COMMON_FLAGS -DLEVELDB_PLATFORM_POSIX"
- fi
-
- # Use the SSE 4.2 CRC32C intrinsics iff runtime checks indicate compiler supports them.
diff --git a/databases/leveldb/pkg/PLIST b/databases/leveldb/pkg/PLIST
index 7b312528148..56d4fbea8bc 100644
--- a/databases/leveldb/pkg/PLIST
+++ b/databases/leveldb/pkg/PLIST
@@ -6,6 +6,7 @@ include/leveldb/comparator.h
include/leveldb/db.h
include/leveldb/dumpfile.h
include/leveldb/env.h
+include/leveldb/export.h
include/leveldb/filter_policy.h
include/leveldb/iterator.h
include/leveldb/options.h
@@ -14,9 +15,13 @@ include/leveldb/status.h
include/leveldb/table.h
include/leveldb/table_builder.h
include/leveldb/write_batch.h
-lib/libleveldb.a
+lib/cmake/
+lib/cmake/leveldb/
+lib/cmake/leveldb/leveldbConfig.cmake
+lib/cmake/leveldb/leveldbConfigVersion.cmake
+lib/cmake/leveldb/leveldbTargets${MODCMAKE_BUILD_SUFFIX}
+lib/cmake/leveldb/leveldbTargets.cmake
@lib lib/libleveldb.so.${LIBleveldb_VERSION}
-lib/libmemenv.a
share/doc/leveldb/
share/doc/leveldb/LICENSE
share/doc/leveldb/impl.md
The attached diff updates databases/leveldb to the latest version
(1.22).

The changelog can be viewed here:

https://github.com/google/leveldb/releases/tag/1.22

It seems the previous version (1.21) introduced a CMake build. But the
OpenBSD port had not yet adopted it. Here, I've updated the port to the
latest version and converted it to use the CMake build - which
drastically simplifies the port Makefile. More to the point, it seems
that the "old way" of building has been ripped out of this version.

The port contains the following changes:

- Conversion to use the new CMake build

- A convenience patch to the CMakeLists.txt to make sure the
documentation ends up in the right place on install.

- Removal of some old stuff related to the old way of building the library.

- General formatting stuff in the Makefile - there was an over-length
line, detected by portcheck.

- Add myself as maintainer.

The port has been tested on amd64. configure, build, fake, package,
install and uninstall all work. The test suite passes 100%.

A quick grep turns up no dependent ports.

Suggestions and comments welcome.

Cheers,

Ash

No comments:

Post a Comment