From 061fcdfced5efe536ca2e1d6658dd47077e25101 Mon Sep 17 00:00:00 2001 From: Peter Michael Green Date: Sun, 12 Jan 2025 14:25:01 +0000 Subject: [PATCH] Import ncbi-blast+_2.16.0+ds-6+rpi1.debian.tar.xz [dgit import tarball ncbi-blast+ 2.16.0+ds-6+rpi1 ncbi-blast+_2.16.0+ds-6+rpi1.debian.tar.xz] --- README.Debian | 10 + README.source | 9 + changelog | 719 +++++++++++++++++++ control | 60 ++ copyright | 211 ++++++ dirs | 2 + docs | 0 legacy/legacy.sh | 4 + ncbi-blast+-legacy.dirs | 1 + ncbi-blast+.1 | 33 + ncbi-blast+.dirs | 2 + ncbi-blast+.examples | 1 + ncbi-blast+.manpages | 1 + ncbi-blast+.tests/test.fa | 10 + ncbi-blast+.tests/testdatabase.fa | 29 + patches/2to3 | 48 ++ patches/allow_pcre2 | 372 ++++++++++ patches/big_endian_workaround | 34 + patches/enable_clean_after_failed_compile | 16 + patches/fix_configure | 14 + patches/fix_lib_deps | 797 ++++++++++++++++++++++ patches/fix_unit_tests | 16 + patches/hurd_fixes | 53 ++ patches/legacy_rename_rpsblast | 14 + patches/no_multiarch_rpath | 32 + patches/optin_usage_report | 47 ++ patches/optionally_keep_sequence | 29 + patches/reprobuild | 621 +++++++++++++++++ patches/run_perl_directly | 12 + patches/series | 23 + patches/skip_services_unit_test | 16 + patches/spelling | 185 +++++ patches/support_gcc10 | 20 + patches/support_mbedtls3 | 222 ++++++ patches/support_x32 | 16 + patches/suppress_tls_version_checks | 43 ++ patches/system_mbedtls_only | 76 +++ patches/tune_lmdb_defaults | 14 + patches/use_pie_for_apps | 29 + rules | 210 ++++++ salsa-ci.yml | 4 + source/format | 1 + source/lintian-overrides | 6 + source/options | 2 + tests/control | 3 + tests/run-unit-test | 24 + upstream/metadata | 9 + watch | 3 + 48 files changed, 4103 insertions(+) create mode 100644 README.Debian create mode 100644 README.source create mode 100644 changelog create mode 100644 control create mode 100644 copyright create mode 100644 dirs create mode 100644 docs create mode 100755 legacy/legacy.sh create mode 100644 ncbi-blast+-legacy.dirs create mode 100644 ncbi-blast+.1 create mode 100644 ncbi-blast+.dirs create mode 100644 ncbi-blast+.examples create mode 100644 ncbi-blast+.manpages create mode 100644 ncbi-blast+.tests/test.fa create mode 100644 ncbi-blast+.tests/testdatabase.fa create mode 100644 patches/2to3 create mode 100644 patches/allow_pcre2 create mode 100644 patches/big_endian_workaround create mode 100644 patches/enable_clean_after_failed_compile create mode 100644 patches/fix_configure create mode 100644 patches/fix_lib_deps create mode 100644 patches/fix_unit_tests create mode 100644 patches/hurd_fixes create mode 100644 patches/legacy_rename_rpsblast create mode 100644 patches/no_multiarch_rpath create mode 100644 patches/optin_usage_report create mode 100644 patches/optionally_keep_sequence create mode 100644 patches/reprobuild create mode 100644 patches/run_perl_directly create mode 100644 patches/series create mode 100644 patches/skip_services_unit_test create mode 100644 patches/spelling create mode 100644 patches/support_gcc10 create mode 100644 patches/support_mbedtls3 create mode 100644 patches/support_x32 create mode 100644 patches/suppress_tls_version_checks create mode 100644 patches/system_mbedtls_only create mode 100644 patches/tune_lmdb_defaults create mode 100644 patches/use_pie_for_apps create mode 100755 rules create mode 100644 salsa-ci.yml create mode 100644 source/format create mode 100644 source/lintian-overrides create mode 100644 source/options create mode 100644 tests/control create mode 100644 tests/run-unit-test create mode 100644 upstream/metadata create mode 100644 watch diff --git a/README.Debian b/README.Debian new file mode 100644 index 00000000..ff4641b0 --- /dev/null +++ b/README.Debian @@ -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 Wed, 27 Apr 2011 15:19:59 +0200 diff --git a/README.source b/README.source new file mode 100644 index 00000000..85ca5993 --- /dev/null +++ b/README.source @@ -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ç Tue, 2 Aug 2016 03:30:33 +0300 diff --git a/changelog b/changelog new file mode 100644 index 00000000..2cc15fcb --- /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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Sun, 29 Sep 2019 21:57:31 -0400 + +ncbi-blast+ (2.9.0-1) unstable; urgency=medium + + * New upstream release + + -- Olivier Sallou 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 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 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 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 Sat, 10 Feb 2018 17:35:31 +0000 + +ncbi-blast+ (2.6.0-1) unstable; urgency=medium + + * New upstream release + + -- Olivier Sallou 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 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 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 Mon, 05 Dec 2016 23:16:54 -0500 + +ncbi-blast+ (2.5.0-1) unstable; urgency=medium + + * New upstream release + + -- Olivier Sallou 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 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 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 Wed, 03 Aug 2016 21:40:00 -0400 + +ncbi-blast+ (2.3.0-2) unstable; urgency=medium + + * Team upload. + * Autopkgtest added + + -- Canberk Koç 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 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 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 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 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 + * GCC break fix (recompile with gcc5, Closes: #793263). + + -- Olivier Sallou 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 Thu, 02 Jul 2015 16:22:39 -0400 + +ncbi-blast+ (2.2.30-3) unstable; urgency=medium + + * Switch to unstable after unfreeze. + + -- Olivier Sallou 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 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 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 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 Sat, 07 Jun 2014 11:28:22 +0200 + +ncbi-blast+ (2.2.29-1) unstable; urgency=medium + + * New upstream release + + -- Olivier Sallou 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 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 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 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 Mon, 24 Sep 2012 09:28:29 +0200 + +ncbi-blast+ (2.2.27-1) unstable; urgency=low + + * New upstream release + + -- Olivier Sallou 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 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 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 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 Wed, 21 Dec 2011 15:47:04 +0100 + +ncbi-blast+ (2.2.25-6) unstable; urgency=low + + * debian/control: + + Luca Capello , 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 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 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 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 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 Wed, 08 Jun 2011 21:42:52 -0400 + +ncbi-blast+ (2.2.25-1) unstable; urgency=low + + * Initial release (Closes: #624394) + + -- Olivier Sallou Wed, 08 Jun 2011 00:15:15 +0200 diff --git a/control b/control new file mode 100644 index 00000000..08ae5581 --- /dev/null +++ b/control @@ -0,0 +1,60 @@ +Source: ncbi-blast+ +Maintainer: Debian Med Packaging Team +Uploaders: Olivier Sallou , + Andreas Tille , + Aaron M. Ucko +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 index 00000000..2453aa4c --- /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 +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 + . + 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 +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 + . + 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 index 00000000..2b9d1904 --- /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 index 00000000..e69de29b diff --git a/legacy/legacy.sh b/legacy/legacy.sh new file mode 100755 index 00000000..dba6d0ca --- /dev/null +++ b/legacy/legacy.sh @@ -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 index 00000000..415f082d --- /dev/null +++ b/ncbi-blast+-legacy.dirs @@ -0,0 +1 @@ +/usr/bin diff --git a/ncbi-blast+.1 b/ncbi-blast+.1 new file mode 100644 index 00000000..fe9e0c35 --- /dev/null +++ b/ncbi-blast+.1 @@ -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 index 00000000..32fdc473 --- /dev/null +++ b/ncbi-blast+.dirs @@ -0,0 +1,2 @@ +usr/bin +usr/lib/ncbi-blast+ diff --git a/ncbi-blast+.examples b/ncbi-blast+.examples new file mode 100644 index 00000000..e5da4986 --- /dev/null +++ b/ncbi-blast+.examples @@ -0,0 +1 @@ +debian/ncbi-blast+.tests/* diff --git a/ncbi-blast+.manpages b/ncbi-blast+.manpages new file mode 100644 index 00000000..0f651869 --- /dev/null +++ b/ncbi-blast+.manpages @@ -0,0 +1 @@ +debian/*.1 diff --git a/ncbi-blast+.tests/test.fa b/ncbi-blast+.tests/test.fa new file mode 100644 index 00000000..6db78dd5 --- /dev/null +++ b/ncbi-blast+.tests/test.fa @@ -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 index 00000000..844ac1db --- /dev/null +++ b/ncbi-blast+.tests/testdatabase.fa @@ -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 index 00000000..18f1bd62 --- /dev/null +++ b/patches/2to3 @@ -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 index 00000000..0472bde0 --- /dev/null +++ b/patches/allow_pcre2 @@ -0,0 +1,372 @@ +From d615c51fb9fe6172a84feea47906abd164198fd5 Mon Sep 17 00:00:00 2001 +From: ucko +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 ], + [[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_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 + #include + #include +-#include +-#define PCRE_FLAG(x) PCRE_##x ++#ifdef HAVE_LIBPCRE2 ++# define PCRE2_CODE_UNIT_WIDTH 8 ++# include ++# define PCRE_FLAG(x) PCRE2_##x ++#else ++# include ++# define PCRE_FLAG(x) PCRE_##x ++#endif + + #include + #include +@@ -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 index 00000000..452d4052 --- /dev/null +++ b/patches/big_endian_workaround @@ -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(eBDB_Version5))); ++ NStr::NumericToString(static_cast ++#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(eBDB_Version5))); ++ NStr::NumericToString(static_cast ++#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 index 00000000..96b9b268 --- /dev/null +++ b/patches/enable_clean_after_failed_compile @@ -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 index 00000000..c360ef0d --- /dev/null +++ b/patches/fix_configure @@ -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 +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 index 00000000..bcdf0fa2 --- /dev/null +++ b/patches/fix_lib_deps @@ -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 +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 index 00000000..4687884f --- /dev/null +++ b/patches/fix_unit_tests @@ -0,0 +1,16 @@ +Subject: add missing lib for tests +Description: unit_test need blast lib to compile +Forwarded: Not-Needed +Author: Olivier Sallou +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 index 00000000..884c030e --- /dev/null +++ b/patches/hurd_fixes @@ -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 +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 + #include // 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 index 00000000..f40204b1 --- /dev/null +++ b/patches/legacy_rename_rpsblast @@ -0,0 +1,14 @@ +Author: Olivier Sallou +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 index 00000000..8423cd88 --- /dev/null +++ b/patches/no_multiarch_rpath @@ -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 +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 index 00000000..8a73c3f8 --- /dev/null +++ b/patches/optin_usage_report @@ -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 +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 index 00000000..0b48dc46 --- /dev/null +++ b/patches/optionally_keep_sequence @@ -0,0 +1,29 @@ +Author: Aaron M. Ucko +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 & 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 index 00000000..2206de50 --- /dev/null +++ b/patches/reprobuild @@ -0,0 +1,621 @@ +Author: Michael R. Crusoe +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 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 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 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 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 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("< +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 index 00000000..d754932e --- /dev/null +++ b/patches/series @@ -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 index 00000000..309f9443 --- /dev/null +++ b/patches/skip_services_unit_test @@ -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 index 00000000..c5335527 --- /dev/null +++ b/patches/spelling @@ -0,0 +1,185 @@ +From: Michael R. Crusoe +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\ts\tBotanic Garden Meise\t\t\t", +-"BR\tc\tJohanna Dobereiner Biological Resouce Center (CRB-JD)\t\t\t", ++"BR\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 s Botanic Garden Meise +-BR c Johanna Dobereiner Biological Resouce Center (CRB-JD) ++BR 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("< 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 index 00000000..9af97f4b --- /dev/null +++ b/patches/support_gcc10 @@ -0,0 +1,20 @@ +Author: Aaron M. Ucko +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(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 index 00000000..35195419 --- /dev/null +++ b/patches/support_mbedtls3 @@ -0,0 +1,222 @@ +From 4395feafcadc4b74f749ce421a530922e5f58047 Mon Sep 17 00:00:00 2001 +From: ucko +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 + # include + # include ++# include + + # 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 + #include + ++#include ++ + 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(pkey.data()), pkey.size() + 1, nullptr, 0); ++ auto pk_rv = mbedtls_pk_parse_key( ++ &m_Pkey, reinterpret_cast(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 index 00000000..7e166d8c --- /dev/null +++ b/patches/support_x32 @@ -0,0 +1,16 @@ +Author: Aaron M. Ucko +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 index 00000000..6669ec04 --- /dev/null +++ b/patches/suppress_tls_version_checks @@ -0,0 +1,43 @@ +Author: Aaron M. Ucko +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 index 00000000..2f381dd5 --- /dev/null +++ b/patches/system_mbedtls_only @@ -0,0 +1,76 @@ +Author: Aaron M. Ucko +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 ++#include ++#include ++#include + + #include + +--- 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 + # include + # include +@@ -53,17 +52,6 @@ + # include + # include + # include +-# 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 index 00000000..080d9b56 --- /dev/null +++ b/patches/tune_lmdb_defaults @@ -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 index 00000000..139a8580 --- /dev/null +++ b/patches/use_pie_for_apps @@ -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 +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 index 00000000..558fd737 --- /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 index 00000000..33c3a640 --- /dev/null +++ b/salsa-ci.yml @@ -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 index 00000000..163aaf8d --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/source/lintian-overrides b/source/lintian-overrides new file mode 100644 index 00000000..e3487534 --- /dev/null +++ b/source/lintian-overrides @@ -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 index 00000000..d0a83ea1 --- /dev/null +++ b/source/options @@ -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 index 00000000..d2aa55ae --- /dev/null +++ b/tests/control @@ -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 index 00000000..7e48969b --- /dev/null +++ b/tests/run-unit-test @@ -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 index 00000000..1b724cf9 --- /dev/null +++ b/upstream/metadata @@ -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 index 00000000..7c2b95b1 --- /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 -- 2.30.2