Import ncbi-blast+_2.16.0+ds-6+rpi1.debian.tar.xz
authorPeter Michael Green <plugwash@raspbian.org>
Sun, 12 Jan 2025 14:25:01 +0000 (14:25 +0000)
committerPeter Michael Green <plugwash@raspbian.org>
Sun, 12 Jan 2025 14:25:01 +0000 (14:25 +0000)
[dgit import tarball ncbi-blast+ 2.16.0+ds-6+rpi1 ncbi-blast+_2.16.0+ds-6+rpi1.debian.tar.xz]

48 files changed:
README.Debian [new file with mode: 0644]
README.source [new file with mode: 0644]
changelog [new file with mode: 0644]
control [new file with mode: 0644]
copyright [new file with mode: 0644]
dirs [new file with mode: 0644]
docs [new file with mode: 0644]
legacy/legacy.sh [new file with mode: 0755]
ncbi-blast+-legacy.dirs [new file with mode: 0644]
ncbi-blast+.1 [new file with mode: 0644]
ncbi-blast+.dirs [new file with mode: 0644]
ncbi-blast+.examples [new file with mode: 0644]
ncbi-blast+.manpages [new file with mode: 0644]
ncbi-blast+.tests/test.fa [new file with mode: 0644]
ncbi-blast+.tests/testdatabase.fa [new file with mode: 0644]
patches/2to3 [new file with mode: 0644]
patches/allow_pcre2 [new file with mode: 0644]
patches/big_endian_workaround [new file with mode: 0644]
patches/enable_clean_after_failed_compile [new file with mode: 0644]
patches/fix_configure [new file with mode: 0644]
patches/fix_lib_deps [new file with mode: 0644]
patches/fix_unit_tests [new file with mode: 0644]
patches/hurd_fixes [new file with mode: 0644]
patches/legacy_rename_rpsblast [new file with mode: 0644]
patches/no_multiarch_rpath [new file with mode: 0644]
patches/optin_usage_report [new file with mode: 0644]
patches/optionally_keep_sequence [new file with mode: 0644]
patches/reprobuild [new file with mode: 0644]
patches/run_perl_directly [new file with mode: 0644]
patches/series [new file with mode: 0644]
patches/skip_services_unit_test [new file with mode: 0644]
patches/spelling [new file with mode: 0644]
patches/support_gcc10 [new file with mode: 0644]
patches/support_mbedtls3 [new file with mode: 0644]
patches/support_x32 [new file with mode: 0644]
patches/suppress_tls_version_checks [new file with mode: 0644]
patches/system_mbedtls_only [new file with mode: 0644]
patches/tune_lmdb_defaults [new file with mode: 0644]
patches/use_pie_for_apps [new file with mode: 0644]
rules [new file with mode: 0755]
salsa-ci.yml [new file with mode: 0644]
source/format [new file with mode: 0644]
source/lintian-overrides [new file with mode: 0644]
source/options [new file with mode: 0644]
tests/control [new file with mode: 0644]
tests/run-unit-test [new file with mode: 0644]
upstream/metadata [new file with mode: 0644]
watch [new file with mode: 0644]

diff --git a/README.Debian b/README.Debian
new file mode 100644 (file)
index 0000000..ff4641b
--- /dev/null
@@ -0,0 +1,10 @@
+blast+ for Debian
+---------------------
+
+ This package does not include the documentation of the software. Documentation is available online.
+ Detail is available:  man ncbi-blast+
+ Package does  not include test binaries nor datatool and projet_tree_builder from upstream.
+ Those binaries are indeed for internal upstream use, and are of no use nor related to blast+ tool itself
+ (see Bug #642991 discussion with upstream answers)
+
+ -- Olivier Sallou <osallou@irisa.fr>  Wed, 27 Apr 2011 15:19:59 +0200
diff --git a/README.source b/README.source
new file mode 100644 (file)
index 0000000..85ca599
--- /dev/null
@@ -0,0 +1,9 @@
+blast+ for Debian
+---------------------
+
+Lintian raises  hardening no fortify warnings that are false positives.
+
+
+Test examples taken from http://www.ncbi.nlm.nih.gov/books/NBK52640/
+
+-- Canberk Koç <canberkkoc@gmail.com> Tue, 2 Aug 2016 03:30:33 +0300
diff --git a/changelog b/changelog
new file mode 100644 (file)
index 0000000..2cc15fc
--- /dev/null
+++ b/changelog
@@ -0,0 +1,719 @@
+ncbi-blast+ (2.16.0+ds-6+rpi1) trixie-staging; urgency=medium
+
+  * Link with libatomic on armhf too.
+
+ -- Peter Michael Green <plugwash@raspbian.org>  Sun, 12 Jan 2025 14:25:01 +0000
+
+ncbi-blast+ (2.16.0+ds-6) unstable; urgency=medium
+
+  * debian/control: Reinstate big-endian builds, which can be salvaged
+    adequately well.
+  * debian/patches/big_endian_workaround (new): On big-endian
+    architectures, roll makeblastdb's and makeprofiledb's default
+    blastdb_version back to 4 pending a proper fix.  Some things,
+    including in particular q2-feature-classifier, will still explicitly
+    request version 5, but everything else should be OK.  (See #1077777.)
+  * debian/rules: Try disabling optimization altogether on sh4.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Tue, 06 Aug 2024 21:45:09 -0400
+
+ncbi-blast+ (2.16.0+ds-5) unstable; urgency=medium
+
+  * debian/control: Forbid builds for big-endian architectures, at least
+    for now.  They nominally succeed, but two dependent autopkgtests (for
+    cct and kleborate) have started failing on s390x, and there's no
+    evidence that other BE architectures fare any better.  (See #1077777.)
+  * debian/rules:
+    - Try building with -fsection-anchors on alpha in hopes of satisfying
+      the GOT size limit there too.
+    - Extend -O1 cap to sh4, which still encountered VM exhaustion.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sun, 04 Aug 2024 16:04:32 -0400
+
+ncbi-blast+ (2.16.0+ds-4) unstable; urgency=medium
+
+  * debian/rules:
+    - Move architecture.mk inclusion to the very top for the sake of
+      hypothetical builds bypassing dpkg-buildpackage.
+    - Compile with -ffunction-sections on hppa and -mxgot on mips*
+      (mips64el in practice) due to having outgrown default settings.
+    - Disable parallel building on sh4 in hopes of avoiding buildd virtual
+      memory exhaustion.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sat, 27 Jul 2024 22:38:52 -0400
+
+ncbi-blast+ (2.16.0+ds-3) unstable; urgency=medium
+
+  * debian/rules: Fix typo (missing parenthesis).
+
+ -- Aaron M. Ucko <ucko@debian.org>  Fri, 26 Jul 2024 15:37:28 -0400
+
+ncbi-blast+ (2.16.0+ds-2) unstable; urgency=medium
+
+  * debian/patches/hurd_fixes: Extend to ncbi_localip.c, which otherwise
+    accommodates PATH_MAX's absence only under Windows.
+  * debian/rules: Link with -latomic on most 32-bit architectures
+    (excepting only x86 and armhf, which succeed as is).
+
+ -- Aaron M. Ucko <ucko@debian.org>  Fri, 26 Jul 2024 14:54:55 -0400
+
+ncbi-blast+ (2.16.0+ds-1) unstable; urgency=medium
+
+  * New upstream release, which should be (more than) new enough for
+    recent q2-feature-classifier.  (Closes: #1074316.)
+  * debian/control:
+    - Build against libnghttp2-dev, libsqlite3-dev, and libuv1-dev, newly
+      needed.
+    - Build against autoconf2.69.
+    - Build against libpcre2-dev, as enabled by debian/patches/allow_pcre2.
+    - Stop building against 2to3, which may not be around much longer.
+  * debian/patches: Update for new release, mostly formally.
+  * debian/patches/2to3 (new): Cache 2to3 diff for
+    windowmasker_2.2.22_adapter.
+  * debian/patches/allow_pcre2 (new): Allow use of PCRE2.
+  * debian/patches/series:
+    - Move system_mbedtls_only up in conjunction with incorporating part
+      of an upstream patch needed by support_mbedtls3.
+    - Comment out reprobuild; I'm all for reproducibility, but the package
+      already automatically builds with flags that make __FILE__ relative,
+      and many of its uses are in header-defined macros that intend to
+      pick up their callers' paths.
+  * debian/patches/support_mbedtls3 (new): Support (but don't require)
+    Mbed TLS 3.x.  (Closes: #1075867.)
+  * debian/patches/system_mbedtls: Extend to cover ncbi_mbedtls.c (as in
+    https://github.com/ncbi/ncbi-cxx-toolkit-public/commit/f9c7297dd1)
+    and Makefile.xxconnect2.lib.
+  * debian/rules:
+    - Regenerate configure and config.h.in with Autoconf 2.69.
+    - Build against PCRE2, as enabled by debian/patches/allow_pcre2.
+      (Closes: #891197.)
+    - Tune flags: Add --without-strip to make --with-symbols effective;
+      switch off warnings from __DATE__/__TIME__ usage, since
+      dpkg-buildpackage's SOURCE_DATE_EPOCH injection should suffice.
+    - Extend generated-sources cleanup to objtools/eutils (not entirely
+      straightforward due to input format variation).
+    - Drop build-time 2to3 invocation in favor of debian/patches/2to3.
+  * debian/source/lintian-overrides: No more rapidjson10 (just ...11).
+  * Standards-Version: 4.7.0 (routine-update)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Thu, 25 Jul 2024 20:07:36 -0400
+
+ncbi-blast+ (2.12.0+ds-4) unstable; urgency=medium
+
+  * debian/control: Drop build dependency on libpcre3-dev; PCRE2 support
+    isn't ready yet, but there's a convenience copy of classic PCRE that
+    will suffice for now.  (Partly addresses #891197.)
+  * debian/source/lintian-overrides: Accommodate bracketed paths.
+  * Standards-Version: 4.6.2 (routine-update)
+  * Remove trailing whitespace in debian/changelog (routine-update)
+  * Refer to common license file for Apache-2.0.
+  * Avoid explicitly specifying -Wl,--as-needed linker flag.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Mon, 04 Sep 2023 22:40:42 -0400
+
+ncbi-blast+ (2.12.0+ds-3) unstable; urgency=medium
+
+  * d/patches/optin_usage_report change usage reports sending over
+    internet strategy to optin (disabled by default unless specified)
+    (Closes # 1005279).
+
+ -- Olivier Sallou <osallou@debian.org>  Thu, 10 Feb 2022 12:17:56 +0000
+
+ncbi-blast+ (2.12.0+ds-2) unstable; urgency=medium
+
+  * Clean up spurious release-status comment from 2.12.0+ds-1.
+  * debian/patches/system_mbedtls_only: Patch out use of local mbed TLS
+    headers, which formally rename all symbols.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Wed, 01 Dec 2021 23:36:32 -0500
+
+ncbi-blast+ (2.12.0+ds-1) unstable; urgency=medium
+
+  * New upstream release.
+  * debian/patches: Update accordingly.
+    - fix_lib_deps, fix_unit_tests, spelling: Formally refresh to eliminate
+      fuzz.
+    - fix_x86isms: Retire (fully incorporated upstream.)
+    - run_perl_directly: Formally update to reflect current $Id$ comment.
+    - support_x32: Forward-port.
+    - tune_lmdb_defaults: Keep just the MIPS tuneup; upstream's settings
+      should now be fine elsewhere.
+  * Standards-Version: 4.6.0 (routine-update)
+  * watch file standard 4 (routine-update)
+  * debian/patches/suppress_tls_version_checks (formerly
+    suppress_gnutls_version_check): Suppress the mbed TLS version check too.
+    (Closes: #1000358.)
+  * debian/watch: Correct filenamemangle (wrong syntax for multiple rules,
+    and leading components left unstripped).
+  * debian/source/lintian-overrides: Simplify c++/src/html/ncbi_menu*.js
+    overrides per current Lintian.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Wed, 01 Dec 2021 22:27:15 -0500
+
+ncbi-blast+ (2.11.0+ds-1) unstable; urgency=medium
+
+  [ Steffen Möller ]
+  * Update metadata - fixed indenting.
+
+  [ Aaron M. Ucko ]
+  * New upstream release.
+  * debian/patches: Update accordingly.
+    - bm-6.4.0: Retire (fully incorporated upstream).
+    - fix_lib_deps: Formally refresh to eliminate fuzz.
+    - run_perl_directly: Formally update to reflect current $Id$ comment.
+    - tune_lmdb_defaults: Port to new setup, conveniently macro-driven.
+  * Standards-Version: 4.5.1 (routine-update)
+  * debhelper-compat 13 (routine-update)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sun, 31 Jan 2021 21:23:21 -0500
+
+ncbi-blast+ (2.10.1+ds-1) unstable; urgency=medium
+
+  * Repack without c++/src/build-system/project_tree_builder_gui/bin.
+    Debian builds make no use of this (Java) GUI or supporting third-party
+    jars, and could do without prebuilt binaries even if they did use it.
+  * debian/copyright:
+    - Set Files-Excluded accordingly.
+    - Correct typos for c++/src/html/ncbi_menu*.js; in particular, replace
+      duplicate .../ncbi_menu_dnd.js by .../ncbi_menu_dyn.js.
+  * debian/watch: Set dversionmangle and repacksuffix options accordingly.
+  * debian/source/lintian-overrides: For ncbi_menu*.js, which are editable
+    despite long lines, override source-contains-prebuilt-javascript-object
+    in addition to source-is-missing.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Fri, 23 Oct 2020 17:23:46 -0400
+
+ncbi-blast+ (2.10.1-3) unstable; urgency=medium
+
+  * debian/patches/tune_lmdb_defaults: Scale down slightly more on 32-bit
+    mips* (just mipsel in practice these days).  The sizes at this point
+    are 640 MiB there, 750 MB on other 32-bit platforms, and 20 GB on
+    64-bit platforms.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sun, 04 Oct 2020 21:37:04 -0400
+
+ncbi-blast+ (2.10.1-2) unstable; urgency=medium
+
+  * debian/patches/bm-6.4.0 (new): Update embedded copy of BitMagic to
+    version 6,4.0 (from 6.0.0), addressing new "inlining failed in call to
+    'always_inline'" errors on mips*el.  (The bmagic package currently has
+    version 6.3.0, slightly predating the necessary fix.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sun, 20 Sep 2020 21:30:04 -0400
+
+ncbi-blast+ (2.10.1-1) unstable; urgency=medium
+
+  * New upstream release.
+    - Among other changes, "fix tblastn mt issue".  (Closes: #970344.)
+  * debian/patches/fix_x86isms (new): Conditionally stub out
+    CCpuFeatures::InstructionSet::InstructionSet, which compiles only on x86.
+  * debian/patches/{hurd_fixes,run_perl_directly}: Rebase.
+  * debian/patches/{reprobuild,support_x32}: Refresh (had fuzz).
+  * debian/patches/support_gcc10: Drop build-system portions, incorporated
+    upstream as of this release.
+  * debian/patches/tune_lmdb_defaults: Rename from tune_32bit_lmdb_defaults;
+    scale down somewhat even on 64-bit platforms to account for potential
+    use of qemu.  (Closes: #969608.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sat, 19 Sep 2020 22:45:42 -0400
+
+ncbi-blast+ (2.10.0-3) unstable; urgency=medium
+
+  * debian/patches/tune_32bit_lmdb_defaults: Tweak default map size expressions.
+    - For 64-bit platforms, use an explicit UL suffix on one factor to avoid
+      overflow.
+    - For 32-bit platforms, avoid tying up quite so much address space, since
+      opening a pair of databases is a distinct possibility.
+    - Generally parenthesize expressions per best macro practice.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Mon, 07 Sep 2020 21:15:02 -0400
+
+ncbi-blast+ (2.10.0-2) unstable; urgency=high
+
+  * debian/patches/support_gcc10: Additionally tweak ncbifile.cpp to avoid
+    narrowing errors on some platforms (i386, for one).
+  * debian/patches/tune_32bit_lmdb_defaults (new): Conditionalize default
+    map size to avoid allocation failures on 32-bit platforms.
+    (Closes: #969608.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sun, 06 Sep 2020 23:07:37 -0400
+
+ncbi-blast+ (2.10.0-1) unstable; urgency=medium
+
+  * New upstream release.
+  * debian/patches:
+    - Formally refresh.  (A few files needed straightforward manual
+      intervention.)
+    - support_gcc10: New, for formal support of GCC 10+.  (Closes: #957581.)
+    - run_perl_directly: New, to streamline update_blastdb(.pl)'s #! line.
+  * debian/rules:
+    - override_dh_clean: Clean up new generated artifacts: fakehome/ and
+      c++/include/common/ncbi_revision.h.
+    - override_dh_install-arch: Install new cleanup-blastdb-volumes script
+      without its upstream .py suffix.
+    - Stop directly injecting -Wl,--as-needed into LDFLAGS, but keep
+      DEB_LDFLAGS_MAINT_APPEND for the sake of backports, along with a
+      comment that they can't rely on GCC 9+.
+  * Add salsa-ci file (routine-update)
+  * Wrap long lines in changelog entries: 2.2.25-6.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sun, 26 Apr 2020 19:38:13 -0400
+
+ncbi-blast+ (2.9.0-4) unstable; urgency=high
+
+  * debian/control: Standards-Version: 4.5.0 (already compliant).
+  * debian/rules: DEB_CONFIGURE_COMMON_FLAGS += --without-sse42.
+    (Closes: #951280.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sun, 16 Feb 2020 20:16:33 -0500
+
+ncbi-blast+ (2.9.0-3) unstable; urgency=medium
+
+  * Team upload.
+  * Drop transitional blast2 package. (Closes: #940742).
+  * debian/copyright: refreshed
+  * debhelper-compat 12
+  * Secure URI in copyright format
+  * Remove trailing whitespace in debian/changelog
+  * Use secure URI in Homepage field.
+  * Move source package lintian overrides to debian/source.
+  * Set upstream metadata fields: Contact, Name.
+  * Remove obsolete fields Name, Contact from debian/upstream/metadata.
+
+ -- Michael R. Crusoe <michael.crusoe@gmail.com>  Thu, 05 Dec 2019 15:42:44 +0100
+
+ncbi-blast+ (2.9.0-2) unstable; urgency=medium
+
+  * debian/control: Standards-Version: 4.4.1 (already compliant).
+  * debian/copyright: Remove redundant ncbi_menu_*.js stanza.
+  * debian/rules:
+    - Delegate dpkg-{architecture,buildflags} calls to
+      /usr/share/dpkg/{architecture,buildflags}.mk respectively.
+    - Allow for cross-building (Closes: #930240):
+    -- Factor a DEB_CONFIGURE_COMMON_FLAGS macro out of
+       DEB_CONFIGURE_EXTRA_FLAGS for flags that also make sense for native
+       builds of internal helpers.
+    -- Conditionally supply --build=... and --host= to the main
+       (historically, only) configure run per Helmut Grohne's suggestion.
+       (dh_auto_configure would take care of this, but insists on passing
+       a --runstatedir=... flag this configure script doesn't accept.)
+    -- Conditionally add a rule for building native datatool and
+       project_tree_builder binaries (in a parallel build tree established
+       via another configure invocation), make it a dependency of
+       override_dh_auto_configure-arch, and arrange for everything else to
+       use these binaries as needed.
+    -- Honor DEB_BUILD_OPTIONS="... nocheck ...", also per Helmut.
+    -- Rework logic to install (possibly indirect) local library
+       dependencies to use readelf rather than ldd, making as many passes
+       as necessary (four at present, but no hardcoded count).
+    - Install get_species_taxids without the .sh suffix.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sun, 29 Sep 2019 21:57:31 -0400
+
+ncbi-blast+ (2.9.0-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Olivier Sallou <osallou@debian.org>  Wed, 11 Sep 2019 07:44:38 +0000
+
+ncbi-blast+ (2.8.1-2) unstable; urgency=medium
+
+  * Convert windowmasker_2.2.22_adapter to Python 3 via 2to3;
+    update (build-)dependencies accordingly.  (Closes: #937121.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sun, 01 Sep 2019 20:50:43 -0400
+
+ncbi-blast+ (2.8.1-1) unstable; urgency=medium
+
+  * New upstream release.
+  * debian/compat: Advance to Debhelper 11.
+  * debian/control:
+    - Build-Depend on liblmdb-dev.
+    - Split B-Ds other than Debhelper out to Build-Depends-Arch.
+    - Advance Debhelper requirement to 11~.
+    - Standards-Version: 4.3.0 (already compliant).
+    - Rules-Requires-Root: no.
+  * debian/patches: Formally update for new release.
+    - Retire support_boost_1_67 (already applied upstream).
+    - Update patches that apply with offsets or outright fuzz, or need
+      full-fledged porting.
+  * debian/patches/fix_lib_deps: Link xcleanup against $(OBJEDIT_LIBS).
+  * debian/patches/system_mbedtls_only (new): Omit convenience mbed TLS
+    copy, which is dead weight and yielded a Lintian error.
+  * debian/rules: Also skip (dh_auto)_configure when building only
+    architecture-independent binary packages.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sun, 03 Feb 2019 22:47:45 -0500
+
+ncbi-blast+ (2.7.1-2) unstable; urgency=medium
+
+  [ David Miguel Susano Pinto ]
+  * d/control: fix Vcs-* links to point to salsa
+
+  [ Aaron M. Ucko ]
+  * d/control: Standards-Version: 4.2.1 (already compliant).
+  * d/patches/support_boost_1_67: New patch to extend Boost support
+    (used for uninstalled tests) through at least version 1.67, per
+    upstream (https://www.ncbi.nlm.nih.gov/viewvc/v1/trunk/c%2B%2B)
+    revisions 79910, 79926, 79928, and 79929.  (Closes: #916000.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Wed, 12 Dec 2018 22:24:45 -0500
+
+ncbi-blast+ (2.7.1-1) unstable; urgency=medium
+
+  * New upstream release
+    d/patches: update patch for new release
+    d/control:
+      go to standards 4.1.3
+      add mbedtls dependency
+
+ -- Olivier Sallou <osallou@debian.org>  Sat, 10 Feb 2018 17:35:31 +0000
+
+ncbi-blast+ (2.6.0-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Olivier Sallou <osallou@debian.org>  Sun, 15 Jan 2017 17:12:27 +0000
+
+ncbi-blast+ (2.5.0-4) unstable; urgency=medium
+
+  * New optionally_keep_sequence patch to hang on to sequence data even if
+    -parse_deflines recognized a non-local ID, on the condition that the
+    environment variable BLAST_ALWAYS_KEEP_SEQUENCE (or configuration
+    parameter [BLAST] always_keep_sequence) is set to a "true" value
+    (English-only, case-insensitive true, t, yes, y, or 1).  (Closes: #792510.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Wed, 14 Dec 2016 22:46:44 -0500
+
+ncbi-blast+ (2.5.0-3) unstable; urgency=medium
+
+  * New suppress_gnutls_version_check patch to prevent bailing when the
+    exact compile-time and runtime GNU TLS versions differ; trust dpkg to
+    disallow combinations that are actually incompatible.
+  * debian/rules: If configure fails (as has been happening on alpha),
+    present (BUILD/status/)config.log before bailing.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Wed, 07 Dec 2016 21:40:38 -0500
+
+ncbi-blast+ (2.5.0-2) unstable; urgency=medium
+
+  * debian/patches/fix_lib_deps: Patch Makefile.blast_macros.mk to add blast
+    to BLAST_LIBS to clear up link errors that could otherwise occur.
+  * debian/control: B-D on libgnutls28-dev to enable HTTPS support.
+  * Fully take blast2 over from ncbi-tools6, whose implementation has retired.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Mon, 05 Dec 2016 23:16:54 -0500
+
+ncbi-blast+ (2.5.0-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Olivier Sallou <osallou@debian.org>  Thu, 01 Dec 2016 14:40:17 +0100
+
+ncbi-blast+ (2.4.0-3) unstable; urgency=medium
+
+  * debian/rules:
+    - Properly build (but don't install) run_with_lock. (Closes: #833538.)
+    - Comment out nostrip check, which yielded a useless dbgsym package.
+  * Reinstate and refresh the hurd_fixes patch, which mostly still applies.
+    (Closes: #833539.)
+  * Add a new support_x32 patch to avoid picking up wrong inline assembly.
+    (Closes: #833541.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Fri, 05 Aug 2016 19:47:24 -0400
+
+ncbi-blast+ (2.4.0-2) unstable; urgency=medium
+
+  * Import upstream patch for remaining Boost compatibility issues
+    as debian/patches/support_recent_boost.  (Closes: #833451.)
+  * debian/rules: Automatically determine which libraries are needed.
+    (The hand-maintained blacklist was incomplete.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Thu, 04 Aug 2016 23:08:20 -0400
+
+ncbi-blast+ (2.4.0-1) unstable; urgency=medium
+
+  * New upstream release.
+  * Refresh patches; drop fix_kfreebsd_ftbs.patch (applied upstream).
+  * Import upstream patch to fix Boost version detection (which missed the
+    2.4.0 release branch) as debian/patches/fix_version_extraction.
+  * fix_lib_deps: List taxon1 in align_format's overridden DLL_LIB, in
+    large part to ensure its headers are generated on time; generally fix
+    remaining cases of underlinkage (several longstanding).
+  * debian/rules: Build --without-downloaded-vdb, to avoid trying to go to
+    Github for code that BLAST+ doesn't even use.  (Other parts of the C++
+    Toolkit do.)
+  * debian/control: Go ahead and add myself to Uploaders.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Wed, 03 Aug 2016 21:40:00 -0400
+
+ncbi-blast+ (2.3.0-2) unstable; urgency=medium
+
+  * Team upload.
+  * Autopkgtest added
+
+ -- Canberk Koç <canberkkoc@gmail.com>  Tue, 02 Aug 2016 03:32:09 +0300
+
+ncbi-blast+ (2.3.0-1) unstable; urgency=medium
+
+  * New upstream version
+  * Moved packaging to Git
+  * cme fix dpkg-control
+  * drop get-orig-source target which is simply the usual uscan call
+
+ -- Andreas Tille <tille@debian.org>  Tue, 12 Apr 2016 14:54:08 +0200
+
+ncbi-blast+ (2.2.31-4) unstable; urgency=medium
+
+  * Really enable building architecture independent package separately
+    Closes: #809120
+  * Save time and do nothing for architecture independent builds
+
+ -- Andreas Tille <tille@debian.org>  Thu, 07 Jan 2016 18:50:31 +0100
+
+ncbi-blast+ (2.2.31-3) unstable; urgency=medium
+
+  * Drop explicite mentioning of quilt
+  * Enable building architecture independent package separately
+    Closes: #809120
+  * Override false lintian error
+  * DEP5 fixes
+
+ -- Andreas Tille <tille@debian.org>  Mon, 28 Dec 2015 12:32:23 +0100
+
+ncbi-blast+ (2.2.31-2) unstable; urgency=medium
+
+  * Fix a long-standing typo for GNU/kFreeBSD FTBS (Aaron M. Ucko)
+
+ -- Olivier Sallou <osallou@debian.org>  Fri, 11 Dec 2015 09:44:43 +0100
+
+ncbi-blast+ (2.2.31-1) unstable; urgency=medium
+
+  * New upstream release
+  * Allow parallel build (Closes: #798277). Thanks to Aron Xu <aron@debian.org>
+  * GCC break fix (recompile with gcc5, Closes: #793263).
+
+ -- Olivier Sallou <osallou@debian.org>  Thu, 10 Dec 2015 13:37:03 +0100
+
+ncbi-blast+ (2.2.30-4) unstable; urgency=medium
+
+  * d/patches/fix_compilation: Add an upstream patch to
+    include/util/bitset/bmconst.h to fix builds with GCC 5 on platforms
+    such as arm64 on which char is unsigned.  (Closes: #790667.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Thu, 02 Jul 2015 16:22:39 -0400
+
+ncbi-blast+ (2.2.30-3) unstable; urgency=medium
+
+  * Switch to unstable after unfreeze.
+
+ -- Olivier Sallou <osallou@debian.org>  Mon, 18 May 2015 14:34:50 +0200
+
+ncbi-blast+ (2.2.30-2) experimental; urgency=medium
+
+  * d/patches/allow_gcc5 (new): Allow compilation with GCC 5, per upstream.
+    (Closes: #778021.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Mon, 16 Feb 2015 22:38:50 -0500
+
+ncbi-blast+ (2.2.30-1) experimental; urgency=medium
+
+  * New upstream release
+  * d/control: switch to Standards 3.9.6
+               fix svn url
+  * d/patches/fix_compilation: fix compilation issue
+
+ -- Olivier Sallou <osallou@debian.org>  Fri, 21 Nov 2014 18:21:26 +0100
+
+ncbi-blast+ (2.2.29-3) unstable; urgency=medium
+
+  * debian/patches/include_typeinfo: Patch include/corelib/ncbistl.hpp to
+    ensure sufficient coverage; fix typos in patch headers.  (Closes: #753190.)
+  * Standards-Version: 3.9.4.  (Already compliant.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Tue, 01 Jul 2014 18:27:46 -0400
+
+ncbi-blast+ (2.2.29-2) unstable; urgency=medium
+
+  * d/patches/include_typeinfo (Closes: #753190).
+
+ -- Olivier Sallou <osallou@debian.org>  Sat, 07 Jun 2014 11:28:22 +0200
+
+ncbi-blast+ (2.2.29-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Olivier Sallou <osallou@debian.org>  Fri, 06 Jun 2014 22:38:40 +0200
+
+ncbi-blast+ (2.2.28-2) unstable; urgency=low
+
+  * debian/patches/use_pie_for_apps: Explicitly build all executables with
+    -fPIE -pie, to avoid giving project_tree_builder a partial PIE
+    treatment that now fails on mips and mipsel.  (Closes: #710807.)
+  * debian/rules: Retire redundant APP_LDFLAGS override.
+  * Standards-Version: 3.9.4.  (Already compliant.)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sun, 02 Jun 2013 23:00:44 -0400
+
+ncbi-blast+ (2.2.28-1) unstable; urgency=low
+
+  * New upstream release
+    - Thanks to Tim Booth for package update help.
+
+ -- Olivier Sallou <osallou@debian.org>  Sat, 01 Jun 2013 08:40:51 +0200
+
+ncbi-blast+ (2.2.27-3) unstable; urgency=low
+
+  * debian/series: active patch fix_arm_mips_build (Closes: #688661).
+
+ -- Olivier Sallou <osallou@debian.org>  Fri, 05 Oct 2012 11:03:03 +0200
+
+ncbi-blast+ (2.2.27-2) unstable; urgency=low
+
+  * debian/patches/fix_arm_mips_build: Fix FTBS on ARM and MIPS
+    (Closes: #688661).
+  * debian/rules: rename seedtop to seedtop+ to avoid blast2 conflict
+    (Closes: #688684).
+
+ -- Olivier Sallou <osallou@debian.org>  Mon, 24 Sep 2012 09:28:29 +0200
+
+ncbi-blast+ (2.2.27-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Olivier Sallou <osallou@debian.org>  Fri, 21 Sep 2012 17:25:41 +0200
+
+ncbi-blast+ (2.2.26-3) unstable; urgency=low
+
+  [ Aaron M. Ucko ]
+  * debian/patches/fix_gcc47_errors: fix various GCC 4.7 compilation
+    errors and warnings.  (Closes: #669679.)
+    - Explicitly qualify more dependent names originating in base templates.
+    - Directly #include headers as needed.
+    - Use modern syntax for making protected base members public.
+    - Add forward declarations as needed.
+  * Wrap and sort build dependencies to ease maintenance thereof.
+  * Enable full hardening flags, introducing a small patch
+    (use_pie_for_apps) to reflect the need to build executables and
+    libraries differently.
+  * Use upstream's new --with-symbols flag in nostrip builds.
+
+  [ Andreas Tille ]
+  * debian/control: Modernize Vcs-* fields.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Thu, 10 May 2012 23:42:49 -0400
+
+ncbi-blast+ (2.2.26-2) unstable; urgency=low
+
+  * debian/patches/wrong_path_to_touch.patch :Fix upstream FTBFS on the Hurd
+    hardcodes wrong path to touch (Closes: #663244)
+
+ -- Olivier Sallou <osallou@debian.org>  Wed, 07 Mar 2012 17:29:23 +0100
+
+ncbi-blast+ (2.2.26-1) unstable; urgency=low
+
+  [ Olivier Sallou ]
+  * New upstream release
+  * Remove some patches, applied upstream
+
+  [ Andreas Tille]
+  * debian/copyright: Added Upstream-Contact
+
+ -- Olivier Sallou <osallou@debian.org>  Wed, 07 Mar 2012 09:37:10 +0100
+
+ncbi-blast+ (2.2.25-7) unstable; urgency=low
+
+  * Do not output everything to STDERR in
+    c++/src/app/blast/update_blastdb.pl
+    Closes: #644237
+  * debian/control: Depends s/${python:Depends}/python/ because
+    the python dependency of /usr/bin/windowmasker_2.2.22_adapter
+    is not detected obviosely
+  * debian/copyright: Indentation fixes to get DEP5 compatibility
+
+ -- Andreas Tille <tille@debian.org>  Wed, 21 Dec 2011 15:47:04 +0100
+
+ncbi-blast+ (2.2.25-6) unstable; urgency=low
+
+   * debian/control:
+     + Luca Capello <luca@pca.it>, fix reference for legacy_blast
+       (Closes: #642986).
+     + add a new line to separate the actual description from usage
+      instruction in the long Description:.
+   * debian/rules: add gene_info_reader binary in package
+
+ -- Olivier Sallou <olivier.sallou@irisa.fr>  Fri, 30 Sep 2011 12:31:05 -0400
+
+ncbi-blast+ (2.2.25-5) unstable; urgency=low
+
+  * Team upload.
+  * debian/patches/hurd_fixes: further patch configure(.ac) to reflect
+    -Wl,rpath,... support.  (Closes: #629656.)
+  * debian/patches/fix_lib_deps: link makembindex and srsearch against
+    libxconnect rather than libconnect for consistency with libblast,
+    which uses the former for consistency with other projects.
+
+ -- Aaron M. Ucko <ucko@debian.org>  Mon, 29 Aug 2011 12:31:05 -0400
+
+ncbi-blast+ (2.2.25-4) unstable; urgency=low
+
+  [ Aaron M. Ucko ]
+  * Team upload.
+  * debian/patches/support_other_cpus: belatedly add a descriptive header.
+  * debian/patches/hurd_fixes: new; fix hurd-specific issues.
+    (In conjunction with the following change, finally closes: #629656.)
+  * debian/control:
+    - Build-Depends += libc0.3-dev (>= 2.13-9~) [hurd-i386] to avoid #630180.
+    - Declare both binary packages as Multi-Arch: foreign.
+  * debian/patches/fix_lib_deps: new; ensure that all libraries link against
+    all direct dependencies.  (Break the dependency loop between libxblast
+    and libxalgoblastdbindex by having the former provide only the C++ BLAST
+    API, leaving the C core only in libblast.)  (Closes: #633567.)
+  * debian/rules: tweak LDFLAGS, supplying -Wl,--as-needed across the
+    board (as it is now safe to do so) and adding -Wl,--enable-new-dtags
+    to allow LD_LIBRARY_PATH to override the private rpath.
+  * debian/patches/no_multiarch_rpath: new; avoid redundant rpath entries
+    on multiarch systems (courtesy of overzealous logic to ensure
+    executables will be able to find libstdc++.)
+
+  [ Andreas Tille ]
+  * Enhances: t-coffee (as stated in tasks file)
+
+ -- Aaron M. Ucko <ucko@debian.org>  Sun, 28 Aug 2011 18:45:19 -0400
+
+ncbi-blast+ (2.2.25-3) unstable; urgency=low
+
+  * Team upload.
+  * debian/rules:
+    - Export MAKE to override an internal upstream build script that
+      otherwise incorrectly defaults to gmake on non-Linux
+      architectures. (Really closes: #629656, with any luck.)
+    - Force CONFIG_SHELL=/bin/bash to avoid lossage that can occur with zsh4
+      masquerading as ksh, which configure otherwise favors (due to complaints
+      from users with broken BASH_ENV scripts that change directories).
+
+ -- Aaron M. Ucko <ucko@debian.org>  Thu, 09 Jun 2011 19:25:45 -0400
+
+ncbi-blast+ (2.2.25-2) unstable; urgency=low
+
+  * Team upload.
+  * Fix several sources of build failures (closes: #629656):
+    - debian/rules (override_dh_install): Correctly support building only
+      architecture-dependent packages.
+      (DEB_CONFIGURE_EXTRA_FLAGS): Add --without-caution to override the
+      upstream build system's reluctance to build shared libraries on the
+      Hurd or kFreeBSD, which it doesn't specifically recognize.  Limit C++
+      optimization level to -O (rather than the default -O2) on mips(el),
+      on which g++ otherwise crashes. :-/
+    - debian/patches/support_other_cpus (new; committed upstream too):
+      build correctly on architectures that wound up defining
+      NCBI_SLOW_ATOMIC_SWAP (spuriously in the case of powerpc,
+      whose detection the patch fixes as well).
+
+ -- Aaron M. Ucko <ucko@debian.org>  Wed, 08 Jun 2011 21:42:52 -0400
+
+ncbi-blast+ (2.2.25-1) unstable; urgency=low
+
+  * Initial release (Closes: #624394)
+
+ -- Olivier Sallou <olivier.sallou@irisa.fr>  Wed, 08 Jun 2011 00:15:15 +0200
diff --git a/control b/control
new file mode 100644 (file)
index 0000000..08ae558
--- /dev/null
+++ b/control
@@ -0,0 +1,60 @@
+Source: ncbi-blast+
+Maintainer: Debian Med Packaging Team <debian-med-packaging@lists.alioth.debian.org>
+Uploaders: Olivier Sallou <osallou@debian.org>,
+           Andreas Tille <tille@debian.org>,
+           Aaron M. Ucko <ucko@debian.org>
+Section: science
+Priority: optional
+Build-Depends: debhelper-compat (= 13),
+               autoconf2.69
+Build-Depends-Arch: libboost-test-dev,
+                    libbz2-dev,
+                    libc-dev-bin,
+                    libgnutls28-dev,
+                    liblmdb-dev,
+                    libmbedtls-dev,
+                    libnghttp2-dev,
+                    libpcre2-dev,
+                    libsqlite3-dev,
+                    libuv1-dev,
+                    time,
+                    zlib1g-dev,
+                    procps
+Standards-Version: 4.7.0
+Vcs-Browser: https://salsa.debian.org/med-team/ncbi-blastplus
+Vcs-Git: https://salsa.debian.org/med-team/ncbi-blastplus.git
+Homepage: https://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/
+Rules-Requires-Root: no
+
+Package: ncbi-blast+
+Architecture: any
+Multi-Arch: foreign
+Depends: ncbi-data,
+         python3,
+         ${misc:Depends},
+         ${perl:Depends},
+         ${shlibs:Depends}
+Enhances: t-coffee
+Description: next generation suite of BLAST sequence search tools
+ The Basic Local Alignment Search Tool (BLAST) is the most widely
+ used sequence similarity tool. There are versions of BLAST that
+ compare protein queries to protein databases, nucleotide queries
+ to nucleotide databases, as well as versions that translate nucleotide
+ queries or databases in all six frames and compare to protein databases
+ or queries.
+ PSI-BLAST produces a position-specific-scoring-matrix (PSSM) starting
+ with a protein query, and then uses that PSSM to perform further searches.
+ It is also possible to compare a protein or nucleotide query to a
+ database of PSSM’s.
+ The NCBI supports a BLAST web page at blast.ncbi.nlm.nih.gov as well as
+ a network service.
+
+Package: ncbi-blast+-legacy
+Architecture: all
+Multi-Arch: foreign
+Depends: ncbi-blast+,
+         ${misc:Depends}
+Description: NCBI Blast legacy call script
+ This package adds some fake scripts to call NCBI+ programs
+ with the NCBI blast command line. It makes use of the
+ legacy_blast script in ncbi-blast+ package.
diff --git a/copyright b/copyright
new file mode 100644 (file)
index 0000000..2453aa4
--- /dev/null
+++ b/copyright
@@ -0,0 +1,211 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: ncbi-blast+
+Upstream-Contact: blastsoft@ncbi.nlm.nih.gov
+Files-Excluded: c++/src/build-system/project_tree_builder_gui/bin
+
+Files: c++/*
+Copyright: NCBI
+License: PD
+                                  PUBLIC DOMAIN NOTICE
+                     National Center for Biotechnology Information
+ .
+        This software/database is a "United States Government Work" under the
+        terms of the United States Copyright Act.  It was written as part of
+        the author's official duties as a United States Government employee and
+        thus cannot be copyrighted.  This software/database is freely available
+        to the public for use. The National Library of Medicine and the U.S.
+        Government have not placed any restriction on its use or reproduction.
+ .
+        Although all reasonable efforts have been taken to ensure the accuracy
+        and reliability of the software and data, the NLM and the U.S.
+        Government do not and cannot warrant the performance or results that
+        may be obtained by using this software or data. The NLM and the U.S.
+        Government disclaim all warranties, express or implied, including
+        warranties of performance, merchantability or fitness for any particular
+        purpose.
+ .
+        Please cite the author in any work or product based on this material.
+
+Files: c++/src/connect/mbedtls/*
+Copyright: 2006-2015, ARM Limited, All Rights Reserved
+License: Apache-2.0
+ Licensed under the Apache License, Version 2.0 (the "License"); you may
+ not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+ http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ .
+ On Debian systems, the full text of the Apache License, Version 2.0 can be
+ found in the file `/usr/share/common-licenses/Apache-2.0'.
+
+Files: c++/src/html/ncbi_menu.js
+       c++/src/html/ncbi_menu_dnd.js
+       c++/src/html/ncbi_menu_dyn.js
+Copyright: 1997 Gary Smith
+           1997-1999 Netscape Communications Corp.
+License: Netscape
+ Netscape grants you a royalty free license to use or modify this
+ software provided that this copyright notice appears on all copies.
+ This software is provided "AS IS," without a warranty of any kind.
+
+Files: c++/*/util/compress/zlib/*
+Copyright: 1995-2004 Jean-loup Gailly and Mark Adler
+License: BSD-3-clause
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+ .
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+ .
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+Files: c++/*/util/regexp/*
+Copyright: 1997-2009 University of Cambridge
+           2008-2009 Google Inc
+License: BSD-4-clause
+
+Files: c++/*/util/compress/bzip2/*
+Copyright: 1996-2002 Julian R Seward
+License: BSD-4-clause
+
+License: BSD-4-clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ 2. The origin of this software must not be misrepresented; you must
+   not claim that you wrote the original software.  If you use this
+   software in a product, an acknowledgment in the product
+   documentation would be appreciated but is not required.
+ 3. Altered source versions must be plainly marked as such, and must
+   not be misrepresented as being the original software.
+ 4. The name of the author may not be used to endorse or promote
+   products derived from this software without specific prior written
+   permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Files: c++/src/build-system/config.*s*
+Copyright: 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc
+License: GPL-2
+
+Files: c++/src/build-system/m4/ax_jni_include_dir.m4
+Copyright: 2008 Don Anderson <dda@sleepycat.com>
+License: as_is
+   Copying and distribution of this file, with or without modification, are
+   permitted in any medium without royalty provided the copyright notice
+   and this notice are preserved. This file is offered as-is, without any
+   warranty.
+
+Files: c++/include/util/impl/floating_point_comparison.hpp
+Copyright: 2001-2008 Gennadiy Rozental
+License: Boost
+ Permission is hereby granted, free of charge, to any person or organization
+ obtaining a copy of the software and accompanying documentation covered by
+ this license (the "Software") to use, reproduce, display, distribute,
+ execute, and transmit the Software, and to prepare derivative works of the
+ Software, and to permit third-parties to whom the Software is furnished to
+ do so, all subject to the following:
+ .
+ The copyright notices in the Software and this entire statement, including
+ the above license grant, this restriction and the following disclaimer,
+ must be included in all copies of the Software, in whole or in part, and
+ all derivative works of the Software, unless such copies or derivative
+ works are solely in the form of machine-executable object code generated by
+ a source language processor.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+ SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+ FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+Files: c++/include/dbapi/driver/odbc/unix_odbc/sqlfront.h
+Copyright: 1998-1999  Brian Bruns
+License: GPL-2
+
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ This package 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.  See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
+
+
+Files: c++/include/util/bitset/*
+Copyright: 2002-2003 Anatoliy Kuznetsov
+License: MIT
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+
+Files: debian/*
+Copyright: 2011 Olivier Sallou <olivier.sallou@irisa.fr>
+License: GPL-2+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ This package 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.  See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
diff --git a/dirs b/dirs
new file mode 100644 (file)
index 0000000..2b9d190
--- /dev/null
+++ b/dirs
@@ -0,0 +1,2 @@
+usr/bin
+var/lib/ncbi-blast+/db
diff --git a/docs b/docs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/legacy/legacy.sh b/legacy/legacy.sh
new file mode 100755 (executable)
index 0000000..dba6d0c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Execute legacy blast 
+exec legacy_blast ${0##*/} $@
diff --git a/ncbi-blast+-legacy.dirs b/ncbi-blast+-legacy.dirs
new file mode 100644 (file)
index 0000000..415f082
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin
diff --git a/ncbi-blast+.1 b/ncbi-blast+.1
new file mode 100644 (file)
index 0000000..fe9e0c3
--- /dev/null
@@ -0,0 +1,33 @@
+.TH ncbi-blast+ 1  "April 29, 2011" "version 2.2.25" "USER COMMANDS"
+.SH NAME
+ncbi-blast+ \- NCBI command tools for BLAST+
+.SH ONELINE DOCUMENTATION
+.B BLAST+ documentation is available online at http://www.ncbi.nlm.nih.gov/books/NBK1763/
+.PP
+.SH DESCRIPTION
+The NCBI BLAST+ is a group of tools for basic alignment search. BLAST+
+ is a rewrite of BLAST with new features and performance improvements.
+BLAST+ commands differ from original BLAST. For BLAST users, one should read
+ the BLAST USERS paragraph.
+.PP
+.SH CONFIGURATION
+BLAST+ uses the BLASTDB environment variable to get default db directory.
+It is possible to update the file /etc/ncbi/.ncbirc to add the following:
+.B [BLAST]
+.B BLASTDB=/var/lib/ncbi-blast+/db
+.SH BLAST USERS
+The easiest way to get started using these command line applications is
+ by means of the legacy_blast.pl PERL script which is bundled along with
+ the BLAST+ applications.
+To utilize this script, simply prefix it to the invocation of the C toolkit
+ BLAST command line application and append the --path option pointing to the 
+installation directory of the BLAST+ applications. For example, instead of using
+
+.B blastall -i query -d nr -o blast.out 
+use
+.B legacy_blast.pl blastall -i query -d nr -o blast.out --path /usr/bin
+
+.PP
+.SH AUTHOR
+Olivier Sallou (olivier.sallou (at) irisa.fr) - Man page and packaging
+NCBI - BLAST+
diff --git a/ncbi-blast+.dirs b/ncbi-blast+.dirs
new file mode 100644 (file)
index 0000000..32fdc47
--- /dev/null
@@ -0,0 +1,2 @@
+usr/bin
+usr/lib/ncbi-blast+
diff --git a/ncbi-blast+.examples b/ncbi-blast+.examples
new file mode 100644 (file)
index 0000000..e5da498
--- /dev/null
@@ -0,0 +1 @@
+debian/ncbi-blast+.tests/*
diff --git a/ncbi-blast+.manpages b/ncbi-blast+.manpages
new file mode 100644 (file)
index 0000000..0f65186
--- /dev/null
@@ -0,0 +1 @@
+debian/*.1
diff --git a/ncbi-blast+.tests/test.fa b/ncbi-blast+.tests/test.fa
new file mode 100644 (file)
index 0000000..6db78dd
--- /dev/null
@@ -0,0 +1,10 @@
+>gnl|MYDB|1 this is sequence 1
+GAATTCCCGCTACAGGGGGGGCCTGAGGCACTGCAGAAAGTGGGCCTGAGCCTCGAGGATGACGGTGCTGCAGGAACCCG
+TCCAGGCTGCTATATGGCAAGCACTAAACCACTATGCTTACCGAGATGCGGTTTTCCTCGCAGAACGCCTTTATGCAGAA
+GTACACTCAGAAGAAGCCTTGTTTTTACTGGCAACCTGTTATTACCGCTCAGGAAAGGCATATAAAGCATATAGACTCTT
+GAAAGGACACAGTTGTACTACACCGCAATGCAAATACCTGCTTGCAAAATGTTGTGTTGATCTCAGCAAGCTTGCAGAAG
+GGGAACAAATCTTATCTGGTGGAGTGTTTAATAAGCAGAAAAGCCATGATGATATTGTTACTGAGTTTGGTGATTCAGCT
+TGCTTTACTCTTTCATTGTTGGGACATGTATATTGCAAGACAGATCGGCTTGCCAAAGGATCAGAATGTTACCAAAAGAG
+CCTTAGTTTAAATCCTTTCCTCTGGTCTCCCTTTGAATCATTATGTGAAATAGGTGAAAAGCCAGATCCTGACCAAACAT
+TTAAATTCACATCTTTACAGAACTTTAGCAACTGTCTGCCCAACTCTTGCACAACACAAGTACCTAATCATAGTTTATCT
+CACAGACAGCCTGAGACAGTTCTTACGGAAACACCCCAGGACACAATTGAATTAAACAGATTGAATTTAGAATCTTCCAA
diff --git a/ncbi-blast+.tests/testdatabase.fa b/ncbi-blast+.tests/testdatabase.fa
new file mode 100644 (file)
index 0000000..844ac1d
--- /dev/null
@@ -0,0 +1,29 @@
+>gnl1 
+GAATTCCCGCTACAGGGGGGGCCTGAGGCACTGCAGAAAGTGGGCCTGAGCCTCGAGGATGACGGTGCTGCAGGAACCCG
+TCCAGGCTGCTATATGGCAAGCACTAAACCACTATGCTTACCGAGATGCGGTTTTCCTCGCAGAACGCCTTTATGCAGAA
+GTACACTCAGAAGAAGCCTTGTTTTTACTGGCAACCTGTTATTACCGCTCAGGAAAGGCATATAAAGCATATAGACTCTT
+GAAAGGACACAGTTGTACTACACCGCAATGCAAATACCTGCTTGCAAAATGTTGTGTTGATCTCAGCAAGCTTGCAGAAG
+GGGAACAAATCTTATCTGGTGGAGTGTTTAATAAGCAGAAAAGCCATGATGATATTGTTACTGAGTTTGGTGATTCAGCT
+TGCTTTACTCTTTCATTGTTGGGACATGTATATTGCAAGACAGATCGGCTTGCCAAAGGATCAGAATGTTACCAAAAGAG
+CCTTAGTTTAAATCCTTTCCTCTGGTCTCCCTTTGAATCATTATGTGAAATAGGTGAAAAGCCAGATCCTGACCAAACAT
+TTAAATTCACATCTTTACAGAACTTTAGCAACTGTCTGCCCAACTCTTGCACAACACAAGTACCTAATCATAGTTTATCT
+CACAGACAGCCTGAGACAGTTCTTACGGAAACACCCCAGGACACAATTGAATTAAACAGATTGAATTTAGAATCTTCCAA
+>gnl2
+GAATTCCCGCTACAGGGGGGGCCTGAGGCACTGCAGAAAGTGGGCCTGAGCCTCGAGGATGACGGTGCTGCAGGAACCCG
+TCCAGGCTGCTATATGGCAAGCACTAAACCACTATGCTTACCGAGATGCGGTTTTCCTCGCAGAACGCCTTTATGCAGAA
+GTACACTCAGAAGAAGCCTTGTTTTTACTGGCAACCTGTTATTACCGCTCAGGAAAGGCATATAAAGCATATAGACTCTT
+GAAAGGACACAGTTGTACTACACCGCAATGCAAATACCTGCTTGCAAAATGTTGTGTTGATCTCAGCAAGCTTGCAGAAG
+GGGAACAAATCTTATCTGGTGGAGTGTTTAATAAGCAGAAAAGCCATGATGATATTGTTACTGAGTTTGGTGATTCAGCT
+TGCTTTACTCTTTCATTGTTGGGACATGTATATTGCAAGACAGATCGGCTTGCCAAAGGATCAGAATGTTACCAAAAGAG
+CCTTAGTTTAAATCCTTTCCTCTGGTCTCCCTTTGAATCATTATGTGAAATAGGTGAAAAGCCAGATCCTGACCAAACAT
+TTAAATTCACATCTTTACAGAACTTTAGCAACTGTCTGCCCAACTCTTGCACAACACAAGTACCTAATCATAGTTTATCT
+CACAGACAGCCTGAGACAGTTCTTACGGAAACACCCCAGGACACAATTGAATTAAACAGATTGAATTTAGAATCTTCCAA
+>gnl3
+GAATTCCCGCTACAGGGGGGGCCTGAGGCACTGCAGAAAGTGGGCCTGAGCCTCGAGGATGACGGTGCTGCAGGAACCCG
+TCCAGGCTGCTATATGGCAAGCACTAAACCACTATGCTTACCGAGATGCGGTTTTCCTCGCAGAACGCCTTTATGCAGAA
+GTACACTCAGAAGAAGCCTTGTTTTTACTGGCAACCTGTTATTACCGCTCAGGAAAGGCATATAAAGCATATAGACTCTT
+GAAAGGACACAGTTGTACTACACCGCAATGCAAATACCTGCTTGCAAAATGTTGTGTTGATCTCAGCAAGCTTGCAGAAG
+GGGAACAAATCTTATCTGGTGGAGTGTTTAATAAGCAGAAAAGCCATGATGATATTGTTACTGAGTTTGGTGATTCAGCT
+TGCTTTACTCTTTCATTGTTGGGACATGTATATTGCAAGACAGATCGGCTTGCCAAAGGATCAGAATGTTACCAAAAGAG
+CCTTAGTTTAAATCCTTTCCTCTGGTCTCCCTTTGAATCATTATGTGAAATAGGTGAAAAGCCAGATCCTGACCAAACAT
+TTAAATTCACATCTTTACAGAACTTTAGCAACTGTCTGCCCAACTCTTGCACAACACAAGTACCTAATCATAGTTTATCT
diff --git a/patches/2to3 b/patches/2to3
new file mode 100644 (file)
index 0000000..18f1bd6
--- /dev/null
@@ -0,0 +1,48 @@
+--- a/c++/src/app/winmasker/windowmasker_2.2.22_adapter.py     (original)
++++ b/c++/src/app/winmasker/windowmasker_2.2.22_adapter.py     (refactored)
+@@ -79,7 +79,7 @@
+     while True:
+         if arg_pos >= len( sys.argv ): break
+         arg = sys.argv[arg_pos]
+-        if arg not in old_wm_opt_info.keys(): tmpres.append( arg )
++        if arg not in list(old_wm_opt_info.keys()): tmpres.append( arg )
+         else:
+             if arg == '-convert':
+                 arg_pos += 1
+@@ -159,7 +159,7 @@
+         elif state == 'copy': 
+             result.append( arg )
+             state = 'check'
+-        elif arg in old_wm_opt_info.keys():
++        elif arg in list(old_wm_opt_info.keys()):
+             if arg in excludes[wm_mode]:
+                 if not old_wm_opt_info[arg]: state = 'skip'
+             else:
+@@ -172,13 +172,13 @@
+     global HELP_STR
+     mode = 'exec'
+     if len( sys.argv ) <= 1: 
+-        print HELP_STR
++        print(HELP_STR)
+         return
+     else:
+          if sys.argv[1] == '--print-only': 
+             mode = 'print'
+             if len( sys.argv ) <= 2: 
+-                print HELP_STR
++                print(HELP_STR)
+                 return
+             else: 
+                   wm_name = sys.argv[2]
+@@ -188,9 +188,9 @@
+             start_idx = 1
+     new_args = process( start_idx )
+     result_str = wm_name + ' ' + ' '.join( new_args )
+-    if mode == 'print': print result_str
++    if mode == 'print': print(result_str)
+     else:
+-        print 'running "' + result_str + '"'
++        print('running "' + result_str + '"')
+         os.system( result_str )
+ if __name__ == '__main__':
diff --git a/patches/allow_pcre2 b/patches/allow_pcre2
new file mode 100644 (file)
index 0000000..0472bde
--- /dev/null
@@ -0,0 +1,372 @@
+From d615c51fb9fe6172a84feea47906abd164198fd5 Mon Sep 17 00:00:00 2001
+From: ucko <ucko@ncbi.nlm.nih.gov>
+Date: Thu, 18 Jul 2024 18:33:56 +0000
+Subject: [PATCH] Allow substituting PCRE2 for legacy PCRE by explicit request.
+
+- For now, require opt-in via --with-components="...;PCRE2;..." (CMake),
+  --with-pcre2 (traditional Unix build system), or uncommenting the
+  relevant ThirdParty_PCRE2 setting in project_tree_builder.ini
+  (traditional Windows build system).
+- Likewise, hold off on switching the bundled copy to PCRE2 or checking
+  for any functions or headers that will become of interest.
+- Redundantly (for now) shun external PCRE2 in bin-release configurations.
+- Otherwise favor (allowed!) external installations over the bundled
+  copy, preferring PCRE2 over legacy PCRE when both are found and
+  allowed but (in due course) external legacy PCRE over bundled PCRE2 in
+  the absence of external PCRE2.
+- In the traditional build system, have the widely used PCRE_LIBS macro
+  correspond to whichever PCRE is default (when not falling back on a
+  bundled copy), and add a PCRE_LEGACY_LIBS macro for the sake of
+  anything using legacy PCRE directly (very occasionally seen).
+
+JIRA: CXX-12761,
+
+git-svn-id: https://anonsvn.ncbi.nlm.nih.gov/repos/v1/trunk/c++@102806 78c7ea69-d796-4a43-9a09-de51944f1b03
+
+Irrelevant (and inapplicable) changes to c++/src/build-system/cmake/,
+c++/src/build-system/configure (which will be regenerated anyway), and
+c++/src/build-system/project_tree_builder.ini elided.
+---
+ include/util/xregexp/regexp.hpp               |  13 +-
+ src/build-system/Makefile.mk.in               |   3 +
+ .../cmake/CMake.NCBIComponents.cmake          |   2 +-
+ .../cmake/CMake.NCBIComponentsMSVC.cmake      |  17 +-
+ .../cmake/CMake.NCBIComponentsPackage.cmake   |  10 +-
+ .../cmake/CMake.NCBIComponentsUNIXex.cmake    |  18 +-
+ .../cmake/CMake.NCBIComponentsXCODE.cmake     |   9 +
+ .../cmake/CMakeChecks.compiler.cmake          |   1 +
+ src/build-system/cmake/conanfile.py           |   2 +
+ src/build-system/cmake/config.cmake.h.in      |   3 +
+ src/build-system/config.h.in                  |   3 +
+ src/build-system/configure                    | 181 +++++++++++++++++-
+ src/build-system/configure.ac                 |  34 +++-
+ src/build-system/project_tree_builder.ini     |  21 ++
+ src/util/xregexp/CMakeLists.txt               |   7 +-
+ src/util/xregexp/Makefile.xregexp.lib         |   6 +-
+ src/util/xregexp/regexp.cpp                   |  69 ++++++-
+ 17 files changed, 376 insertions(+), 23 deletions(-)
+
+--- a/c++/include/util/xregexp/regexp.hpp
++++ b/c++/include/util/xregexp/regexp.hpp
+@@ -70,7 +70,11 @@ class NCBI_XREGEXP_EXPORT CRegexp
+ {
+ public:
+     /// Element type for GetResults().
++#ifdef HAVE_LIBPCRE2
++    typedef size_t TOffset;
++#else
+     typedef int TOffset;
++#endif
+     /// Type definitions used for code clarity.
+     typedef unsigned int TCompile;     ///< Compilation options.
+@@ -287,13 +291,20 @@ private:
+     void x_Match(CTempString str, size_t offset, TMatch flags);
+     void*  m_PReg;   /// Pointer to compiled PCRE pattern.
+-    void*  m_Extra;  /// Pointer to extra structure used for pattern study.
++#ifdef HAVE_LIBPCRE2
++    void*    m_MatchData;
++    TOffset* m_Results;
++    int      m_JITStatus;
++#else
++    void*  m_Extra;  /// Pointer to extra structure used for pattern study.
+     /// Array of locations of patterns/subpatterns resulting from
+     /// the last call to GetMatch(). Also contains 1/3 extra space used
+     /// internally by the PCRE C library.
+     int m_Results[(kRegexpMaxSubPatterns +1) * 3];
++#endif
++
+     /// The total number of pattern + subpatterns resulting from
+     /// the last call to GetMatch.
+--- a/c++/src/build-system/Makefile.mk.in
++++ b/c++/src/build-system/Makefile.mk.in
+@@ -390,6 +390,9 @@ CMPRS_LIB     = $(Z_LIB) $(BZ2_LIB) $(ZS
+ # wrapper and goes by the name "regexp".
+ PCRE_INCLUDE   = @PCRE_INCLUDE@
+ PCRE_LIBS      = @PCRE_LIBS@
++PCRE_LEGACY_LIBS = @PCRE_LEGACY_LIBS@
++PCRE2_INCLUDE  = @PCRE2_INCLUDE@
++PCRE2_LIBS     = @PCRE2_LIBS@
+ PCREPOSIX_LIBS = @PCREPOSIX_LIBS@
+ PCRE_LIB       = @PCRE_LIB@
+--- a/c++/src/build-system/config.h.in
++++ b/c++/src/build-system/config.h.in
+@@ -486,6 +486,9 @@
+ /* Define to 1 if libpcre is available. */
+ #undef HAVE_LIBPCRE
++/* Define to 1 if libpcre2 is available. */
++#undef HAVE_LIBPCRE2
++
+ /* Define to 1 if libpng is available. */
+ #undef HAVE_LIBPNG
+--- a/c++/src/build-system/configure.ac
++++ b/c++/src/build-system/configure.ac
+@@ -90,7 +90,7 @@ case "$with_3psw" in
+          with_yaml_cpp=no
+       fi
+       m4_foreach(X, [sss, sssutils, sssdb, vdb, ngs, ncbicrypt, libunwind,
+-                     z, bz2, lzo, zstd, pcre, mbedtls,
++                     z, bz2, lzo, zstd, pcre, pcre2, mbedtls,
+                      gmp, gcrypt, nettle, gnutls, openssl, krb5, boost, lmdb,
+                      sybase, ftds, mysql, opengl, mesa, glut, glew, gl2ps,
+                      wxwidgets, freetype, ftgl, fastcgi, fastcgipp,
+@@ -324,6 +324,10 @@ AC_ARG_WITH(pcre,
+    [ --with-pcre=DIR         use PCRE installation in DIR])
+ AC_ARG_WITH(pcre,
+    [ --without-pcre          use internal copy of PCRE])
++AC_ARG_WITH(pcre2,
++   [ --with-pcre2=DIR        use PCRE2 installation in DIR])
++AC_ARG_WITH(pcre,
++   [ --without-pcre2         do not use PCRE2])
+ AC_ARG_WITH(mbedtls,
+    [ --with-mbedtls(=DIR)    use external mbedTLS installation (in DIR)])
+ AC_ARG_WITH(gmp,
+@@ -728,7 +732,7 @@ ncbi-c wxwidgets wxwidgets-ucs fastcgi f
+ sss sssdb sssutils included-sss \
+ geo included-geo vdb downloaded-vdb static-vdb ngs ncbicrypt libunwind libdw \
+ backward-cpp backward-cpp-sig \
+-z bz2 lzo zstd pcre mbedtls \
++z bz2 lzo zstd pcre pcre2 mbedtls \
+ gmp gcrypt nettle gnutls static-gnutls openssl krb5 \
+ sybase sybase-local sybase-new ftds mysql \
+ orbacus freetype ftgl opengl mesa glut glew glew-mx gl2ps \
+@@ -798,7 +802,7 @@ for x_arg in "$@" ; do
+       | --with-ncbicrypt=* \
+       | --with-libunwind=* | --with-libdw=* | --with-backward-cpp=* \
+       | --with-z=* | --with-bz2=* | --with-lzo=* | --with-zstd=* \
+-      | --with-pcre=* | --with-mbedtls=* \
++      | --with-pcre=* | --with-pcre2=* | --with-mbedtls=* \
+       | --with-gmp=* | --with-gcrypt=* | --with-nettle=* \
+       | --with-gnutls=* | --with-openssl=* | --with-krb5=* \
+       | --with-sybase-local=* | --with-ftds=*/* | --with-mysql=* \
+@@ -892,6 +896,7 @@ if test "$with_bin_release" = "yes" ; th
+    : ${with_libdw=no}
+    : ${with_ncbicrypt=no}
+    : ${with_pcre=no} # Too much variation across distributions.
++   : ${with_pcre2=no}
+    : ${with_sse42=no}
+    AC_DEFINE(NCBI_BIN_RELEASE, 1,
+              [Define to 1 when building binaries for public release.])
+@@ -4832,7 +4837,18 @@ fi
+ NCBI_CHECK_THIRD_PARTY_LIB(pcre,
+  [AC_LANG_PROGRAM([@%:@include <pcre.h>],
+    [[const char*s[]={"x"}; pcre* p; pcre_extra* x = pcre_study(p, 1, s);]])])
+-if test -z "$PCRE_LIBS"; then
++
++: ${with_pcre2=no}
++NCBI_CHECK_THIRD_PARTY_LIB_EX(pcre2, PCRE2, pcre2-8,
++ [AC_LANG_PROGRAM([@%:@define PCRE2_CODE_UNIT_WIDTH 8
++                   @%:@include <pcre2.h>],
++   [[pcre2_config(123, NULL);]])])
++PCRE_LEGACY_LIBS=$PCRE_LIBS
++if test "x$with_pcre2" != xno; then
++   PCRE_LIBS=$PCRE2_LIBS
++fi
++
++if test -z "$PCRE_LIBS" -a -z "$PCRE2_LIBS"; then
+    pcrelocal=util/regexp
+    AC_MSG_NOTICE([using local PCRE copy in $pcrelocal])
+    PCRE_PATH="<$pcrelocal>"
+@@ -4841,8 +4857,15 @@ if test -z "$PCRE_LIBS"; then
+    # PCREPOSIX_LIBS="-lregexp"
+    PCRE_LIB="regexp"
+    AC_DEFINE(USE_LOCAL_PCRE, 1, [Define to 1 if using a local copy of PCRE.])
+-   NCBI_PACKAGE(PCRE)
++   if test -f $srcdir/include/$pcrelocal/pcre2.h; then
++      AC_DEFINE(HAVE_LIBPCRE2, 1, [Define to 1 if libpcre2 is available.])
++      NCBI_PACKAGE(PCRE2)
++   else
++      NCBI_PACKAGE(PCRE)
++   fi
+    NCBI_PACKAGE(LocalPCRE)
++elif test -n "$PCRE2_LIBS"; then
++   PCREPOSIX_LIBS=`echo "$PCRE2_LIBS" | sed -e 's/-lpcre2-8/-lpcre2posix &/'`
+ else
+    PCREPOSIX_LIBS=`echo "$PCRE_LIBS" | sed -e 's/-lpcre/-lpcreposix -lpcre/'`
+ fi
+@@ -9871,6 +9894,7 @@ AC_SUBST(BZ2_LIB)
+ AC_SUBST(ZSTD_STATIC_LIBS)
+ AC_SUBST(PCREPOSIX_LIBS)
+ AC_SUBST(PCRE_LIB)
++AC_SUBST(PCRE_LEGACY_LIBS)
+ AC_SUBST(OPENSSL_STATIC_LIBS)
+ AC_SUBST(CURL_STATIC_LIBS)
+ AC_SUBST(SYBASE_PATH)
+--- a/c++/src/util/xregexp/CMakeLists.txt
++++ b/c++/src/util/xregexp/CMakeLists.txt
+@@ -1,6 +1,11 @@
+ # $Id: CMakeLists.txt 621427 2020-12-11 14:26:55Z ivanov $
+ NCBI_project_tags(core)
+-NCBI_requires(PCRE)
++# NCBI_optional_components(PCRE PCRE2)
++if(NCBI_COMPONENT_PCRE2_FOUND)
++  NCBI_REQUIRES(PCRE2)
++else()
++  NCBI_REQUIRES(PCRE)
++endif()
+ NCBI_add_library(xregexp xregexp_template_tester)
+--- a/c++/src/util/xregexp/Makefile.xregexp.lib
++++ b/c++/src/util/xregexp/Makefile.xregexp.lib
+@@ -3,12 +3,12 @@
+ SRC = regexp arg_regexp mask_regexp convert_dates_iso8601
+ LIB = xregexp
+-CPPFLAGS = $(ORIG_CPPFLAGS) $(PCRE_INCLUDE)
++CPPFLAGS = $(ORIG_CPPFLAGS) $(PCRE_INCLUDE) $(PCRE2_INCLUDE)
+ DLL_LIB = $(PCRE_LIB) xutil
+-LIBS    = $(PCRE_LIBS)
++LIBS    = $(PCRE_LIBS) $(PCRE2_LIBS)
+ USES_LIBRARIES =  \
+-    $(PCRE_LIB) $(PCRE_LIBS) xncbi
++    $(PCRE_LIB) $(PCRE_LIBS) $(PCRE2_LIBS) xncbi
+ WATCHERS = ivanov
+--- a/c++/src/util/xregexp/regexp.cpp
++++ b/c++/src/util/xregexp/regexp.cpp
+@@ -34,8 +34,14 @@
+ #include <corelib/ncbi_limits.h>
+ #include <corelib/ncbistl.hpp>
+ #include <util/xregexp/regexp.hpp>
+-#include <pcre.h>
+-#define PCRE_FLAG(x) PCRE_##x
++#ifdef HAVE_LIBPCRE2
++#  define PCRE2_CODE_UNIT_WIDTH 8
++#  include <pcre2.h>
++#  define PCRE_FLAG(x) PCRE2_##x
++#else
++#  include <pcre.h>
++#  define PCRE_FLAG(x) PCRE_##x
++#endif
+ #include <memory>
+ #include <stdlib.h>
+@@ -103,7 +109,15 @@ static int s_GetRealMatchFlags(CRegexp::
+ CRegexp::CRegexp(CTempStringEx pattern, TCompile flags)
+-    : m_PReg(NULL), m_Extra(NULL), m_NumFound(0)
++    : m_PReg(NULL),
++#ifdef HAVE_LIBPCRE2
++      m_MatchData(NULL),
++      m_Results(NULL),
++      m_JITStatus(PCRE2_ERROR_UNSET),
++#else
++      m_Extra(NULL),
++#endif
++      m_NumFound(0)
+ {
+     Set(pattern, flags);
+ }
+@@ -111,33 +125,63 @@ CRegexp::CRegexp(CTempStringEx pattern,
+ CRegexp::~CRegexp()
+ {
++#ifdef HAVE_LIBPCRE2
++    pcre2_code_free((pcre2_code*)m_PReg);
++    pcre2_match_data_free((pcre2_match_data*)m_MatchData);
++#else
+     (*pcre_free)(m_PReg);
+     (*pcre_free)(m_Extra);
++#endif
+ }
+ void CRegexp::Set(CTempStringEx pattern, TCompile flags)
+ {
+     if ( m_PReg ) {
++#ifdef HAVE_LIBPCRE2
++        pcre2_code_free((pcre2_code*)m_PReg);
++#else
+         (*pcre_free)(m_PReg);
++#endif
+     }
++#ifdef HAVE_LIBPCRE2
++    int err_num;
++#else
+     const char *err;
++#endif
+     TOffset err_offset;
+     int x_flags = s_GetRealCompileFlags(flags);
++#ifdef HAVE_LIBPCRE2
++    m_PReg = pcre2_compile((PCRE2_SPTR) pattern.data(), pattern.size(),
++                           x_flags, &err_num, &err_offset, NULL);
++#else
+     if ( pattern.HasZeroAtEnd() ) {
+         m_PReg = pcre_compile(pattern.data(), x_flags, &err, &err_offset, NULL);
+     } else {
+         m_PReg = pcre_compile(string(pattern).c_str(), x_flags, &err, &err_offset, NULL);
+     }
++#endif
+     if ( !m_PReg ) {
++#ifdef HAVE_LIBPCRE2
++        char err[120];
++        pcre2_get_error_message(err_num, (PCRE2_UCHAR*) err, ArraySize(err));
++#endif
+         NCBI_THROW(CRegexpException, eCompile, "Compilation of the pattern '" +
+                    string(pattern) + "' failed: " + err);
+     }
++#ifdef HAVE_LIBPCRE2
++    pcre2_match_data_free((pcre2_match_data*)m_MatchData);
++    m_MatchData = pcre2_match_data_create_from_pattern((pcre2_code*)m_PReg,
++                                                       NULL);
++    // Too heavyweight to use by default; a flag may be in order.
++    // m_JITStatus = pcre2_jit_compile((pcre2_code*)m_PReg, PCRE2_JIT_COMPLETE);
++#else
+     if ( m_Extra ) {
+         (*pcre_free)(m_Extra);
+     }
+     m_Extra = pcre_study((pcre*)m_PReg, 0, &err);
++#endif
+ }
+@@ -158,8 +202,12 @@ CTempString CRegexp::GetSub(CTempString
+     if ( (int)idx >= m_NumFound ) {
+         return CTempString();
+     }
++#ifdef HAVE_LIBPCRE2
++    static const PCRE2_SIZE kNotFound = PCRE2_UNSET;
++#else
+     static const int kNotFound = -1;
+-    const int * offsets = m_Results;
++#endif
++    const auto * offsets = m_Results;
+     auto start = offsets[2 * idx];
+     auto end   = offsets[2 * idx + 1];
+     if (start == kNotFound  ||  end == kNotFound) {
+@@ -172,10 +220,23 @@ CTempString CRegexp::GetSub(CTempString
+ void CRegexp::x_Match(CTempString str, size_t offset, TMatch flags)
+ {
+     int x_flags = s_GetRealMatchFlags(flags);
++#ifdef HAVE_LIBPCRE2
++    auto f = (m_JITStatus == 0) ? &pcre2_jit_match : &pcre2_match;
++    auto *match_data = (pcre2_match_data*) m_MatchData;
++    int rc = (*f)((pcre2_code*) m_PReg, (PCRE2_UCHAR*)str.data(), str.length(),
++                  offset, x_flags, match_data, NULL);
++    m_Results = pcre2_get_ovector_pointer(match_data);
++    if (rc >= 0) {
++        m_NumFound = pcre2_get_ovector_count(match_data);
++    } else {
++        m_NumFound = -1;
++    }
++#else
+     m_NumFound = pcre_exec((pcre*)m_PReg, (pcre_extra*)m_Extra, str.data(),
+                            (int)str.length(), (int)offset,
+                            x_flags, m_Results,
+                            (int)(kRegexpMaxSubPatterns +1) * 3);
++#endif
+ }
diff --git a/patches/big_endian_workaround b/patches/big_endian_workaround
new file mode 100644 (file)
index 0000000..452d405
--- /dev/null
@@ -0,0 +1,34 @@
+--- a/c++/src/app/blastdb/makeblastdb.cpp
++++ b/c++/src/app/blastdb/makeblastdb.cpp
+@@ -293,7 +293,13 @@ void CMakeBlastDBApp::Init()
+     arg_desc->AddDefaultKey("blastdb_version", "version",
+                              "Version of BLAST database to be created",
+                              CArgDescriptions::eInteger,
+-                             NStr::NumericToString(static_cast<int>(eBDB_Version5)));
++                             NStr::NumericToString(static_cast<int>
++#ifdef WORDS_BIGENDIAN
++                                                 (eBDB_Version4)
++#else
++                                                 (eBDB_Version5)
++#endif
++                                                 ));
+     arg_desc->SetConstraint("blastdb_version",
+                             new CArgAllow_Integers(eBDB_Version4, eBDB_Version5));
+     arg_desc->AddDefaultKey("max_file_sz", "number_of_bytes",
+--- a/c++/src/app/blastdb/makeprofiledb.cpp
++++ b/c++/src/app/blastdb/makeprofiledb.cpp
+@@ -420,7 +420,13 @@ void CMakeProfileDBApp::x_SetupArgDescri
+     arg_desc->AddDefaultKey("blastdb_version", "version",
+                              "Version of BLAST database to be created",
+                              CArgDescriptions::eInteger,
+-                             NStr::NumericToString(static_cast<int>(eBDB_Version5)));
++                             NStr::NumericToString(static_cast<int>
++#ifdef WORDS_BIGENDIAN
++                                                 (eBDB_Version4)
++#else
++                                                 (eBDB_Version5)
++#endif
++                                                 ));
+     arg_desc->SetConstraint("blastdb_version",
+                             new CArgAllow_Integers(eBDB_Version4, eBDB_Version5));
diff --git a/patches/enable_clean_after_failed_compile b/patches/enable_clean_after_failed_compile
new file mode 100644 (file)
index 0000000..96b9b26
--- /dev/null
@@ -0,0 +1,16 @@
+Subject: clean after failure
+Description: Enable clean
+Author: Tim Booth
+Last-Updated: 2013-06-01
+Forwarded: no
+--- a/c++/src/build-system/new_module.sh.in
++++ b/c++/src/build-system/new_module.sh.in
+@@ -203,7 +203,7 @@ if test -z "$datatool"; then # keep look
+         if test -n "$DYLD_LIBRARY_PATH"; then
+             wrapper="DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH"
+         fi
+-    else
++    elif [ "$1" != "purge_sources" ] ; then
+         echo "Unable to find datatool." >&2
+         exit 2
+     fi
diff --git a/patches/fix_configure b/patches/fix_configure
new file mode 100644 (file)
index 0000000..c360ef0
--- /dev/null
@@ -0,0 +1,14 @@
+Subject: fix path for debian build
+Description: Debian build is not done in configure directory,
+ need to update way to get relative configure.orig script
+Author: Olivier Sallou <osallou@debian.org>
+Forwarded: no
+Last-Updated: 2014-06-06
+--- a/c++/configure.orig
++++ b/c++/configure.orig
+@@ -1,3 +1,4 @@
+ #!/bin/sh
+-srcdir=`dirname $0`
++srcdir=$(readlink -f $0)
++srcdir=`dirname $srcdir`
+ exec $srcdir/src/build-system/configure --srcdir=$srcdir ${1+"$@"}
diff --git a/patches/fix_lib_deps b/patches/fix_lib_deps
new file mode 100644 (file)
index 0000000..bcdf0fa
--- /dev/null
@@ -0,0 +1,797 @@
+Subject: ensure that all libraries link against all direct dependencies
+
+ * src/**/Makefile.*.lib: set DLL_(D)LIB correctly.  Break the dependency
+   loop between libxblast and libxalgoblastdbindex by having the former
+   provide only the C++ BLAST API, leaving the C core only in libblast.
+ * src/build-system/library_relations.txt: Change xblast's
+   relationship to blast from includes to needs, accordingly.
+ * src/algo/blast/Makefile.blast_macros.mk: Add blast to BLAST_LIBS.
+ * src/algo/blast/dbindex*/*/Makefile.*.app: Link against libxconnect
+   rather than libconnect for consistency with libblast, which uses the
+   former to keep the aforementioned cycle-breaking from causing
+   inconsistency elsewhere.
+
+Debian-Bug: 633567.
+Author: Aaron M. Ucko <ucko@debian.org>
+Last-Update: 2016-12-05
+--- a/c++/src/algo/blast/blastinput/Makefile.blastinput.lib
++++ b/c++/src/algo/blast/blastinput/Makefile.blastinput.lib
+@@ -27,7 +27,8 @@ SRC  = $(SRC_CXX)
+ LIB = blastinput
+-DLL_LIB = xblast align_format ncbi_xloader_blastdb_rmt ncbi_xloader_blastdb seqdb $(OBJREAD_LIBS) $(OBJMGR_LIBS) xutil sqlitewrapp
++DLL_LIB = xblast align_format ncbi_xloader_blastdb_rmt ncbi_xloader_blastdb \
++          seqdb $(OBJREAD_LIBS) $(OBJMGR_LIBS) sqlitewrapp scoremat
+ # should be redundant, given the above :-/
+ ASN_DEP = seqset xnetblast
+--- a/c++/src/algo/blast/core/Makefile.blast.lib
++++ b/c++/src/algo/blast/core/Makefile.blast.lib
+@@ -23,6 +23,7 @@ CFLAGS  = $(FAST_CFLAGS)
+ LDFLAGS = $(FAST_LDFLAGS)
+ WATCHERS = madden camacho fongah2
++DLL_LIB = composition_adjustment xconnect tables
+ USES_LIBRARIES =  \
+     composition_adjustment connect tables
+--- a/c++/src/algo/blast/dbindex/Makefile.xalgoblastdbindex.lib
++++ b/c++/src/algo/blast/dbindex/Makefile.xalgoblastdbindex.lib
+@@ -11,6 +11,8 @@ SRC = sequence_istream_fasta \
+ CXXFLAGS = -DDO_INLINE $(FAST_CXXFLAGS)
+ LDFLAGS  = $(FAST_LDFLAGS)
++DLL_LIB = blast seqdb xobjread xobjutil xobjmgr seqset seq xser xutil xncbi
++
+ ASN_DEP = seqset submit
+ WATCHERS = morgulis
+--- a/c++/src/algo/blast/dbindex/makeindex/Makefile.makeindex.app
++++ b/c++/src/algo/blast/dbindex/makeindex/Makefile.makeindex.app
+@@ -2,7 +2,7 @@ APP = makembindex
+ SRC = main mkindex_app
+ LIB_ = xalgoblastdbindex blast composition_adjustment seqdb blastdb \
+-      $(OBJREAD_LIBS) xobjutil tables connect $(SOBJMGR_LIBS)
++      $(OBJREAD_LIBS) xobjutil tables xconnect $(SOBJMGR_LIBS)
+ LIB = $(LIB_:%=%$(STATIC)) $(LMDB_LIB)
+ CXXFLAGS = $(FAST_CXXFLAGS)
+--- a/c++/src/algo/dustmask/Makefile.xalgodustmask.lib
++++ b/c++/src/algo/dustmask/Makefile.xalgodustmask.lib
+@@ -8,6 +8,8 @@ LIB = xalgodustmask
+ SRC = symdust
++DLL_LIB = xobjmgr seq xncbi
++
+ CXXFLAGS = $(FAST_CXXFLAGS)
+ LDFLAGS  = $(FAST_LDFLAGS)
+--- a/c++/src/algo/segmask/Makefile.xalgosegmask.lib
++++ b/c++/src/algo/segmask/Makefile.xalgosegmask.lib
+@@ -8,6 +8,8 @@ LIB = xalgosegmask
+ SRC = segmask
++DLL_LIB = blast xobjmgr xncbi
++
+ CXXFLAGS = $(FAST_CXXFLAGS)
+ LDFLAGS  = $(FAST_LDFLAGS)
+--- a/c++/src/algo/winmask/Makefile.xalgowinmask.lib
++++ b/c++/src/algo/winmask/Makefile.xalgowinmask.lib
+@@ -21,7 +21,7 @@ SRC = seq_masker seq_masker_score_mean s
+ CXXFLAGS = $(FAST_CXXFLAGS)
+ LDFLAGS  = $(FAST_LDFLAGS)
+-
++DLL_LIB = seqmasks_io xobjread xobjutil xobjmgr seq xncbi
+ USES_LIBRARIES =  \
+     seqmasks_io
+--- a/c++/src/build-system/library_relations.txt
++++ b/c++/src/build-system/library_relations.txt
+@@ -1369,7 +1369,7 @@ xassembly_svc needs gc_asn_access
+ xbiosample_util needs $(OBJEDIT_LIBS)
+ xbiosample_util needs xmlwrapp
+ xbiosample_util needs xobjutil
+-xblast includes blast
++xblast needs blast
+ xblast needs utrtprof
+ xblast needs xalgoblastdbindex
+ xblast needs xalgodustmask
+--- a/c++/src/cgi/Makefile.cgi.lib
++++ b/c++/src/cgi/Makefile.cgi.lib
+@@ -9,6 +9,8 @@ SRC = ncbicgi cgiapp cgictx ncbicgir ncb
+       user_agent
+ LIB = xcgi
++DLL_LIB = xutil xncbi
++
+ CPPFLAGS = $(ORIG_CPPFLAGS) $(FASTCGI_INCLUDE)
+ WATCHERS = vakatov
+--- a/c++/src/corelib/Makefile.test_boost.lib
++++ b/c++/src/corelib/Makefile.test_boost.lib
+@@ -3,6 +3,8 @@
+ SRC = test_boost teamcity_messages
+ LIB = test_boost
++DLL_LIB = xncbi
++
+ CPPFLAGS = $(ORIG_CPPFLAGS) $(BOOST_INCLUDE)
+ REQUIRES = Boost.Test.Included
+--- a/c++/src/corelib/Makefile.test_mt.lib
++++ b/c++/src/corelib/Makefile.test_mt.lib
+@@ -3,6 +3,8 @@
+ SRC = test_mt
+ LIB    = test_mt
++DLL_LIB = xncbi
++
+ # REQUIRES = MT
+ USE_PCH = no
+--- a/c++/src/html/Makefile.html.lib
++++ b/c++/src/html/Makefile.html.lib
+@@ -7,6 +7,8 @@ SRC = node html htmlhelper page pager se
+       commentdiag indentstream html_exception writer_htmlenc
+ LIB = xhtml
++DLL_LIB = xncbi
++
+ WATCHERS = ivanov
+--- a/c++/src/objects/blast/Makefile.blast.lib
++++ b/c++/src/objects/blast/Makefile.blast.lib
+@@ -3,6 +3,8 @@ SRC = blast__ blast___ names
+ DLL_LIB = seqset scoremat
++DLL_LIB = scoremat seqset seq xser xncbi
++
+ WATCHERS = camacho
+--- a/c++/src/objects/blastdb/Makefile.blastdb.lib
++++ b/c++/src/objects/blastdb/Makefile.blastdb.lib
+@@ -5,6 +5,8 @@ SRC = blastdb__ blastdb___
+ DLL_LIB = xser
++DLL_LIB = seq xser xncbi
++
+ WATCHERS = camacho
+--- a/c++/src/objects/blastxml/Makefile.blastxml.lib
++++ b/c++/src/objects/blastxml/Makefile.blastxml.lib
+@@ -1,6 +1,8 @@
+ LIB = blastxml
+ SRC = blastxml__ blastxml___
++DLL_LIB = xser xncbi
++
+ USES_LIBRARIES =  \
+     xser
+--- a/c++/src/objects/id1/Makefile.id1.lib
++++ b/c++/src/objects/id1/Makefile.id1.lib
+@@ -5,6 +5,8 @@ SRC = id1__ id1___
+ DLL_LIB = seqset
++DLL_LIB = seqset seq xser xncbi
++
+ WATCHERS = vasilche
+--- a/c++/src/objects/id2/Makefile.id2.lib
++++ b/c++/src/objects/id2/Makefile.id2.lib
+@@ -1,6 +1,8 @@
+ LIB = id2
+ SRC = id2__ id2___
++DLL_LIB = seqsplit seq xser xncbi
++
+ WATCHERS = vasilche
+ USES_LIBRARIES =  \
+--- a/c++/src/objects/seqcode/Makefile.seqcode.lib
++++ b/c++/src/objects/seqcode/Makefile.seqcode.lib
+@@ -1,6 +1,8 @@
+ LIB = seqcode
+ SRC = seqcode__ seqcode___
++DLL_LIB = xser xncbi
++
+ USES_LIBRARIES =  \
+     xser
+--- a/c++/src/objects/seqedit/Makefile.seqedit.lib
++++ b/c++/src/objects/seqedit/Makefile.seqedit.lib
+@@ -1,6 +1,7 @@
+ LIB = seqedit
+ SRC = seqedit__ seqedit___
+- 
++
++DLL_LIB = seqset seq general xser xncbi
+ USES_LIBRARIES =  \
+--- a/c++/src/objects/seqsplit/Makefile.seqsplit.lib
++++ b/c++/src/objects/seqsplit/Makefile.seqsplit.lib
+@@ -1,6 +1,8 @@
+ LIB = seqsplit
+ SRC = seqsplit__ seqsplit___
++DLL_LIB = seqset seq xser xncbi
++
+ WATCHERS = vasilche
+--- a/c++/src/objects/submit/Makefile.submit.lib
++++ b/c++/src/objects/submit/Makefile.submit.lib
+@@ -1,6 +1,8 @@
+ LIB = submit
+ SRC = submit__ submit___
++DLL_LIB = seqset seq biblio general xser xncbi
++
+ USES_LIBRARIES =  \
+     seqset
+--- a/c++/src/objmgr/split/Makefile.id2_split.lib
++++ b/c++/src/objmgr/split/Makefile.id2_split.lib
+@@ -17,7 +17,7 @@ LIB = id2_split
+ CPPFLAGS = $(ORIG_CPPFLAGS) $(CMPRS_INCLUDE)
+-DLL_LIB = $(SOBJMGR_LIBS)
++DLL_LIB = xobjmgr seqsplit seqset seq general xser xcompress xncbi
+ WATCHERS = vasilche
+--- a/c++/src/objmgr/util/Makefile.util.lib
++++ b/c++/src/objmgr/util/Makefile.util.lib
+@@ -14,6 +14,8 @@ LIB = xobjutil
+ DLL_LIB = submit $(SOBJMGR_LIBS)
++DLL_LIB = xobjmgr seqset seq pub biblio general xser sequtil xutil xncbi
++
+ WATCHERS = ucko vasilche
+--- a/c++/src/objtools/align_format/Makefile.align_format.lib
++++ b/c++/src/objtools/align_format/Makefile.align_format.lib
+@@ -15,6 +15,10 @@ CPPFLAGS = -DNCBI_MODULE=BLASTFORMAT $(O
+ LIBS = $(BLAST_THIRD_PARTY_LIBS) $(ORIG_LIBS)
++DLL_LIB = xalnmgr ncbi_xloader_genbank seqdb blast_services xobjread xobjutil \
++          xobjmgr xnetblast blastdb gene_info taxon1 seqset seq general xser \
++          xcgi xhtml tables xncbi
++
+ ###  EXAMPLES OF OTHER SETTINGS THAT MIGHT BE OF INTEREST
+ # CFLAGS   = $(FAST_CFLAGS)
+ # CXXFLAGS = $(FAST_CXXFLAGS)
+--- a/c++/src/objtools/alnmgr/Makefile.alnmgr.lib
++++ b/c++/src/objtools/alnmgr/Makefile.alnmgr.lib
+@@ -14,6 +14,7 @@ DLL_LIB = xobjutil tables
+ WATCHERS = grichenk
++DLL_LIB = xobjutil xobjmgr seqset seq xser tables xncbi
+ USES_LIBRARIES =  \
+     tables xobjutil
+--- a/c++/src/objtools/blast/blastdb_format/Makefile.blastdb_format.lib
++++ b/c++/src/objtools/blast/blastdb_format/Makefile.blastdb_format.lib
+@@ -11,6 +11,7 @@ SRC = seq_writer blastdb_dataextract bla
+ CPPFLAGS = -DNCBI_MODULE=BLASTDB $(ORIG_CPPFLAGS)
++DLL_LIB = seqdb xobjutil xobjmgr seq xser sequtil xutil xncbi
+ ###  EXAMPLES OF OTHER SETTINGS THAT MIGHT BE OF INTEREST
+ # CFLAGS   = $(FAST_CFLAGS)
+--- a/c++/src/objtools/blast/seqdb_reader/Makefile.seqdb.lib
++++ b/c++/src/objtools/blast/seqdb_reader/Makefile.seqdb.lib
+@@ -27,9 +27,10 @@ seqidlist_reader \
+ tax4blastsqlite
+ LIB = seqdb
+-DLL_LIB = blastdb $(SOBJMGR_LIBS) $(LMDB_LIB) sqlitewrapp
+ LIBS = $(BLAST_THIRD_PARTY_LIBS)
++DLL_LIB = blastdb $(SOBJMGR_LIBS) $(LMDB_LIB) sqlitewrapp
++
+ CFLAGS   = $(FAST_CFLAGS)
+ CPPFLAGS = -DNCBI_MODULE=BLASTDB $(SQLITE3_INCLUDE) $(ORIG_CPPFLAGS) $(BLAST_THIRD_PARTY_INCLUDE) 
+ CXXFLAGS = $(FAST_CXXFLAGS)
+--- a/c++/src/objtools/blast/seqdb_writer/Makefile.writedb.lib
++++ b/c++/src/objtools/blast/seqdb_writer/Makefile.writedb.lib
+@@ -11,6 +11,9 @@ DLL_LIB = blastdb $(SOBJMGR_LIBS)
+ LIB = writedb
++DLL_LIB = seqdb xobjread xobjmgr blastdb seqset seq general \
++          xser sequtil xutil xncbi
++
+ CFLAGS   = $(FAST_CFLAGS)
+ CPPFLAGS = -DNCBI_MODULE=BLASTDB $(ORIG_CPPFLAGS)  $(BLAST_THIRD_PARTY_INCLUDE)
+ CXXFLAGS = $(FAST_CXXFLAGS)
+--- a/c++/src/objtools/blast/services/Makefile.blast_services.lib
++++ b/c++/src/objtools/blast/services/Makefile.blast_services.lib
+@@ -10,6 +10,8 @@ LIB = blast_services
+ DLL_LIB = xnetblastcli xnetblast
++DLL_LIB = xnetblastcli xnetblast xser xconnect xutil xncbi
++
+ CFLAGS   = $(FAST_CFLAGS)
+ # -DNCBI_MODULE=NETBLAST moved to blast_services.*pp to avoid misnamed modules in DLL configurations
+ CPPFLAGS = $(ORIG_CPPFLAGS)
+--- a/c++/src/objtools/data_loaders/blastdb/Makefile.ncbi_xloader_blastdb.lib
++++ b/c++/src/objtools/data_loaders/blastdb/Makefile.ncbi_xloader_blastdb.lib
+@@ -3,7 +3,7 @@
+ LIB = ncbi_xloader_blastdb
+ SRC = bdbloader cached_sequence local_blastdb_adapter
+-DLL_LIB = seqdb
++DLL_LIB = seqdb xobjmgr seqset seq xncbi
+ CPPFLAGS = -DNCBI_MODULE=BLASTDB $(ORIG_CPPFLAGS)
+--- a/c++/src/objtools/data_loaders/blastdb/Makefile.ncbi_xloader_blastdb_rmt.lib
++++ b/c++/src/objtools/data_loaders/blastdb/Makefile.ncbi_xloader_blastdb_rmt.lib
+@@ -7,6 +7,8 @@ DLL_LIB = blast_services
+ CPPFLAGS = -DNCBI_MODULE=BLASTDB $(ORIG_CPPFLAGS)
++DLL_LIB = ncbi_xloader_blastdb blast_services xobjmgr seq xncbi
++
+ ASN_DEP = blastdb xnetblast
+ WATCHERS = camacho
+--- a/c++/src/objtools/data_loaders/genbank/Makefile.ncbi_xloader_genbank.lib
++++ b/c++/src/objtools/data_loaders/genbank/Makefile.ncbi_xloader_genbank.lib
+@@ -12,6 +12,10 @@ LIB_OR_DLL = both
+ # Dependencies for shared library
+ DLL_LIB = general ncbi_xreader$(DLL) $(GENBANK_PSG_CLIENT_LDEP)
++DLL_DLIB = ncbi_xreader_cache ncbi_xreader_id1 ncbi_xreader_id2 \
++           id2 id1 ncbi_xreader $(GENBANK_PSG_CLIENT_LDEP) xobjmgr \
++           seq xutil xncbi
++
+ LIBS = $(GENBANK_THIRD_PARTY_LIBS) $(CMPRS_LIBS) $(ORIG_LIBS)
+ CPPFLAGS = $(ORIG_CPPFLAGS) $(CMPRS_INCLUDE)
+--- a/c++/src/objtools/data_loaders/genbank/Makefile.ncbi_xreader.lib
++++ b/c++/src/objtools/data_loaders/genbank/Makefile.ncbi_xreader.lib
+@@ -16,6 +16,9 @@ DLL_LIB = $(GENBANK_READER_LDEP)
+ LIBS = $(CMPRS_LIBS) $(NETWORK_LIBS) $(DL_LIBS) $(ORIG_LIBS)
++DLL_DLIB = xobjmgr id2 seqsplit id1 seqset seq general \
++           xser xconnect xcompress xutil xncbi
++
+ WATCHERS = vasilche
+--- a/c++/src/objtools/data_loaders/genbank/cache/Makefile.ncbi_xreader_cache.lib
++++ b/c++/src/objtools/data_loaders/genbank/cache/Makefile.ncbi_xreader_cache.lib
+@@ -12,6 +12,8 @@ LIB_OR_DLL = both
+ # Dependencies for shared library
+ DLL_LIB = ncbi_xreader$(DLL)
++DLL_DLIB = ncbi_xreader xobjmgr seq xser xncbi
++
+ CPPFLAGS = $(ORIG_CPPFLAGS) $(CMPRS_INCLUDE)
+ WATCHERS = vasilche
+--- a/c++/src/objtools/data_loaders/genbank/id1/Makefile.ncbi_xreader_id1.lib
++++ b/c++/src/objtools/data_loaders/genbank/id1/Makefile.ncbi_xreader_id1.lib
+@@ -12,6 +12,8 @@ LIB_OR_DLL = both
+ # Dependencies for shared library
+ DLL_LIB = ncbi_xreader$(DLL) $(GENBANK_READER_LDEP)
++DLL_DLIB = ncbi_xreader xobjmgr id1 seq general xser xconnect xutil xncbi
++
+ CPPFLAGS = $(ORIG_CPPFLAGS) $(CMPRS_INCLUDE)
+ WATCHERS = vasilche
+--- a/c++/src/objtools/data_loaders/genbank/id2/Makefile.ncbi_xreader_id2.lib
++++ b/c++/src/objtools/data_loaders/genbank/id2/Makefile.ncbi_xreader_id2.lib
+@@ -12,7 +12,10 @@ LIB_OR_DLL = both
+ CPPFLAGS = $(ORIG_CPPFLAGS) $(Z_INCLUDE)
+ # Dependencies for shared library (disabled due to problems on Darwin)
+-# DLL_LIB = xconnect ncbi_xreader$(DLL)
++DLL_LIB = xconnect ncbi_xreader$(DLL)
++
++DLL_DLIB = ncbi_xreader xobjmgr id2 seqsplit seq xser xconnect xncbi
++
+ WATCHERS = vasilche
+--- a/c++/src/objtools/seqmasks_io/Makefile.seqmasks_io.lib
++++ b/c++/src/objtools/seqmasks_io/Makefile.seqmasks_io.lib
+@@ -12,7 +12,7 @@ mask_writer_seqloc \
+ mask_writer_blastdb_maskinfo
+ ASN_DEP = seqset
+-DLL_LIB = seqdb blastdb
++DLL_LIB = seqdb xobjread xobjutil xobjmgr blastdb seqset seq xser xncbi
+ LIBS = $(BLAST_THIRD_PARTY_LIBS) $(ORIG_LIBS)
+--- a/c++/src/objtools/simple/Makefile.xobjsimple.lib
++++ b/c++/src/objtools/simple/Makefile.xobjsimple.lib
+@@ -7,6 +7,8 @@ WATCHERS =  jcherry
+ ASN_DEP = seqset
++DLL_LIB = ncbi_xloader_genbank xobjmgr seq xncbi
++
+ LIB = xobjsimple
+ SRC = simple_om
+--- a/c++/src/serial/Makefile.serial.lib
++++ b/c++/src/serial/Makefile.serial.lib
+@@ -20,6 +20,8 @@ LIB    = xser
+ DLL_LIB = xutil
++DLL_LIB = xutil xncbi
++
+ WATCHERS = gouriano
+--- a/c++/src/util/Makefile.util.lib
++++ b/c++/src/util/Makefile.util.lib
+@@ -15,6 +15,7 @@ SRC = random_gen utf8 checksum checksum_
+ LIB = xutil
+ PROJ_TAG = core
++DLL_LIB = xncbi
+ LIBS = $(ORIG_LIBS)
+ WATCHERS = vakatov
+--- a/c++/src/util/compress/api/Makefile.compress.lib
++++ b/c++/src/util/compress/api/Makefile.compress.lib
+@@ -7,7 +7,7 @@ LIB = xcompress
+ CPPFLAGS = $(ORIG_CPPFLAGS) $(CMPRS_INCLUDE)
+-DLL_LIB =  $(BZ2_LIB)  $(LZO_LIB)  $(Z_LIB)  $(ZSTD_LIB)
++DLL_LIB =  $(BZ2_LIB)  $(LZO_LIB)  $(Z_LIB)  $(ZSTD_LIB) xutil xncbi
+ LIBS    =  $(BZ2_LIBS) $(LZO_LIBS) $(Z_LIBS) $(ZSTD_LIBS) $(ORIG_LIBS)
+ WATCHERS = ivanov
+--- a/c++/src/util/xregexp/Makefile.xregexp.lib
++++ b/c++/src/util/xregexp/Makefile.xregexp.lib
+@@ -5,7 +5,7 @@ LIB = xregexp
+ CPPFLAGS = $(ORIG_CPPFLAGS) $(PCRE_INCLUDE) $(PCRE2_INCLUDE)
+-DLL_LIB = $(PCRE_LIB) xutil
++DLL_LIB = $(PCRE_LIB) xutil xncbi
+ LIBS    = $(PCRE_LIBS) $(PCRE2_LIBS)
+ USES_LIBRARIES =  \
+--- a/c++/src/objtools/readers/Makefile.xobjread.lib
++++ b/c++/src/objtools/readers/Makefile.xobjread.lib
+@@ -29,6 +29,6 @@ SRC = reader_message reader_listener rea
+       message_listener line_error 
+-DLL_LIB = submit seqset $(SEQ_LIBS) general xutil xlogging
++DLL_LIB = submit seqset $(SEQ_LIBS) general xutil xlogging pub xser xncbi
+ USES_LIBRARIES = submit xlogging
+--- a/c++/src/util/sequtil/Makefile.sequtil.lib
++++ b/c++/src/util/sequtil/Makefile.sequtil.lib
+@@ -3,6 +3,8 @@
+ LIB = sequtil
+ SRC = sequtil sequtil_convert sequtil_convert_imp sequtil_manip sequtil_tables sequtil_shared
++DLL_LIB = xncbi
++
+ WATCHERS = grichenk ucko
+--- a/c++/src/objects/genomecoll/Makefile.genome_collection.lib
++++ b/c++/src/objects/genomecoll/Makefile.genome_collection.lib
+@@ -3,6 +3,8 @@
+ LIB = genome_collection
+ SRC = genome_collection__ genome_collection___
++DLL_LIB = seq general xser xncbi
++
+ WATCHERS = dicuccio smithrg zherikov
+--- a/c++/src/objects/medline/Makefile.medline.lib
++++ b/c++/src/objects/medline/Makefile.medline.lib
+@@ -1,7 +1,7 @@
+ LIB = medline
+ SRC = medline__ medline___
+-DLL_LIB = biblio general
++DLL_LIB = biblio general xser xncbi
+ USES_LIBRARIES =  \
+     biblio
+--- a/c++/src/objects/scoremat/Makefile.scoremat.lib
++++ b/c++/src/objects/scoremat/Makefile.scoremat.lib
+@@ -1,7 +1,7 @@
+ LIB = scoremat
+ SRC = scoremat__ scoremat___
+-DLL_LIB = seqset
++DLL_LIB = seqset seq general xser xncbi
+ USES_LIBRARIES =  \
+     seqset
+--- a/c++/src/objects/pub/Makefile.pub.lib
++++ b/c++/src/objects/pub/Makefile.pub.lib
+@@ -1,7 +1,7 @@
+ LIB = pub
+ SRC = pub__ pub___
+-DLL_LIB = medline biblio
++DLL_LIB = medline biblio xser xncbi
+ USES_LIBRARIES =  \
+     medline
+--- a/c++/src/objects/blastxml2/Makefile.blastxml2.lib
++++ b/c++/src/objects/blastxml2/Makefile.blastxml2.lib
+@@ -1,5 +1,7 @@
+ LIB = blastxml2
+ SRC = blastxml2__ blastxml2___
++DLL_LIB = xser xutil xncbi
++
+ USES_LIBRARIES =  \
+     xser
+--- a/c++/src/objects/entrez2/Makefile.entrez2.lib
++++ b/c++/src/objects/entrez2/Makefile.entrez2.lib
+@@ -3,6 +3,7 @@ WATCHERS = lavr
+ LIB = entrez2
+ SRC = entrez2__ entrez2___
++DLL_LIB = xser xutil xncbi
+ USES_LIBRARIES =  \
+     xser
+--- a/c++/src/objects/gbseq/Makefile.gbseq.lib
++++ b/c++/src/objects/gbseq/Makefile.gbseq.lib
+@@ -1,6 +1,7 @@
+ LIB = gbseq
+ SRC = gbseq__ gbseq___
++DLL_LIB = xser xutil xncbi
+ USES_LIBRARIES =  \
+     xser
+--- a/c++/src/objtools/blast/gene_info_reader/Makefile.gene_info.lib
++++ b/c++/src/objtools/blast/gene_info_reader/Makefile.gene_info.lib
+@@ -6,6 +6,7 @@ CPPFLAGS = -DNCBI_MODULE=GENEINFO $(ORIG
+ LIB = gene_info
+ SRC = gene_info gene_info_reader file_utils
++DLL_LIB = xncbi
+ USES_LIBRARIES =  \
+     xncbi
+--- a/c++/src/objects/medlars/Makefile.medlars.lib
++++ b/c++/src/objects/medlars/Makefile.medlars.lib
+@@ -1,6 +1,7 @@
+ LIB = medlars
+ SRC = medlars__ medlars___
++DLL_LIB = biblio xser xutil xncbi
+ USES_LIBRARIES =  \
+     biblio
+--- a/c++/src/objects/mla/Makefile.mla.lib
++++ b/c++/src/objects/mla/Makefile.mla.lib
+@@ -1,7 +1,7 @@
+ LIB = mla
+ SRC = mla__ mla___
+-DLL_LIB = medlars
++DLL_LIB = medlars pub pubmed xser xutil xncbi
+ USES_LIBRARIES =  \
+     medlars pub pubmed
+--- a/c++/src/objects/mla/Makefile.mlacli.lib
++++ b/c++/src/objects/mla/Makefile.mlacli.lib
+@@ -5,5 +5,7 @@ SRC = mla_client mla_client_
+ DLL_LIB = mla pubmed medlars xconnect
++DLL_LIB = mla xconnect xser xutil xncbi
++
+ USES_LIBRARIES =  \
+     mla xconnect
+--- a/c++/src/objects/pubmed/Makefile.pubmed.lib
++++ b/c++/src/objects/pubmed/Makefile.pubmed.lib
+@@ -1,6 +1,7 @@
+ LIB = pubmed
+ SRC = pubmed__ pubmed___
++DLL_LIB = medline biblio xser xutil xncbi
+ USES_LIBRARIES =  \
+     medline
+--- a/c++/src/objects/taxon1/Makefile.taxon1.lib
++++ b/c++/src/objects/taxon1/Makefile.taxon1.lib
+@@ -7,6 +7,7 @@ DLL_LIB = xconnect
+ WATCHERS = domrach
++DLL_LIB = xconnect seq xser xutil xncbi
+ USES_LIBRARIES =  \
+     $(SEQ_LIBS) pub xconnect
+--- a/c++/src/objects/taxon3/Makefile.taxon3.lib
++++ b/c++/src/objects/taxon3/Makefile.taxon3.lib
+@@ -8,6 +8,7 @@ DLL_LIB = xconnect
+ WATCHERS = stakhovv holmesbr
++DLL_LIB = xconnect seq xser xutil xncbi
+ USES_LIBRARIES =  \
+     $(SEQ_LIBS) pub xconnect
+--- a/c++/src/objects/valerr/Makefile.valerr.lib
++++ b/c++/src/objects/valerr/Makefile.valerr.lib
+@@ -3,6 +3,7 @@ SRC = valerr__ valerr___
+ ASN_DEP = seqset
++DLL_LIB = xser xutil xncbi
+ USES_LIBRARIES =  \
+     xser
+--- a/c++/src/objects/valid/Makefile.valid.lib
++++ b/c++/src/objects/valid/Makefile.valid.lib
+@@ -6,5 +6,7 @@ DLL_LIB = xregexp
+ ASN_DEP = general
++DLL_LIB = general xser xregexp xutil xncbi
++
+ USES_LIBRARIES =  \
+     general xregexp
+--- a/c++/src/objects/variation/Makefile.variation.lib
++++ b/c++/src/objects/variation/Makefile.variation.lib
+@@ -1,6 +1,7 @@
+ LIB = variation
+ SRC = variation__ variation___
++DLL_LIB = seq xser xutil xncbi
+ USES_LIBRARIES =  \
+     $(SEQ_LIBS) pub
+--- a/c++/src/algo/blast/format/Makefile.xblastformat.lib
++++ b/c++/src/algo/blast/format/Makefile.xblastformat.lib
+@@ -13,6 +13,8 @@ LIBS = $(BLAST_THIRD_PARTY_LIBS) $(ORIG_
+ WATCHERS = jianye zaretska madden camacho fongah2
++DLL_LIB = xformat $(BLAST_LIBS) align_format blastxml blastxml2 \
++          xhtml xcgi xncbi
+ USES_LIBRARIES =  \
+     $(BLAST_LIBS) align_format blastxml blastxml2
+--- a/c++/src/objtools/cleanup/Makefile.cleanup.lib
++++ b/c++/src/objtools/cleanup/Makefile.cleanup.lib
+@@ -11,7 +11,7 @@ SRC = autogenerated_cleanup autogenerate
+       cleanup_pub newcleanupp capitalization_string fix_feature_id \
+       cleanup_message influenza_set
+-DLL_LIB = $(OBJEDIT_LIBS) xregexp $(PCRE_LIB)
++DLL_LIB = $(OBJEDIT_LIBS) xobjutil valid xregexp $(PCRE_LIB) $(SOBJMGR_LIBS)
+ LIB = xcleanup
+ LIBS = $(PCRE_LIBS)
+--- a/c++/src/objtools/format/Makefile.xformat.lib
++++ b/c++/src/objtools/format/Makefile.xformat.lib
+@@ -22,6 +22,8 @@ DLL_LIB = xalnmgr xconnect
+ WATCHERS = dicuccio gotvyans
++DLL_LIB = xcleanup valid gbseq mlacli mla medlars pubmed submit xalnmgr \
++          xobjutil taxon3 $(SOBJMGR_LIBS)
+ USES_LIBRARIES =  \
+     gbseq xalnmgr xcleanup
+--- a/c++/src/objects/blast/Makefile.xnetblastcli.lib
++++ b/c++/src/objects/blast/Makefile.xnetblastcli.lib
+@@ -5,5 +5,7 @@ SRC = blastclient blastclient_
+ DLL_LIB = xconnect
++DLL_LIB = xnetblast xconnect xser xutil xncbi
++
+ USES_LIBRARIES =  \
+     xconnect xnetblast
+--- a/c++/src/util/xregexp/Makefile.xregexp_template_tester.lib
++++ b/c++/src/util/xregexp/Makefile.xregexp_template_tester.lib
+@@ -6,6 +6,8 @@ LIB = xregexp_template_tester
+ DLL_LIB = $(PCRE_LIB)
+ LIBS    = $(PCRE_LIBS)
++DLL_LIB = xregexp xncbi
++
+ USES_LIBRARIES =  \
+     xregexp $(PCRE_LIB) $(PCRE_LIBS) xncbi
+--- a/c++/src/algo/blast/api/Makefile.xblast.lib
++++ b/c++/src/algo/blast/api/Makefile.xblast.lib
+@@ -79,11 +79,11 @@ magicblast \
+ blast_node \
+ blast_usage_report
+-SRC  = $(SRC_C:%=.core_%) $(SRC_CXX)
++SRC  = $(SRC_CXX)
+ LIB = xblast
+-DLL_LIB = $(BLAST_LDEP) $(SOBJMGR_LIBS)
++DLL_LIB = $(BLAST_LDEP) $(SOBJMGR_LIBS) blast seqdb seqset seq general xser xconnect sequtil tables xutil xncbi
+ CFLAGS   = $(FAST_CFLAGS) 
+ CPPFLAGS = -DNCBI_MODULE=BLAST $(ORIG_CPPFLAGS)
+--- a/c++/src/connect/Makefile.xconnect.lib
++++ b/c++/src/connect/Makefile.xconnect.lib
+@@ -12,6 +12,8 @@ SRC      = $(SRC_C) $(SRC_CXX) $(SRC_TLS
+ LIB      = xconnect
++DLL_LIB = xncbi
++
+ LIBS     = $(NETWORK_LIBS) $(ORIG_LIBS)
+ PROJ_TAG = core
+--- a/c++/src/objects/seq/Makefile.seq.lib
++++ b/c++/src/objects/seq/Makefile.seq.lib
+@@ -12,7 +12,7 @@ SRC = $(ASN:%=%__) $(ASN:%=%___) seqport
+       seq_loc_mapper_base seq_align_mapper_base seqlocinfo so_map \
+       seq_loc_from_string seq_loc_reverse_complementer
+-DLL_LIB = seqcode pub general xser sequtil
++DLL_LIB = seqcode pub biblio general xser sequtil xutil xncbi
+ WATCHERS = vasilche grichenk stakhovv gotvyans
+--- a/c++/src/objects/seqset/Makefile.seqset.lib
++++ b/c++/src/objects/seqset/Makefile.seqset.lib
+@@ -1,7 +1,7 @@
+ LIB = seqset
+ SRC = seqset__ seqset___ gb_release_file
+-DLL_LIB = $(SEQ_LIBS)
++DLL_LIB = $(SEQ_LIBS) xser xncbi
+ USES_LIBRARIES =  \
+     $(SEQ_LIBS) pub
+--- a/c++/src/objects/entrez2/Makefile.entrez2cli.lib
++++ b/c++/src/objects/entrez2/Makefile.entrez2cli.lib
+@@ -5,7 +5,7 @@ ASN_DEP = entrez2
+ LIB = entrez2cli
+ SRC = entrez2_client entrez2_client_
+-DLL_LIB = entrez2 xconnect
++DLL_LIB = entrez2 xconnect xser xutil xncbi
+ USES_LIBRARIES =  \
+     entrez2 xconnect
diff --git a/patches/fix_unit_tests b/patches/fix_unit_tests
new file mode 100644 (file)
index 0000000..4687884
--- /dev/null
@@ -0,0 +1,16 @@
+Subject: add missing lib for tests
+Description: unit_test need blast lib to compile
+Forwarded: Not-Needed 
+Author: Olivier Sallou <osallou@debian.org>
+Last-Updated: 2018-02-11
+--- a/c++/src/algo/blast/Makefile.blast_macros.mk
++++ b/c++/src/algo/blast/Makefile.blast_macros.mk
+@@ -22,7 +22,7 @@ BLAST_LDEP = utrtprof xalgoblastdbindex
+              xalgodustmask xalgowinmask seqmasks_io seqdb blast_services xalnmgr \
+              xobjutil $(OBJREAD_LIBS) xnetblastcli xnetblast blastdb \
+              sqlitewrapp scoremat tables $(LMDB_LIB)
+-BLAST_LIBS = proteinkmer xblast $(BLAST_LDEP)
++BLAST_LIBS = proteinkmer xblast blast $(BLAST_LDEP)
+ # BLAST additionally needs xconnect $(SOBJMGR_LIBS) or $(OBJMGR_LIBS)
diff --git a/patches/hurd_fixes b/patches/hurd_fixes
new file mode 100644 (file)
index 0000000..884c030
--- /dev/null
@@ -0,0 +1,53 @@
+Subject: fix portability issues that led to Hurd build failures
+
+* src/build-system/configure(.ac):
+  - Reflect the Hurd's support for -Wl,rpath,... .
+* src/connect/ncbi_socket_cxx.cpp, src/connect/ext/ncbi_localnet.c:
+  cope with missing PATH_MAX everywhere, not just under Windows.
+
+Author: Aaron M. Ucko <ucko@debian.org>
+Last-Update: 2020-09-19
+--- a/c++/src/build-system/configure
++++ b/c++/src/build-system/configure
+@@ -10806,7 +10806,7 @@ if test -z "$CONF_f_runpath" ; then
+       CONF_f_runpath="-R"
+       ;;
+     linux*:[GI]CC | linux*Clang | *bsd*:GCC | *bsd*Clang | cygwin*:GCC \
+-    | osf*:GCC )
++    | osf*:GCC | gnu*:GCC )
+       CONF_f_runpath="-Wl,-rpath,"
+       ;;
+     irix*:* | linux*:KCC | *:Compaq )
+--- a/c++/src/build-system/configure.ac
++++ b/c++/src/build-system/configure.ac
+@@ -2424,7 +2424,7 @@ if test -z "$CONF_f_runpath" ; then
+       CONF_f_runpath="-R"
+       ;;
+     linux*:[[GI]]CC | linux*Clang | *bsd*:GCC | *bsd*Clang | cygwin*:GCC \
+-    | osf*:GCC )
++    | osf*:GCC | gnu*:GCC )
+       CONF_f_runpath="-Wl,-rpath,"
+       ;;
+     irix*:* | linux*:KCC | *:Compaq )
+--- a/c++/src/connect/ncbi_socket_cxx.cpp
++++ b/c++/src/connect/ncbi_socket_cxx.cpp
+@@ -35,7 +35,7 @@
+ #include "ncbi_assert.h"                // no _ASSERT()s, keep clean from xncbi
+ #include <connect/ncbi_socket_unix.hpp>
+ #include <limits.h>                     // for PATH_MAX
+-#if defined(NCBI_OS_MSWIN)  &&  !defined(PATH_MAX)
++#ifndef PATH_MAX
+ #  define PATH_MAX 512                  // will actually use less than 32 chars
+ #endif // NCBI_OS_MSWIN && !PATH_MAX
+--- a/c++/src/connect/ncbi_localip.c
++++ b/c++/src/connect/ncbi_localip.c
+@@ -67,7 +67,7 @@
+ #  define INADDR_LOOPBACK  0x7F000001
+ #endif /*!INADDR_LOOPBACK*/
+-#if defined(NCBI_OS_MSWIN)  &&  !defined(PATH_MAX)
++#if /* defined(NCBI_OS_MSWIN)  && */ !defined(PATH_MAX)
+ #  ifdef _MAX_PATH
+ #    define PATH_MAX  _MAX_PATH
+ #else
diff --git a/patches/legacy_rename_rpsblast b/patches/legacy_rename_rpsblast
new file mode 100644 (file)
index 0000000..f40204b
--- /dev/null
@@ -0,0 +1,14 @@
+Author: Olivier Sallou <olivier.sallou@irisa.fr>
+Description: rename binary as blast+ for package coherency.
+Last-Updated: 2011-10-03
+--- a/c++/src/app/blast/legacy_blast.pl
++++ b/c++/src/app/blast/legacy_blast.pl
+@@ -1064,7 +1064,7 @@
+     if (defined $opt_p and $opt_p =~ /f/i) {
+         $retval .= "/rpstblastn";
+     } else {
+-        $retval .= "/rpsblast";
++        $retval .= "/rpsblast+";
+     }
+     $retval .= &add_exe_extension();
diff --git a/patches/no_multiarch_rpath b/patches/no_multiarch_rpath
new file mode 100644 (file)
index 0000000..8423cd8
--- /dev/null
@@ -0,0 +1,32 @@
+Subject: avoid redundant rpath entries on multiarch systems
+
+ * src/build-system/configure(.ac): when ensuring that executables
+   will be able to find libstdc++, don't add rpath entries that files
+   under /etc/ld.so.conf.d already specify, even if they don't resemble
+   traditional single-architecture or biarch locations.
+
+Debian-Bug: 633567.
+Author: Aaron M. Ucko <ucko@debian.org>
+Last-Update: 2011-08-28
+--- a/c++/src/build-system/configure
++++ b/c++/src/build-system/configure
+@@ -10912,7 +10912,7 @@ case "$compiler:$compiler_version:$with_
+                break
+                ;;
+             /* )
+-               found=true
++               fgrep -qsx $abs_dir /etc/ld.so.conf.d/*  ||  found=true
+                break
+                ;;
+         esac
+--- a/c++/src/build-system/configure.ac
++++ b/c++/src/build-system/configure.ac
+@@ -2491,7 +2491,7 @@ case "$compiler:$compiler_version:$with_
+                break
+                ;;
+             /* )
+-               found=true
++               fgrep -qsx $abs_dir /etc/ld.so.conf.d/*  ||  found=true
+                break
+                ;;
+         esac
diff --git a/patches/optin_usage_report b/patches/optin_usage_report
new file mode 100644 (file)
index 0000000..8a73c3f
--- /dev/null
@@ -0,0 +1,47 @@
+Subject: blast+ use optout to send usage reports over internet
+Description: this patch change strategy to optin ie user asks
+ per config/env vars to send reports, else it is disabled by default.
+ Not a bug by itself but default strategy update to send info over internet.
+Author: Olivier Sallou <osallou@debian.org>
+Last-Updated: 202-02-10
+Forwarded: no
+--- a/c++/src/algo/blast/api/blast_usage_report.cpp
++++ b/c++/src/algo/blast/api/blast_usage_report.cpp
+@@ -190,6 +190,7 @@ void CBlastUsageReport::AddParam(EUsageP
+ void CBlastUsageReport::x_CheckBlastUsageEnv()
+ {
+       char * blast_usage_env = getenv("BLAST_USAGE_REPORT");
++
+       if(blast_usage_env != NULL){
+               bool enable = NStr::StringToBool(blast_usage_env);
+               if (!enable) {
+@@ -198,6 +199,10 @@ void CBlastUsageReport::x_CheckBlastUsag
+                       LOG_POST(Info <<"Phone home disabled");
+                       return ;
+               }
++                SetEnabled(true);
++                CUsageReportAPI::SetEnabled(true);
++                LOG_POST(Info <<"Phone home enabled");
++                return;
+       }
+       CNcbiIstrstream empty_stream(kEmptyStr);
+@@ -210,10 +215,15 @@ void CBlastUsageReport::x_CheckBlastUsag
+                       LOG_POST(Info <<"Phone home disabled by config setting");
+                       return ;
+               }
++                SetEnabled(true);
++                CUsageReportAPI::SetEnabled(true);
++                LOG_POST(Info <<"Phone home enabled by config setting");
++                return ;
+       }
+-      CUsageReportAPI::SetEnabled(true);
+-      SetEnabled(true);
+-      LOG_POST(Info <<"Phone home enabled");
++        // Debian optin by default (do not send reports)
++      CUsageReportAPI::SetEnabled(false);
++      SetEnabled(false);
++      LOG_POST(Info <<"Phone home disabled");
+ }
+ void CBlastUsageReport::AddParam(EUsageParams p, Int8 val)
diff --git a/patches/optionally_keep_sequence b/patches/optionally_keep_sequence
new file mode 100644 (file)
index 0000000..0b48dc4
--- /dev/null
@@ -0,0 +1,29 @@
+Author: Aaron M. Ucko <ucko@debian.org>
+Date:   Wed Dec 14 22:44:19 2016 -0500
+Description: Hang on to sequence data even if -parse_deflines recognized a non-local ID,
+    on the condition that the environment variable BLAST_ALWAYS_KEEP_SEQUENCE
+    (or configuration parameter [BLAST] always_keep_sequence) is set to a
+    "true" value (English-only, case-insensitive true, t, yes, y, or 1).
+--- a/c++/src/algo/blast/api/search_strategy.cpp
++++ b/c++/src/algo/blast/api/search_strategy.cpp
+@@ -560,6 +560,11 @@ void CExportStrategy::x_Process_Pssm(CRe
+     m_QueueSearchRequest->SetService(new_service);
+ }
++NCBI_PARAM_DECL(bool, BLAST, always_keep_sequence);
++NCBI_PARAM_DEF_EX(bool, BLAST, always_keep_sequence, false, eParam_Default,
++                  BLAST_ALWAYS_KEEP_SEQUENCE);
++typedef NCBI_PARAM_TYPE(BLAST, always_keep_sequence) TAlwaysKeepSequence;
++
+ void CExportStrategy::x_Process_Query(CRef<IQueryFactory> & query)
+ {
+     if (query.Empty())
+@@ -581,7 +586,7 @@ void CExportStrategy::x_Process_Query(CR
+     // Check if there are any range restrictions applied and if local IDs are
+     // being used to determine how to specify the query sequence(s)
+-    bool has_local_ids = false;
++    bool has_local_ids = TAlwaysKeepSequence::GetDefault();
+     if (!seqloc_list.empty())
+     {
diff --git a/patches/reprobuild b/patches/reprobuild
new file mode 100644 (file)
index 0000000..2206de5
--- /dev/null
@@ -0,0 +1,621 @@
+Author: Michael R. Crusoe <michael.crusoe@gmail.com>
+Description: make the build more reproducible
+--- a/c++/src/build-system/configure.ac
++++ b/c++/src/build-system/configure.ac
+@@ -3138,13 +3138,13 @@ case "$host_os" in
+    linux*)
+       kver=`uname -r | sed -e 's/-.*//'`
+       libcver=`ldd --version | awk 'NR == 1 { print $NF }'`
+-      verbose_host=$host_cpu-$host_vendor-linux$kver-gnu$libcver
++      verbose_host=$host_cpu-$host_vendor-linux-gnu$libcver
+       ;;
+    *) verbose_host=$host ;;
+ esac
+ #### Overall configuration mode summary
+-signature_hostname=`(hostname || uname -n) 2>/dev/null \
++signature_hostname=`echo debian_build 2>/dev/null \
+     | sed 's/\..*//; s/-/_/g; 1q'`
+ signature="${signature_compiler}_${compiler_version}-${release_debug}${mt_sfx}${dll_sfx}${bit64_sfx}${prof_sfx}--${verbose_host}-${signature_hostname}"
+ AC_DEFINE_UNQUOTED(NCBI_SIGNATURE, "$signature",
+--- a/c++/include/algo/blast/core/blast_message.h
++++ b/c++/include/algo/blast/core/blast_message.h
+@@ -117,7 +117,7 @@ void Blast_Perror(Blast_Message* *msg, I
+ /** Convenient define to call the function Blast_PerrorEx. */
+ #define Blast_PerrorWithLocation(msg, error_code, context) \
+-Blast_PerrorEx(msg, error_code, __FILE__, __LINE__, context)
++Blast_PerrorEx(msg, error_code, "c++/include/algo/blast/core/blast_message.h", __LINE__, context)
+ /** Extended version of Blast_Perror which includes parameters for the file
+  * name and line number where the error/warning occurred. This function should
+--- a/c++/include/connect/ncbi_util.h
++++ b/c++/include/connect/ncbi_util.h
+@@ -135,7 +135,7 @@ extern NCBI_XCONNECT_EXPORT MT_LOCK CORE
+  */
+ #define  LOG_WRITE(lg, code, subcode, level, message)                        \
+     LOG_Write(lg, code, subcode, level, THIS_MODULE, CORE_CURRENT_FUNCTION,  \
+-              __FILE__, __LINE__, message, 0, 0)
++              "c++/include/connect/ncbi_util.h", __LINE__, message, 0, 0)
+ #ifdef   LOG_DATA
+ /* AIX's <pthread.h> defines LOG_DATA to be an integer constant;
+@@ -144,7 +144,7 @@ extern NCBI_XCONNECT_EXPORT MT_LOCK CORE
+ #endif
+ #define  LOG_DATA(lg, code, subcode, level, data, size, message)             \
+     LOG_Write(lg, code, subcode, level, THIS_MODULE, CORE_CURRENT_FUNCTION,  \
+-              __FILE__, __LINE__, message, data, size)
++              "c++/include/connect/ncbi_util.h", __LINE__, message, data, size)
+ /** Default for THIS_MODULE.
+--- a/c++/include/corelib/impl/ncbi_java.h
++++ b/c++/include/corelib/impl/ncbi_java.h
+@@ -63,7 +63,7 @@
+ #define JAVA_ABORT(msg) \
+     { \
+-        NcbiCerr << __FILE__ << ": " << NCBI_CURRENT_FUNCTION << ": " msg << endl; \
++        NcbiCerr << "c++/include/corelib/impl/ncbi_java.h" << ": " << NCBI_CURRENT_FUNCTION << ": " msg << endl; \
+         abort(); \
+     }
+--- a/c++/include/corelib/ncbidiag.hpp
++++ b/c++/include/corelib/ncbidiag.hpp
+@@ -168,7 +168,7 @@ NCBI_XNCBI_EXPORT const char* g_DiagUnkn
+ /// @sa
+ ///   CDiagCompileInfo
+ #define DIAG_COMPILE_INFO                                           \
+-    NCBI_NS_NCBI::CDiagCompileInfo(__FILE__,                        \
++    NCBI_NS_NCBI::CDiagCompileInfo("c++/include/corelib/ncbidiag.hpp",                        \
+                                    __LINE__,                        \
+                                    NCBI_CURRENT_FUNCTION,           \
+                                    NCBI_MAKE_MODULE(NCBI_MODULE))
+--- a/c++/include/corelib/test_boost.hpp
++++ b/c++/include/corelib/test_boost.hpp
+@@ -343,7 +343,7 @@ static ::NCBI_NS_NCBI::SNcbiTestRegistra
+ BOOST_JOIN( BOOST_JOIN( test_name, _registrar ), __LINE__ ) (           \
+     boost::unit_test::make_test_case(                                   \
+         &BOOST_AUTO_TC_INVOKER( test_name ), #test_name,                \
+-        __FILE__, __LINE__ ),                                           \
++        "c++/include/corelib/test_boost.hpp", __LINE__ ),                                           \
+     ::NCBI_NS_NCBI::SNcbiTestTCTimeout<                                 \
+         BOOST_AUTO_TC_UNIQUE_ID( test_name )>::instance()->value(),     \
+     decorators );                                                       \
+--- a/c++/include/objtools/blast/seqdb_reader/impl/seqdbgeneral.hpp
++++ b/c++/include/objtools/blast/seqdb_reader/impl/seqdbgeneral.hpp
+@@ -1123,7 +1123,7 @@ void SeqDB_FileIntegrityAssert(const str
+ #define SEQDB_FILE_ASSERT(YESNO)                                        \
+     do {                                                                \
+         if (! (YESNO)) {                                                \
+-            SeqDB_FileIntegrityAssert(__FILE__, __LINE__, (#YESNO));    \
++            SeqDB_FileIntegrityAssert("c++/include/objtools/blast/seqdb_reader/impl/seqdbgeneral.hpp", __LINE__, (#YESNO));    \
+         }                                                               \
+     } while(0)
+--- a/c++/include/util/ddump_viewer.hpp
++++ b/c++/include/util/ddump_viewer.hpp
+@@ -49,7 +49,7 @@ BEGIN_NCBI_SCOPE
+ //
+ #define DEBUGDUMP_BPT(name,obj)  \
+-    do {CDebugDumpViewer().Bpt(name,&(obj),__FILE__,__LINE__);} while (0)
++    do {CDebugDumpViewer().Bpt(name,&(obj),"c++/include/util/ddump_viewer.hpp",__LINE__);} while (0)
+ //---------------------------------------------------------------------------
+--- a/c++/include/util/static_set.hpp
++++ b/c++/include/util/static_set.hpp
+@@ -886,17 +886,17 @@ public:
+     static const Type Var
+ #define DEFINE_STATIC_ARRAY_MAP(Type, Var, Array)                       \
+-    static const Type (Var)((Array), sizeof(Array), __FILE__, __LINE__)
++    static const Type (Var)((Array), sizeof(Array), "c++/include/util/static_set.hpp", __LINE__)
+ #define DEFINE_CLASS_STATIC_ARRAY_MAP(Type, Var, Array)                 \
+-    const Type (Var)((Array), sizeof(Array), __FILE__, __LINE__)
++    const Type (Var)((Array), sizeof(Array), "c++/include/util/static_set.hpp", __LINE__)
+ #define DEFINE_STATIC_ARRAY_MAP_WITH_COPY(Type, Var, Array)             \
+-    static const Type (Var)((Array), sizeof(Array), __FILE__, __LINE__, \
++    static const Type (Var)((Array), sizeof(Array), "c++/include/util/static_set.hpp", __LINE__, \
+                             NCBI_NS_NCBI::NStaticArray::eCopyWarn_hide)
+ #define DEFINE_CLASS_STATIC_ARRAY_MAP_WITH_COPY(Type, Var, Array)       \
+-    const Type (Var)((Array), sizeof(Array), __FILE__, __LINE__,        \
++    const Type (Var)((Array), sizeof(Array), "c++/include/util/static_set.hpp", __LINE__,        \
+                      NCBI_NS_NCBI::NStaticArray::eCopyWarn_hide)
+--- a/c++/src/connect/mbedtls/mbedtls/debug.h
++++ b/c++/src/connect/mbedtls/mbedtls/debug.h
+@@ -39,33 +39,33 @@
+ #define MBEDTLS_DEBUG_STRIP_PARENS(...)   __VA_ARGS__
+ #define MBEDTLS_SSL_DEBUG_MSG(level, args)                    \
+-    mbedtls_debug_print_msg(ssl, level, __FILE__, __LINE__,    \
++    mbedtls_debug_print_msg(ssl, level, "c++/src/connect/mbedtls/mbedtls/debug.h", __LINE__,    \
+                             MBEDTLS_DEBUG_STRIP_PARENS args)
+ #define MBEDTLS_SSL_DEBUG_RET(level, text, ret)                \
+-    mbedtls_debug_print_ret(ssl, level, __FILE__, __LINE__, text, ret)
++    mbedtls_debug_print_ret(ssl, level, "c++/src/connect/mbedtls/mbedtls/debug.h", __LINE__, text, ret)
+ #define MBEDTLS_SSL_DEBUG_BUF(level, text, buf, len)           \
+-    mbedtls_debug_print_buf(ssl, level, __FILE__, __LINE__, text, buf, len)
++    mbedtls_debug_print_buf(ssl, level, "c++/src/connect/mbedtls/mbedtls/debug.h", __LINE__, text, buf, len)
+ #if defined(MBEDTLS_BIGNUM_C)
+ #define MBEDTLS_SSL_DEBUG_MPI(level, text, X)                  \
+-    mbedtls_debug_print_mpi(ssl, level, __FILE__, __LINE__, text, X)
++    mbedtls_debug_print_mpi(ssl, level, "c++/src/connect/mbedtls/mbedtls/debug.h", __LINE__, text, X)
+ #endif
+ #if defined(MBEDTLS_ECP_C)
+ #define MBEDTLS_SSL_DEBUG_ECP(level, text, X)                  \
+-    mbedtls_debug_print_ecp(ssl, level, __FILE__, __LINE__, text, X)
++    mbedtls_debug_print_ecp(ssl, level, "c++/src/connect/mbedtls/mbedtls/debug.h", __LINE__, text, X)
+ #endif
+ #if defined(MBEDTLS_X509_CRT_PARSE_C)
+ #define MBEDTLS_SSL_DEBUG_CRT(level, text, crt)                \
+-    mbedtls_debug_print_crt(ssl, level, __FILE__, __LINE__, text, crt)
++    mbedtls_debug_print_crt(ssl, level, "c++/src/connect/mbedtls/mbedtls/debug.h", __LINE__, text, crt)
+ #endif
+ #if defined(MBEDTLS_ECDH_C)
+ #define MBEDTLS_SSL_DEBUG_ECDH(level, ecdh, attr)               \
+-    mbedtls_debug_printf_ecdh(ssl, level, __FILE__, __LINE__, ecdh, attr)
++    mbedtls_debug_printf_ecdh(ssl, level, "c++/src/connect/mbedtls/mbedtls/debug.h", __LINE__, ecdh, attr)
+ #endif
+ #else /* MBEDTLS_DEBUG_C */
+--- a/c++/src/connect/ncbi_monkey.cpp
++++ b/c++/src/connect/ncbi_monkey.cpp
+@@ -83,7 +83,7 @@ const string             kEnablField
+ const string             kSeedField      = "seed";
+ #define PARAM_TWICE_EXCEPTION(param)                                        \
+-    throw CMonkeyException(CDiagCompileInfo(__FILE__, __LINE__),            \
++    throw CMonkeyException(CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),            \
+                            NULL, CMonkeyException::e_MonkeyInvalidArgs,     \
+                            string("Parameter \"" param "\" is set "         \
+                            "twice in [") + GetSection() + "]" +             \
+@@ -371,7 +371,7 @@ static string s_RuleTypeString(EMonkeyAc
+     case eMonkey_Send:
+         return "write";
+     default:
+-        throw CMonkeyException(CDiagCompileInfo(__FILE__, __LINE__),
++        throw CMonkeyException(CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                                NULL, CMonkeyException::e_MonkeyInvalidArgs,
+                                string("Unknown EMonkeyActionType value"));
+     }
+@@ -390,7 +390,7 @@ static string s_SocketCallString(EMonkey
+     case eMonkey_Connect:
+         return "connect()";
+     default:
+-        throw CMonkeyException(CDiagCompileInfo(__FILE__, __LINE__),
++        throw CMonkeyException(CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                                NULL, CMonkeyException::e_MonkeyInvalidArgs,
+                                string("Unknown EMonkeyActionType value"));
+     }
+@@ -467,7 +467,7 @@ unsigned short CMonkeyRuleBase::GetProba
+ {
+     if (m_RunPos.find(sock) == m_RunPos.end()) {
+         throw CMonkeyException(
+-            CDiagCompileInfo(__FILE__, __LINE__),
++            CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+             NULL, CMonkeyException::e_MonkeyInvalidArgs,
+             "The socket provided has not been registered with current rule");
+     }
+@@ -511,7 +511,7 @@ void CMonkeyRuleBase::x_ReadEIOStatus(co
+         m_ReturnStatus = eIO_Closed;
+     } else if (eIOStatus == "eio_invalidarg") {
+         throw CMonkeyException(
+-            CDiagCompileInfo(__FILE__, __LINE__),
++            CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+             NULL, CMonkeyException::e_MonkeyInvalidArgs,
+             string("Unsupported 'return_status': ") + eIOStatus_in);
+     } else if (eIOStatus == "eio_interrupt") {
+@@ -526,7 +526,7 @@ void CMonkeyRuleBase::x_ReadEIOStatus(co
+         m_ReturnStatus = eIO_NotSupported;
+     } else {
+         throw CMonkeyException(
+-            CDiagCompileInfo(__FILE__, __LINE__),
++            CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+             NULL, CMonkeyException::e_MonkeyInvalidArgs,
+             string("Could not parse 'return_status': ") + eIOStatus_in);
+     }
+@@ -543,7 +543,7 @@ void CMonkeyRuleBase::x_ReadRuns(const s
+        split it on commas*/
+     vector<string> runs_list = s_Monkey_Split(runs, ',');
+     if (runs_list.size() == 0)
+-        throw CMonkeyException(CDiagCompileInfo(__FILE__, __LINE__),
++        throw CMonkeyException(CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                                NULL, CMonkeyException::e_MonkeyInvalidArgs,
+                                string("Parameter \"runs\" is empty in [")
+                                + m_Section + "]" +
+@@ -573,7 +573,7 @@ void CMonkeyRuleBase::x_ReadRuns(const s
+         if (m_RunMode == eMonkey_RunProbability) {
+             if (*run.rbegin() != '%') {
+                 throw CMonkeyException(
+-                        CDiagCompileInfo(__FILE__, __LINE__),
++                        CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                         NULL, CMonkeyException::e_MonkeyInvalidArgs,
+                         "Value is not percentage: " + run +
+                         ", values have to be either only percentages or "
+@@ -593,7 +593,7 @@ void CMonkeyRuleBase::x_ReadRuns(const s
+                 size_t last_step = m_Runs.size();
+                 if (last_step == 0 && step != 1) {
+                     throw CMonkeyException(
+-                            CDiagCompileInfo(__FILE__, __LINE__),
++                            CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                             NULL, CMonkeyException::e_MonkeyInvalidArgs,
+                             "In the string of runs: " + runs + " the first "
+                             "element MUST set value for the first run");
+@@ -610,7 +610,7 @@ void CMonkeyRuleBase::x_ReadRuns(const s
+             assert(run_format == eMonkey_RunSequence);
+             if (*run.rbegin() == '%') {
+                 throw CMonkeyException(
+-                        CDiagCompileInfo(__FILE__, __LINE__),
++                        CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                         NULL, CMonkeyException::e_MonkeyInvalidArgs,
+                         string("Value is percentage: ") + run +
+                         string(", values have to be either only percentages or "
+@@ -619,7 +619,7 @@ void CMonkeyRuleBase::x_ReadRuns(const s
+             int val = NStr::StringToInt(run);
+             if (m_Runs.size() > 0 && val <= *m_Runs.rbegin()) {
+                 throw CMonkeyException(
+-                    CDiagCompileInfo(__FILE__, __LINE__),
++                    CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                     NULL, CMonkeyException::e_MonkeyInvalidArgs,
+                     string("\"runs\" should contain values in "
+                            "increasing order"));
+@@ -815,7 +815,7 @@ CMonkeyConnectRule::CMonkeyConnectRule(s
+         string value = name_value[1];
+         if (name == "allow") {
+             if (allow_set) {
+-                throw CMonkeyException(CDiagCompileInfo(__FILE__, __LINE__),
++                throw CMonkeyException(CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                                        NULL, 
+                                        CMonkeyException::e_MonkeyInvalidArgs,
+                                        string("Parameter \"allow\" is set "
+@@ -827,7 +827,7 @@ CMonkeyConnectRule::CMonkeyConnectRule(s
+         }
+     }
+     if (!allow_set)
+-        throw CMonkeyException(CDiagCompileInfo(__FILE__, __LINE__),
++        throw CMonkeyException(CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                                NULL, CMonkeyException::e_MonkeyInvalidArgs,
+                                string("Parameter \"allow\" not set in [")
+                                + GetSection() + "]" +
+@@ -902,7 +902,7 @@ CMonkeyPollRule::CMonkeyPollRule(string
+         string value = name_value[1];
+         if (name == "ignore") {
+             if (ignore_set) {
+-                throw CMonkeyException(CDiagCompileInfo(__FILE__, __LINE__),
++                throw CMonkeyException(CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                                        NULL,
+                                        CMonkeyException::e_MonkeyInvalidArgs,
+                                        string("Parameter \"ignore\" is set "
+@@ -914,7 +914,7 @@ CMonkeyPollRule::CMonkeyPollRule(string
+         }
+     }
+     if (!ignore_set) {
+-        throw CMonkeyException(CDiagCompileInfo(__FILE__, __LINE__),
++        throw CMonkeyException(CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                                NULL, CMonkeyException::e_MonkeyInvalidArgs,
+                                string("Parameter \"ignore\" not set in [")
+                                + GetSection() + "]" +
+@@ -1032,7 +1032,7 @@ static bool s_MatchRegex(const string& t
+                                                              ".*" , "");
+     if (filtered.find_first_of("[]()+^?{}$.*\\") != string::npos) {
+         throw CMonkeyException(
+-            CDiagCompileInfo(__FILE__, __LINE__),
++            CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+             NULL,
+             CMonkeyException::e_MonkeyInvalidArgs,
+             exception_message);
+@@ -1051,7 +1051,7 @@ static bool s_MatchRegex(const string& t
+         }
+         else {
+             throw CMonkeyException(
+-                CDiagCompileInfo(__FILE__, __LINE__),
++                CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                 NULL,
+                 CMonkeyException::e_MonkeyInvalidArgs,
+                 exception_message);
+@@ -1179,7 +1179,7 @@ bool CMonkeyPlan::WriteRule(MONKEY_SOCKT
+             ss << "Probability below zero for write rule in plan " << m_Name
+                 << ". Check config!";
+             throw CMonkeyException(
+-                        CDiagCompileInfo(__FILE__, __LINE__),
++                        CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                         NULL, CMonkeyException::e_MonkeyInvalidArgs, 
+                         ss.str());
+         }
+@@ -1221,7 +1221,7 @@ bool CMonkeyPlan::ReadRule(MONKEY_SOCKTY
+             stringstream ss;
+             ss << "Probability below zero for write rule in plan " << m_Name
+                << ". Check config!";
+-            throw CMonkeyException(CDiagCompileInfo(__FILE__, __LINE__),
++            throw CMonkeyException(CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                                    NULL, CMonkeyException::e_MonkeyInvalidArgs,
+                                    ss.str());
+         }
+@@ -1270,7 +1270,7 @@ bool CMonkeyPlan::ConnectRule(MONKEY_SOC
+             stringstream ss;
+             ss << "Probability below zero for write rule in plan " << m_Name
+                 << ". Check config!";
+-            throw CMonkeyException(CDiagCompileInfo(__FILE__, __LINE__),
++            throw CMonkeyException(CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                                    NULL, CMonkeyException::e_MonkeyInvalidArgs,
+                                    ss.str());
+         }
+@@ -1313,7 +1313,7 @@ bool CMonkeyPlan::PollRule(size_t*     n
+             ss << "Probability below zero for write rule in plan " << m_Name
+                 << ". Check config!";
+             throw CMonkeyException(
+-                        CDiagCompileInfo(__FILE__, __LINE__),
++                        CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                         NULL, CMonkeyException::e_MonkeyInvalidArgs, 
+                         ss.str());
+         }
+@@ -1372,7 +1372,7 @@ CMonkey::CMonkey() : m_Probability(100),
+ {
+     if (sm_HookSwitch == NULL) {
+         throw CMonkeyException(
+-            CDiagCompileInfo(__FILE__, __LINE__),
++            CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+             NULL, CMonkeyException::e_MonkeyInvalidArgs,
+             "Launch CONNECT_Init() before initializing CMonkey instance");
+     }
+@@ -1458,7 +1458,7 @@ void CMonkey::ReloadConfig(const string&
+                 prob = (int)(NStr::StringToDouble(prob_str) * 100);
+             }
+             if (prob < 0 || prob > 100) {
+-                throw CMonkeyException(CDiagCompileInfo(__FILE__, __LINE__),
++                throw CMonkeyException(CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                                        NULL,
+                                        CMonkeyException::e_MonkeyInvalidArgs,
+                                        "Parameter \"probability\"=" + prob_str
+@@ -1469,7 +1469,7 @@ void CMonkey::ReloadConfig(const string&
+             m_Probability = (unsigned short)prob;
+         }
+         catch (const CStringException&) {
+-            throw CMonkeyException(CDiagCompileInfo(__FILE__, __LINE__),
++            throw CMonkeyException(CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+                                    NULL, CMonkeyException::e_MonkeyInvalidArgs,
+                                    "Parameter \"probability\"=" + prob_str
+                                    + " for section [" + monkey_section
+@@ -1757,7 +1757,7 @@ bool CMonkey::RegisterThread(int token)
+        << " has been already registered in CMonkey and cannot be used again";
+     if (m_RegisteredTokens.find(token) != m_RegisteredTokens.end()) {
+         throw CMonkeyException(
+-            CDiagCompileInfo(__FILE__, __LINE__),
++            CDiagCompileInfo("c++/src/connect/ncbi_monkey.cpp", __LINE__),
+             NULL, CMonkeyException::e_MonkeyInvalidArgs,
+             ss.str());
+     }
+--- a/c++/src/connect/ncbi_priv.h
++++ b/c++/src/connect/ncbi_priv.h
+@@ -222,7 +222,7 @@ extern NCBI_XCONNECT_EXPORT LOG g_CORE_L
+             _mess.level       = _xx_level;                              \
+             _mess.module      = THIS_MODULE;                            \
+             _mess.func        = CORE_CURRENT_FUNCTION;                  \
+-            _mess.file        = __FILE__;                               \
++            _mess.file        = "c++/src/connect/ncbi_priv.h";                               \
+             _mess.line        = __LINE__;                               \
+             _mess.raw_data    = (_raw_data);                            \
+             _mess.raw_size    = (_raw_size);                            \
+--- a/c++/src/objects/seqfeat/BioSource.cpp
++++ b/c++/src/objects/seqfeat/BioSource.cpp
+@@ -941,7 +941,7 @@ static const char* const s_IgnoreCaseQua
+ };
+ typedef CStaticArraySet<const char*, PNocase_CStr> TCIgnoreCaseQualsSet;
+-static const TCIgnoreCaseQualsSet s_IgnoreCaseQualsSet(s_IgnoreCaseQuals, sizeof(s_IgnoreCaseQuals), __FILE__, __LINE__);
++static const TCIgnoreCaseQualsSet s_IgnoreCaseQualsSet(s_IgnoreCaseQuals, sizeof(s_IgnoreCaseQuals), "c++/src/objects/seqfeat/BioSource.cpp", __LINE__);
+ bool s_MayIgnoreCase(const string& value)
+ {
+@@ -963,7 +963,7 @@ static const char* const s_TaxNameElemen
+ };
+ typedef CStaticArraySet<const char*, PNocase_CStr> TCTaxNameElementQualsSet;
+-static const TCTaxNameElementQualsSet s_TaxNameElementQualsSet(s_TaxNameElementQuals, sizeof(s_TaxNameElementQuals), __FILE__, __LINE__);
++static const TCTaxNameElementQualsSet s_TaxNameElementQualsSet(s_TaxNameElementQuals, sizeof(s_TaxNameElementQuals), "c++/src/objects/seqfeat/BioSource.cpp", __LINE__);
+ bool s_IsTaxNameElement(const string& value)
+ {
+@@ -1376,7 +1376,7 @@ static const char* const s_StopWords[] =
+ };
+ typedef CStaticArraySet<const char*, PNocase_CStr> TCStopWordStrSet;
+-static const TCStopWordStrSet s_StopWordsSet(s_StopWords, sizeof(s_StopWords), __FILE__, __LINE__);
++static const TCStopWordStrSet s_StopWordsSet(s_StopWords, sizeof(s_StopWords), "c++/src/objects/seqfeat/BioSource.cpp", __LINE__);
+ bool CBioSource::IsStopWord(const string& value)
+--- a/c++/src/objects/seqfeat/SubSource.cpp
++++ b/c++/src/objects/seqfeat/SubSource.cpp
+@@ -3225,7 +3225,9 @@ static const char* const s_Countries[] =
+     "Zambia",
+     "Zimbabwe"
+ };
+-static const TCStrSet s_CountriesSet(s_Countries, sizeof(s_Countries), __FILE__, __LINE__);
++static const TCStrSet s_CountriesSet(s_Countries, sizeof(s_Countries),
++                                     "c+++/src/objects/seqfeat/SubSource.cpp",
++                                     __LINE__);
+ // former legal country names, must be in alphabetical order (case sensitive)
+ static const char* const s_Former_Countries[] = {
+@@ -3246,7 +3248,7 @@ static const char* const s_Former_Countr
+     "Yugoslavia",
+     "Zaire"
+ };
+-static const TCStrSet s_Former_CountriesSet(s_Former_Countries, sizeof(s_Former_Countries), __FILE__, __LINE__);
++static const TCStrSet s_Former_CountriesSet(s_Former_Countries, sizeof(s_Former_Countries), "c++/src/objects/seqfeat/SubSource.cpp", __LINE__);
+ // null term exemption values, must be in alphabetical order (case sensitive)
+ static const char* const s_Null_Countries[] = {
+--- a/c++/src/serial/datatool/classstr.cpp
++++ b/c++/src/serial/datatool/classstr.cpp
+@@ -850,7 +850,7 @@ mem_simple = false;
+                         "    if (!CanGet"<< mem_cName<<"()) {\n"
+                         "        ThrowUnassigned("<<member_index;
+ #if 0
+-                    code.Methods(inl) << ", __FILE__, __LINE__";
++                    code.Methods(inl) << ", "c++/src/serial/datatool/classstr.cpp", __LINE__";
+ #endif
+                     code.Methods(inl) << ");\n"
+                         "    }\n";
+--- a/c++/src/serial/serialobject.cpp
++++ b/c++/src/serial/serialobject.cpp
+@@ -299,7 +299,7 @@ void CSerialObject::ThrowUnassigned(TMem
+ // set temporary diag compile info to use argument file name and line
+ #undef DIAG_COMPILE_INFO
+ #define DIAG_COMPILE_INFO                                               \
+-        NCBI_NS_NCBI::CDiagCompileInfo(file_name? file_name: __FILE__,  \
++        NCBI_NS_NCBI::CDiagCompileInfo(file_name? file_name: "c++/src/serial/serialobject.cpp",  \
+                                        file_line? file_line: __LINE__,  \
+                                        NCBI_CURRENT_FUNCTION,           \
+                                        NCBI_MAKE_MODULE(NCBI_MODULE))
+@@ -307,7 +307,7 @@ void CSerialObject::ThrowUnassigned(TMem
+ // restore original diag compile info definition
+ #undef DIAG_COMPILE_INFO
+ #define DIAG_COMPILE_INFO                                               \
+-        NCBI_NS_NCBI::CDiagCompileInfo(__FILE__,                        \
++        NCBI_NS_NCBI::CDiagCompileInfo("c++/src/serial/serialobject.cpp",                        \
+                                        __LINE__,                        \
+                                        NCBI_CURRENT_FUNCTION,           \
+                                        NCBI_MAKE_MODULE(NCBI_MODULE))
+--- a/c++/src/util/lmdb/mdb.c
++++ b/c++/src/util/lmdb/mdb.c
+@@ -1533,7 +1533,7 @@ mdb_strerror(int err)
+ #ifndef NDEBUG
+ # define mdb_assert0(env, expr, expr_txt) ((expr) ? (void)0 : \
+-              mdb_assert_fail(env, expr_txt, mdb_func_, __FILE__, __LINE__))
++              mdb_assert_fail(env, expr_txt, mdb_func_, "c++/src/util/lmdb/mdb.c", __LINE__))
+ static void ESECT
+ mdb_assert_fail(MDB_env *env, const char *expr_txt,
+--- a/c++/src/util/lmdb/mtest.c
++++ b/c++/src/util/lmdb/mtest.c
+@@ -19,7 +19,7 @@
+ #define E(expr) CHECK((rc = (expr)) == MDB_SUCCESS, #expr)
+ #define RES(err, expr) ((rc = expr) == (err) || (CHECK(!rc, #expr), 0))
+ #define CHECK(test, msg) ((test) ? (void)0 : ((void)fprintf(stderr, \
+-      "%s:%d: %s: %s\n", __FILE__, __LINE__, msg, mdb_strerror(rc)), abort()))
++      "%s:%d: %s: %s\n", "c++/src/util/lmdb/mtest.c", __LINE__, msg, mdb_strerror(rc)), abort()))
+ int main(int argc,char * argv[])
+ {
+--- a/c++/src/util/lmdb/mtest2.c
++++ b/c++/src/util/lmdb/mtest2.c
+@@ -22,7 +22,7 @@
+ #define E(expr) CHECK((rc = (expr)) == MDB_SUCCESS, #expr)
+ #define RES(err, expr) ((rc = expr) == (err) || (CHECK(!rc, #expr), 0))
+ #define CHECK(test, msg) ((test) ? (void)0 : ((void)fprintf(stderr, \
+-      "%s:%d: %s: %s\n", __FILE__, __LINE__, msg, mdb_strerror(rc)), abort()))
++      "%s:%d: %s: %s\n", "c++/src/util/lmdb/mtest2.c", __LINE__, msg, mdb_strerror(rc)), abort()))
+ int main(int argc,char * argv[])
+ {
+--- a/c++/src/util/lmdb/mtest3.c
++++ b/c++/src/util/lmdb/mtest3.c
+@@ -22,7 +22,7 @@
+ #define E(expr) CHECK((rc = (expr)) == MDB_SUCCESS, #expr)
+ #define RES(err, expr) ((rc = expr) == (err) || (CHECK(!rc, #expr), 0))
+ #define CHECK(test, msg) ((test) ? (void)0 : ((void)fprintf(stderr, \
+-      "%s:%d: %s: %s\n", __FILE__, __LINE__, msg, mdb_strerror(rc)), abort()))
++      "%s:%d: %s: %s\n", "c++/src/util/lmdb/mtest3.c", __LINE__, msg, mdb_strerror(rc)), abort()))
+ int main(int argc,char * argv[])
+ {
+--- a/c++/src/util/lmdb/mtest4.c
++++ b/c++/src/util/lmdb/mtest4.c
+@@ -22,7 +22,7 @@
+ #define E(expr) CHECK((rc = (expr)) == MDB_SUCCESS, #expr)
+ #define RES(err, expr) ((rc = expr) == (err) || (CHECK(!rc, #expr), 0))
+ #define CHECK(test, msg) ((test) ? (void)0 : ((void)fprintf(stderr, \
+-      "%s:%d: %s: %s\n", __FILE__, __LINE__, msg, mdb_strerror(rc)), abort()))
++      "%s:%d: %s: %s\n", "c++/src/util/lmdb/mtest4.c", __LINE__, msg, mdb_strerror(rc)), abort()))
+ int main(int argc,char * argv[])
+ {
+--- a/c++/src/util/lmdb/mtest5.c
++++ b/c++/src/util/lmdb/mtest5.c
+@@ -22,7 +22,7 @@
+ #define E(expr) CHECK((rc = (expr)) == MDB_SUCCESS, #expr)
+ #define RES(err, expr) ((rc = expr) == (err) || (CHECK(!rc, #expr), 0))
+ #define CHECK(test, msg) ((test) ? (void)0 : ((void)fprintf(stderr, \
+-      "%s:%d: %s: %s\n", __FILE__, __LINE__, msg, mdb_strerror(rc)), abort()))
++      "%s:%d: %s: %s\n", "c++/src/util/lmdb/mtest5.c", __LINE__, msg, mdb_strerror(rc)), abort()))
+ int main(int argc,char * argv[])
+ {
+--- a/c++/src/util/lmdb/mtest6.c
++++ b/c++/src/util/lmdb/mtest6.c
+@@ -22,7 +22,7 @@
+ #define E(expr) CHECK((rc = (expr)) == MDB_SUCCESS, #expr)
+ #define RES(err, expr) ((rc = expr) == (err) || (CHECK(!rc, #expr), 0))
+ #define CHECK(test, msg) ((test) ? (void)0 : ((void)fprintf(stderr, \
+-      "%s:%d: %s: %s\n", __FILE__, __LINE__, msg, mdb_strerror(rc)), abort()))
++      "%s:%d: %s: %s\n", "c++/src/util/lmdb/mtest6.c", __LINE__, msg, mdb_strerror(rc)), abort()))
+ char dkbuf[1024];
+--- a/c++/src/util/regexp/pcre_scanner_unittest.cc
++++ b/c++/src/util/regexp/pcre_scanner_unittest.cc
+@@ -51,7 +51,7 @@
+ #define CHECK_EQ(a, b)  do {                                    \
+   if ( (a) != (b) ) {                                           \
+     fprintf(stderr, "%s:%d: Check failed because %s != %s\n",   \
+-            __FILE__, __LINE__, #a, #b);                        \
++            "c++/src/util/regexp/pcre_scanner_unittest.cc", __LINE__, #a, #b);                        \
+     exit(1);                                                    \
+   }                                                             \
+ } while (0)
+--- a/c++/src/util/regexp/pcre_stringpiece_unittest.cc
++++ b/c++/src/util/regexp/pcre_stringpiece_unittest.cc
+@@ -19,7 +19,7 @@
+ #define CHECK(condition) do {                           \
+   if (!(condition)) {                                   \
+     fprintf(stderr, "%s:%d: Check failed: %s\n",        \
+-            __FILE__, __LINE__, #condition);            \
++            "c++/src/util/regexp/pcre_stringpiece_unittest.cc", __LINE__, #condition);            \
+     exit(1);                                            \
+   }                                                     \
+ } while (0)
+--- a/c++/src/util/static_set.cpp
++++ b/c++/src/util/static_set.cpp
+@@ -87,7 +87,7 @@ void CArrayHolder::Convert(const void* s
+           TParamStaticArrayCopyWarning::GetDefault()) ) {
+         // report incorrect usage
+         CDiagCompileInfo diag_compile_info
+-            (file? file: __FILE__,
++            (file? file: "c++/src/util/static_set.cpp",
+              file? line: __LINE__,
+              NCBI_CURRENT_FUNCTION,
+              NCBI_MAKE_MODULE(NCBI_MODULE));
+@@ -122,7 +122,7 @@ void ReportUnsafeStaticType(const char*
+     if ( TParamStaticArrayUnsafeTypeWarning::GetDefault() ) {
+         // report incorrect usage
+         CDiagCompileInfo diag_compile_info
+-            (file? file: __FILE__,
++            (file? file: "c++/src/util/static_set.cpp",
+              file? line: __LINE__,
+              NCBI_CURRENT_FUNCTION,
+              NCBI_MAKE_MODULE(NCBI_MODULE));
+@@ -145,7 +145,7 @@ void ReportIncorrectOrder(size_t curr_in
+ {
+     { // report incorrect usage
+         CDiagCompileInfo diag_compile_info
+-            (file? file: __FILE__,
++            (file? file: "c++/src/util/static_set.cpp",
+              file? line: __LINE__,
+              NCBI_CURRENT_FUNCTION,
+              NCBI_MAKE_MODULE(NCBI_MODULE));
diff --git a/patches/run_perl_directly b/patches/run_perl_directly
new file mode 100644 (file)
index 0000000..af73bca
--- /dev/null
@@ -0,0 +1,12 @@
+Author: Aaron M. Ucko <ucko@debian.org>
+Date:   Wed, 01 Dec 2021 21:38:20 -0500
+Description: Bypass env in Perl script shebangs.
+
+--- a/c++/src/app/blast/update_blastdb.pl
++++ b/c++/src/app/blast/update_blastdb.pl
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env perl
++#!/usr/bin/perl
+ # $Id: update_blastdb.pl 681901 2024-04-17 13:16:37Z ivanov $
+ # ===========================================================================
+ #
diff --git a/patches/series b/patches/series
new file mode 100644 (file)
index 0000000..d754932
--- /dev/null
@@ -0,0 +1,23 @@
+system_mbedtls_only
+support_mbedtls3
+allow_pcre2
+optin_usage_report
+enable_clean_after_failed_compile
+hurd_fixes
+legacy_rename_rpsblast
+fix_lib_deps
+no_multiarch_rpath
+use_pie_for_apps
+skip_services_unit_test
+fix_configure
+support_x32
+suppress_tls_version_checks
+optionally_keep_sequence
+fix_unit_tests
+# reprobuild
+spelling
+support_gcc10
+run_perl_directly
+tune_lmdb_defaults
+2to3
+big_endian_workaround
diff --git a/patches/skip_services_unit_test b/patches/skip_services_unit_test
new file mode 100644 (file)
index 0000000..309f944
--- /dev/null
@@ -0,0 +1,16 @@
+Subject: remove network required test
+Author: Tim Booth
+Forwarded: no
+Description: test require internet connection
+Last-Updated: 2013-06-01
+--- a/c++/src/objtools/blast/services/unit_test/Makefile.blast_services_unit_test.app
++++ b/c++/src/objtools/blast/services/unit_test/Makefile.blast_services_unit_test.app
+@@ -12,6 +12,7 @@ LIB = test_boost blast_services xnetblas
+ LIBS = $(BLAST_THIRD_PARTY_LIBS) $(NETWORK_LIBS) $(CMPRS_LIBS) $(DL_LIBS) \
+        $(ORIG_LIBS)
+-CHECK_CMD = blast_services_unit_test
++# This test requires an internet connection, shouldn't be run on a build server
++# CHECK_CMD = blast_services_unit_test
+ WATCHERS = madden camacho
diff --git a/patches/spelling b/patches/spelling
new file mode 100644 (file)
index 0000000..c533552
--- /dev/null
@@ -0,0 +1,185 @@
+From: Michael R. Crusoe <michael.crusoe@gmail.com>
+Subject: Spelling fixes
+--- a/c++/include/objtools/alnmgr/seqids_extractor.hpp
++++ b/c++/include/objtools/alnmgr/seqids_extractor.hpp
+@@ -232,7 +232,7 @@ public:
+                         else if (*id_vec[i] != *id) {
+                             string err("Inconsistent Seq-ids found in seg ");
+                             err += NStr::NumericToString(i) +
+-                                ".  Excpected " + id_vec[i]->AsString() +
++                                ".  Expected " + id_vec[i]->AsString() +
+                                 ", encountered " + id->AsString() + ".";
+                             NCBI_THROW(CAlnException, eInvalidSeqId, err);
+                         }
+--- a/c++/src/algo/winmask/seq_masker_ostat_factory.cpp
++++ b/c++/src/algo/winmask/seq_masker_ostat_factory.cpp
+@@ -75,7 +75,7 @@ CSeqMaskerOstat * CSeqMaskerOstatFactory
+         }
+         else NCBI_THROW( CSeqMaskerOstatFactoryException,
+                          eBadName,
+-                         "unkown unit counts format" );
++                         "unknown unit counts format" );
+     }
+     catch( CException & e ) {
+         NCBI_RETHROW( e, CSeqMaskerOstatFactoryException, eCreateFail,
+@@ -113,7 +113,7 @@ CSeqMaskerOstat * CSeqMaskerOstatFactory
+         }
+         else NCBI_THROW( CSeqMaskerOstatFactoryException,
+                          eBadName,
+-                         "unkown unit counts format" );
++                         "unknown unit counts format" );
+     }
+     catch( CException & e ) {
+         NCBI_RETHROW( e, CSeqMaskerOstatFactoryException, eCreateFail,
+--- a/c++/src/app/blastdb/blastdbcheck.cpp
++++ b/c++/src/app/blastdb/blastdbcheck.cpp
+@@ -245,7 +245,7 @@ void CBlastDbCheckApplication::Init(void
+          "Require that all sequences in the database have taxid set.");
+     arg_desc->AddFlag
+-        ("cdd_delta", "Do aditional tests for a CDD database for DELTA-BLAST");
++        ("cdd_delta", "Do additional tests for a CDD database for DELTA-BLAST");
+     // Setup arg.descriptions for this application
+     SetupArgDescriptions(arg_desc.release());
+--- a/c++/src/app/blastdb/makeprofiledb.cpp
++++ b/c++/src/app/blastdb/makeprofiledb.cpp
+@@ -1838,7 +1838,7 @@ bool CMakeProfileDBApp::x_CheckDelta( co
+     if( !x_ValidateCd(freqs, obsr, BLASTAA_SIZE) && m_ExcludeInvalid)
+     {
+       *m_LogFile << filename +
+-                      " was excluded: it conatins an invalid CD \n";
++                      " was excluded: it contains an invalid CD \n";
+       return false;
+     }
+     return true;
+--- a/c++/src/objects/seqalign/Dense_seg.cpp
++++ b/c++/src/objects/seqalign/Dense_seg.cpp
+@@ -980,7 +980,7 @@ void CDense_seg::RemapToLoc(TDim row, co
+             if (loc_plus != (seq_loc_i.GetStrand() != eNa_strand_minus)) {
+                 NCBI_THROW(CSeqalignException, eInvalidInputData,
+                            "CDense_seg::RemapToLoc():"
+-                           " The strand should be the same accross"
++                           " The strand should be the same across"
+                            " the input seq-loc");
+             }
+         }
+--- a/c++/src/objects/seqalign/Seq_align.cpp
++++ b/c++/src/objects/seqalign/Seq_align.cpp
+@@ -872,7 +872,7 @@ CSeq_align::CreateDensegFromStdseg(SSeqI
+         if (dim != ss.GetDim()  ||  row != dim) {
+             NCBI_THROW(CSeqalignException, eInvalidInputAlignment,
+                        "CreateDensegFromStdseg(): "
+-                       "Inconsistent dimentions!");
++                       "Inconsistent dimensions!");
+         }
+         if (widths_determined[seg]) {
+--- a/c++/src/objects/seqfeat/institution_codes.inc
++++ b/c++/src/objects/seqfeat/institution_codes.inc
+@@ -791,7 +791,7 @@ static const char* const kInstitutionCol
+ "BPPT-ESC\tc\tBPPT Ethanol-Single Cell Protein-Fructose Syrup Technical Unit\t\t\t",
+ "BPU\ts\tEoetvoes Lorand University, Department of Plant Taxonomy and Ecology\t\t\t",
+ "BR<BEL>\ts\tBotanic Garden Meise\t\t\t",
+-"BR<BRA>\tc\tJohanna Dobereiner Biological Resouce Center (CRB-JD)\t\t\t",
++"BR<BRA>\tc\tJohanna Dobereiner Biological Resource Center (CRB-JD)\t\t\t",
+ "BRA\ts\tSlovak National Museum, Botany Department\t\t\t",
+ "BRAD\ts\tUniversity of Bradford, Biology Department\t\t\t",
+ "BRB\ts\tBrassica Resource Bank\t\t\t",
+--- a/c++/src/objects/seqfeat/institution_codes.txt
++++ b/c++/src/objects/seqfeat/institution_codes.txt
+@@ -755,7 +755,7 @@ BPM        s       Beipiao Paleontological Museum
+ BPPT-ESC      c       BPPT Ethanol-Single Cell Protein-Fructose Syrup Technical Unit                  
+ BPU   s       Eoetvoes Lorand University, Department of Plant Taxonomy and Ecology                    
+ BR<BEL>       s       Botanic Garden Meise                    
+-BR<BRA>       c       Johanna Dobereiner Biological Resouce Center (CRB-JD)                   
++BR<BRA>       c       Johanna Dobereiner Biological Resource Center (CRB-JD)                  
+ BRA   s       Slovak National Museum, Botany Department                       
+ BRAD  s       University of Bradford, Biology Department                      
+ BRB   s       Brassica Resource Bank                  
+--- a/c++/src/objmgr/util/sequence.cpp
++++ b/c++/src/objmgr/util/sequence.cpp
+@@ -385,7 +385,7 @@ string GetProteinName(const CBioseq_Hand
+     if ( best_feats.empty() ) {
+         NCBI_THROW_FMT(CObjMgrException, eFindFailed,
+                        "GetProteinName("<<GetId(seq, eGetId_Best)<<"): "
+-                       "the sequence does't have prot feature");
++                       "the sequence doesn't have prot feature");
+     }
+     if ( best_feats.size() > 1 ) {
+         NCBI_THROW_FMT(CObjMgrException, eFindConflict,
+--- a/c++/src/objtools/align_format/taxFormat.cpp
++++ b/c++/src/objtools/align_format/taxFormat.cpp
+@@ -616,7 +616,7 @@ void CTaxFormat::x_LoadTaxTree(void)
+             }            
+         }
+         if (!tax_load_ok) {
+-            NCBI_THROW(CException, eUnknown,"Taxonomic load was not successfull.");
++            NCBI_THROW(CException, eUnknown,"Taxonomic load was not successful.");
+         }
+         m_TaxTreeLoaded = true;
+             
+--- a/c++/src/objtools/format/flat_file_config.cpp
++++ b/c++/src/objtools/format/flat_file_config.cpp
+@@ -655,7 +655,7 @@ void CFlatFileConfig::AddArgumentDescrip
+          // from
+          arg_desc->AddOptionalKey("from", "From",
+-                                  "Begining of shown range", CArgDescriptions::eInteger);
++                                  "Beginning of shown range", CArgDescriptions::eInteger);
+          // to
+          arg_desc->AddOptionalKey("to", "To",
+--- a/c++/src/objtools/readers/agp_converter.cpp
++++ b/c++/src/objtools/readers/agp_converter.cpp
+@@ -728,7 +728,7 @@ void CAgpConverter::x_SetUpObjectOpening
+         submit_block_writer.WriteObject(m_pSubmitBlock.GetPointer(), m_pSubmitBlock->GetThisTypeInfo());
+         submit_block_writer.Flush();
+         seq_sub_header_strm << "," << endl;
+-        seq_sub_header_strm << "data entrys {" << endl;
++        seq_sub_header_strm << "data entries {" << endl;
+         out_sObjectOpeningString = seq_sub_header_strm.str();
+         out_sObjectClosingString = "} }" + out_sObjectClosingString;
+--- a/c++/src/objtools/readers/agp_util.cpp
++++ b/c++/src/objtools/readers/agp_util.cpp
+@@ -173,7 +173,7 @@ const CAgpErr::TStr CAgpErr::s_msg[]= {
+     "object_beg != previous object_end + 1",
+     "no valid AGP lines",
+-    "consequtive gaps lines with the same type and linkage",
++    "consecutive gaps lines with the same type and linkage",
+     "in \"Scaffold from component\" file, invalid scaffold-breaking gap",
+     "in \"Chromosome from scaffold\" file, invalid \"within-scaffold\" gap",
+@@ -193,7 +193,7 @@ const CAgpErr::TStr CAgpErr::s_msg[]= {
+     // Content Warnings
+     "gap at the end of object (OK if X is the circular chromosome/plasmid)",
+     "gap at the beginning of object ",
+-    "two consequtive gap lines (e.g. a gap at the end of "
++    "two consecutive gap lines (e.g. a gap at the end of "
+         "a scaffold, two non scaffold-breaking gaps, ...)",
+     "no components in object",
+     "the span overlaps a previous span for this component",
+--- a/c++/src/objtools/readers/agp_validate_reader.cpp
++++ b/c++/src/objtools/readers/agp_validate_reader.cpp
+@@ -300,7 +300,7 @@ void CAgpValidateReader::OnGapOrComponen
+       int prev_comp_file=spans.rbegin()->file_num;
+       int prev_comp_line=spans.rbegin()->line_num;
+       if(prev_comp_file < m_last_scaf_start_file || prev_comp_line < m_last_scaf_start_line) {
+-        sameComId_otherScaf="; previous occurance at ";
++        sameComId_otherScaf="; previous occurrence at ";
+         if(prev_comp_file && prev_comp_file!=m_AgpErr->GetFileNum()) {
+           sameComId_otherScaf += m_AgpErr->GetFile(prev_comp_file);
+           sameComId_otherScaf += ":";
+--- a/c++/src/util/compress/api/compress.cpp
++++ b/c++/src/util/compress/api/compress.cpp
+@@ -165,7 +165,7 @@ bool CCompression::x_DecompressFile(CCom
+     while ( (nread = src_file.Read(buf.get(), file_io_bufsize)) > 0 ) {
+         os.write(buf.get(), nread);
+         if ( !os.good() ) {
+-            SetError(-1, "Error writing to ouput file");
++            SetError(-1, "Error writing to output file");
+             return false;
+         }
+     }
diff --git a/patches/support_gcc10 b/patches/support_gcc10
new file mode 100644 (file)
index 0000000..9af97f4
--- /dev/null
@@ -0,0 +1,20 @@
+Author: Aaron M. Ucko <ucko@debian.org>
+Date:   Sun Sep 06 22:57:35 2020 -0400
+Description: Support GCC 10+.
+Debian-Bug: 957581.
+
+* ncbifile.cpp (s_GetFileSystemInfo): Formally cast st.f_type to avoid
+  narrowing errors for cases with the high bit set when that field is
+  a 32-bit signed integer (as on i386).
+
+--- a/c++/src/corelib/ncbifile.cpp
++++ b/c++/src/corelib/ncbifile.cpp
+@@ -5178,7 +5178,7 @@ void s_GetFileSystemInfo(const string&
+     
+     GET_STATFS_INFO;
+     if (flags & (fFSI_Type | fFSI_DiskSpace)) {
+-        switch (st.f_type) {
++        switch (static_cast<Uint4>(st.f_type)) {
+             case 0xADF5:      info->fs_type = CFileUtil::eADFS;     break;
+             case 0xADFF:      info->fs_type = CFileUtil::eAFFS;     break;
+             case 0x5346414F:  info->fs_type = CFileUtil::eAFS;      break;
diff --git a/patches/support_mbedtls3 b/patches/support_mbedtls3
new file mode 100644 (file)
index 0000000..3519541
--- /dev/null
@@ -0,0 +1,222 @@
+From 4395feafcadc4b74f749ce421a530922e5f58047 Mon Sep 17 00:00:00 2001
+From: ucko <ucko@ncbi.nlm.nih.gov>
+Date: Tue, 23 Apr 2024 19:21:48 +0000
+Subject: [PATCH] Accommodate Mbed TLS 3.x (specifically, 3.6.0 LTS).
+
+- Conditionally pass mbedtls_pk_parse_key the existing pRNG and its state.
+- Call psa_crypto_init during setup, as PSA may be in play even when not
+  explicitly enabled.  Documentation suggests calling it as early as
+  possible; in practice, though, holding off until after pRNG
+  initialization avoids "insufficient entropy" errors under 2.x (at least
+  2.28.8 LTS on Linux) and still works fine as of 3.6.0.
+- At least for now, ensure that MBEDTLS_SSL_VERIFY_NONE remains effective
+  by additionally capping the TLS version at 1.2; as of 1.3, certificate
+  checking has become mandatory, and Mbed TLS respects that requirement.
+- Additional tuneups to ncbi_mbedtls.c-only code:
+-- Account for error-code macro repertoire changes by conditionalizing
+   major-version-specific macros on their availability and specifically
+   checking for or emitting MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED (new)
+   as appropriate,
+-- x_ErrorToStatus: Conditionally use MBEDTLS_PRIVATE for p_bio, which has
+   no accessor.
+-- x_MbedTlsWrite: Substitute mbedtls_ssl_get_max_out_record_payload for
+   mbedtls_ssl_get_output_max_frag_len, which didn't account for other
+   relevant considerations and is now fully private.
+
+https://github.com/Mbed-TLS/mbedtls/blob/development/docs/3.0-migration-guide.md
+supplied useful guidance.  JIRA: CXX-13565.
+
+git-svn-id: https://anonsvn.ncbi.nlm.nih.gov/repos/v1/trunk/c++@102329 78c7ea69-d796-4a43-9a09-de51944f1b03
+---
+ c++/src/connect/ncbi_mbedtls.c      | 44 ++++++++++++++++++++++++++++++---
+ c++/src/connect/ncbi_priv.h         |  2 +-
+ c++/src/connect/ncbi_uv_nghttp2.cpp | 22 ++++++++++++++++-
+ 3 files changed, 63 insertions(+), 5 deletions(-)
+
+--- a/c++/src/connect/ncbi_mbedtls.c
++++ b/c++/src/connect/ncbi_mbedtls.c
+@@ -52,6 +52,7 @@
+ #    include <mbedtls/ssl.h>
+ #    include <mbedtls/threading.h>
+ #    include <mbedtls/version.h>
++#    include <psa/crypto.h>
+ #  if   defined(ENOTSUP)
+ #    define NCBI_NOTSUPPORTED  ENOTSUP
+@@ -101,7 +102,11 @@ static int mbtls_user_mutex_lock(MT_LOCK
+     if (lock) {
+         switch (MT_LOCK_Do(*lock, eMT_Lock)) {
+         case -1:
++#ifdef MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE
+             return MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE;
++#else
++            return MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED;
++#endif
+         case  0:
+             return MBEDTLS_ERR_THREADING_MUTEX_ERROR;
+         case  1:
+@@ -117,7 +122,11 @@ static int mbtls_user_mutex_unlock(MT_LO
+     if (lock) {
+         switch (MT_LOCK_Do(*lock, eMT_Unlock)) {
+         case -1:
++#ifdef MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE
+             return MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE;
++#else
++            return MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED;
++#endif
+         case  0:
+             return MBEDTLS_ERR_THREADING_MUTEX_ERROR;
+         case  1:
+@@ -214,7 +223,11 @@ static EIO_Status x_ErrorToStatus(int er
+     if (!error)
+         return eIO_Success;
++#if MBEDTLS_VERSION_MAJOR >= 3
++    sock = ((SNcbiSSLctx*)(session->MBEDTLS_PRIVATE(p_bio)))->sock;
++#else
+     sock = ((SNcbiSSLctx*)(session->p_bio))->sock;
++#endif
+     switch (error) {
+     case MBEDTLS_ERR_SSL_WANT_READ:
+         status = x_RetryStatus(sock, direction);
+@@ -225,11 +238,20 @@ static EIO_Status x_ErrorToStatus(int er
+     case MBEDTLS_ERR_SSL_TIMEOUT:
+         status = eIO_Timeout;
+         break;
++#ifdef MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE
+     case MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE:
++#endif
++#ifdef MBEDTLS_ERR_SSL_NO_USABLE_CIPHERSUITE
+     case MBEDTLS_ERR_SSL_NO_USABLE_CIPHERSUITE:
++#endif
+     case MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE:
++#ifdef MBEDTLS_ERR_SSL_UNKNOWN_CIPHER
+     case MBEDTLS_ERR_SSL_UNKNOWN_CIPHER:
++#endif
+     case MBEDTLS_ERR_SSL_INTERNAL_ERROR:
++#ifdef MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED
++    case MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED:
++#endif
+         status = eIO_NotSupported;
+         break;
+     case MBEDTLS_ERR_THREADING_BAD_INPUT_DATA:
+@@ -574,8 +596,8 @@ static EIO_Status x_MbedTlsWrite(void* s
+ static EIO_Status s_MbedTlsWrite(void* session, const void* data,
+                                  size_t n_todo, size_t* n_done, int* error)
+ {
+-    size_t max_size
+-        = mbedtls_ssl_get_output_max_frag_len((mbedtls_ssl_context*) session);
++    size_t max_size = mbedtls_ssl_get_max_out_record_payload
++        ((mbedtls_ssl_context*) session);
+     EIO_Status status;
+     *n_done = 0;
+@@ -714,6 +736,7 @@ static EIO_Status s_MbedTlsInit(FSSLPull
+     char version[80];
+     const char* val;
+     char buf[32];
++    psa_status_t psa_status;
+     mbedtls_version_get_string(version);
+     if (strcasecmp(MBEDTLS_VERSION_STRING, version) != 0) {
+@@ -734,6 +757,11 @@ static EIO_Status s_MbedTlsInit(FSSLPull
+                                 MBEDTLS_SSL_TRANSPORT_STREAM,
+                                 MBEDTLS_SSL_PRESET_DEFAULT);
+     mbedtls_ssl_conf_authmode(&s_MbedTlsConf, MBEDTLS_SSL_VERIFY_NONE);
++#if MBEDTLS_VERSION_MAJOR >= 3
++    /* The above line can otherwise be ineffective. */
++    mbedtls_ssl_conf_max_tls_version(&s_MbedTlsConf,
++                                     MBEDTLS_SSL_VERSION_TLS1_2);
++#endif
+     /* Check CONN_[MBED]TLS_LOGLEVEL or [CONN][MBED]TLS_LOGLEVEL */
+     val = ConnNetInfo_GetValueInternal(0, "MBED" REG_CONN_TLS_LOGLEVEL,
+@@ -781,6 +809,12 @@ static EIO_Status s_MbedTlsInit(FSSLPull
+     mbedtls_ssl_conf_rng(&s_MbedTlsConf,
+                          mbedtls_ctr_drbg_random, &s_MbedTlsCtrDrbg);
++    if ((psa_status = psa_crypto_init()) != PSA_SUCCESS) {
++        CORE_LOGF_X(51, eLOG_Error,
++                    ("psa_crypto_init failed with status %d", psa_status));
++        return eIO_NotSupported;
++    }
++
+     s_Pull = pull;
+     s_Push = push;
+@@ -957,7 +991,11 @@ NCBI_CRED NcbiCreateMbedTlsCertCredentia
+     err = mbedtls_pk_parse_key(xcred->pkey,
+                                (const unsigned char*) pkey, pkeysz ? pkeysz
+-                               : strlen((const char*) pkey) + 1, 0, 0);
++                               : strlen((const char*) pkey) + 1, 0, 0
++#if MBEDTLS_VERSION_MAJOR >= 3
++                               , mbedtls_ctr_drbg_random, &s_MbedTlsCtrDrbg
++#endif
++                               );
+     if (err) {
+         mbedtls_strerror(err, errbuf, sizeof(errbuf) - 1);
+         CORE_LOG_ERRNO_EXX(12, eLOG_Error, err, errbuf,
+--- a/c++/src/connect/ncbi_priv.h
++++ b/c++/src/connect/ncbi_priv.h
+@@ -101,7 +101,7 @@ NCBI_C_DEFINE_ERRCODE_X(Connect_SMTP,
+ NCBI_C_DEFINE_ERRCODE_X(Connect_HTTP,          307,  26);
+ NCBI_C_DEFINE_ERRCODE_X(Connect_Service,       308,  10);
+ NCBI_C_DEFINE_ERRCODE_X(Connect_HeapMgr,       309,  34);
+-NCBI_C_DEFINE_ERRCODE_X(Connect_TLS,           310,  50);
++NCBI_C_DEFINE_ERRCODE_X(Connect_TLS,           310,  51);
+ NCBI_C_DEFINE_ERRCODE_X(Connect_Mghbn,         311,  16);
+ NCBI_C_DEFINE_ERRCODE_X(Connect_Crypt,         312,   5);
+ NCBI_C_DEFINE_ERRCODE_X(Connect_LocalIP,       313,   5);
+--- a/c++/src/connect/ncbi_uv_nghttp2.cpp
++++ b/c++/src/connect/ncbi_uv_nghttp2.cpp
+@@ -40,6 +40,8 @@
+ #include <corelib/ncbiapp.hpp>
+ #include <corelib/request_ctx.hpp>
++#include <psa/crypto.h>
++
+ BEGIN_NCBI_SCOPE
+ #define NCBI_UV_WRITE_TRACE(message)        _TRACE(message)
+@@ -701,6 +703,10 @@ SUvNgHttp2_TlsImpl::SUvNgHttp2_TlsImpl(c
+     }
+     mbedtls_ssl_conf_authmode(&m_Conf, MBEDTLS_SSL_VERIFY_NONE);
++#if MBEDTLS_VERSION_MAJOR >= 3
++    /* The above line can otherwise be ineffective. */
++    mbedtls_ssl_conf_max_tls_version(&m_Conf, MBEDTLS_SSL_VERSION_TLS1_2);
++#endif
+     mbedtls_entropy_init(&m_Entropy);
+     mbedtls_ctr_drbg_init(&m_CtrDrbg);
+     mbedtls_x509_crt_init(&m_Cert);
+@@ -714,6 +720,14 @@ SUvNgHttp2_TlsImpl::SUvNgHttp2_TlsImpl(c
+     }
+     mbedtls_ssl_conf_rng(&m_Conf, mbedtls_ctr_drbg_random, &m_CtrDrbg);
++    auto p_rv = psa_crypto_init();
++
++    if (p_rv != PSA_SUCCESS) {
++        NCBI_UVNGHTTP2_TLS_TRACE(this << " psa_crypto_init: error code"
++                                 << p_rv);
++        return;
++    }
++
+     mbedtls_ssl_conf_alpn_protocols(&m_Conf, m_Protocols.data());
+     mbedtls_ssl_init(&m_Ssl);
+@@ -748,7 +762,13 @@ SUvNgHttp2_TlsImpl::SUvNgHttp2_TlsImpl(c
+         return;
+     }
+-    auto pk_rv = mbedtls_pk_parse_key(&m_Pkey, reinterpret_cast<const unsigned char*>(pkey.data()), pkey.size() + 1, nullptr, 0);
++    auto pk_rv = mbedtls_pk_parse_key(
++        &m_Pkey, reinterpret_cast<const unsigned char*>(pkey.data()),
++        pkey.size() + 1, nullptr, 0
++#if MBEDTLS_VERSION_MAJOR >= 3
++        , mbedtls_ctr_drbg_random, &m_CtrDrbg
++#endif
++        );
+     if (pk_rv) {
+         NCBI_UVNGHTTP2_TLS_TRACE(this << " mbedtls_pk_parse_key: " << SUvNgHttp2_Error::MbedTlsStr(pk_rv));
diff --git a/patches/support_x32 b/patches/support_x32
new file mode 100644 (file)
index 0000000..7e166d8
--- /dev/null
@@ -0,0 +1,16 @@
+Author: Aaron M. Ucko <ucko@debian.org>
+Date:   Wed, 01 Dec 2021 21:37:42 -0500
+Description: Support x32
+
+Avoid picking up wrong inline assembly.
+--- a/c++/include/corelib/impl/ncbi_atomic_defs.h
++++ b/c++/include/corelib/impl/ncbi_atomic_defs.h
+@@ -120,7 +120,7 @@ extern "C" {
+   (defined(__i386)  ||  defined(__sparc)  ||  defined(__x86_64)  || \
+    defined(__aarch64__))  && \
+   (!defined(__GLIBCXX__)  ||  !defined(NCBI_TCHECK))
+-#  if defined(__x86_64)  ||  defined(__aarch64__)
++#  if (defined(__x86_64)  &&  !defined(_ILP32))  ||  defined(__aarch64__)
+ #    define NCBI_COUNTER_64_BIT
+ #  endif
+ #  ifdef NCBI_COUNTER_64_BIT
diff --git a/patches/suppress_tls_version_checks b/patches/suppress_tls_version_checks
new file mode 100644 (file)
index 0000000..6669ec0
--- /dev/null
@@ -0,0 +1,43 @@
+Author: Aaron M. Ucko <ucko@debian.org>
+Date:   Wed, 01 Dec 2021 22:08:16 -0500
+Description: suppress gnu TLS and mbed TLS version checks
+    
+    Prevent bailing when the exact compile-time and runtime GNU TLS versions
+    differ; trust dpkg to disallow combinations that are actually incompatible.
+    Likewise for mbed TLS.
+
+--- a/c++/src/connect/ncbi_gnutls.c
++++ b/c++/src/connect/ncbi_gnutls.c
+@@ -748,6 +748,7 @@ static EIO_Status s_GnuTlsInit(FSSLPull
+     assert(!s_GnuTlsCredAnon);
++#if 0
+     version = gnutls_check_version(0);
+     if (strcasecmp(GNUTLS_VERSION, version) != 0) {
+         CORE_LOGF_X(26, eLOG_Critical,
+@@ -755,6 +756,7 @@ static EIO_Status s_GnuTlsInit(FSSLPull
+                      GNUTLS_VERSION, version));
+         assert(0);
+     }
++#endif
+     CORE_TRACE("GnuTlsInit(): Enter");
+--- a/c++/src/connect/ncbi_mbedtls.c
++++ b/c++/src/connect/ncbi_mbedtls.c
+@@ -739,12 +739,14 @@ static EIO_Status s_MbedTlsInit(FSSLPull
+     psa_status_t psa_status;
+     mbedtls_version_get_string(version);
++#if 0
+     if (strcasecmp(MBEDTLS_VERSION_STRING, version) != 0) {
+         CORE_LOGF_X(5, eLOG_Critical,
+                     ("%s version mismatch: %s headers vs. %s runtime",
+                      kMbedTls, MBEDTLS_VERSION_STRING, version));
+         assert(0);
+     }
++#endif
+     CORE_TRACE("MbedTlsInit(): Enter");
diff --git a/patches/system_mbedtls_only b/patches/system_mbedtls_only
new file mode 100644 (file)
index 0000000..2f381dd
--- /dev/null
@@ -0,0 +1,76 @@
+Author: Aaron M. Ucko <amu@ucko.debian.net>
+Date:   Wed, 01 Dec 2021 23:33:11 -0500
+Subject: Omit convenience mbed TLS copy
+--- a/c++/src/connect/Makefile.connssl.lib
++++ b/c++/src/connect/Makefile.connssl.lib
+@@ -1,8 +1,10 @@
+ # $Id: Makefile.connssl.lib 642488 2021-12-20 21:00:34Z ucko $
+-CPPFLAGS = $(TLS_INCLUDE) -I$(srcdir)/mbedtls $(ORIG_CPPFLAGS)
++CPPFLAGS = $(TLS_INCLUDE) $(ORIG_CPPFLAGS)
+-SRC_TLS  = ncbi_gnutls ncbi_mbedtls ncbi_tls \
++SRC_TLS  = ncbi_gnutls ncbi_mbedtls ncbi_tls
++
++SRC_MBEDTLS_UNUSED = \
+            mbedtls/aes mbedtls/aesni mbedtls/arc4 mbedtls/aria \
+            mbedtls/asn1parse mbedtls/asn1write mbedtls/base64 mbedtls/bignum \
+            mbedtls/blowfish mbedtls/camellia mbedtls/ccm mbedtls/chacha20 \
+--- a/c++/src/connect/connect_misc_impl.hpp
++++ b/c++/src/connect/connect_misc_impl.hpp
+@@ -30,11 +30,10 @@
+  *
+  */
+-#include "mbedtls/mbedtls/ncbicxx_rename_mbedtls.h"
+-#include "mbedtls/mbedtls/error.h"
+-#include "mbedtls/mbedtls/ctr_drbg.h"
+-#include "mbedtls/mbedtls/entropy.h"
+-#include "mbedtls/mbedtls/ssl.h"
++#include <mbedtls/error.h>
++#include <mbedtls/ctr_drbg.h>
++#include <mbedtls/entropy.h>
++#include <mbedtls/ssl.h>
+ #include <corelib/ncbimisc.hpp>
+--- a/c++/src/connect/ncbi_mbedtls.c
++++ b/c++/src/connect/ncbi_mbedtls.c
+@@ -43,7 +43,6 @@
+ #if defined(HAVE_LIBMBEDTLS)  ||  defined(NCBI_CXX_TOOLKIT)
+-#  ifdef HAVE_LIBMBEDTLS  /* external */
+ #    include <mbedtls/ctr_drbg.h>
+ #    include <mbedtls/debug.h>
+ #    include <mbedtls/entropy.h>
+@@ -53,17 +52,6 @@
+ #    include <mbedtls/ssl.h>
+ #    include <mbedtls/threading.h>
+ #    include <mbedtls/version.h>
+-#  else                   /* embedded */
+-#    include "mbedtls/mbedtls/ctr_drbg.h"
+-#    include "mbedtls/mbedtls/debug.h"
+-#    include "mbedtls/mbedtls/entropy.h"
+-#    include "mbedtls/mbedtls/error.h"
+-#    include "mbedtls/mbedtls/pk.h"
+-#    include "mbedtls/mbedtls/net_sockets.h"
+-#    include "mbedtls/mbedtls/ssl.h"
+-#    include "mbedtls/mbedtls/threading.h"
+-#    include "mbedtls/mbedtls/version.h"
+-#  endif /*HAVE_LIBMBEDTLS*/
+ #  if   defined(ENOTSUP)
+ #    define NCBI_NOTSUPPORTED  ENOTSUP
+--- a/c++/src/connect/Makefile.xxconnect2.lib
++++ b/c++/src/connect/Makefile.xxconnect2.lib
+@@ -9,8 +9,7 @@ REQUIRES = LIBUV NGHTTP2
+ LIB_OR_DLL = both
+ DLL_LIB = xconnect
+-CPPFLAGS = $(LIBUV_INCLUDE) $(NGHTTP2_INCLUDE) $(TLS_INCLUDE) \
+-           -I$(srcdir)/mbedtls $(ORIG_CPPFLAGS)
++CPPFLAGS = $(LIBUV_INCLUDE) $(NGHTTP2_INCLUDE) $(TLS_INCLUDE) $(ORIG_CPPFLAGS)
+ LIBS = $(XXCONNECT2_LIBS) $(ORIG_LIBS)
diff --git a/patches/tune_lmdb_defaults b/patches/tune_lmdb_defaults
new file mode 100644 (file)
index 0000000..080d9b5
--- /dev/null
@@ -0,0 +1,14 @@
+--- a/c++/include/objtools/blast/seqdb_writer/writedb_lmdb.hpp
++++ b/c++/include/objtools/blast/seqdb_writer/writedb_lmdb.hpp
+@@ -52,7 +52,11 @@ BEGIN_NCBI_SCOPE
+ #define DEFAULT_LMDB_MAP_SIZE 500000
+ #define DEFAULT_TAXID_MAP_SIZE 500000
+ #else
++#ifdef __mips__
++#define DEFAULT_LMDB_MAP_SIZE (640 * 1024 * 1024)
++#else
+ #define DEFAULT_LMDB_MAP_SIZE 700000000
++#endif
+ #define DEFAULT_TAXID_MAP_SIZE 300000000
+ #endif
diff --git a/patches/use_pie_for_apps b/patches/use_pie_for_apps
new file mode 100644 (file)
index 0000000..139a858
--- /dev/null
@@ -0,0 +1,29 @@
+Subject: build executables with -fPIE, not -fPIC
+
+* -fPIC is only useful for shared libraries; substitute -fPIE (along
+   with -pie at link time) when building executables.
+
+Author: Aaron M. Ucko <ucko@debian.org>
+Last-Update: 2012-05-10
+--- a/c++/src/build-system/Makefile.app.in
++++ b/c++/src/build-system/Makefile.app.in
+@@ -25,8 +25,8 @@ default_rule: all
+ ### C/C++ source file compilation setup
+ CPPFLAGS     += -DNCBI_APP_BUILT_AS=$(APP)
+-CXXFLAGS_ALL = @f_compile@ $(CXXFLAGS) $(LOCAL_CPPFLAGS) $(CPPFLAGS)
+-CFLAGS_ALL   = @f_compile@ $(CFLAGS) $(LOCAL_CPPFLAGS) $(CPPFLAGS)
++CXXFLAGS_ALL = @f_compile@ $(CXXFLAGS:-fPIC=-fPIE) $(LOCAL_CPPFLAGS) $(CPPFLAGS)
++CFLAGS_ALL   = @f_compile@ $(CFLAGS:-fPIC=-fPIE) $(LOCAL_CPPFLAGS) $(CPPFLAGS)
+ SOURCES      = @UNIX_SRC@ $(SRC)
+ ### Standard application build rules
+@@ -59,7 +59,7 @@ PROJ_TYPE = app
+ include $(builddir)/Makefile.$(Rules)
+ CMD_BASE = $(LINK_WRAPPER) $(LINK)
+-CMD_BASEARGS = $(LDFLAGS) $(APP_LDFLAGS) $(XOBJ) $(XOBJ2) $(PRE_LIBS)
++CMD_BASEARGS = $(LDFLAGS) $(APP_LDFLAGS) -fPIE -pie $(XOBJ) $(XOBJ2) $(PRE_LIBS)
+ CMD_TAIL = @f_outexe@$(XAPP) $(LINK_FILTER)
+ CMD_ARGS  = $(CMD_BASEARGS) $(XLIB)  $(XAPP_LIBS)
+ CMD_ARGS2 = $(CMD_BASEARGS) $(XLIB2) $(XAPP_LIBS2)
diff --git a/rules b/rules
new file mode 100755 (executable)
index 0000000..558fd73
--- /dev/null
+++ b/rules
@@ -0,0 +1,210 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+include /usr/share/dpkg/architecture.mk
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+export HOME=$(CURDIR)/fakehome
+
+NUMJOBS=1
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+  ifneq (sh4,$(DEB_BUILD_ARCH))
+    NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+  endif
+endif
+
+DEB_CONFIGURE_COMMON_FLAGS=--without-autodep --without-makefile-auto-update \
+    --with-flat-makefile --without-caution --without-dbapi --without-lzo \
+    --without-debug --without-downloaded-vdb --without-sse42
+DEB_CONFIGURE_EXTRA_FLAGS=$(DEB_CONFIGURE_COMMON_FLAGS) --with-dll --with-mt \
+    --with-runpath=/usr/lib/ncbi-blast+ --with-build-root=BUILD \
+    --with-mbedtls --with-pcre2
+
+proj=algo/blast/ app/ objmgr/ objtools/align_format/ objtools/blast/
+
+#ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+DEB_CONFIGURE_EXTRA_FLAGS += --without-strip --with-symbols
+#endif
+
+#export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-pie
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-pie reproducible=-timeless
+export DEB_CFLAGS_MAINT_APPEND=-Wall -pedantic
+
+ifeq ($(DEB_HOST_ARCH_BITS),32)
+  ifeq (,$(filter %i386 x32,$(DEB_HOST_ARCH)))
+    export LIBS=-latomic
+  endif
+endif
+
+ifeq (alpha,$(DEB_HOST_ARCH))
+  export DEB_CFLAGS_MAINT_APPEND   += -fsection-anchors
+  export DEB_CXXFLAGS_MAINT_APPEND += -fsection-anchors
+endif
+ifeq (hppa,$(DEB_HOST_ARCH))
+  export DEB_CFLAGS_MAINT_APPEND   += -ffunction-sections
+  export DEB_CXXFLAGS_MAINT_APPEND += -ffunction-sections
+endif
+# Down to mips64el in practice, but easy enough to generalize
+ifneq (,$(findstring mips,$(DEB_HOST_ARCH)))
+  export DEB_CFLAGS_MAINT_APPEND   += -mxgot
+  export DEB_CXXFLAGS_MAINT_APPEND += -mxgot
+endif
+
+include /usr/share/dpkg/buildflags.mk
+
+ifneq (,$(filter mips%,$(DEB_HOST_ARCH)))
+CXXFLAGS := $(CXXFLAGS:-O%=-O)
+DEB_CONFIGURE_EXTRA_FLAGS += FAST_CXXFLAGS=-O
+endif
+ifeq (sh4,$(DEB_HOST_ARCH))
+DEB_CONFIGURE_COMMON_FLAGS += --without-optimization
+endif
+
+export CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MAKE
+
+# used for run_with_lock
+DEB_CONFIGURE_COMMON_FLAGS +=  CFLAGS_FOR_BUILD="$(CFLAGS) -fPIE"
+DEB_CONFIGURE_COMMON_FLAGS += LDFLAGS_FOR_BUILD="$(LDFLAGS)"
+
+ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
+NATIVE=.native
+DEB_CONFIGURE_EXTRA_FLAGS += --build=$(DEB_BUILD_GNU_TYPE) \
+    --host=$(DEB_HOST_GNU_TYPE)
+NATIVE_BINDIR=$(CURDIR)/c++/BUILD$(NATIVE)/bin
+PREBUILT_DATATOOL_EXE=$(NATIVE_BINDIR)/datatool
+PREBUILT_PTB_EXE=$(NATIVE_BINDIR)/project_tree_builder
+export PREBUILT_DATATOOL_EXE PREBUILT_PTB_EXE
+
+$(PREBUILT_DATATOOL_EXE):
+       cd c++  &&  PREBUILT_PTB_EXE=bootstrap \
+            ./configure $(DEB_CONFIGURE_COMMON_FLAGS) --without-objects \
+            --without-algo --without-app --with-build-root=BUILD.native  ||  \
+            (tail -v -n +0 config.log BUILD.native/status/config.log; exit 1)
+       make -j$(NUMJOBS) -C c++/BUILD$(NATIVE)/build -f Makefile.flat \
+           datatool.exe
+endif
+
+override_dh_autoreconf:
+       cd c++  && \
+           autoheader2.69 -Isrc/build-system src/build-system/configure.ac \
+           &&  cd src/build-system  &&  autoconf2.69
+
+override_dh_auto_configure-indep:;
+override_dh_auto_configure-arch: $(PREBUILT_DATATOOL_EXE)
+       mkdir -p $(HOME)
+       cd c++  &&  CONFIG_SHELL=/bin/bash \
+            ./configure $(DEB_CONFIGURE_EXTRA_FLAGS) \
+           ||  (tail -v -n +0 config.log BUILD/status/config.log; exit 1)
+
+override_dh_auto_build-arch:
+       cd c++/BUILD/build  && \
+           make -j$(NUMJOBS) -f Makefile.flat all_projects="$(proj)"
+#         make all_r
+
+override_dh_auto_build-indep:
+       echo "Save time and do nothing for architecture independent builds"
+
+override_dh_auto_test:
+ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
+       -dh_auto_test
+       -c++/BUILD/build/check.sh concat_err
+       -cat c++/BUILD/build/check.sh.out_err
+endif
+
+instroot = debian/ncbi-blast+/usr
+leg_bin = debian/ncbi-blast+-legacy/usr/bin
+override_dh_auto_install-arch:
+       # cp c++/BUILD/lib/*.so $(instroot)/lib/ncbi-blast+/
+       cp c++/BUILD/bin/*    $(instroot)/bin/
+
+override_dh_auto_install-indep:
+       echo "Nothing to do for architecture independant installs"
+
+override_dh_install-arch:
+       # dh_install
+       mv $(instroot)/bin/rpsblast $(instroot)/bin/rpsblast+
+       mv $(instroot)/bin/seedtop $(instroot)/bin/seedtop+
+       mv $(instroot)/bin/get_species_taxids.sh \
+           $(instroot)/bin/get_species_taxids
+       mv $(instroot)/bin/cleanup-blastdb-volumes.py \
+           $(instroot)/bin/cleanup-blastdb-volumes
+       mv $(instroot)/bin/legacy_blast.pl   $(instroot)/bin/legacy_blast
+       mv $(instroot)/bin/update_blastdb.pl $(instroot)/bin/update_blastdb
+       sed -e '1s/$$/3/' $(instroot)/bin/windowmasker_2.2.22_adapter.py \
+          > $(instroot)/bin/windowmasker_2.2.22_adapter
+       chmod +x $(instroot)/bin/windowmasker_2.2.22_adapter
+       rm $(instroot)/bin/windowmasker_2.2.22_adapter.py*
+# Clean up tests, demos, and internal build tools
+       rm -f $(instroot)/bin/*test* $(instroot)/bin/seqdb_demo \
+           $(instroot)/bin/datatool $(instroot)/bin/run_with_lock \
+           $(instroot)/bin/project_tree_builder
+       mkdir c++/BUILD/lib.observed
+       d=$(instroot)/bin; \
+       while :; do \
+           (for x in $$d/*; do \
+               readelf -d $$x 2>/dev/null \
+               | sed -ne 's/.*NEEDED.* \[\(.*\)]$$/\1/p'; \
+            done; rm -f c++/BUILD/lib.observed/*) | sort -u | while read l; do \
+               [ -f $(instroot)/lib/ncbi-blast+/$$l \
+                 -o \! -f c++/BUILD/lib/$$l ]  || \
+                   cp -av c++/BUILD/lib/$$l c++/BUILD/lib.observed/; \
+           done; \
+           [ -n "$$(ls c++/BUILD/lib.observed)" ] || break; \
+           echo ------------------------------------------------------------; \
+           cp -a c++/BUILD/lib.observed/* $(instroot)/lib/ncbi-blast+; \
+           d=c++/BUILD/lib.observed; \
+       done
+
+override_dh_install-indep:
+       #if test -d $(leg_bin); then cp debian/legacy/legacy.sh $(leg_bin)/; fi
+       for x in blastall megablast blastpgp bl2seq rpsblast fastacmd formatdb \
+                seedtop; do \
+           sed -e "s/.{.*}/$$x/" debian/legacy/legacy.sh > $(leg_bin)/$$x; \
+           chmod +x $(leg_bin)/$$x; \
+       done
+
+NEW_MODULE = $(CURDIR)/c++/BUILD$(NATIVE)/build/new_module.sh
+override_dh_clean:
+       cp c++/src/util/lmdb/Makefile.orig c++/src/util/lmdb/Makefile.orig.save
+       cp c++/src/util/lmdbxx/Makefile.orig c++/src/util/lmdbxx/Makefile.orig.save
+       cp c++/src/util/lmdbxx/lmdb++.h.orig c++/src/util/lmdbxx/lmdb++.h.orig.save
+
+       cp c++/configure.orig configure.orig.save
+       dh_clean
+       #Tricky - for each module directory there may be several module files
+       #or there may be none but then there is still a module named after the
+       #directory.  Clean everything!
+       -for x in c++/src/objects/* ; do \
+           (cd "$$x"  && ( \
+               mods="`echo *.module`" ; \
+               [ "$${mods#*\*}" = "$$mods" ] || mods="`basename $$x`" ; \
+               for mod in $$mods ; do \
+                   $(NEW_MODULE) $$mod purge_sources ; \
+               done ) ; \
+           ) ; \
+       done
+       -for x in c++/src/objtools/eutils/* ; do \
+           (cd "$$x"  && ( \
+               mods="`echo *.module`" ; \
+               [ "$${mods#*\*}" = "$$mods" ] || mods="`basename $$x`" ; \
+               for mod in $$mods ; do \
+                   $(NEW_MODULE) --dtd $$mod purge_sources ; \
+               done ) ; \
+           ) ; \
+       done
+       -cd c++/src/objtools/eutils/efetch  && \
+            $(NEW_MODULE) --xsd efetch purge_sources
+       rm -rf c++/compilers/dll c++/config.log c++/Makefile
+       rm -f c++/configure.lineno c++/src/objects/blastxml/blastxml.module
+       rm -f c++/include/common/ncbi_revision.h
+       find -name check_exec.pid -delete
+       rm -rf c++/BUILD c++/BUILD.native fakehome
+       mv configure.orig.save c++/configure.orig
+       mv c++/src/util/lmdb/Makefile.orig.save c++/src/util/lmdb/Makefile.orig
+       mv c++/src/util/lmdbxx/Makefile.orig.save c++/src/util/lmdbxx/Makefile.orig
+       mv c++/src/util/lmdbxx/lmdb++.h.orig.save c++/src/util/lmdbxx/lmdb++.h.orig
+
+%:
+       dh $@ --sourcedirectory=c++ --with-autoreconf
diff --git a/salsa-ci.yml b/salsa-ci.yml
new file mode 100644 (file)
index 0000000..33c3a64
--- /dev/null
@@ -0,0 +1,4 @@
+---
+include:
+  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
+  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
diff --git a/source/format b/source/format
new file mode 100644 (file)
index 0000000..163aaf8
--- /dev/null
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/source/lintian-overrides b/source/lintian-overrides
new file mode 100644 (file)
index 0000000..e348753
--- /dev/null
@@ -0,0 +1,6 @@
+# Line length detection, nothing missing in source js files
+ncbi-blast+ source: source-is-missing *c++/src/html/ncbi_menu.js*
+ncbi-blast+ source: source-is-missing *c++/src/html/ncbi_menu_dnd.js*
+ncbi-blast+ source: source-is-missing *c++/src/html/ncbi_menu_dyn.js*
+# JSON not evil license, related code is not present
+ncbi-blast+ source: license-problem-json-evil *c++/include/misc/jsonwrapp/rapidjson11/license.txt*
diff --git a/source/options b/source/options
new file mode 100644 (file)
index 0000000..d0a83ea
--- /dev/null
@@ -0,0 +1,2 @@
+# Do not generate diff for changes in config.(sub|guess)
+extend-diff-ignore = "(^|/)config.(sub|guess)$"
diff --git a/tests/control b/tests/control
new file mode 100644 (file)
index 0000000..d2aa55a
--- /dev/null
@@ -0,0 +1,3 @@
+Tests: run-unit-test
+Depends: @
+Restrictions: allow-stderr
diff --git a/tests/run-unit-test b/tests/run-unit-test
new file mode 100644 (file)
index 0000000..7e48969
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -e
+
+pkg="ncbi-blast+"
+
+if [ "$AUTOPKGTEST_TMP" = "" ] ; then
+  AUTOPKGTEST_TMP=$(mktemp -d /tmp/${pkg}-test.XXXXXX)
+  trap "rm -rf $AUTOPKGTEST_TMP" 0 INT QUIT ABRT PIPE TERM
+fi
+
+cp -a /usr/share/doc/${pkg}/examples/* $AUTOPKGTEST_TMP
+
+cd $AUTOPKGTEST_TMP
+find . -name "*.gz" -exec gunzip \{\} \;
+
+echo '---Creating Database--'
+/usr/bin/makeblastdb -in testdatabase.fa -parse_seqids -dbtype nucl -out testdb
+echo '---Searching Database for Hits---'
+/usr/bin/blastn -query test.fa -db testdb -task blastn -dust no -outfmt "7 qseqid sseqid evalue bitscore" -max_target_seqs 2
+echo '---Search and Fetch An Entry From Database---'
+/usr/bin/blastdbcmd -db testdb -entry gnl1 -out test_query.fa
+cat test_query.fa
+
+echo "PASS"
diff --git a/upstream/metadata b/upstream/metadata
new file mode 100644 (file)
index 0000000..1b724cf
--- /dev/null
@@ -0,0 +1,9 @@
+Registry:
+ - Name: OMICtools
+   Entry: OMICS_01436
+ - Name: SciCrunch
+   Entry: SCR_004870
+ - Name: bio.tools
+   Entry: blast
+ - Name: conda:bioconda
+   Entry: blast
diff --git a/watch b/watch
new file mode 100644 (file)
index 0000000..7c2b95b
--- /dev/null
+++ b/watch
@@ -0,0 +1,3 @@
+version=4
+opts=filenamemangle=s/.*\///;s/\+-src/-orig/;s/blast/blast+/,dversionmangle=s/\+ds//,repacksuffix=+ds \
+     https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-(.*)\+-src\.tar\.gz debian uupdate