On Thu, Aug 10, 2017 at 09:40:30AM +0200, Michał Górny wrote:
On czw, 2017-08-10 at 06:58 +0200, Nicolas Bock wrote:
On Mon, Jul 31, 2017 at 09:11:19AM +0200, Nicolas Bock wrote:
Hi,

I would like to add neomutt to the tree. This new package is meant as
an alternative and not a replacement of the existing mutt package.

Thanks for all of the great suggestions and feedback!

This is round two. I have update the ebuild with all your
suggestions. I have also added support for eselecting between mutt
and neomutt. Before the eselect ebuild can land though, we need to
rename the mutt binary so that the managed link can be called
mutt.

What for? How many people are exactly in the dire need of having both
installed simultaneously and switching between them? If you really can't
learn to type the new command, add IUSE=symlink blocking original mutt
and be done with it. Don't add more unowned files to /usr by another
poorly written eselect module.

I changed the ebuild such that it can be installed together with mutt without having to use symlinks or eselet.

# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

inherit autotools eutils flag-o-matic

if [[ ${PV} == 99999999 ]] ; then
        # live ebuild
        inherit git-r3
        EGIT_REPO_URI="https://github.com/neomutt/neomutt.git";
        EGIT_CHECKOUT_DIR="${WORKDIR}/neomutt-${P}"
        KEYWORDS=""

This is going to confuse the hell out of ekeyword.

I split the ebuild into two so that this conditional is unnecessary.

else
        SRC_URI="https://github.com/${PN}/${PN}/archive/${P}.tar.gz";
        KEYWORDS="~amd64 ~x86"
fi

DESCRIPTION="Teaching an Old Dog New Tricks"

This doesn't tell anybody who doesn't know mutt what this is.

Fixed, I reverted that change.

HOMEPAGE="https://www.neomutt.org/";

LICENSE="GPL-2"
SLOT="0"
IUSE="berkdb crypt debug doc gdbm gnutls gpg idn kerberos libressl mbox
        nls notmuch qdbm sasl selinux slang smime ssl tokyocabinet kyotocabinet
        lmdb"

Sort lexically.

Fixed.


CDEPEND="
        app-eselect/eselect-mutt
        app-misc/mime-types
        nls? ( virtual/libintl )
        tokyocabinet?  ( dev-db/tokyocabinet )
        qdbm?  ( dev-db/qdbm )
        gdbm?  ( sys-libs/gdbm )
        berkdb? ( >=sys-libs/db-4:= )
        kyotocabinet? ( dev-db/kyotocabinet )
        lmdb? ( dev-db/lmdb )
        gnutls?  ( >=net-libs/gnutls-1.0.17 )
        !gnutls? (
                ssl? (
                        !libressl? ( >=dev-libs/openssl-0.9.6:0 )
                        libressl? ( dev-libs/libressl )
                )
        )

This is not a correct use of 'ssl' flag:

 global:ssl: Add support for Secure Socket Layer connections

It's supposed to go top-level, above any implementation flags.

        sasl?    ( >=dev-libs/cyrus-sasl-2 )
        kerberos? ( virtual/krb5 )
        idn?     ( net-dns/libidn )
        gpg?     ( >=app-crypt/gpgme-0.9.0 ) 
        smime?   (
                !libressl? ( >=dev-libs/openssl-0.9.6:0 )
                libressl? ( dev-libs/libressl )

What is the point of preferring gnutls when USE=smime pulls openssl
anyway?

        )
        notmuch? ( net-mail/notmuch )
        slang? ( sys-libs/slang )
        !slang? ( >=sys-libs/ncurses-5.2:0 )

Why not = slotop? ncurses definitely changed ABI in the past. It's
something you are supposed to use when needed, not when repoman
complains about it and you didn't accidentally workaround the check.

The current version of ncurses works, so I removed the version on it. I
also sorted the dependencies.

Sorting this would also help reviews.

"
DEPEND="${CDEPEND}
        net-mail/mailbase
        doc? (
                dev-libs/libxml2
                dev-libs/libxslt
                app-text/docbook-xsl-stylesheets
                || ( www-client/lynx www-client/w3m www-client/elinks )
        )"
RDEPEND="${CDEPEND}
        selinux? ( sec-policy/selinux-mutt )
"

S="${WORKDIR}/${PN}-${P}"

src_prepare() {
        eapply "${FILESDIR}/0001-Rename-mutt-to-neomutt.patch"
        eapply_user
        AT_M4DIR="m4" eautoreconf
}

src_configure() {
        local myconf=(
                "$(use_enable crypt pgp)"
                "$(use_enable debug)"
                "$(use_enable doc)"
                "$(use_enable gpg gpgme)"
                "$(use_enable nls)"
                "$(use_enable smime)"
                "$(use_enable notmuch)"
                "$(use_with idn)"
                "$(use_with kerberos gss)"
                "$(use_with sasl)"
                "$(use_with tokyocabinet)"
                "$(use_with kyotocabinet)"
                "$(use_with qdbm)"
                "$(use_with gdbm)"
                "$(use_with berkdb bdb)"
                "$(use_with lmdb)"
                "--with-$(use slang && echo slang || echo 
curses)=${EPREFIX}/usr"

usex

Fixed

                "--sysconfdir=${EPREFIX}/etc/${PN}"

I'd really prefer if you didn't abuse PN to construct paths, and make me
wonder if upstream really wants 'neomutt' or 'mutt' here.

Up until now upstream was using `mutt` but there is work in progress to
rename it to `neomutt`. I think that there is a legitimate use case for
installing `mutt` and `neomutt` at the same time.

                "--with-docdir=${EPREFIX}/usr/share/doc/${PN}-${PVR}"

PF?

Fixed.

        )

        if [[ ${CHOST} == *-solaris* ]] ; then
                # arrows in index view do not show when using wchar_t
                myconf+=( "--without-wc-funcs" )
        fi

Are you sure that this still applies?

No, and as I don't have access to such a machine I can't test it.


        # there's no need for gnutls, ssl or sasl without socket support

What is this comment supposed to mean? Looks like copy-paste without
even reading it.

This was a copy-and-paste leftover. I have removed it. I don't know what
it's supposed to mean either.

        if use gnutls; then
                myconf+=( "--with-gnutls" )
        elif use ssl; then
                myconf+=( "--with-ssl" )
        fi

        if use mbox; then
                myconf+=( "--with-mailpath=${EPREFIX}/var/spool/mail" )
        else
                myconf+=( "--with-homespool=Maildir" )
        fi

Would configuring both paths do any harm? Maybe it'd make easier for
user to switch without having to rebuild it.

Good point. I have removed the conditional. I also removed the default
configuration files.


        econf "${myconf[@]}"
}

src_install() {
        emake DESTDIR="${D}" install
        if use mbox; then
                insinto /etc/${PN}

You can move the insinto above the 'if'.

I have removed this part.

                newins "${FILESDIR}"/Muttrc.mbox Muttrc
        else
                insinto /etc/${PN}
                doins "${FILESDIR}"/Muttrc
        fi

        # A newer file is provided by app-misc/mime-types. So we link it.
        rm "${ED}"/etc/${PN}/mime.types || die
        dosym /etc/mime.types /etc/${PN}/mime.types

Don't use absolute symlinks.

Fixed.


        # A man-page is always handy, so fake one
        if use !doc; then
                emake -C doc DESTDIR="${D}" muttrc.man

Is DESTDIR really necessary here?

No, fixed.

                # make the fake slightly better, bug #413405
                sed -e 's#@docdir@/manual.txt#http://www.mutt.org/doc/manual/#' 
\
                        -e 's#in @docdir@,#at http://www.mutt.org/,#' \

You sure you want to link to the original mutt.org?

True, I changed the link to point to neomutt.

                        -e "s#@sysconfdir@#${EPREFIX}/etc/${PN}#" \
                        -e "s#@bindir@#${EPREFIX}/usr/bin#" \
                        doc/mutt.man > neomutt.1 || die
                cp doc/muttrc.man neomuttrc.5 || die
                doman neomutt.1 neomuttrc.5
        else
                # nuke manpages that should be provided by an MTA, bug #177605
                rm "${ED}"/usr/share/man/man5/{mbox,mmdf}.5 \
                        || ewarn "failed to remove files, please file a bug"

die.

Fixed.

        fi

        dodoc COPYRIGHT ChangeLog* OPS* README*
}

--
Nicolas Bock <[email protected]>

Attachment: signature.asc
Description: PGP signature

Reply via email to