commit:     539a232d6c9d5faca4e067bcf9c96cccac3acdc7
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Sun Nov  1 05:59:13 2020 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Sun Nov  1 11:49:58 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=539a232d

net-mail/notmuch: QA revbump: fix multiple issues

add apidoc flag, which depends on doxygen
split doxygen dep under apidoc flag
apidoc depends on doc, add required_use
add py3.9 and pypy3 support (all tests pass)
switch to cffi virtual
add missing PYTHON_USEDEP to cffi
add desktop file installation for emacs
regen desktop database if required
add python tests and pytest dep
remove mock dep, works fine with stdlib one
add perl dep where appropriate for some scripts
add missing subslot on zlib
use standard python subphase functions instead of bindings()
fix makefile target sed
use more standard funtion calls instead of hard to read hacks
work around a Makefile race emacs doc generation, it needs -j1
add python documentation installation
add basic docs, switch to einstalldocs
prevent automagic dependency on gnu parallel in tests
make tests more verbose
prevent automagic dependency on sphinx (bug #751535)
fix manpage installation
fix manpage compression
fix texinfo file installation
fix missing manpage symlink
fix overly generic manpage name
fix nmbug & friends shebangs
silence pushd/popd calls
move around some deps
misc style changes

TODO: more cleanup needed. nmbug need python dependencies.
TODO: remove old bindings to fix setuptools warning.
TODO: crypto tests fail ( probably #749969 )

Bug: https://bugs.gentoo.org/751535
Package-Manager: Portage-3.0.8, Repoman-3.0.2
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 net-mail/notmuch/metadata.xml           |   1 +
 net-mail/notmuch/notmuch-0.31-r1.ebuild | 213 ------------------------
 net-mail/notmuch/notmuch-0.31-r2.ebuild | 279 ++++++++++++++++++++++++++++++++
 3 files changed, 280 insertions(+), 213 deletions(-)

diff --git a/net-mail/notmuch/metadata.xml b/net-mail/notmuch/metadata.xml
index 799fdb5f19a..9c4dc0d6dd2 100644
--- a/net-mail/notmuch/metadata.xml
+++ b/net-mail/notmuch/metadata.xml
@@ -10,6 +10,7 @@
                <name>Proxy Maintainers</name>
        </maintainer>
        <use>
+               <flag name="apidoc">Provide doxygen generated API docs</flag>
                <flag name="doc">Install API documentation</flag>
                <flag name="crypt">Support decryption and verification of 
PGP/MIME
                        messages and in Emacs UI - encryption; support also 
S/MIME

diff --git a/net-mail/notmuch/notmuch-0.31-r1.ebuild 
b/net-mail/notmuch/notmuch-0.31-r1.ebuild
deleted file mode 100644
index 07472ca4b03..00000000000
--- a/net-mail/notmuch/notmuch-0.31-r1.ebuild
+++ /dev/null
@@ -1,213 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-DISTUTILS_OPTIONAL=1
-NEED_EMACS="24.1"
-PYTHON_COMPAT=( python3_{6,7,8} )
-
-inherit bash-completion-r1 distutils-r1 elisp-common eutils flag-o-matic \
-       pax-utils toolchain-funcs
-
-DESCRIPTION="Thread-based e-mail indexer, supporting quick search and tagging"
-HOMEPAGE="https://notmuchmail.org/";
-SRC_URI="https://notmuchmail.org/releases/${P}.tar.xz
-       test? ( 
https://notmuchmail.org/releases/test-databases/database-v1.tar.xz )"
-
-LICENSE="GPL-3"
-# Sub-slot corresponds to major wersion of libnotmuch.so.X.Y. Bump of Y is
-# meant to be binary backward compatible.
-SLOT="0/5"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ppc64 ~x86"
-REQUIRED_USE="
-       nmbug? ( python )
-       python? ( ${PYTHON_REQUIRED_USE} )
-       test? ( crypt emacs python valgrind )
-"
-IUSE="crypt doc emacs mutt nmbug python test valgrind"
-RESTRICT="!test? ( test )"
-
-BDEPEND="
-       virtual/pkgconfig
-       doc? (
-               app-doc/doxygen
-               dev-python/mock[${PYTHON_USEDEP}]
-               dev-python/sphinx
-               sys-apps/texinfo
-       )
-"
-COMMON_DEPEND="
-       dev-libs/glib
-       dev-libs/gmime:3.0[crypt]
-       >=dev-libs/xapian-1.4.0:=
-       sys-libs/talloc
-       sys-libs/zlib
-       emacs? ( >=app-editors/emacs-${NEED_EMACS}:* )
-       python? (
-               ${PYTHON_DEPS}
-               dev-python/cffi
-       )
-"
-DEPEND="${COMMON_DEPEND}
-       test? (
-               >=app-editors/emacs-${NEED_EMACS}:*[libxml2]
-               app-misc/dtach
-               sys-devel/gdb
-               crypt? (
-                       app-crypt/gnupg
-                       dev-libs/openssl
-               )
-       )
-       valgrind? ( dev-util/valgrind )
-"
-RDEPEND="${COMMON_DEPEND}
-       crypt? ( app-crypt/gnupg )
-       mutt? (
-               dev-perl/File-Which
-               dev-perl/Mail-Box
-               dev-perl/MailTools
-               dev-perl/String-ShellQuote
-               dev-perl/Term-ReadLine-Gnu
-               virtual/perl-Digest-SHA
-               virtual/perl-File-Path
-               virtual/perl-Getopt-Long
-               virtual/perl-Pod-Parser
-       )
-       nmbug? ( dev-vcs/git )
-"
-
-DOCS=( AUTHORS NEWS README )
-SITEFILE="50${PN}-gentoo.el"
-
-bindings() {
-       local rc=0
-       if use python; then
-               # CFFI based bindings (recommended)
-               pushd bindings/python-cffi || die
-               ${@}
-               rc=${?}
-               popd || die
-
-               # Old deprecated bindings, #736204. These are known to cause
-               # memory loss and other issues. Avoid if at all possible.
-               pushd bindings/python || die
-               ${@}
-               rc=${?}
-               popd || die
-       fi
-       return ${rc}
-}
-
-pkg_setup() {
-       use emacs && elisp-check-emacs-version
-}
-
-src_unpack() {
-       unpack "${P}".tar.xz
-       if use test; then
-               mkdir -p "${S}"/test/test-databases || die
-               cp "${DISTDIR}"/database-v1.tar.xz "${S}"/test/test-databases/ 
|| die
-       fi
-}
-
-src_prepare() {
-       local _deps=""
-       default
-
-       # Python bindings
-       bindings distutils-r1_src_prepare
-       mv contrib/notmuch-mutt/README contrib/notmuch-mutt/README-mutt || die
-
-       # Override dependencies for 'install' target
-       use doc && _deps="install-info"
-       sed -e "s/^install:.\+/install: all ${_deps}/" -i Makefile.local || die
-
-       if use test; then
-               append-cflags -g
-               append-cxxflags -g
-       fi
-
-       if [[ ${CHOST} == *-solaris* ]] ; then
-               # Non-autoconf configure
-               append-ldflags -lnsl -lsocket
-       fi
-}
-
-src_configure() {
-       python_setup # For sphinx
-       local _args=(
-               --bashcompletiondir="$(get_bashcompdir)"
-               --emacslispdir="${EPREFIX}/${SITELISP}/${PN}"
-               --emacsetcdir="${EPREFIX}/${SITEETC}/${PN}"
-               --without-desktop
-               --without-ruby
-               --zshcompletiondir="${EPREFIX}/usr/share/zsh/site-functions"
-               $(use_with emacs)
-               $(use_with doc api-docs)
-       )
-       tc-export CC CXX
-       econf "${_args[@]}"
-}
-
-src_compile() {
-       python_setup # For sphinx
-       V=1 default
-       bindings distutils-r1_src_compile
-
-       if use mutt; then
-               pushd contrib/notmuch-mutt || die
-               emake notmuch-mutt.1
-               popd || die
-       fi
-}
-
-src_test() {
-       pax-mark -m notmuch
-       LD_LIBRARY_PATH="${WORKDIR}/${P}/lib" V=1 default
-       pax-mark -ze notmuch
-}
-
-src_install() {
-       default
-       doman doc/_build/man/man?/*.?
-
-       if use emacs; then
-               elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die
-       fi
-
-       if use nmbug; then
-               dobin devel/nmbug/nmbug
-               dobin devel/nmbug/notmuch-report
-       fi
-
-       if use mutt; then
-               pushd contrib/notmuch-mutt || die
-               dobin notmuch-mutt
-               doman notmuch-mutt.1
-               insinto /etc/mutt
-               doins notmuch-mutt.rc
-               dodoc README-mutt
-               popd || die
-       fi
-
-       DOCS="" bindings distutils-r1_src_install
-}
-
-pkg_preinst() {
-       local _rcfile="/etc/mutt/notmuch-mutt.rc"
-       if use mutt && ! [[ -e ${ROOT}${_rcfile} ]]; then
-               elog "To enable notmuch support in mutt, add the following line"
-               elog "to your mutt config file:"
-               elog ""
-               elog "  source ${_rcfile}"
-       fi
-}
-
-pkg_postinst() {
-       use emacs && elisp-site-regen
-}
-
-pkg_postrm() {
-       use emacs && elisp-site-regen
-}

diff --git a/net-mail/notmuch/notmuch-0.31-r2.ebuild 
b/net-mail/notmuch/notmuch-0.31-r2.ebuild
new file mode 100644
index 00000000000..f9466e5398c
--- /dev/null
+++ b/net-mail/notmuch/notmuch-0.31-r2.ebuild
@@ -0,0 +1,279 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DISTUTILS_OPTIONAL=1
+NEED_EMACS="24.1"
+PYTHON_COMPAT=( python3_{6,7,8,9} pypy3 )
+
+inherit bash-completion-r1 desktop distutils-r1 elisp-common eutils 
flag-o-matic pax-utils toolchain-funcs xdg-utils
+
+DESCRIPTION="Thread-based e-mail indexer, supporting quick search and tagging"
+HOMEPAGE="https://notmuchmail.org/";
+SRC_URI="https://notmuchmail.org/releases/${P}.tar.xz
+       test? ( 
https://notmuchmail.org/releases/test-databases/database-v1.tar.xz )"
+
+LICENSE="GPL-3"
+# Sub-slot corresponds to major wersion of libnotmuch.so.X.Y. Bump of Y is
+# meant to be binary backward compatible.
+SLOT="0/5"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ppc64 ~x86"
+REQUIRED_USE="
+       apidoc? ( doc )
+       nmbug? ( python )
+       python? ( ${PYTHON_REQUIRED_USE} )
+       test? ( crypt emacs python valgrind )
+"
+IUSE="apidoc crypt doc emacs mutt nmbug python test valgrind"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+       virtual/pkgconfig
+       apidoc? (
+               app-doc/doxygen
+               dev-lang/perl
+       )
+       doc? (
+               dev-python/sphinx
+               sys-apps/texinfo
+       )
+       python? ( dev-python/pytest[${PYTHON_USEDEP}] )
+"
+
+COMMON_DEPEND="
+       dev-libs/glib
+       dev-libs/gmime:3.0[crypt]
+       >=dev-libs/xapian-1.4.0:=
+       sys-libs/talloc
+       sys-libs/zlib:=
+       emacs? ( >=app-editors/emacs-${NEED_EMACS}:* )
+       python? (
+               ${PYTHON_DEPS}
+               virtual/python-cffi[${PYTHON_USEDEP}]
+       )
+"
+
+DEPEND="${COMMON_DEPEND}
+       test? (
+               >=app-editors/emacs-${NEED_EMACS}:*[libxml2]
+               app-misc/dtach
+               sys-devel/gdb
+               crypt? (
+                       app-crypt/gnupg
+                       dev-libs/openssl
+               )
+       )
+       valgrind? ( dev-util/valgrind )
+"
+
+RDEPEND="${COMMON_DEPEND}
+       crypt? ( app-crypt/gnupg )
+       mutt? (
+               dev-perl/File-Which
+               dev-perl/Mail-Box
+               dev-perl/MailTools
+               dev-perl/String-ShellQuote
+               dev-perl/Term-ReadLine-Gnu
+               virtual/perl-Digest-SHA
+               virtual/perl-File-Path
+               virtual/perl-Getopt-Long
+               virtual/perl-Pod-Parser
+       )
+       nmbug? ( dev-vcs/git )
+"
+
+DOCS=( AUTHORS NEWS README )
+SITEFILE="50${PN}-gentoo.el"
+
+pkg_setup() {
+       use emacs && elisp-check-emacs-version
+}
+
+src_unpack() {
+       unpack "${P}".tar.xz
+       if use test; then
+               mkdir -p "${S}"/test/test-databases || die
+               cp "${DISTDIR}"/database-v1.tar.xz "${S}"/test/test-databases/ 
|| die
+       fi
+}
+
+src_prepare() {
+       default
+
+       use python && distutils-r1_src_prepare
+
+       mv contrib/notmuch-mutt/README contrib/notmuch-mutt/README-mutt || die
+
+       # Override 'install' target, we want to install manpages with doman, 
but let it install texinfo files.
+       sed -i "s/all install-man install-info/all $(usex doc install-info 
'')/" "Makefile.local" || die
+
+       use test && append-flags '-g'
+
+       # Non-autoconf configure
+       [[ ${CHOST} == *-solaris* ]] && append-ldflags '-lnsl' '-lsocket'
+}
+
+src_configure() {
+       python_setup # For sphinx
+
+       tc-export CC CXX
+
+       local myconf=(
+               --bashcompletiondir="$(get_bashcompdir)"
+               --emacslispdir="${EPREFIX}/${SITELISP}/${PN}"
+               --emacsetcdir="${EPREFIX}/${SITEETC}/${PN}"
+               --without-desktop
+               --without-ruby
+               --zshcompletiondir="${EPREFIX}/usr/share/zsh/site-functions"
+               $(use_with apidoc api-docs)
+               $(use_with doc docs)
+               $(use_with emacs)
+       )
+
+       econf "${myconf[@]}"
+}
+
+python_compile() {
+       pushd bindings/python-cffi > /dev/null || die
+       distutils-r1_python_compile
+       popd > /dev/null || die
+
+       # TODO: we want to drop those, research revdeps
+       pushd bindings/python > /dev/null || die
+       distutils-r1_python_compile
+       popd > /dev/null || die
+}
+
+python_compile_all() {
+       use doc && emake -C bindings/python/docs html
+}
+
+src_compile() {
+       python_setup # For sphinx
+
+       # prevent race in emacs doc generation
+       # FileNotFoundError: [Errno 2] No such file or directory: 
'..work/notmuch-0.31/emacs/notmuch.rsti'
+       if use emacs; then
+               use doc && emake -j1 -C emacs docstring.stamp V=1 #nowarn
+       fi
+
+       emake V=1
+
+       use python && distutils-r1_src_compile
+
+       if use mutt; then
+               pushd contrib/notmuch-mutt > /dev/null || die
+               emake notmuch-mutt.1
+               popd > /dev/null || die
+       fi
+}
+
+python_test() {
+       # we only have tests for cffi bindings
+       pushd bindings/python-cffi > /dev/null || die
+       rm -f tox.ini || die
+       pytest -vv || die "Tests failed with ${EPYTHON}"
+       popd > /dev/null || die
+}
+
+src_test() {
+       local test_failures=()
+       # NOTMUCH_TEST_SERIALIZE is needed to avoid using gnu parallel (if it's 
installed)
+       pax-mark -m notmuch
+       NOTMUCH_TEST_SERIALIZE=1 \
+       LD_LIBRARY_PATH="${S}/lib" \
+               nonfatal emake test V=1 OPTIONS="--verbose --tee" || 
test_failures+=( "'emake tests'" )
+       pax-mark -ze notmuch
+
+       # both lib and bin needed for testsuite.
+       if use python; then
+               LD_LIBRARY_PATH="${S}/lib" \
+                       PATH="${S}:${PATH}" \
+                       nonfatal distutils-r1_src_test || test_failures+=( 
"'python tests'" )
+       fi
+
+       [[ ${test_failures} ]] && die "Tests failed: ${test_failures[@]}"
+}
+
+python_install() {
+       pushd bindings/python-cffi > /dev/null || die
+       distutils-r1_python_install
+       popd > /dev/null || die
+
+       pushd bindings/python > /dev/null || die
+       distutils-r1_python_install
+       popd > /dev/null || die
+}
+
+src_install() {
+       default
+
+       local DOCS=( README{,.rst} INSTALL NEWS )
+
+       if use doc; then
+               pushd doc/_build/man/man1 > /dev/null || die
+               ln notmuch.1 notmuch-setup.1 || die
+               popd > /dev/null || die
+               if use apidoc; then
+                       # rename overly generic manpage to avoid clashes
+                       mv doc/_build/man/man3/deprecated.3 \
+                               doc/_build/man/man3/notmuch-deprecated.3 || die
+               fi
+               doman doc/_build/man/man?/*.?
+       fi
+
+
+       if use emacs; then
+               elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die
+               domenu emacs/notmuch-emacs-mua.desktop
+       fi
+
+       if use nmbug; then
+               # TODO: those guys need proper deps
+               python_fix_shebang devel/nmbug/{nmbug,notmuch-report}
+               dobin devel/nmbug/{nmbug,notmuch-report}
+       fi
+
+       if use mutt; then
+               pushd contrib/notmuch-mutt > /dev/null || die
+               dobin notmuch-mutt
+               # this manpage is built by pod2man
+               doman notmuch-mutt.1
+               insinto /etc/mutt
+               doins notmuch-mutt.rc
+               DOCS+=( README-mutt )
+               popd > /dev/null || die
+       fi
+
+       einstalldocs
+
+       if use python; then
+               use doc && local HTML_DOCS=( bindings/python/docs/html/. )
+               distutils-r1_src_install
+       fi
+}
+
+pkg_preinst() {
+       local _rcfile="/etc/mutt/notmuch-mutt.rc"
+       if use mutt && ! [[ -e ${ROOT}${_rcfile} ]]; then
+               elog "To enable notmuch support in mutt, add the following line"
+               elog "to your mutt config file:"
+               elog ""
+               elog "  source ${_rcfile}"
+       fi
+}
+
+pkg_postinst() {
+       if use emacs; then
+               elisp-site-regen
+               xdg_desktop_database_update
+       fi
+}
+
+pkg_postrm() {
+       if use emacs; then
+               elisp-site-regen
+               xdg_desktop_database_update
+       fi
+}

Reply via email to