pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/databases/sqlite3



Module Name:    pkgsrc
Committed By:   riastradh
Date:           Thu Dec 26 22:04:28 UTC 2024

Modified Files:
        pkgsrc/databases/sqlite3: Makefile options.mk

Log Message:
databases/sqlite3: Spruce up build options.

1. Document reasoning for each of the build-time options available and
   set a rubric for which ones to enable in future updates.

2. Enable some options that look well-justified.  I went through all
   the options at https://www.sqlite.org/compile.html, applied the
   rubric, and compared to several other general-purpose packaging
   systems.

(Happy to discuss and amend the rubric and the choice of options --
this should be viewed as a starting point for review, testing, and
tweaking, not an inviolably final decision.)

3. Nix PKG_OPTIONS that are default-on upstream -- these haven't done
   anything in a while.  If you want to add these back, then:

   (a) they should be in PKG_SUGGESTED_OPTIONS (because they're
       already enabled by default upstream), and

   (b) you'll have to set and test the appropriate SQLITE_OMIT_*
       option.

   Options removed:
   - deserialize (default-on upstream anyway)
   - fts (default-on upstream anyway)
   - sqlite3-dbstat (unconditionally enabled in pkgsrc now because
     needed by downstream packages)

   Options remaining:
   - icu

4. Nix some deprecated options like SQLITE_ENABLE_LOAD_EXTENSION.

Additions to CONFIGURE_ARGS:
--enable-fts3 (paranoia, default-on upstream anyway)
--enable-fts4 (paranoia, default-on upstream anyway)
--enable-fts5 (paranoia, default-on upstream anyway)
--enable-math (paranoia, default-on upstream anyway)
--enable-rtree (paranoia, default-on upstream anyway)
--enable-session

Removals from CONFIGURE_ARGS: none

Additions to CFLAGS:
-DSQLITE_ENABLE_DBSTAT_VTAB
-DSQLITE_ENABLE_FTS3_PARENTHESIS
-DSQLITE_ENABLE_HIDDEN_COLUMNS
-DSQLITE_ENABLE_STMTVTAB

Removals from CFLAGS:
-DSQLITE_ENABLE_LOAD_EXTENISON (default-on upstream now; need
  SQLITE_OMIT_LOAD_EXTENSION to reverse)
-DSQLITE_ENABLE_MATH_FUNCTIONS (replaced by --enable-math for better
  build-time error checking)

PR pkg/58448: databases/sqlite3 is missing dbstat option


To generate a diff of this commit:
cvs rdiff -u -r1.160 -r1.161 pkgsrc/databases/sqlite3/Makefile
cvs rdiff -u -r1.8 -r1.9 pkgsrc/databases/sqlite3/options.mk

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/databases/sqlite3/Makefile
diff -u pkgsrc/databases/sqlite3/Makefile:1.160 pkgsrc/databases/sqlite3/Makefile:1.161
--- pkgsrc/databases/sqlite3/Makefile:1.160     Mon Nov 25 20:20:04 2024
+++ pkgsrc/databases/sqlite3/Makefile   Thu Dec 26 22:04:28 2024
@@ -1,9 +1,10 @@
-# $NetBSD: Makefile,v 1.160 2024/11/25 20:20:04 adam Exp $
+# $NetBSD: Makefile,v 1.161 2024/12/26 22:04:28 riastradh Exp $
 
 .include "Makefile.common"
 
 DISTNAME=      sqlite-autoconf-${SQLITE3_DISTVERSION}
 PKGNAME=       sqlite3-${SQLITE3_VERSION}
+PKGREVISION=   1
 CATEGORIES=    databases
 
 MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
@@ -22,30 +23,495 @@ INSTALLATION_DIRS+=        ${PKGMANDIR}/man1
 
 .include "../../mk/bsd.prefs.mk"
 
-# In the past, Linux had database corruption issues with pread, so
-# only enable it on safe platforms.
-CFLAGS.NetBSD+=                -DUSE_PREAD
+# sqlite3 compile options are documented at:
+#
+# https://www.sqlite.org/compile.html
+#
+# We always enable those options that:
+#
+# (a) are not dynamically loadable, but
+# (b) enable functionality applications are likely to require, and
+# (c) do not change default settings, and
+# (d) do not bring unwieldy dependencies, and
+# (e) do not incur unreasonable burden on users not needing them if
+#     applicable only to niche use cases.
+#
+# We also always enable options that are necessary to build, or are
+# performance optimizations that do not affect functionality.
+#
+# Other options -- those that can be dynamically loaded, those that
+# change defaults which applications could override anyway, or those
+# that bring in unwieldy dependencies -- are relegated to options.mk,
+# e.g. the `icu' option which brings in the unwieldy dependency of
+# textproc/icu.
+#
+# Where both a configure argument option and a C preprocessor macro
+# option are available, we prefer the configure argument so that it is
+# checked by the configure script to detect potential bitrot in the
+# future.
+
+### Build fixes
 
 # Darwin < 9 (Mac OS X < 10.5 "Leopard") doesn't have gethostuuid(2)
 # and lacks the zone memory allocator
 .if !empty(MACHINE_PLATFORM:MDarwin-[0-8].*-*)
-CFLAGS+=               -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_WITHOUT_ZONEMALLOC
+CFLAGS+=               -DSQLITE_ENABLE_LOCKING_STYLE=0
+CFLAGS+=               -DSQLITE_WITHOUT_ZONEMALLOC
 .endif
 
-CFLAGS+=               -DSQLITE_ENABLE_MATH_FUNCTIONS=1
+### Performance optimizations
+
+# In the past, Linux had database corruption issues with pread, so only
+# enable it on safe platforms.  This (undocumented) option enables the
+# use of pread(2), instead of the sequence of syscalls
+# lseek(2)-then-read(2), to read from a specific position in a file.
+CFLAGS.NetBSD+=                -DUSE_PREAD
+
+### Enabled functionality
 
-# This define includes the sqlite3_unlock_notify() API in the build.
-# It is required by Firefox 4.x.
-CFLAGS+=               -DSQLITE_ENABLE_UNLOCK_NOTIFY=1
-# The following are defined in the NetBSD builtin version.
+# SQLITE_THREADSAFE.  Some applications of sqlite3 in pkgsrc require
+# thread-safety, so we enable this for everyone.  Applications that
+# really benefit from omitting mutexes and similar can statically link
+# a custom build of sqlite3.  We pass the arguments to make sure they
+# stay enabled in case upstream ever changes the default until we
+# review the change.
+CONFIGURE_ARGS+=       --enable-threadsafe
+
+# The column metadata API provides some additional information about
+# the provenance of columns in query results, and is not dynamically
+# loadable:
+#
+# https://www.sqlite.org/c3ref/column_database_name.html
+# https://www.sqlite.org/compile.html#enable_column_metadata
 CFLAGS+=               -DSQLITE_ENABLE_COLUMN_METADATA
-CFLAGS+=               -DSQLITE_ENABLE_LOAD_EXTENSION
+
+# The DBSTAT virtual table provides information about disk space
+# utilization, is required by lang/tcl's bin/sqlite3_analyzer, and is
+# not (as far as I can tell) dynamically loadable:
+#
+# https://www.sqlite.org/dbstat.html
+# https://www.sqlite.org/compile.html#enable_dbstat_vtab
+CFLAGS+=               -DSQLITE_ENABLE_DBSTAT_VTAB
+
+# Full-text search engines.  There are two full-text search engines,
+# fts3/4 and fts5.  The options SQLITE_ENABLE_FTS3 and
+# SQLITE_ENABLE_FTS4 are equivalent; we enable both to make it clear
+# that that is intended.  fts3 has been available since 3.5.0 in 2007,
+# the fts4 extension (which is unconditionally bundled with the fts3
+# build option now) since 3.7.4 in 2010, fts5 since 3.9.0 in 2015, and
+# all are enabled by default.  We pass the arguments to make sure they
+# stay enabled in case upstream ever changes the default until we
+# review the change.
+#
+# In principle, fts5 is dynamically loadable, but since upstream
+# enables it by default anyway we treat that as a moot point.
+#
+# https://www.sqlite.org/fts3.html
+# https://www.sqlite.org/fts5.html
+# https://www.sqlite.org/compile.html#enable_fts3
+# https://www.sqlite.org/compile.html#enable_fts4
+# https://www.sqlite.org/compile.html#enable_fts5
+CONFIGURE_ARGS+=       --enable-fts3 # -DSQLITE_ENABLE_FTS3
+CONFIGURE_ARGS+=       --enable-fts4 # -DSQLITE_ENABLE_FTS4
+CONFIGURE_ARGS+=       --enable-fts5 # -DSQLITE_ENABLE_FTS5
+
+# Nested queries and AND/OR operators for fts3/4.
+#
+# https://www.sqlite.org/fts3.html#_set_operations_using_the_enhanced_query_syntax
+# https://www.sqlite.org/compile.html#enable_fts3_parenthesis
+CFLAGS+=               -DSQLITE_ENABLE_FTS3_PARENTHESIS
+
+# SQLITE_ENABLE_GEOPOLY, SQLITE_ENABLE_RTREE -- R*Tree and Geopoly
+# interface for geospatial queries.  Enabled by default since 2018.  We
+# pass the arguments to make sure they stay enabled in case upstream
+# ever changes the default until we review the change.
+#
+# https://www.sqlite.org/geopoly.html
+# https://www.sqlite.org/rtree.html
+# https://www.sqlite.org/compile.html#enable_geopoly
+# https://www.sqlite.org/compile.html#enable_rtree
+CONFIGURE_ARGS+=       --enable-rtree
+
+# SQLITE_ENABLE_ICU -- unwieldy dependency, relegated to options.mk.
+# https://www.sqlite.org/compile.html#enable_icu
+
+# SQLITE_ENABLE_IOTRACE -- experimental and may be discontinued in a
+# future release.
+# https://www.sqlite.org/compile.html#enable_iotrace
+
+# Hidden columns.  Allows virtual tables to declare certain columns
+# HIDDEN, which hides them from PRAGMA table_info, SELECT *, and
+# implicit INSERT.
+#
+# https://www.sqlite.org/vtab.html#hiddencol
+# https://www.sqlite.org/compile.html#enable_hidden_columns
+CFLAGS+=               -DSQLITE_ENABLE_HIDDEN_COLUMNS
+
+# SQLITE_ENABLE_JSON1 -- JSON1 support, built-in functions for
+# manipulating JSON.  Enabled by default since 2022, configure option
+# removed, compile-time option switched from opt-in to opt-out in
+# sqlite3>=3.38.0.
+#
+# https://www.sqlite.org/json1.html
+# https://www.sqlite.org/compile.html#enable_json1
+
+# SQLITE_ENABLE_LOCKING_STYLE -- relevant mainly (only?) on Apple
+# systems, where it is enabled by default anyway.
+#
+#      This option enables additional logic in the OS interface layer
+#      for Mac OS X.  The additional logic attempts to determine the
+#      type of the underlying filesystem and choose and alternative
+#      locking strategy that works correctly for that filesystem type.
+#
+# Note issue with Darwin < 9 (Mac OS X < 10.5 "Leopard") above.
+#
+# https://www.sqlite.org/compile.html#enable_locking_style
+
+# SQLITE_ENABLE_MATH_FUNCTIONS -- SQL math functions: sin/cos/tan,
+# log/exp, floor/ceil/trunc, &c.  We pass the arguments to make sure
+# they stay enabled in case upstream ever changes the default until we
+# review the change.
+#
+# https://www.sqlite.org/lang_mathfunc.html
+# https://www.sqlite.org/compile.html#enable_math_functions
+CONFIGURE_ARGS+=       --enable-math
+
+# XXX Consider SQLITE_ENABLE_MEMORY_MANAGEMENT.
+#
+#      This option adds extra logic to SQLite that allows it to
+#      release unused memory upon request.  This option must be
+#      enabled in order for the sqlite3_release_memory() interface to
+#      work.  If this compile-time option is not used, the
+#      sqlite3_release_memory() interface is a no-op.
+#
+# https://www.sqlite.org/compile.html#enable_memory_management
+
+# SQLITE_ENABLE_MEMSYS3, SQLITE_ENABLE_MEMSYS5 -- alternative memory
+# allocators, mutually exclusive.  These seem likely to be relevant
+# only for specialized applications having unusual dynamic memory
+# allocation requirements, so although this does enable extra
+# functionality (SQLITE_CONFIG_HEAP,
+# https://www.sqlite.org/c3ref/c_config_covering_index_scan.html#sqliteconfigheap),
+# it's not clear which allocator is appropriate to ship by default so
+# we will not enable either one.
+#
+# https://www.sqlite.org/compile.html#enable_memsys3
+# https://www.sqlite.org/compile.html#enable_memsys5
+
+# XXX Consider -DSQLITE_ENABLE_NORMALIZE.
+#
+#      This option includes the sqlite3_normalized_sql() API.
+#
+# Unclear what runtime consequences this has.  Unclear what
+# applications outside https://github.com/bloomberg/comdb2 use this.
+#
+# https://www.sqlite.org/compile.html#enable_normalize
+#
+# Gentoo enables: https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-db/sqlite/sqlite-3.47.2.ebuild?id=be159693998b95bddf9c118b2425d9f8a2365a67#n211
+#
+# Arch Linux does not: https://gitlab.archlinux.org/archlinux/packaging/packages/sqlite/-/blob/bf41f088e6ca945d9374838780d5bacb47653277/PKGBUILD#L42-53
+# Debian does not: https://sources.debian.org/src/sqlite3/3.46.1-1/debian/rules/#line43
+# Fedora does not: https://src.fedoraproject.org/rpms/sqlite/blob/182717934c83e9d3ec80f9f818961fd21640c964/f/sqlite.spec#_189
+# FreeBSD does not: https://cgit.freebsd.org/ports/tree/databases/sqlite3/Makefile?id=8d38e8fbf53dfc94507a466b7269b38a55b167ac#n70
+# Homebrew does not: https://github.com/Homebrew/homebrew-core/blob/f6ac42c098379841c21ed3a30e150f26187f34b1/Formula/s/sqlite.rb#L35-L58
+# OpenBSD does not: https://cvsweb.openbsd.org/ports/databases/sqlite3/Makefile?rev=1.132&content-type=text/x-cvsweb-markup
+#
+# https://www.sqlite.org/compile.html#enable_normalize
+
+# SQLITE_ENABLE_NULL_TRIM -- minor on-disk space optimization with some
+# compatibility issues and potentially blob API bugs.  We will let
+# sleeping dogs lie here.
+#
+# https://www.sqlite.org/compile.html#enable_null_trim
+
+# XXX Consider -DSQLITE_ENABLE_OFFSET_SQL_FUNC.
+#
+# Unclear what applications need this.  Gentoo and Fedora enable this;
+# others I checked do not.
+#
+#      This option enables support for the sqlite_offset(X) SQL
+#      function.
+#
+#      The sqlite_offset(X) SQL function requires a new interface on
+#      the B-tree storage engine, a new opcode in the virtual machine
+#      that runs SQL statements, and a new conditional in a critical
+#      path of the code generator.  To avoid that overhead in
+#      applications that do not need the utility of sqlite_offset(X),
+#      the function is disabled by default.
+#
+# https://www.sqlite.org/compile.html#enable_offset_sql_func
+#
+#      The sqlite_offset(X) function returns the byte offset in the
+#      database file for the beginning of the record from which value
+#      would be read.  If X is not a column in an ordinary table, then
+#      sqlite_offset(X) returns NULL.  The value returned by
+#      sqlite_offset(X) might reference either the original table or
+#      an index, depending on the query.  If the value X would
+#      normally be extracted from an index, the sqlite_offset(X)
+#      returns the offset to the corresponding index record.  If the
+#      value X would be extracted from the original table, then
+#      sqlite_offset(X) returns the offset to the table record.
+#
+# https://www.sqlite.org/lang_corefunc.html#sqlite_offset
+
+# XXX Consider SQLITE_ENABLE_ORDERED_SET_AGGREGATES.
+#
+#      This option enables support for the "WITHIN GROUP ORDER BY"
+#      ordered-set aggregate syntax.  For example:
+#
+#          SELECT percentile_cont(0.75) WITHIN GROUP (ORDER BY x) FROM tab;
+#
+#      The above is the SQL-standard way to compute the 75-percentile
+#      value of a distribution.  The usual way to do this in SQLite is
+#      as follows:
+#
+#          SELECT percentile_cont(x,0.75) FROM tab;
+#
+#      Though simpler, easier to read, and easier to type, this syntax
+#      is not compliant with standard SQL.  The simpler, non-standard
+#      syntax is always available in SQLite.  But the SQL-standard
+#      compliant syntax is only available if compiled using
+#      -DSQLITE_ENABLE_ORDERED_SET_AGGREGATES.  The SQL-standard
+#      compliant syntax is disabled by default because (A) it requires
+#      about 1,200 bytes of extra code in the compiled SQLite binary
+#      and (B) because it makes your SQL code more difficult to read,
+#      write, and understand without adding any value.  Use this
+#      option only if you need to write cross-platform SQL that uses
+#      ordered-set aggregate functions such as percentile_cont().
+#
+# This might be useful for generic database wrappers that use this
+# package for a sqlite3 backend.  But nobody else seems to enable this.
+# So let's hold off until the need arises.
+#
+# https://www.sqlite.org/compile.html#enable_ordered_set_aggregates
+
+# SQLITE_ENABLE_PREUPDATE_HOOK, SQLITE_ENABLE_SESSION -- enables the
+# sqlite3_preupdate_* for pre-update hooks, and the sqlite3session_*
+# APIs for reifying changesets.
+#
+# https://www.sqlite.org/c3ref/preupdate_blobwrite.html
+# https://www.sqlite.org/sessionintro.html
+# https://www.sqlite.org/compile.html#enable_preupdate_hook
+# https://www.sqlite.org/compile.html#enable_session
+CONFIGURE_ARGS+=       --enable-session
+
+# SQLITE_ENABLE_QPSG -- query planner stability guarantee.  Off by
+# default.  This option turns it on by default.  Applications can
+# always use sqlite3_db_config(SQLITE_DBCONFIG_ENABLE_QPSG) to enable
+# it at run-time, so no need for us to build sqlite3 with it.
+#
+# https://www.sqlite.org/queryplanner-ng.html#qpstab
+# https://www.sqlite.org/compile.html#enable_qpsg
+
+# XXX Consider SQLITE_ENABLE_RBU, Resumable Bulk Updates.
+#
+# Gentoo enables this; nobody else I found does.
+#
+# https://www.sqlite.org/rbu.html
+# https://www.sqlite.org/compile.html#enable_rbu
+
+# XXX Consider SQLITE_ENABLE_SNAPSHOT, write-ahead log snapshots.
+#
+# Unclear what applications might use this.  Nobody else seems to
+# enable this.
+#
+# https://www.sqlite.org/c3ref/snapshot.html
+# https://www.sqlite.org/compile.html#enable_snapshot
+
+# SQLITE_ENABLE_SORTER_REFERENCES -- potential optimization whose value
+# is not clear, off by default.
+#
+# https://www.sqlite.org/compile.html#enable_sorter_references
+
+# SQLITE_ENABLE_STMT_SCANSTATUS -- enables sqlite3_stmt_scanstatus and
+# sqlite3_stmt_scanstatus_v2.
+#
+#       Those interfaces are normally omitted from the build because
+#       they imposes a performance penalty, even on statements that do
+#       not use the feature.
+#
+# https://www.sqlite.org/c3ref/stmt_scanstatus.html
+# https://www.sqlite.org/compile.html#enable_stmt_scanstatus
+
+# The SQLITE_STMT virtual table provides information about all prepared
+# statements associated with the database connection.  This is likely
+# to be useful for performance analysis of applications and does not
+# appear to have any performance penalty for applications that don't
+# use it.
+#
+# https://www.sqlite.org/stmt.html
+# https://www.sqlite.org/compile.html#enable_stmtvtab
+CFLAGS+=               -DSQLITE_ENABLE_STMTVTAB
+
+# SQLITE_RTREE_INT_ONLY
+#
+#      This compile-time option is deprecated and untested.
+#
+# https://www.sqlite.org/compile.html#rtree_int_only
+
+# SQLITE_ENABLE_SQLLOG
+#
+#      This option enables extra code (especially the
+#      SQLITE_CONFIG_SQLLOG option to sqlite3_config()) that can be
+#      used to create logs of all SQLite processing performed by an
+#      application.
+#
+# Unclear what applications use this or what it does beyond
+# sqlite3_trace_v2 (https://www.sqlite.org/c3ref/trace_v2.html).  Can't
+# find anyone else who enables this.
+#
+# https://www.sqlite.org/c3ref/c_config_covering_index_scan.html#sqliteconfigsqllog
+# https://www.sqlite.org/compile.html#enable_sqllog
+
+# SQLITE_ENABLE_STAT2, SQLITE_ENABLE_STAT3, SQLITE_ENABLE_STAT4 --
+# statistics tables created by the ANALYZE command.
+# SQLITE_ENABLE_STAT2 and SQLITE_ENABLE_STAT3 are now ignored.
+# SQLITE_ENABLE_STAT4 is not enabled by default and it's unclear what
+# the performance implications are, but it appears likely to expand
+# disk usage and potentially break the query planner stability
+# guarantee, so we'll leave it off for now.
+#
+# https://www.sqlite.org/fileformat2.html#stat4tab
+# https://www.sqlite.org/compile.html#enable_stat2
+# https://www.sqlite.org/compile.html#enable_stat3
+# https://www.sqlite.org/compile.html#enable_stat4
+
+# SQLITE_ENABLE_TREE_EXPLAIN
+#
+#      This compile-time option is no longer used.
+#
+# https://www.sqlite.org/compile.html#enable_tree_explain
+
+# XXX Consider SQLITE_ENABLE_UPDATE_DELETE_LIMIT:
+#
+#      This option enables an optional ORDER BY and LIMIT clause on
+#      UPDATE and DELETE statements.
+#
+# Unclear what applications might rely on this.  Debian and Gentoo
+# enable this by default; others do not.
+#
+# https://www.sqlite.org/compile.html#enable_update_delete_limit
+
+# XXX Consider SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION -- enables the
+# `unknown()' function for (and only for) EXPLAIN or EXPLAIN QUERY
+# PLAN, as a substitute for any functions sqlite3 does not recognize.
+#
+#      When used in the command-line shell, the
+#      SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION feature allows SQL text that
+#      contains application-defined functions to be pasted into the
+#      shell for analysis and debugging without having to create and
+#      load an extension that implements the application-defined
+#      functions.
+#
+# However, this might be useful _only_ for the command-line shell;
+# unclear what applications might rely on failure vs unknown().
+#
+# https://www.sqlite.org/compile.html#enable_unknown_sql_function
+
+# SQLITE_ENABLE_UNLOCK_NOTIFY -- enables sqlite3_unlock_notify(),
+# needed for various sqlite3 API calls to sleep rather than fail with
+# SQLITE_LOCKED when another thread is using another connection to the
+# same database, so they can be woken by the other thread when it is
+# done.  Needed by, e.g., Firefox.
+#
+# https://www.sqlite.org/unlock_notify.html
+# https://www.sqlite.org/compile.html#enable_unlock_notify
+CFLAGS+=               -DSQLITE_ENABLE_UNLOCK_NOTIFY
+
+# SQLITE_INTROSPECTION_PRAGMAS
+#
+#      This option is obsolete.
+#
+# https://www.sqlite.org/compile.html#introspection_pragmas
+
+# XXX Consider SQLITE_SOUNDEX:
+#
+#      This option enables the soundex() SQL function.
+#
+# Debian and Gentoo enable this by default; others do not.
+#
+# https://www.sqlite.org/lang_corefunc.html#soundex
+# https://www.sqlite.org/compile.html#soundex
+
+# XXX Consider SQLITE_STRICT_SUBTYPE=1:
+#
+#      This option causes application-defined SQL functions to raise
+#      an SQL error if they invoke the sqlite3_result_subtype()
+#      interface but where not registered with the
+#      SQLITE_RESULT_SUBTYPE property.  This recommended option helps
+#      to identify problems in the implementation of
+#      application-defined SQL functions early in the development
+#      cycle.
+#
+# Debian and FreeBSD enable this; others do not.
+#
+# https://www.sqlite.org/compile.html#strict_subtype
+
+# XXX Consider SQLITE_USE_ALLOCA:
+#
+#      If this option is enabled, then the alloca() memory allocator
+#      will be used in a few situations where it is appropriate.  This
+#      results in a slightly smaller and faster binary.  The
+#      SQLITE_USE_ALLOCA compile-time only works, of course, on
+#      systems that support alloca().
+#
+# Nobody else seems to enable this.
+#
+# https://www.sqlite.org/compile.html#use_alloca
+
+# XXX Consider SQLITE_USE_FCNTL_TRACE:
+#
+#      This option causes SQLite to issue extra SQLITE_FCNTL_TRACE
+#      file controls to provide supplementary information to the VFS.
+#      The "vfslog.c" extension makes use of this to provide enhanced
+#      logs of VFS activity.
+#
+# Nobody else seems to enable this.  Unclear what applications this
+# benefits.
+#
+# https://www.sqlite.org/compile.html#use_fcntl_trace
+
+# SQLITE_USE_SEH
+#
+#      Client code should not use this define, as it is used
+#      internally by the library.
+#
+# https://www.sqlite.org/compile.html#use_seh
+
+# XXX Consider SQLITE_HAVE_ZLIB:
+#
+#      This option has no effect on the SQLite core.  It is only used
+#      by extensions.  This is option is necessary for the compression
+#      and decompression functions that are part of SQL Archive
+#      support in the command-line shell.
+#
+# https://www.sqlite.org/compile.html#have_zlib
+
+# XXX Consider YYTRACKMAXSTACKDEPTH:
+#
+#      This option causes the LALR(1) parser stack depth to be tracked
+#      and reported using the
+#      sqlite3_status(SQLITE_STATUS_PARSER_STACK,...)  interface.
+#      SQLite's LALR(1) parser has a fixed stack depth (determined at
+#      compile-time using the YYSTACKDEPTH options).  This option can
+#      be used to help determine if an application is getting close to
+#      exceeding the maximum LALR(1) stack depth.
+
+# SQLITE_OMIT_LOAD_EXTENSION (old: !SQLITE_ENABLE_LOAD_EXTENSION)
+#
+# Make sure this is consistently enabled on all platforms -- this way
+# the build fails early if something goes wrong with getting at dlopen.
+# (XXX If we have platforms without dlopen, we may want to disable this
+# on those platforms.)
+#
+# https://www.sqlite.org/compile.html#omit_load_extension
+CONFIGURE_ARGS+=       --enable-load-extension
 
 # Uses dlopen and friends but doesn't use -ldl on Linux.
 # See http://www.sqlite.org/cvstrac/tktview?tn=3555
 LIBS+=                 ${BUILDLINK_LDADD.dl}
 
-# Solaris needs -lrt, PR pkg/58714
+# Solaris needs -lrt for nanosleep, PR pkg/58714
 LIBS.SunOS+=           -lrt
 
 .if ${OS_VARIANT} == "SCOOSR5"

Index: pkgsrc/databases/sqlite3/options.mk
diff -u pkgsrc/databases/sqlite3/options.mk:1.8 pkgsrc/databases/sqlite3/options.mk:1.9
--- pkgsrc/databases/sqlite3/options.mk:1.8     Fri Jul 19 17:11:54 2024
+++ pkgsrc/databases/sqlite3/options.mk Thu Dec 26 22:04:28 2024
@@ -1,25 +1,12 @@
-# $NetBSD: options.mk,v 1.8 2024/07/19 17:11:54 riastradh Exp $
+# $NetBSD: options.mk,v 1.9 2024/12/26 22:04:28 riastradh Exp $
 
 PKG_OPTIONS_VAR=               PKG_OPTIONS.sqlite3
-PKG_SUPPORTED_OPTIONS=         sqlite3-dbstat fts icu deserialize
-PKG_SUGGESTED_OPTIONS=         fts # enabled in NetBSD builtin version
+PKG_SUPPORTED_OPTIONS=         icu
 
 .include "../../mk/bsd.options.mk"
 
-.if !empty(PKG_OPTIONS:Msqlite3-dbstat)
-CFLAGS+=       -DSQLITE_ENABLE_DBSTAT_VTAB=1
-.endif
-
-.if !empty(PKG_OPTIONS:Mfts)
-CFLAGS+=       -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1
-.endif
-
-.if !empty(PKG_OPTIONS:Micu)
+.if ${PKG_OPTIONS:Micu}
 CFLAGS+=       -DSQLITE_ENABLE_ICU=1
 LDFLAGS+=      -licui18n -licuuc -licudata
 .include "../../textproc/icu/buildlink3.mk"
 .endif
-
-.if !empty(PKG_OPTIONS:Mdeserialize)
-CFLAGS+=       -DSQLITE_ENABLE_DESERIALIZE=1
-.endif



Home | Main Index | Thread Index | Old Index