Gentoo Archives: gentoo-commits

From: Martin Mokrejs <mmokrejs@×××××××××××××××.cz>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/sci:master commit in: sci-biology/ncbi-tools++/
Date: Sat, 30 Mar 2019 00:14:03
Message-Id: 1553904831.220946d413cfcfa399e3609f2b215eabdc8df3a8.mmokrejs@gentoo
1 commit: 220946d413cfcfa399e3609f2b215eabdc8df3a8
2 Author: Martin Mokrejs <mmokrejs <AT> fold <DOT> natur <DOT> cuni <DOT> cz>
3 AuthorDate: Sat Mar 30 00:13:51 2019 +0000
4 Commit: Martin Mokrejs <mmokrejs <AT> fold <DOT> natur <DOT> cuni <DOT> cz>
5 CommitDate: Sat Mar 30 00:13:51 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/sci.git/commit/?id=220946d4
7
8 sci-biology/ncbi-tools++: version bump
9
10 It does not link if older version is installed because linker
11 picks up older version of libraries and obviously does not find
12 newly added functions.
13
14 Upstream says:
15 Please try either supplying an LD_RUN_PATH environment setting
16 or a -Wl,-rpath-link,... flag pointing at your build tree's lib
17 directory. Also, please bear in mind that adding the old
18 installation's library directory to the central search path largely
19 defeats the purpose of making it a separate directory.
20
21 Package-Manager: Portage-2.3.62, Repoman-2.3.12
22 Signed-off-by: Martin Mokrejs <mmokrejs <AT> fold.natur.cuni.cz>
23
24 .../ncbi-tools++/ncbi-tools++-22.0.0.ebuild | 380 +++++++++++++++++++++
25 1 file changed, 380 insertions(+)
26
27 diff --git a/sci-biology/ncbi-tools++/ncbi-tools++-22.0.0.ebuild b/sci-biology/ncbi-tools++/ncbi-tools++-22.0.0.ebuild
28 new file mode 100644
29 index 000000000..585042f9f
30 --- /dev/null
31 +++ b/sci-biology/ncbi-tools++/ncbi-tools++-22.0.0.ebuild
32 @@ -0,0 +1,380 @@
33 +# Copyright 1999-2019 Gentoo Authors
34 +# Distributed under the terms of the GNU General Public License v2
35 +
36 +EAPI=5
37 +
38 +PYTHON_COMPAT=( python2_7 )
39 +
40 +inherit eutils flag-o-matic multilib python-single-r1 toolchain-funcs
41 +
42 +MY_TAG="Mar_28_2019"
43 +MY_Y="${MY_TAG/*_/}"
44 +MY_PV="22_0_0"
45 +MY_P="ncbi_cxx--${MY_PV}"
46 +
47 +# for example sci-biology/ncbi-tools++-12.0.0 contains blastn-2.2.28+
48 +DESCRIPTION="NCBI C++ Toolkit, including NCBI BLAST+"
49 +HOMEPAGE="http://www.ncbi.nlm.nih.gov/books/bv.fcgi?rid=toolkit"
50 +# https://ncbi.github.io/cxx-toolkit/pages/release_notes
51 +SRC_URI="
52 + ftp://ftp.ncbi.nih.gov/toolbox/ncbi_tools++/ARCHIVE/2019/${MY_TAG}/ncbi_cxx--${MY_PV}.tar.gz"
53 +# http://dev.gentoo.org/~jlec/distfiles/${PN}-${PV#0.}-asneeded.patch.xz"
54 +
55 +# should also install ftp://ftp.ncbi.nlm.nih.gov/blast/db/taxdb.tar.gz
56 +# see http://www.biostars.org/p/76551/ and http://blastedbio.blogspot.cz/2012/05/blast-tabular-missing-descriptions.html
57 +LICENSE="public-domain"
58 +SLOT="0"
59 +IUSE="
60 + debug static-libs static threads pch
61 + test wxwidgets odbc
62 + berkdb boost bzip2 cppunit curl expat fastcgi fltk freetype gif
63 + glut gnutls hdf5 icu jpeg lzo mesa mysql muparser opengl pcre png python
64 + sablotron sqlite tiff xerces xalan xml xpm xslt X"
65 +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
66 +
67 +REQUIRED_USE="${PYTHON_REQUIRED_USE}"
68 +
69 +# sys-libs/db should be compiled with USE=cxx
70 +DEPEND="
71 + !sci-biology/sra_sdk
72 + app-arch/cpio
73 + berkdb? ( sys-libs/db:4.3[cxx] )
74 + boost? ( dev-libs/boost )
75 + curl? ( net-misc/curl )
76 + sqlite? ( >=dev-db/sqlite-3.6.6:3 )
77 + mysql? ( virtual/mysql )
78 + fltk? ( x11-libs/fltk )
79 + opengl? ( virtual/opengl media-libs/glew:0= )
80 + mesa? ( media-libs/mesa[osmesa] )
81 + glut? ( media-libs/freeglut )
82 + freetype? ( media-libs/freetype )
83 + gnutls? ( net-libs/gnutls )
84 + python? ( ${PYTHON_DEPS} )
85 + cppunit? ( dev-util/cppunit )
86 + icu? ( dev-libs/icu )
87 + expat? ( dev-libs/expat )
88 + sablotron? ( app-text/sablotron )
89 + xml? ( dev-libs/libxml2 )
90 + xslt? ( >=dev-libs/libxslt-1.1.14 )
91 + xerces? ( dev-libs/xerces-c )
92 + xalan? ( dev-libs/xalan-c )
93 + muparser? ( dev-cpp/muParser )
94 + hdf5? ( sci-libs/hdf5[cxx] )
95 + gif? ( media-libs/giflib )
96 + jpeg? ( virtual/jpeg:0= )
97 + png? ( media-libs/libpng:0= )
98 + tiff? ( media-libs/tiff:0= )
99 + xpm? ( x11-libs/libXpm )
100 + >=dev-libs/lzo-2.0
101 + app-arch/bzip2
102 + dev-libs/libpcre"
103 +# USE flags which should be added somehow: wxWindows wxWidgets SP ORBacus ODBC OEChem sge
104 +# Intentionally omitted USE flags:
105 +# ftds? ( dev-db/freetds ) # support for outside FreeTDS installations is currently broken.
106 +# The default (heavily patched) embedded copy should work, or you can
107 +# leave it off altogether -- the only public apps that make use of it are
108 +# samples and tests, since NCBI's database servers are of course firewalled.
109 +
110 +# seems muParser is required, also glew is required. configure exits otherwise if these are explicitly passed to it (due to USE flag enabled)
111 +
112 +RDEPEND="${DEPEND}"
113 +
114 +S="${WORKDIR}/${MY_P}"
115 +
116 +src_prepare() {
117 +# filter-ldflags -Wl,--as-needed
118 +# append-ldflags -Wl,--no-undefined
119 +# sed -i -e 's/-print-file-name=libstdc++.a//' \
120 +# -e '/sed/ s/\([gO]\[0-9\]\)\*/\1\\+/' \
121 +# src/build-system/configure || die
122 +# epatch \
123 +# "${FILESDIR}"/${PN}-${PV#0.}-fix-order-of-libs.patch \
124 +# "${FILESDIR}"/curl-types.patch \
125 +# "${FILESDIR}"/malloc_initialize_upstream_fix.patch \
126 +# "${FILESDIR}"/respect_CXXFLAGS_configure.ac.patch \
127 +# "${FILESDIR}"/respect_CXXFLAGS_configure.patch \
128 +# "${FILESDIR}"/report_project_settings_configure.ac.patch \
129 +# "${FILESDIR}"/report_project_settings_configure.patch \
130 +# "${FILESDIR}"/make_install.patch
131 +
132 +# "${FILESDIR}"/${PN}-${PV#0.}-disable_test_compress.patch
133 +
134 +# "${FILESDIR}"/${PN}-${PV#0.}-gcc46.patch \
135 +# "${FILESDIR}"/${PN}-${PV#0.}-gcc47.patch \
136 +# "${WORKDIR}"/${PN}-${PV#0.}-asneeded.patch \
137 +# "${FILESDIR}"/${PN}-${PV#0.}-libpng15.patch \
138 +# "${FILESDIR}"/${PN}-${PV#0.}-glibc-214.patch
139 +
140 +# use prefix && append-ldflags -Wl,-rpath,"${EPREFIX}/usr/$(get_libdir)/${PN}"
141 +
142 +# The conf-opts.patch and as-needed.patch need to be adjusted for 12.0.0 line numbers
143 +# local PATCHES=(
144 +# "${FILESDIR}"/${P}-configure.patch
145 +# "${FILESDIR}"/${P}-fix-install.patch
146 +# "${FILESDIR}"/${P}-never_build_test_boost.patch # bug #579248
147 +# "${FILESDIR}"/${P}-fix-annotwriter-linking.patch
148 +# "${FILESDIR}"/${P}-fix-undefined-xobjread.patch
149 +# "${FILESDIR}"/${P}-fix-apps-blast-linking.patch
150 +# "${FILESDIR}"/${P}-fix-sample-app-cgi-linking.patch
151 +# "${FILESDIR}"/${P}-fix-app-compartp-linking.patch
152 +# "${FILESDIR}"/${P}-fix-app-convert_seq-linking.patch
153 +# "${FILESDIR}"/${P}-fix-app-hfilter-linking.patch
154 +# "${FILESDIR}"/${P}-fix-app-igblast-linking.patch
155 +# "${FILESDIR}"/${P}-fix-ncfetch-linking.patch
156 +# "${FILESDIR}"/${P}-fix-netcache_cgi_sample-linking.patch
157 +# "${FILESDIR}"/${P}-fix-netstorage_gc-linking.patch
158 +# "${FILESDIR}"/${P}-fix-speedtest-linking.patch
159 +# "${FILESDIR}"/${P}-fix-splign-linking.patch
160 +# "${FILESDIR}"/${P}-fix-srcchk-linking.patch
161 +# "${FILESDIR}"/${P}-fix-app-rmblastn-linking.patch
162 +# "${FILESDIR}"/${P}-remove-old-symlinks.patch
163 +# "${FILESDIR}"/${P}-fix-app-table2asn-linking.patch
164 +# "${FILESDIR}"/${P}-fix-app-tls-linking.patch
165 +# "${FILESDIR}"/${P}-fix-app-vecscreen-linking.patch
166 +# "${FILESDIR}"/${P}-fix-app-blast_sample-linking.patch
167 +# )
168 + #ncbi-tools++-18.0.0-fix-undefined-lxncbi.patch
169 +# epatch ${PATCHES[@]}
170 + # make sure this one is the last one and contains the actual patches applied unless we can have autoconf-2.59 or 2.60
171 + # https://bugs.gentoo.org/show_bug.cgi?id=514706
172 +
173 + tc-export CXX CC
174 +
175 + cd src/build-system || die
176 +# eautoreconf
177 +
178 + # Temporarily disabling eautoconf because we patch configure via ${P}-support-autoconf-2.60.patch
179 + # eautoconf # keep it disabled until we can ensure 2.59 is installed
180 + # beware 12.0.0. and previous required autoconf-2.59, a patch for 12.0.0 brings autoconf-2.60 support
181 +}
182 +
183 +# possibly place modified contents of ${W}/src/build-system/config.site.ncbi and {W}/src/build-system/config.site.ex into ${W}/src/build-system/config.site
184 +src_configure() {
185 + local myconf=()
186 + #--without-optimization turn off optimization flags in non-debug mode
187 + #--with-profiling build profiled versions of libs and apps
188 + #--with-tcheck(=DIR) build for Intel Thread Checker (in DIR)
189 + #--with-plugin-auto-load always enable the plugin manager by default
190 + #--with-bundles build bundles in addition to dylibs on Mac OS X
191 + #--with-bin-release build executables suitable for public release
192 + # no dll and such
193 + #--with-64 compile to 64-bit code
194 + #--with-universal build universal binaries on Mac OS X
195 + #--with-universal=CPUs build universal binaries targeting the given CPUs
196 + #--without-exe do not build executables
197 + #--with-relative-runpath=P specify an executable-relative DLL search path
198 + #--with-hard-runpath hard-code runtime path, ignoring LD_LIBRARY_PATH
199 + #--with-limited-linker don't attempt to build especially large projects
200 + #--with-extra-action= script to call after the configuration is complete
201 + #--with-autodep automatic generation of dependencies (GNU make)
202 + #--with-fake-root=DIR appear to have been built under DIR
203 + #--with-build-root-sfx=X add a user-specified suffix to the build dir name
204 + #--without-execopy do not copy built executables to the BIN area
205 + #--with-lib-rebuilds ensure that apps use up-to-date libraries
206 + #--with-lib-rebuilds=ask ask whether to update each app's libraries
207 + #--without-deactivation keep old copies of libraries that no longer build
208 + #--without-makefile-auto-update do not auto-update generated makefiles
209 + #--with-projects=FILE build projects listed in FILE by default
210 + #--without-flat-makefile do not generate an all-encompassing flat makefile
211 + #--with-configure-dialog allow interactive flat makefile project selection
212 + #--with-saved-settings=F load configuration settings from the file F
213 + #--with-check-tools=... use the specified tools for testing
214 + #--with-ncbi-public ensure compatibility for all in-house platforms
215 + #--with-sybase-local=DIR use local SYBASE install (DIR is optional)
216 + #--with-sybase-new use newer SYBASE install (12.5 rather than 12.0)
217 + #--without-sp do not use SP libraries
218 + #--without-orbacus do not use ORBacus CORBA libraries
219 + #--with-orbacus=DIR use ORBacus installation in DIR
220 + #--with-jni(=JDK-DIR) build Java bindings (against the JDK in JDK-DIR)
221 + #--with-sablot=DIR use Sablotron installation in DIR
222 + #--without-sablot, do not use Sablotron
223 + #--with-oechem=DIR use OpenEye OEChem installation in DIR
224 + #--without-oechem do not use OEChem
225 + #--with-sge=DIR use Sun Grid Engine installation in DIR
226 + #--without-sge do not use Sun Grid Engine
227 + #--with-magic=DIR use libmagic installation in DIR
228 + #--without-magic do not use libmagic
229 + #--without-local-lbsm turn off support for IPC with locally running LBSMD
230 + #--without-ncbi-crypt use a dummy stubbed-out version of ncbi_crypt
231 + #--without-connext do not build non-public CONNECT library extensions
232 + #--without-serial do not build the serialization library and tools
233 + #--without-objects do not generate/build serializeable objects from ASNs
234 + #--without-dbapi do not build database connectivity libraries
235 + #--without-app do not build standalone applications like ID1_FETCH
236 + #--without-gui do not build most graphical projects
237 + #--without-algo do not build CPU-intensive algorithms
238 + #--without-internal do not build internal projects
239 + #--with-gbench ensure that Genome Workbench can be built
240 + #--without-gbench do not build Genome Workbench
241 + myconf+=(
242 + --with-dll
243 + --with-lfs
244 + --with-build-root="${S}"_build
245 + --without-suffix
246 + --without-hostspec
247 + --without-version
248 + --with-bincopy
249 + --without-strip
250 + --without-ccache
251 + --without-distcc
252 +# --with-ncbi-c
253 + --without-ctools
254 +# --with-sss
255 +# --with-sssutils
256 +# --with-sssdb
257 +# --with-included-sss
258 + --with-z="${EPREFIX}/usr"
259 + --with-bz2="${EPREFIX}/usr"
260 + --without-sybase
261 + --with-autodep
262 +# --with-3psw=std:netopt favor standard (system) builds of the above pkgs
263 + # --without-downloaded-vdb is not available in 12.0.0 release yet
264 + # preventing executing git to checkout during configure phase ncbi-vdb sources
265 + # resulting in 'checking for ncbi-vdb... no' and
266 + # '^PACKAGES:'
267 + # '^ disabled: ... VDB'
268 + --without-downloaded-vdb
269 + $(use_with debug)
270 +# $(use_with debug max-debug) # broken in 22.0.0 as it triggers need for https://github.com/google/sanitizers/wiki/AddressSanitizer
271 + $(use_with debug symbols)
272 + $(use_with static-libs static)
273 + $(use_with static static-exe)
274 + $(use_with threads mt)
275 + $(use_with prefix runpath "${EPREFIX}/usr/$(get_libdir)/${PN}")
276 + $(use_with test check)
277 + $(use_with pch)
278 + $(use_with lzo lzo "${EPREFIX}/usr")
279 + $(use_with pcre pcre "${EPREFIX}/usr")
280 + $(use_with gnutls gnutls "${EPREFIX}/usr")
281 + $(use_with mysql mysql "${EPREFIX}/usr")
282 + $(use_with muparser muparser "${EPREFIX}/usr")
283 + $(usex fltk --with-fltk="${EPREFIX}/usr" "")
284 + $(use_with opengl opengl "${EPREFIX}/usr")
285 + $(use_with mesa mesa "${EPREFIX}/usr")
286 + $(use_with opengl glut "${EPREFIX}/usr")
287 + $(use_with opengl glew "${EPREFIX}/usr")
288 + $(use_with opengl glew-mx)
289 + $(use_with wxwidgets wxwidgets "${EPREFIX}/usr")
290 + $(use_with wxwidgets wxwidgets-ucs)
291 + $(use_with freetype freetype "${EPREFIX}/usr")
292 + $(use_with fastcgi fastcgi "${EPREFIX}/usr")
293 + $(use_with berkdb bdb "${EPREFIX}/usr")
294 + $(usex odbc --with-odbc="${EPREFIX}/usr" "")
295 + $(use_with python python "${EPREFIX}/usr")
296 + $(use_with boost boost "${EPREFIX}/usr")
297 + $(use_with sqlite sqlite3 "${EPREFIX}/usr")
298 + $(use_with icu icu "${EPREFIX}/usr")
299 + $(use_with expat expat "${EPREFIX}/usr")
300 + $(use_with xml libxml "${EPREFIX}/usr")
301 + $(use_with xml libxslt "${EPREFIX}/usr")
302 + $(use_with xerces xerces "${EPREFIX}/usr")
303 + $(use_with hdf5 hdf5 "${EPREFIX}/usr")
304 + $(use_with xalan xalan "${EPREFIX}/usr")
305 +# $(use_with gif gif "${EPREFIX}/usr") # prevent compilation failure in "ncbi-tools++-12.0.0/src/util/image/image_io_gif.cpp:351: error: 'QuantizeBuffer' was not declared in this scope"
306 + --without-gif
307 + $(use_with jpeg jpeg "${EPREFIX}/usr")
308 + $(use_with tiff tiff "${EPREFIX}/usr")
309 + $(use_with png png "${EPREFIX}/usr")
310 + $(use_with xpm xpm "${EPREFIX}/usr")
311 + $(use_with curl curl "${EPREFIX}/usr")
312 +# $(use_with X x "${EPREFIX}/usr")
313 +# $(use_with X x) # there is no --with-x option
314 + )
315 +
316 + # http://www.ncbi.nlm.nih.gov/books/NBK7167/
317 + use test || myconf+=( --with-projects="${FILESDIR}"/disable-testsuite-compilation.txt )
318 +
319 + # TODO
320 + # copy optimization -O options from CXXFLAGS to DEF_FAST_FLAGS and pass that also to configure
321 + # otherwise your -O2 will be dropped in some subdirectories and replaced by e.g. -O9
322 +
323 + einfo "bash ./src/build-system/configure --srcdir="${S}" --prefix="${EPREFIX}/usr" --libdir=/usr/lib64 ${myconf[@]}"
324 +
325 +# ECONF_SOURCE="src/build-system" \
326 +# econf \
327 + bash \
328 + ./src/build-system/configure \
329 + --srcdir="${S}" \
330 + --prefix="${EPREFIX}/usr" \
331 + --libdir=/usr/lib64 \
332 + --with-flat-makefile \
333 + ${myconf[@]} || die
334 +#--without-debug \
335 +# --with-bin-release \
336 +# --with-bincopy \
337 +# --without-static \
338 +# --with-dll \
339 +# --with-mt \
340 +# --with-openmp \
341 +# --with-lfs \
342 +# --prefix="${ED}"/usr \
343 +# --libdir="${ED}"/usr/$(get_libdir)/"${PN}" \
344 +# ${myconf} LDFLAGS="-Wl,--no-as-needed" \
345 +# || die
346 +# econf ${myconf[@]}
347 +}
348 +
349 +src_compile() {
350 + ## all_r would ignore the --with-projects contents and build more
351 + ## emake all_r -C GCC*-Release*/build || die
352 + ## all_p with compile only selected/required components
353 + ##cd "${S}"_build &&\
354 + ##emake all_p -C GCC*-Release*/build || die "gcc-4.5.3 crashes at src/objects/valerr/ValidError.cpp:226:1: internal compiler error: Segmentation fault, right?"
355 + #emake all_p -C "${S}"_build/build
356 +
357 + #
358 + # Re: /usr/lib64/ncbi-tools++/libdbapi_driver.so: undefined reference to `ncbi::NcbiGetlineEOL(std::istream&, std::string&)'
359 + #
360 + # The next release should automatically address such underlinking, albeit
361 + # only in --with-flat-makefile configurations. For now (12.0.0), you'll need to
362 + # add or extend more DLL_LIB settings, to which end you may find the
363 + # resources at http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/depgraphs/
364 + # helpful. For instance,
365 + #
366 + # http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/depgraphs/dbapi_driver.html
367 + #
368 + # indicates that src/dbapi/driver/Makefile.dbapi_driver.lib should set
369 + #
370 + # DLL_LIB = xncbi
371 + #
372 + # (You can find the path to that makefile by examining
373 + # .../status/.dbapi_driver.dep or .../build/Makefile.flat.)
374 + #
375 + # To take full advantage of --with-flat-makefile, you'll need the following (instead of 'emake all_p -C "${S}"_build/build') and call configure --with-flat-makefile:
376 + emake -C "${S}"_build/build -f Makefile.flat
377 + #
378 + # >=gcc-5.3.0 is not supported, see also bug #579248#c8
379 + # configure: error: Do not know how to build MT-safe with compiler /usr/bin/x86_64-pc-linux-gnu-g++ 5.3.0
380 +}
381 +
382 +src_install() {
383 + rm -rvf "${S}"_build/lib/ncbi || die
384 + emake install prefix="${ED}/usr" libdir="${ED}/usr/$(get_libdir)/${PN}"
385 +
386 +# dobin "${S}"_build/bin/*
387 +# dolib.so "${S}"_build/lib/*so*
388 +# dolib.a "${S}"_build/lib/*.a
389 +# doheader "${S}"_build/inc/*
390 +
391 + # File collisions with sci-biology/ncbi-tools
392 + mv "${ED}"/usr/bin/asn2asn "${ED}"/usr/bin/asn2asn+
393 + mv "${ED}"/usr/bin/rpsblast "${ED}"/usr/bin/rpsblast+
394 + mv -f "${ED}"/usr/bin/test_regexp "${ED}"/usr/bin/test_regexp+ # drop the eventually mistakenly compiled binaries
395 + mv "${ED}"/usr/bin/vecscreen "${ED}"/usr/bin/vecscreen+
396 + mv "${ED}"/usr/bin/seedtop "${ED}"/usr/bin/seedtop+
397 + #
398 + # idfetch collides with idfetch from ncbi-tools-2.2.26
399 + # Although the two idfetch implementations do deliberately have several
400 + # options in common, the C++ version is not yet a full drop-in replacement
401 + # for the C version (and will never entirely be, due to fundamental
402 + # differences between the two toolkits' argument-parsing conventions).
403 + mv "${ED}"/usr/bin/idfetch "${ED}"/usr/bin/idfetch+ # new in ncbi-tools++-18.0.0
404 +
405 + echo "LDPATH=${EPREFIX}/usr/$(get_libdir)/${PN}" > ${S}/99${PN}
406 + doenvd "${S}/99${PN}"
407 +}
408 +
409 +pkg_postinst() {
410 + einfo 'Please run "source /etc/profile" before using this package in the current shell.'
411 + einfo 'Documentation is at http://www.ncbi.nlm.nih.gov/books/NBK7167/'
412 +}