Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 7 Aug 2019 13:05:23 +0000 (UTC)
From:      Pietro Cerutti <gahr@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r508315 - head/devel/fossil/files
Message-ID:  <201908071305.x77D5Npl052070@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gahr
Date: Wed Aug  7 13:05:22 2019
New Revision: 508315
URL: https://svnweb.freebsd.org/changeset/ports/508315

Log:
  devel/fossil: adopt sqlite3 config tests from upstream
  
  See discussion here: https://fossil-scm.org/forum/forumpost/68b692badf

Added:
  head/devel/fossil/files/patch-sqlite-config-test   (contents, props changed)
Deleted:
  head/devel/fossil/files/patch-auto.def

Added: head/devel/fossil/files/patch-sqlite-config-test
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/fossil/files/patch-sqlite-config-test	Wed Aug  7 13:05:22 2019	(r508315)
@@ -0,0 +1,154 @@
+Index: auto.def
+==================================================================
+--- auto.def
++++ auto.def
+@@ -116,11 +116,11 @@
+     }
+     return $found
+ }
+ 
+ if {![opt-bool internal-sqlite]} {
+-  proc find_internal_sqlite {} {
++  proc find_system_sqlite {} {
+ 
+     # On some systems (slackware), libsqlite3 requires -ldl to link. So
+     # search for the system SQLite once with -ldl, and once without. If
+     # the library can only be found with $extralibs set to -ldl, then
+     # the code below will append -ldl to LIBS.
+@@ -131,14 +131,10 @@
+       # if sqlite3_stmt_isexplain can be found as well. If we can find open() but
+       # not stmt_isexplain(), then the system SQLite is too old to link against
+       # fossil.
+       #
+       if {[check-function-in-lib sqlite3_open sqlite3 $extralibs]} {
+-        if {![check-function-in-lib sqlite3_stmt_isexplain sqlite3 $extralibs]} {
+-          user-error "system sqlite3 too old (require >= 3.28.0)"
+-        }
+-
+         # Success. Update symbols and return.
+         #
+         define USE_SYSTEM_SQLITE 1
+         define-append LIBS -lsqlite3
+         define-append LIBS $extralibs
+@@ -146,11 +142,44 @@
+       }
+     }
+     user-error "system sqlite3 not found"
+   }
+ 
+-  find_internal_sqlite
++  find_system_sqlite
++
++  proc test_system_sqlite {} {
++    # Check compatibility of the system SQLite library by running the sqlcompttest.c
++    # program in the source tree
++    #
++    set cmdline {}
++    lappend cmdline {*}[get-define CCACHE]
++    lappend cmdline {*}[get-define CC] {*}[get-define CFLAGS]
++    lappend cmdline $::autosetup(dir)/../src/sqlcompattest.c -o conftest__
++    lappend cmdline {*}[get-define LDFLAGS]
++    lappend cmdline {*}[get-define LIBS]
++    set ok 1
++    set err [catch {exec-with-stderr {*}$cmdline} result errinfo]
++    if {$err} {
++       configlog "Failed: [join $cmdline]"
++       if {[string length $result]>0} {configlog $result}
++       configlog "============"
++       set ok 0
++    } elseif {$::autosetup(debug)} {
++       configlog "Compiled OK: [join $cmdline]"
++       configlog "============"
++    }
++    if {!$ok} {
++      user-error "unable to compile SQLite compatibility test program"
++    }
++    set err [catch {exec-with-stderr ./conftest__} result errinfo]
++    if {$err} {
++      user-error $result
++    }
++    file delete ./conftest__
++  }
++  test_system_sqlite
++    
+ }
+ 
+ proc is_mingw {} {
+     return [string match *mingw* [get-define host]]
+ }
+
+ADDED   src/sqlcompattest.c
+Index: src/sqlcompattest.c
+==================================================================
+--- src/sqlcompattest.c
++++ src/sqlcompattest.c
+@@ -0,0 +1,69 @@
++/*
++** Copyright (c) 2019 D. Richard Hipp
++**
++** This program is free software; you can redistribute it and/or
++** modify it under the terms of the Simplified BSD License (also
++** known as the "2-Clause License" or "FreeBSD License".)
++**
++** This program is distributed in the hope that it will be useful,
++** but without any warranty; without even the implied warranty of
++** merchantability or fitness for a particular purpose.
++**
++** Author contact information:
++**   drh@hwaci.com
++**   http://www.hwaci.com/drh/
++**
++*******************************************************************************
++**
++** This file is NOT part of the Fossil executable
++**
++** This file contains a test program used by ../configure with the
++** the --disable-internal-sqlite option to determine whether or
++** not the system SQLite library is sufficient to support Fossil.
++**
++** It is preferred to statically link Fossil with the sqlite3.c source
++** file that is part of the source tree and not use any SQLite shared
++** library that is included with the system.  But some packagers do not
++** like to do this.  Hence, we provide the option to link Fossil against
++** the system SQLite shared library.  But Fossil is very particular about
++** the version and build options for SQLite.  Unless a recent version of
++** SQLite is available, and unless that SQLite is built using some
++** non-default features, the system library won't meet the needs of
++** Fossil.  This program attempts to determine if the system library
++** SQLite is sufficient for Fossil.
++**
++** Compile this program, linking it against the system SQLite library,
++** and run it.  If it returns with a zero exit code, then all is well.
++** But if it returns a non-zero exit code, then the system SQLite library
++** lacks some capability that Fossil uses.  A message on stdout describes
++** the missing feature.
++*/
++#include "sqlite3.h"
++#include <stdio.h>
++
++int main(int argc, char **argv){
++  int i;
++  static const char *zRequiredOpts[] = {
++    "ENABLE_FTS4",        /* Required for repository search */
++    "ENABLE_JSON1",       /* Required for the check-in locking protocol */
++    "ENABLE_DBSTAT_VTAB", /* Required by /repo-tabsize page */
++  };
++
++  /* Check minimum SQLite version number */
++  if( sqlite3_libversion_number()<3028000 ){
++    printf("found SQLite version %s but need 3.28.0 or later\n",
++            sqlite3_libversion());
++    return 1;
++  }
++
++  for(i=0; i<sizeof(zRequiredOpts)/sizeof(zRequiredOpts[0]); i++){
++    if( !sqlite3_compileoption_used(zRequiredOpts[i]) ){
++      printf("system SQLite library omits required build option -DSQLITE_%s\n",
++             zRequiredOpts[i]);
++      return 1;
++    }
++  }
++
++  /* Success! */
++  return 0;
++}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201908071305.x77D5Npl052070>