public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Mike Gilbert" <floppym@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-fs/udev/
Date: Sun, 30 Apr 2017 17:23:12 +0000 (UTC)	[thread overview]
Message-ID: <1493572989.e53ac2698567f4699f24f27630592fcfb0938015.floppym@gentoo> (raw)

commit:     e53ac2698567f4699f24f27630592fcfb0938015
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Sun Apr 30 17:22:57 2017 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Sun Apr 30 17:23:09 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e53ac269

sys-fs/udev: convert to meson

Package-Manager: Portage-2.3.5_p31, Repoman-2.3.2_p61

 sys-fs/udev/udev-9999.ebuild | 229 +++++++++++++++++++------------------------
 1 file changed, 99 insertions(+), 130 deletions(-)

diff --git a/sys-fs/udev/udev-9999.ebuild b/sys-fs/udev/udev-9999.ebuild
index ef90718a236..43e3e7cc2cc 100644
--- a/sys-fs/udev/udev-9999.ebuild
+++ b/sys-fs/udev/udev-9999.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=6
 
-inherit autotools bash-completion-r1 linux-info multilib-minimal toolchain-funcs udev user versionator
+inherit bash-completion-r1 linux-info multilib-minimal multiprocessing toolchain-funcs udev user versionator
 
 if [[ ${PV} = 9999* ]]; then
 	EGIT_REPO_URI="https://github.com/systemd/systemd.git"
@@ -44,6 +44,9 @@ COMMON_DEPEND=">=sys-apps/util-linux-2.27.1[${MULTILIB_USEDEP}]
 DEPEND="${COMMON_DEPEND}
 	dev-util/gperf
 	>=dev-util/intltool-0.50
+	>=dev-util/meson-0.40.0
+	dev-util/ninja
+	dev-util/patchelf
 	>=sys-apps/coreutils-8.16
 	virtual/os-headers
 	virtual/pkgconfig
@@ -119,14 +122,9 @@ src_prepare() {
 	# change rules back to group uucp instead of dialout for now wrt #454556
 	sed -i -e 's/GROUP="dialout"/GROUP="uucp"/' rules/*.rules || die
 
-	# stub out the am_path_libcrypt function
-	echo 'AC_DEFUN([AM_PATH_LIBGCRYPT],[:])' > m4/gcrypt.m4
-
 	# apply user patches
 	eapply_user
 
-	eautoreconf
-
 	if ! [[ ${PV} = 9999* ]]; then
 		check_default_rules
 	fi
@@ -137,167 +135,138 @@ src_prepare() {
 	fi
 }
 
+meson_multilib_native_use() {
+	if multilib_is_native_abi && use "$1"; then
+		echo true
+	else
+		echo false
+	fi
+}
+
+multilib_src_configure() {
+	local myconf=(
+		--buildtype=plain
+		--libdir="$(get_libdir)"
+		--localstatedir="${EPREFIX}/var"
+		--prefix="${EPREFIX}/usr"
+		--sysconfdir="${EPREFIX}/etc"
+		-Dacl=$(meson_multilib_native_use acl)
+		-Defi=false
+		-Dkmod=$(meson_multilib_native_use kmod)
+		-Dselinux=$(meson_multilib_native_use selinux)
+		-Dsplit-usr=true
+	)
+	set -- meson "${myconf[@]}" "${S}"
+	echo "$@"
+	"$@" || die
+}
+
 src_configure() {
 	# Prevent conflicts with i686 cross toolchain, bug 559726
 	tc-export AR CC NM OBJCOPY RANLIB
 	multilib-minimal_src_configure
 }
 
-multilib_src_configure() {
-	tc-export CC #463846
-	export cc_cv_CFLAGS__flto=no #502950
-	export cc_cv_CFLAGS__Werror_shadow=no #554454
-	export cc_cv_LDFLAGS__Wl__fuse_ld_gold=no #573874
-
-	# Keep sorted by ./configure --help and only pass --disable flags
-	# when *required* to avoid external deps or unnecessary compile
-	local econf_args
-	econf_args=(
-		--libdir=/usr/$(get_libdir)
-		--docdir=/usr/share/doc/${PF}
-		--disable-nls
-		--disable-dbus
-		$(multilib_native_use_enable kmod)
-		--disable-xkbcommon
-		--disable-seccomp
-		$(multilib_native_use_enable selinux)
-		--disable-xz
-		--disable-lz4
-		--disable-pam
-		$(multilib_native_use_enable acl)
-		--disable-gcrypt
-		--disable-audit
-		--disable-libcryptsetup
-		--disable-qrencode
-		--disable-microhttpd
-		--disable-gnuefi
-		--disable-gnutls
-		--disable-libcurl
-		--disable-libidn
-		--disable-quotacheck
-		--disable-logind
-		--disable-polkit
-		--disable-myhostname
-		$(multilib_is_native_abi || echo "--disable-manpages")
-		--enable-split-usr
-		--without-python
-		--with-bashcompletiondir="$(get_bashcompdir)"
-		--with-rootprefix=
-		$(multilib_is_native_abi && echo "--with-rootlibdir=/$(get_libdir)")
-		--disable-elfutils
-	)
-
-	if ! multilib_is_native_abi; then
-		econf_args+=(
-			MOUNT_{CFLAGS,LIBS}=' '
-		)
+eninja() {
+	if [[ -z ${NINJAOPTS+set} ]]; then
+		NINJAOPTS="-j$(makeopts_jobs) -l$(makeopts_loadavg "${MAKEOPTS}" 0)"
 	fi
-
-	ECONF_SOURCE=${S} econf "${econf_args[@]}"
+	set -- ninja -v ${NINJAOPTS} "$@"
+	echo "$@"
+	"$@" || die
 }
 
 multilib_src_compile() {
-	echo 'BUILT_SOURCES: $(BUILT_SOURCES)' > "${T}"/Makefile.extra
-	emake -f Makefile -f "${T}"/Makefile.extra BUILT_SOURCES
+	# meson creates this link
+	local libudev=$(readlink src/libudev/libudev.so.1)
 
-	# Most of the parallel build problems were solved by >=sys-devel/make-3.82-r4,
-	# but not everything -- separate building of the binaries as a workaround,
-	# which will force internal libraries required for the helpers to be built
-	# early enough, like eg. libsystemd-shared.la
+	local targets=(
+		src/libudev/${libudev}
+	)
 	if multilib_is_native_abi; then
-		local lib_targets=( libudev.la )
-		emake "${lib_targets[@]}"
-
-		local exec_targets=(
+		targets+=(
 			systemd-udevd
 			udevadm
-		)
-		emake "${exec_targets[@]}"
-
-		local helper_targets=(
-			ata_id
-			cdrom_id
-			collect
-			scsi_id
-			v4l_id
-			mtd_probe
-		)
-		emake "${helper_targets[@]}"
-
-		local man_targets=(
+			src/udev/ata_id
+			src/udev/cdrom_id
+			src/udev/collect
+			src/udev/mtd_probe
+			src/udev/scsi_id
+			src/udev/v4l_id
 			man/udev.conf.5
 			man/systemd.link.5
+			man/hwdb.7
 			man/udev.7
 			man/systemd-udevd.service.8
 			man/udevadm.8
 		)
-		emake "${man_targets[@]}"
-	else
-		local lib_targets=( libudev.la )
-		emake "${lib_targets[@]}"
 	fi
+	ninja -v "${targets[@]}" || die
+}
+
+# meson uses an private python script for this
+strip_rpath() {
+	local x
+	for x; do
+		patchelf --remove-rpath "${x}" || die
+	done
 }
 
 multilib_src_install() {
+	local libudev=$(readlink src/libudev/libudev.so.1)
+
+	into /
+	strip_rpath src/libudev/${libudev}
+	dolib.so src/libudev/{${libudev},libudev.so.1,libudev.so}
+
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins src/libudev/libudev.pc
+
 	if multilib_is_native_abi; then
-		local targets=(
-			install-includeHEADERS
-			install-rootbinPROGRAMS
-			install-rootlibLTLIBRARIES
-			install-rootlibexecPROGRAMS
-			install-udevlibexecPROGRAMS
-			install-dist_udevconfDATA
-			install-dist_udevrulesDATA
-			install-pkgconfiglibDATA
-			install-pkgconfigdataDATA
-			install-dist_docDATA
-			install-directories-hook
-			install-dist_bashcompletionDATA
-			install-dist_networkDATA
-			rootlibexec_PROGRAMS=systemd-udevd
-			rootbin_PROGRAMS=udevadm
-			rootlib_LTLIBRARIES="libudev.la"
-			pkgconfiglib_DATA="src/libudev/libudev.pc"
-			pkgconfigdata_DATA="src/udev/udev.pc"
-			INSTALL_DIRS='$(sysconfdir)/udev/rules.d $(sysconfdir)/udev/hwdb.d $(sysconfdir)/systemd/network'
-			dist_bashcompletion_DATA="shell-completion/bash/udevadm"
-			dist_network_DATA="network/99-default.link"
-		)
-		emake -j1 DESTDIR="${D}" "${targets[@]}"
-		doman man/{udev.conf.5,systemd.link.5,udev.7,systemd-udevd.service.8,udevadm.8}
+		into /
+		strip_rpath udevadm
+		dobin udevadm
 
-		# Compatibility symlink for software that looks for libudev.so
-		# without using pkg-config
-		dosym ../../$(get_libdir)/libudev.so.1 \
-			/usr/$(get_libdir)/libudev.so
-	else
-		local targets=(
-			install-libLTLIBRARIES
-			install-includeHEADERS
-			install-pkgconfiglibDATA
-			lib_LTLIBRARIES="libudev.la"
-			pkgconfiglib_DATA="src/libudev/libudev.pc"
-			include_HEADERS="src/libudev/libudev.h"
-		)
+		exeinto /lib/systemd
+		strip_rpath systemd-udevd
+		doexe systemd-udevd
+
+		exeinto /lib/udev
+		strip_rpath src/udev/{ata_id,cdrom_id,collect,mtd_probe,scsi_id,v4l_id}
+		doexe src/udev/{ata_id,cdrom_id,collect,mtd_probe,scsi_id,v4l_id}
+
+		rm rules/99-systemd.rules || die
+		insinto /lib/udev/rules.d
+		doins rules/*.rules
 
-		emake -j1 DESTDIR="${D}" "${targets[@]}"
+		insinto /usr/share/pkgconfig
+		doins src/udev/udev.pc
+
+		mv man/systemd-udevd.service.8 man/systemd-udevd.8 || die
+		rm man/systemd-udevd-{control,kernel}.socket.8 || die
+		doman man/*.[0-9]
 	fi
 }
 
 multilib_src_install_all() {
-	dodoc TODO
+	doheader src/libudev/libudev.h
+
+	insinto /etc/udev
+	doins src/udev/udev.conf
 
-	prune_libtool_files --all
-	rm -f "${D}"/lib/udev/rules.d/99-systemd.rules
-	rm -f "${D}"/usr/share/doc/${PF}/{LICENSE.*,GVARIANT-SERIALIZATION,DIFFERENCES,PORTING-DBUS1,sd-shutdown.h}
+	insinto /lib/systemd/network
+	doins network/99-default.link
 
 	# see src_prepare() for content of 40-gentoo.rules
 	insinto /lib/udev/rules.d
 	doins "${T}"/40-gentoo.rules
 
-	# maintainer note: by not letting the upstream build-sys create the .so
-	# link, you also avoid a parallel make problem
-	mv "${D}"/usr/share/man/man8/systemd-udevd{.service,}.8
+	dobashcomp shell-completion/bash/udevadm
+
+	insinto /usr/share/zsh/site-functions
+	doins shell-completion/zsh/_udevadm
+
+	einstalldocs
 }
 
 pkg_postinst() {


             reply	other threads:[~2017-04-30 17:23 UTC|newest]

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

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=1493572989.e53ac2698567f4699f24f27630592fcfb0938015.floppym@gentoo \
    --to=floppym@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