123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- # Copyright 1999-2017 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License v2
- EAPI="6"
- inherit autotools eutils flag-o-matic multilib multilib-minimal toolchain-funcs versionator
- SRC_PV="$(printf "%u%02u%02u%02u" $(get_version_components))"
- DOC_PV="${SRC_PV}"
- # DOC_PV="$(printf "%u%02u%02u00" $(get_version_components $(get_version_component_range 1-3)))"
- DESCRIPTION="A SQL Database Engine in a C Library"
- HOMEPAGE="https://sqlite.org/"
- SRC_URI="doc? ( https://sqlite.org/2017/${PN}-doc-${DOC_PV}.zip )
- tcl? ( https://sqlite.org/2017/${PN}-src-${SRC_PV}.zip )
- test? ( https://sqlite.org/2017/${PN}-src-${SRC_PV}.zip )
- tools? ( https://sqlite.org/2017/${PN}-src-${SRC_PV}.zip )
- !tcl? ( !test? ( !tools? ( https://sqlite.org/2017/${PN}-autoconf-${SRC_PV}.tar.gz ) ) )"
- LICENSE="public-domain"
- SLOT="3"
- KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~ppc-aix ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
- IUSE="debug doc icu +readline secure-delete static-libs tcl test tools"
- RDEPEND="icu? ( dev-libs/icu:0=[${MULTILIB_USEDEP}] )
- readline? ( sys-libs/readline:0=[${MULTILIB_USEDEP}] )
- tcl? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] )
- tools? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] )"
- DEPEND="${RDEPEND}
- doc? ( app-arch/unzip )
- tcl? ( app-arch/unzip )
- test? (
- app-arch/unzip
- dev-lang/tcl:0[${MULTILIB_USEDEP}]
- )
- tools? ( app-arch/unzip )"
- full_tarball() {
- use tcl || use test || use tools
- }
- pkg_setup() {
- if full_tarball; then
- S="${WORKDIR}/${PN}-src-${SRC_PV}"
- else
- S="${WORKDIR}/${PN}-autoconf-${SRC_PV}"
- fi
- }
- src_prepare() {
- if full_tarball; then
- eapply -p0 "${FILESDIR}/${PN}-3.16.0-full_tarball-build.patch"
- eapply_user
- # Fix AC_CHECK_FUNCS.
- # https://mailinglists.sqlite.org/cgi-bin/mailman/private/sqlite-dev/2016-March/002762.html
- sed -e "s/AC_CHECK_FUNCS(.*)/AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])/" -i configure.ac || die "sed failed"
- else
- eapply -p0 "${FILESDIR}/${PN}-3.16.0-nonfull_tarball-build.patch"
- eapply_user
- # Fix AC_CHECK_FUNCS.
- # https://mailinglists.sqlite.org/cgi-bin/mailman/private/sqlite-dev/2016-March/002762.html
- sed \
- -e "s/AC_CHECK_FUNCS(\[fdatasync.*/AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])/" \
- -e "/AC_CHECK_FUNCS(posix_fallocate)/d" \
- -i configure.ac || die "sed failed"
- fi
- eautoreconf
- multilib_copy_sources
- }
- multilib_src_configure() {
- local CPPFLAGS="${CPPFLAGS}" options=()
- options+=(
- --enable-$(full_tarball && echo load-extension || echo dynamic-extensions)
- --enable-threadsafe
- )
- if ! full_tarball; then
- options+=(--disable-static-shell)
- fi
- # Support detection of misuse of SQLite API.
- # https://sqlite.org/compile.html#enable_api_armor
- append-cppflags -DSQLITE_ENABLE_API_ARMOR
- # Support column metadata functions.
- # https://sqlite.org/c3ref/column_database_name.html
- append-cppflags -DSQLITE_ENABLE_COLUMN_METADATA
- # Support dbstat virtual table.
- # https://sqlite.org/dbstat.html
- append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB
- # Support comments in output of EXPLAIN.
- # https://sqlite.org/compile.html#enable_explain_comments
- append-cppflags -DSQLITE_ENABLE_EXPLAIN_COMMENTS
- # Support Full-Text Search versions 3, 4 and 5.
- # https://sqlite.org/fts3.html
- # https://sqlite.org/fts5.html
- append-cppflags -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4
- options+=(--enable-fts5)
- # Support hidden columns.
- append-cppflags -DSQLITE_ENABLE_HIDDEN_COLUMNS
- # Support JSON1 extension.
- # https://sqlite.org/json1.html
- append-cppflags -DSQLITE_ENABLE_JSON1
- # Support memsys5 memory allocator.
- # https://sqlite.org/malloc.html#memsys5
- append-cppflags -DSQLITE_ENABLE_MEMSYS5
- # Support Resumable Bulk Update extension.
- # https://sqlite.org/rbu.html
- append-cppflags -DSQLITE_ENABLE_RBU
- # Support R*Trees.
- # https://sqlite.org/rtree.html
- append-cppflags -DSQLITE_ENABLE_RTREE
- # Support scan status functions.
- # https://sqlite.org/c3ref/stmt_scanstatus.html
- # https://sqlite.org/c3ref/stmt_scanstatus_reset.html
- append-cppflags -DSQLITE_ENABLE_STMT_SCANSTATUS
- # Support Session extension.
- # https://sqlite.org/sessionintro.html
- options+=(--enable-session)
- # Support unknown() function.
- # https://sqlite.org/compile.html#enable_unknown_sql_function
- append-cppflags -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
- # Support unlock notification.
- # https://sqlite.org/unlock_notify.html
- append-cppflags -DSQLITE_ENABLE_UNLOCK_NOTIFY
- # Support soundex() function.
- # https://sqlite.org/lang_corefunc.html#soundex
- append-cppflags -DSQLITE_SOUNDEX
- # debug USE flag.
- if full_tarball; then
- options+=($(use_enable debug))
- else
- if use debug; then
- append-cppflags -DSQLITE_DEBUG
- else
- append-cppflags -DNDEBUG
- fi
- fi
- # icu USE flag.
- if use icu; then
- # Support ICU extension.
- # https://sqlite.org/compile.html#enable_icu
- append-cppflags -DSQLITE_ENABLE_ICU
- if full_tarball; then
- sed -e "s/^TLIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
- else
- sed -e "s/^LIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
- fi
- fi
- # readline USE flag.
- options+=(
- --disable-editline
- $(use_enable readline)
- )
- if full_tarball && use readline; then
- options+=(--with-readline-inc="-I${EPREFIX}/usr/include/readline")
- fi
- # secure-delete USE flag.
- if use secure-delete; then
- # Enable secure_delete pragma by default.
- # https://sqlite.org/pragma.html#pragma_secure_delete
- append-cppflags -DSQLITE_SECURE_DELETE
- fi
- # static-libs USE flag.
- options+=($(use_enable static-libs static))
- # tcl, test, tools USE flags.
- if full_tarball; then
- options+=(--enable-tcl)
- fi
- if [[ "${CHOST}" == *-mint* ]]; then
- append-cppflags -DSQLITE_OMIT_WAL
- fi
- econf "${options[@]}"
- }
- multilib_src_compile() {
- emake HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}"
- if use tools && multilib_is_native_abi; then
- emake changeset dbhash rbu scrub showdb showjournal showstat4 showwal sqldiff sqlite3_analyzer
- fi
- }
- multilib_src_test() {
- if [[ "${EUID}" -eq 0 ]]; then
- ewarn "Skipping tests due to root permissions"
- return
- fi
- emake HAVE_TCL="$(usex tcl 1 "")" $(use debug && echo fulltest || echo test)
- }
- multilib_src_install() {
- emake DESTDIR="${D}" HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" install
- if use tools && multilib_is_native_abi; then
- install_tool() {
- if [[ -f ".libs/${1}" ]]; then
- newbin ".libs/${1}" "${2}"
- else
- newbin "${1}" "${2}"
- fi
- }
- install_tool changeset sqlite3-changeset
- install_tool dbhash sqlite3-db-hash
- install_tool rbu sqlite3-rbu
- install_tool scrub sqlite3-scrub
- install_tool showdb sqlite3-show-db
- install_tool showjournal sqlite3-show-journal
- install_tool showstat4 sqlite3-show-stat4
- install_tool showwal sqlite3-show-wal
- install_tool sqldiff sqlite3-diff
- install_tool sqlite3_analyzer sqlite3-analyzer
- unset -f install_tool
- fi
- }
- multilib_src_install_all() {
- prune_libtool_files
- doman sqlite3.1
- if use doc; then
- rm "${WORKDIR}/${PN}-doc-${DOC_PV}/"*.{db,txt}
- (
- docinto html
- dodoc -r "${WORKDIR}/${PN}-doc-${DOC_PV}/"*
- )
- fi
- }
|