public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Mike Frysinger" <vapier@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-libs/ncurses/
Date: Mon, 25 Jun 2018 22:02:56 +0000 (UTC)	[thread overview]
Message-ID: <1529964073.a4fad719c87e66e2bcd90a5db59b25cd2d383555.vapier@gentoo> (raw)

commit:     a4fad719c87e66e2bcd90a5db59b25cd2d383555
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Mon Jun 25 21:58:59 2018 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Mon Jun 25 22:01:13 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a4fad719

sys-libs/ncurses: rewrite the /etc/terminfo code & add a few more variants

Clean up the code to include more comments/documentation, and add rxvt
256color variants as well as screen.xterm-256color for newer versions.

 sys-libs/ncurses/ncurses-6.1-r3.ebuild | 305 +++++++++++++++++++++++++++++++++
 1 file changed, 305 insertions(+)

diff --git a/sys-libs/ncurses/ncurses-6.1-r3.ebuild b/sys-libs/ncurses/ncurses-6.1-r3.ebuild
new file mode 100644
index 00000000000..fa1908d7243
--- /dev/null
+++ b/sys-libs/ncurses/ncurses-6.1-r3.ebuild
@@ -0,0 +1,305 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+inherit flag-o-matic toolchain-funcs multilib-minimal preserve-libs
+
+MY_PV=${PV:0:3}
+PV_SNAP=${PV:4}
+MY_P=${PN}-${MY_PV}
+DESCRIPTION="console display library"
+HOMEPAGE="https://www.gnu.org/software/ncurses/ http://dickey.his.com/ncurses/"
+SRC_URI="mirror://gnu/ncurses/${MY_P}.tar.gz"
+
+LICENSE="MIT"
+# The subslot reflects the SONAME.
+SLOT="0/6"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="ada +cxx debug doc gpm minimal profile static-libs test threads tinfo trace unicode"
+
+DEPEND="gpm? ( sys-libs/gpm[${MULTILIB_USEDEP}] )"
+#	berkdb? ( sys-libs/db )"
+# Block the older ncurses that installed all files w/SLOT=5. #557472
+RDEPEND="${DEPEND}
+	!<=sys-libs/ncurses-5.9-r4:5
+	!<sys-libs/slang-2.3.2_pre23
+	!<x11-terms/rxvt-unicode-9.06-r3
+	!<x11-terms/st-0.6-r1"
+
+S=${WORKDIR}/${MY_P}
+
+PATCHES=(
+	"${FILESDIR}/${PN}-6.0-gfbsd.patch"
+	"${FILESDIR}/${PN}-5.7-nongnu.patch"
+	"${FILESDIR}/${PN}-6.0-rxvt-unicode-9.15.patch" #192083 #383871
+	"${FILESDIR}/${PN}-6.0-pkg-config.patch"
+	"${FILESDIR}/${PN}-5.9-gcc-5.patch" #545114
+	"${FILESDIR}/${PN}-6.0-ticlib.patch" #557360
+	"${FILESDIR}/${PN}-6.0-cppflags-cross.patch" #601426
+	"${FILESDIR}/${PN}-6.1-st07_terminfo_typo.patch" #651494
+)
+
+src_prepare() {
+	[[ -n ${PV_SNAP} ]] && eapply "${WORKDIR}"/${MY_P}-${PV_SNAP}-patch.sh
+	default
+}
+
+src_configure() {
+	unset TERMINFO #115036
+	tc-export_build_env BUILD_{CC,CPP}
+	BUILD_CPPFLAGS+=" -D_GNU_SOURCE" #214642
+
+	# Build the various variants of ncurses -- narrow, wide, and threaded. #510440
+	# Order matters here -- we want unicode/thread versions to come last so that the
+	# binaries in /usr/bin support both wide and narrow.
+	# The naming is also important as we use these directly with filenames and when
+	# checking configure flags.
+	NCURSES_TARGETS=(
+		ncurses
+		$(usex unicode 'ncursesw' '')
+		$(usex threads 'ncursest' '')
+		$(use unicode && usex threads 'ncursestw' '')
+	)
+
+	# When installing ncurses, we have to use a compatible version of tic.
+	# This comes up when cross-compiling, doing multilib builds, upgrading,
+	# or installing for the first time.  Build a local copy of tic whenever
+	# the host version isn't available. #249363 #557598
+	if ! ROOT=/ has_version "~sys-libs/${P}:0" ; then
+		local lbuildflags="-static"
+
+		# some toolchains don't quite support static linking
+		local dbuildflags="-Wl,-rpath,${WORKDIR}/lib"
+		case ${CHOST} in
+			*-darwin*)  dbuildflags=     ;;
+			*-aix*)     dbuildflags=     ;;
+		esac
+		echo "int main() {}" | \
+			$(tc-getCC) -o x -x c - ${lbuildflags} -pipe >& /dev/null \
+			|| lbuildflags="${dbuildflags}"
+
+		# We can't re-use the multilib BUILD_DIR because we run outside of it.
+		BUILD_DIR="${WORKDIR}" \
+		CHOST=${CBUILD} \
+		CFLAGS=${BUILD_CFLAGS} \
+		CXXFLAGS=${BUILD_CXXFLAGS} \
+		CPPFLAGS=${BUILD_CPPFLAGS} \
+		LDFLAGS="${BUILD_LDFLAGS} ${lbuildflags}" \
+		do_configure cross --without-shared --with-normal
+	fi
+	multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+	local t
+	for t in "${NCURSES_TARGETS[@]}" ; do
+		do_configure "${t}"
+	done
+}
+
+do_configure() {
+	local target=$1
+	shift
+
+	mkdir "${BUILD_DIR}/${target}" || die
+	cd "${BUILD_DIR}/${target}" || die
+
+	local conf=(
+		# We need the basic terminfo files in /etc, bug #37026.  We will
+		# add '--with-terminfo-dirs' and then populate /etc/terminfo in
+		# src_install() ...
+		--with-terminfo-dirs="${EPREFIX}/etc/terminfo:${EPREFIX}/usr/share/terminfo"
+
+		# Disabled until #245417 is sorted out.
+		#$(use_with berkdb hashed-db)
+
+		# Enable installation of .pc files.
+		--enable-pc-files
+		# This path is used to control where the .pc files are installed.
+		--with-pkg-config-libdir="${EPREFIX}/usr/$(get_libdir)/pkgconfig"
+
+		# Now the rest of the various standard flags.
+		--with-shared
+		--without-hashed-db
+		$(use_with ada)
+		$(use_with cxx)
+		$(use_with cxx cxx-binding)
+		--with-cxx-shared
+		$(use_with debug)
+		$(use_with profile)
+		# The configure script uses ldd to parse the linked output which
+		# is flaky for cross-compiling/multilib/ldd versions/etc...
+		$(use_with gpm gpm libgpm.so.1)
+		# Required for building  on mingw-w64, and possibly other windows
+		# platforms, bug #639670
+		$(use_enable kernel_Winnt term-driver)
+		--disable-termcap
+		--enable-symlinks
+		--with-rcs-ids
+		--with-manpage-format=normal
+		--enable-const
+		--enable-colorfgbg
+		--enable-hard-tabs
+		--enable-echo
+		$(use_enable !ada warnings)
+		$(use_with debug assertions)
+		$(use_enable !debug leaks)
+		$(use_with debug expanded)
+		$(use_with !debug macros)
+		$(multilib_native_with progs)
+		$(use_with test tests)
+		$(use_with trace)
+		$(use_with tinfo termlib)
+		--disable-stripping
+	)
+
+	if [[ ${target} == ncurses*w ]] ; then
+		conf+=( --enable-widec )
+	else
+		conf+=( --disable-widec )
+	fi
+	if [[ ${target} == ncursest* ]] ; then
+		conf+=( --with-{pthread,reentrant} )
+	else
+		conf+=( --without-{pthread,reentrant} )
+	fi
+	# Make sure each variant goes in a unique location.
+	if [[ ${target} == "ncurses" ]] ; then
+		# "ncurses" variant goes into "${EPREFIX}"/usr/include
+		# It is needed on Prefix because the configure script appends
+		# "ncurses" to "${prefix}/include" if "${prefix}" is not /usr.
+		conf+=( --enable-overwrite )
+	else
+		conf+=( --includedir="${EPREFIX}"/usr/include/${target} )
+	fi
+	# See comments in src_configure.
+	if [[ ${target} != "cross" ]] ; then
+		local cross_path="${WORKDIR}/cross"
+		[[ -d ${cross_path} ]] && export TIC_PATH="${cross_path}/progs/tic"
+	fi
+
+	# Force bash until upstream rebuilds the configure script with a newer
+	# version of autotools. #545532
+	CONFIG_SHELL=${EPREFIX}/bin/bash \
+	ECONF_SOURCE="${S}" \
+	econf "${conf[@]}" "$@"
+}
+
+src_compile() {
+	# See comments in src_configure.
+	if ! ROOT=/ has_version "~sys-libs/${P}:0" ; then
+		BUILD_DIR="${WORKDIR}" \
+		do_compile cross -C progs tic
+	fi
+
+	multilib-minimal_src_compile
+}
+
+multilib_src_compile() {
+	local t
+	for t in "${NCURSES_TARGETS[@]}" ; do
+		do_compile "${t}"
+	done
+}
+
+do_compile() {
+	local target=$1
+	shift
+
+	cd "${BUILD_DIR}/${target}" || die
+
+	# A little hack to fix parallel builds ... they break when
+	# generating sources so if we generate the sources first (in
+	# non-parallel), we can then build the rest of the package
+	# in parallel.  This is not really a perf hit since the source
+	# generation is quite small.
+	emake -j1 sources
+	# For some reason, sources depends on pc-files which depends on
+	# compiled libraries which depends on sources which ...
+	# Manually delete the pc-files file so the install step will
+	# create the .pc files we want.
+	rm -f misc/pc-files || die
+	emake "$@"
+}
+
+multilib_src_install() {
+	local target
+	for target in "${NCURSES_TARGETS[@]}" ; do
+		emake -C "${BUILD_DIR}/${target}" DESTDIR="${D}" install
+	done
+
+	# Move main libraries into /.
+	if multilib_is_native_abi ; then
+		gen_usr_ldscript -a \
+			"${NCURSES_TARGETS[@]}" \
+			$(use tinfo && usex unicode 'tinfow' '') \
+			$(usev tinfo)
+	fi
+	if ! tc-is-static-only ; then
+		# Provide a link for -lcurses.
+		ln -sf libncurses$(get_libname) "${ED}"/usr/$(get_libdir)/libcurses$(get_libname) || die
+	fi
+	# don't delete '*.dll.a', needed for linking #631468
+	if ! use static-libs; then
+		find "${ED}"/usr/ -name '*.a' ! -name '*.dll.a' -delete || die
+	fi
+
+	# Build fails to create this ...
+	dosym ../share/terminfo /usr/$(get_libdir)/terminfo
+}
+
+multilib_src_install_all() {
+#	if ! use berkdb ; then
+		# We need the basic terminfo files in /etc for embedded/recovery. #37026
+		einfo "Installing basic terminfo files in /etc..."
+		local terms=(
+			# Dumb/simple values that show up when using the in-kernel VT.
+			ansi console dumb linux
+			vt{52,100,102,200,220}
+			# [u]rxvt users used to be pretty common.  Probably should drop this
+			# since upstream is dead and people are moving away from it.
+			rxvt{,-unicode}{,-256color}
+			# xterm users are common, as is terminals re-using/spoofing it.
+			xterm xterm-{,256}color
+			# screen is common (and reused by tmux).
+			screen{,-256color}
+			screen.xterm-256color
+		)
+		local x
+		for x in "${terms[@]}"; do
+			local termfile=$(find "${ED}"/usr/share/terminfo/ -name "${x}" 2>/dev/null)
+			local basedir=$(basename "$(dirname "${termfile}")")
+
+			if [[ -n ${termfile} ]] ; then
+				dodir "/etc/terminfo/${basedir}"
+				mv "${termfile}" "${ED}/etc/terminfo/${basedir}/" || die
+				dosym "../../../../etc/terminfo/${basedir}/${x}" \
+					"/usr/share/terminfo/${basedir}/${x}"
+			fi
+		done
+#	fi
+
+	echo "CONFIG_PROTECT_MASK=\"/etc/terminfo\"" | newenvd - 50ncurses
+
+	use minimal && rm -r "${ED}"/usr/share/terminfo*
+	# Because ncurses5-config --terminfo returns the directory we keep it
+	keepdir /usr/share/terminfo #245374
+
+	cd "${S}" || die
+	dodoc ANNOUNCE MANIFEST NEWS README* TO-DO doc/*.doc
+	if use doc ; then
+		docinto html
+		dodoc -r doc/html/
+	fi
+}
+
+pkg_preinst() {
+	preserve_old_lib /$(get_libdir)/libncurses.so.5
+	use unicode && preserve_old_lib /$(get_libdir)/libncursesw.so.5
+}
+
+pkg_postinst() {
+	preserve_old_lib_notify /$(get_libdir)/libncurses.so.5
+	use unicode && preserve_old_lib_notify /$(get_libdir)/libncursesw.so.5
+}


             reply	other threads:[~2018-06-25 22:03 UTC|newest]

Thread overview: 218+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-25 22:02 Mike Frysinger [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-01-26  4:41 [gentoo-commits] repo/gentoo:master commit in: sys-libs/ncurses/ Sam James
2025-01-25 16:10 Sam James
2025-01-04 11:44 Sam James
2024-12-07  2:55 Sam James
2024-12-06 13:04 Sam James
2024-11-17  5:47 Sam James
2024-11-03 21:51 Andreas K. Hüttel
2024-06-22 12:28 Sam James
2024-06-22 12:28 Sam James
2024-05-11 15:19 Sam James
2024-05-07 18:54 Sam James
2024-04-28  4:32 Sam James
2024-04-28  4:32 Sam James
2024-04-28  4:32 Sam James
2024-04-28  4:32 Sam James
2024-04-28  4:32 Sam James
2024-04-28  4:32 Sam James
2024-04-28  4:32 Sam James
2024-04-28  4:03 Sam James
2024-04-28  4:03 Sam James
2024-04-28  4:03 Sam James
2024-04-28  4:03 Sam James
2024-04-28  4:03 Sam James
2024-04-28  4:03 Sam James
2024-04-28  4:03 Sam James
2024-04-28  4:03 Sam James
2024-04-15  2:09 Sam James
2024-04-15  2:03 Sam James
2024-04-06  9:04 Sam James
2023-06-29  6:18 Sam James
2023-06-25 19:17 Sam James
2023-06-02 18:39 Sam James
2023-06-02  0:33 Sam James
2023-05-29 18:21 Sam James
2023-05-21  2:22 Sam James
2023-05-13  7:15 Arthur Zamarin
2023-05-13  3:54 Sam James
2023-05-13  3:54 Sam James
2023-05-13  3:34 Sam James
2023-05-13  3:17 Sam James
2023-05-13  3:17 Sam James
2023-05-13  3:17 Sam James
2023-05-13  3:17 Sam James
2023-05-13  2:35 Sam James
2023-04-13  7:27 Sam James
2023-04-13  1:49 Sam James
2023-02-24 12:59 Sam James
2023-02-22  7:42 Sam James
2023-01-01  1:30 Sam James
2022-12-30 20:02 Mike Gilbert
2022-12-30 20:02 Mike Gilbert
2022-12-30 20:02 Mike Gilbert
2022-12-30 20:02 Mike Gilbert
2022-12-29 16:17 James Le Cuirot
2022-12-16 20:45 Arthur Zamarin
2022-12-16 15:54 Arthur Zamarin
2022-12-06 16:55 Sam James
2022-11-06  3:17 Mike Gilbert
2022-11-06  3:12 Mike Gilbert
2022-11-06  3:12 Mike Gilbert
2022-11-06  3:12 Mike Gilbert
2022-11-06  3:12 Mike Gilbert
2022-09-28 20:17 Sam James
2022-09-25  5:05 Sam James
2022-09-25  1:15 Sam James
2022-09-19  3:05 Sam James
2022-09-19  3:05 Sam James
2022-09-11 16:49 Sam James
2022-09-11 16:43 Sam James
2022-09-11 14:50 Sam James
2022-09-09 12:41 Sam James
2022-09-09 12:40 Sam James
2022-09-09 12:34 Sam James
2022-09-09 11:30 Sam James
2022-09-09 11:19 Sam James
2022-09-01  2:21 Sam James
2022-08-29 19:06 Sam James
2022-08-26 10:03 Sam James
2022-08-26  6:36 Sam James
2022-08-26  6:36 Sam James
2022-07-29  2:54 Sam James
2022-05-14  9:39 Jakov Smolić
2022-05-14  9:39 Jakov Smolić
2022-05-14  9:19 Jakov Smolić
2022-05-14  9:18 Jakov Smolić
2022-05-14  9:18 Jakov Smolić
2022-05-14  9:18 Jakov Smolić
2022-05-14  9:17 Arthur Zamarin
2022-05-14  8:35 Jakov Smolić
2022-05-08  9:02 WANG Xuerui
2022-05-08  9:02 WANG Xuerui
2022-05-03 17:52 Arthur Zamarin
2022-05-03  2:47 Sam James
2022-05-01  0:40 Sam James
2022-04-29 19:21 Sam James
2022-04-29 19:21 Sam James
2022-04-29  8:14 Sam James
2022-04-29  6:05 Agostino Sarubbo
2022-04-29  6:04 Agostino Sarubbo
2022-04-29  6:04 Agostino Sarubbo
2022-04-28  0:55 Sam James
2022-04-28  0:55 Sam James
2022-04-28  0:46 Sam James
2022-04-06 18:08 David Seifert
2021-11-11  3:28 Sam James
2021-11-10  3:19 Sam James
2021-11-01  2:23 Mike Frysinger
2021-10-27 15:07 Sam James
2021-10-27  4:13 Sam James
2021-10-26  3:14 Sam James
2021-10-24  0:19 Sam James
2021-10-23 13:51 Sam James
2021-10-23 13:51 Sam James
2021-10-23 13:51 Sam James
2021-10-23 13:51 Sam James
2021-10-22  8:21 Lars Wendler
2021-09-18 18:26 Sam James
2021-07-19 13:59 Lars Wendler
2021-05-09 12:53 David Seifert
2021-01-06 15:35 Fabian Groffen
2020-12-26 20:59 Sam James
2020-12-26 20:56 Sam James
2020-11-27 23:51 Sam James
2020-07-14 10:49 Lars Wendler
2020-05-11 16:49 Agostino Sarubbo
2020-05-10  8:10 Sergei Trofimovich
2020-05-08 17:15 Agostino Sarubbo
2020-05-08 17:13 Agostino Sarubbo
2020-05-08 17:11 Agostino Sarubbo
2020-05-06 14:23 Agostino Sarubbo
2020-03-29 10:16 Sergei Trofimovich
2020-02-13 10:20 Lars Wendler
2019-12-24 14:00 Mikle Kolyada
2019-12-17 21:41 Sergei Trofimovich
2019-12-15 14:07 Agostino Sarubbo
2019-12-15 13:59 Agostino Sarubbo
2019-12-15 12:48 Agostino Sarubbo
2019-12-15 11:38 Agostino Sarubbo
2019-12-15 10:36 Mikle Kolyada
2019-12-14 23:01 Aaron Bauman
2019-07-28 20:07 Mikle Kolyada
2019-07-28 20:07 Mikle Kolyada
2019-07-28 20:07 Mikle Kolyada
2019-07-21 14:55 Aaron Bauman
2019-07-21  8:16 Sergei Trofimovich
2019-07-19 11:33 Agostino Sarubbo
2019-07-18 14:26 Agostino Sarubbo
2019-07-18 13:11 Agostino Sarubbo
2019-07-18 13:07 Agostino Sarubbo
2019-07-18 13:06 Agostino Sarubbo
2019-07-18  7:26 Agostino Sarubbo
2019-07-17 14:03 Agostino Sarubbo
2019-07-17 12:17 Mikle Kolyada
2019-07-16 15:13 Lars Wendler
2019-07-16 15:13 Lars Wendler
2019-06-08 22:25 James Le Cuirot
2019-05-21 18:21 Lars Wendler
2019-05-03 23:03 Mikle Kolyada
2018-06-25 22:02 Mike Frysinger
2018-05-17  8:49 Mikle Kolyada
2018-04-17 18:56 Lars Wendler
2018-04-17 17:58 Thomas Deutschmann
2018-04-15 17:01 Mikle Kolyada
2018-04-08  6:54 Matt Turner
2018-03-31  9:38 Jeroen Roovers
2018-03-28 19:45 Mart Raudsepp
2018-03-28  7:47 Lars Wendler
2018-03-27 19:07 Sergei Trofimovich
2018-03-25 20:22 Sergei Trofimovich
2018-03-25 13:46 Sergei Trofimovich
2018-03-24 21:19 Sergei Trofimovich
2018-03-24  8:00 Mikle Kolyada
2018-02-21 14:52 Lars Wendler
2018-02-21  8:13 Lars Wendler
2018-02-21  5:19 Jeroen Roovers
2018-02-20 13:57 Lars Wendler
2018-01-28 21:22 Lars Wendler
2018-01-20 18:34 Mike Frysinger
2018-01-02 11:08 Mike Frysinger
2017-12-31 21:49 Michał Górny
2017-03-09  5:01 Mike Frysinger
2017-01-15 15:28 Benda XU
2016-12-06  5:42 Mike Frysinger
2016-12-04 15:45 Lars Wendler
2016-11-15 15:40 Mike Frysinger
2016-11-15 15:40 Mike Frysinger
2016-10-26 16:35 Markus Meier
2016-10-21 18:13 Tobias Klausmann
2016-10-21 18:11 Tobias Klausmann
2016-10-09  7:30 Jeroen Roovers
2016-02-09 14:54 Fabian Groffen
2015-12-21 19:01 Michał Górny
2015-12-21 14:49 Patrick Lauer
2015-11-24 17:31 Mike Frysinger
2015-10-14  5:40 Benda XU
2015-10-02 12:01 Michał Górny
2015-08-31 18:44 Fabian Groffen
2015-08-30  1:52 Mike Gilbert
2015-08-28 17:39 Mike Frysinger
2015-08-28 10:53 Jason Zaman
2015-08-27 17:03 Jason Zaman
2015-08-27 17:03 Jason Zaman
2015-08-27 11:59 Jason Zaman
2015-08-27  6:53 Mike Frysinger
2015-08-26 18:20 Mike Frysinger
2015-08-26 12:28 Justin Lecher
2015-08-26 12:19 Justin Lecher
2015-08-17 13:52 Mike Frysinger
2015-08-17 13:52 Mike Frysinger
2015-08-12 10:38 Mike Frysinger
2015-08-12 10:38 Mike Frysinger
2015-08-12 10:38 Mike Frysinger
2015-08-12 10:38 Mike Frysinger
2015-08-12 10:38 Mike Frysinger
2015-08-12 10:38 Mike Frysinger
2015-08-12 10:38 Mike Frysinger
2015-08-12 10:09 Mike Frysinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1529964073.a4fad719c87e66e2bcd90a5db59b25cd2d383555.vapier@gentoo \
    --to=vapier@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox