From: "Fabian Groffen" <grobian@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:prefix commit in: /
Date: Sat, 10 Dec 2011 11:28:10 +0000 (UTC) [thread overview]
Message-ID: <28b58821c000fc413312cb44c85f6697a555625c.grobian@gentoo> (raw)
commit: 28b58821c000fc413312cb44c85f6697a555625c
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 10 10:56:53 2011 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sat Dec 10 10:56:53 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=28b58821
Merge remote-tracking branch 'overlays-gentoo-org/master' into prefix
Conflicts:
bin/dispatch-conf
bin/egencache
bin/phase-functions.sh
bin/portageq
bin/repoman
cnf/make.globals
pym/_emerge/Binpkg.py
pym/portage/__init__.py
pym/portage/data.py
pym/portage/dispatch_conf.py
pym/portage/package/ebuild/_config/special_env_vars.py
bin/chpathtool.py | 182 ++++++++++++++++++++
bin/dispatch-conf | 2 +-
bin/egencache | 8 +-
bin/phase-functions.sh | 2 +-
bin/portageq | 6 +-
bin/repoman | 13 +-
man/make.conf.5 | 4 +
pym/_emerge/Binpkg.py | 45 +++--
pym/_emerge/BinpkgEnvExtractor.py | 4 +-
pym/_emerge/main.py | 4 +-
pym/portage/__init__.py | 10 +-
pym/portage/const.py | 10 +-
pym/portage/data.py | 14 +-
pym/portage/dbapi/porttree.py | 8 +-
pym/portage/dispatch_conf.py | 5 +-
pym/portage/exception.py | 4 +
.../package/ebuild/_config/special_env_vars.py | 2 +-
pym/portage/package/ebuild/config.py | 60 ++++++--
pym/portage/tests/dbapi/test_fakedbapi.py | 2 +-
pym/portage/tests/emerge/test_simple.py | 2 +-
pym/portage/tests/repoman/test_simple.py | 2 +-
pym/portage/tests/resolver/ResolverPlayground.py | 3 +-
pym/portage/util/env_update.py | 2 +-
pym/portage/util/movefile.py | 60 ++++++-
24 files changed, 364 insertions(+), 90 deletions(-)
diff --cc bin/dispatch-conf
index e639b66,75e9911..1b86461
--- a/bin/dispatch-conf
+++ b/bin/dispatch-conf
@@@ -92,7 -85,7 +92,7 @@@ class dispatch
confs = []
count = 0
- config_root = os.environ.get("__PORTAGE_TEST_EPREFIX", EPREFIX)
- config_root = portage.const.EPREFIX or os.sep
++ config_root = EPREFIX or os.sep
self.options = portage.dispatch_conf.read_config(MANDATORY_OPTS)
if "log-file" in self.options:
diff --cc bin/egencache
index d27754d,6d18f66..b7893e6
--- a/bin/egencache
+++ b/bin/egencache
@@@ -842,12 -841,10 +842,10 @@@ def egencache_main(args)
if options.portdir is not None:
env['PORTDIR'] = options.portdir
- eprefix = os.environ.get("__PORTAGE_TEST_EPREFIX")
- if not eprefix:
- eprefix = EPREFIX
- eprefix = portage.const.EPREFIX
++ eprefix = EPREFIX
settings = portage.config(config_root=config_root,
- local_config=False, env=env, _eprefix=eprefix)
+ local_config=False, env=env, eprefix=eprefix)
default_opts = None
if not options.ignore_default_opts:
diff --cc bin/phase-functions.sh
index 40decb7,f862b30..331afc8
--- a/bin/phase-functions.sh
+++ b/bin/phase-functions.sh
@@@ -28,7 -28,7 +28,7 @@@ PORTAGE_READONLY_VARS="D EBUILD EBUILD_
PORTAGE_TMPDIR PORTAGE_UPDATE_ENV PORTAGE_USERNAME \
PORTAGE_VERBOSE PORTAGE_WORKDIR_MODE PORTDIR PORTDIR_OVERLAY \
PROFILE_PATHS REPLACING_VERSIONS REPLACED_BY_VERSION T WORKDIR \
- __PORTAGE_TEST_EPREFIX ED EROOT"
- PORTAGE_OVERRIDE_EPREFIX"
++ PORTAGE_OVERRIDE_EPREFIX ED EROOT"
PORTAGE_SAVED_READONLY_VARS="A CATEGORY P PF PN PR PV PVR"
diff --cc pym/_emerge/Binpkg.py
index 4b66033,b259069..213ced2
--- a/pym/_emerge/Binpkg.py
+++ b/pym/_emerge/Binpkg.py
@@@ -19,8 -19,8 +20,9 @@@ from portage import _unicode_decod
from portage import _unicode_encode
import io
import logging
+ import shutil
from portage.output import colorize
+from portage.const import EPREFIX
class Binpkg(CompositeTask):
@@@ -267,23 -267,6 +270,25 @@@
finally:
f.close()
++ # PREFIX LOCAL: deal with EPREFIX from binpkg
+ # Retrieve the EPREFIX this package was built with
- self._buildprefix = pkg_xpak.getfile(_unicode_encode("EPREFIX",
++ self._build_prefix = pkg_xpak.getfile(_unicode_encode("EPREFIX",
+ encoding=_encodings['repo.content']))
- if not self._buildprefix:
- self._buildprefix = ''
++ if not self._buil_dprefix:
++ self._build_prefix = ''
+ else:
- self._buildprefix = self._buildprefix.strip()
++ self._build_prefix = self._build_prefix.strip()
+ # We want to install in "our" prefix, not the binary one
+ self.settings["EPREFIX"] = EPREFIX
+ f = io.open(_unicode_encode(os.path.join(infloc, 'EPREFIX'),
+ encoding=_encodings['fs'], errors='strict'),
+ mode='w', encoding=_encodings['content'], errors='strict')
+ try:
+ f.write(_unicode_decode(EPREFIX + "\n"))
+ finally:
+ f.close()
++ # END PREFIX LOCAL
+
env_extractor = BinpkgEnvExtractor(background=self.background,
scheduler=self.scheduler, settings=self.settings)
@@@ -309,16 -292,9 +314,18 @@@
self.wait()
return
++ # PREFIX LOCAL:
+ # if the prefix differs, we copy it to the image after
+ # extraction using chpathtool
- if (self._buildprefix != EPREFIX):
++ if (self._build_prefix != EPREFIX):
+ pkgloc = self._work_dir
+ else:
+ pkgloc = self._image_dir
++ # END PREFIX LOCAL
+
extractor = BinpkgExtractorAsync(background=self.background,
env=self.settings.environ(),
- image_dir=self._image_dir,
+ image_dir=pkgloc,
pkg=self.pkg, pkg_path=self._pkg_path,
logfile=self.settings.get("PORTAGE_LOG_FILE"),
scheduler=self.scheduler)
@@@ -333,21 -309,61 +340,27 @@@
self.wait()
return
- if self._buildprefix != EPREFIX:
- try:
- with io.open(_unicode_encode(os.path.join(self._infloc, "EPREFIX"),
- encoding=_encodings['fs'], errors='strict'), mode='r',
- encoding=_encodings['repo.content'], errors='replace') as f:
- self._build_prefix = f.read().rstrip('\n')
- except IOError:
- self._build_prefix = ""
-
- if self._build_prefix == self.settings["EPREFIX"]:
- ensure_dirs(self.settings["ED"])
- self._current_task = None
- self.returncode = os.EX_OK
++ # PREFIX LOCAL: use chpathtool binary
++ if self._build_prefix != EPREFIX:
+ chpathtool = BinpkgChpathtoolAsync(background=self.background,
+ image_dir=self._image_dir, work_dir=self._work_dir,
- buildprefix=self._buildprefix, eprefix=EPREFIX,
++ buildprefix=self._build_prefix, eprefix=EPREFIX,
+ pkg=self.pkg, scheduler=self.scheduler)
+ self._writemsg_level(">>> Adjusting Prefix to %s\n" % EPREFIX)
+ self._start_task(chpathtool, self._chpathtool_exit)
+ else:
self.wait()
- return
-
- chpathtool = SpawnProcess(
- args=[portage._python_interpreter,
- os.path.join(self.settings["PORTAGE_BIN_PATH"], "chpathtool.py"),
- self.settings["D"], self._build_prefix, self.settings["EPREFIX"]],
- background=self.background, env=self.settings.environ(),
- scheduler=self.scheduler,
- logfile=self.settings.get('PORTAGE_LOG_FILE'))
- self._writemsg_level(">>> Adjusting Prefix to %s\n" % self.settings["EPREFIX"])
- self._start_task(chpathtool, self._chpathtool_exit)
++ # END PREFIX LOCAL
def _chpathtool_exit(self, chpathtool):
if self._final_exit(chpathtool) != os.EX_OK:
self._unlock_builddir()
- writemsg("!!! Error Adjusting Prefix to %s\n" % EPREFIX,
- noiselevel=-1)
+ self._writemsg_level("!!! Error Adjusting Prefix to %s" %
+ (self.settings["EPREFIX"],),
+ noiselevel=-1, level=logging.ERROR)
+ self.wait()
+ return
+
- # We want to install in "our" prefix, not the binary one
- with io.open(_unicode_encode(os.path.join(self._infloc, "EPREFIX"),
- encoding=_encodings['fs'], errors='strict'), mode='w',
- encoding=_encodings['repo.content'], errors='strict') as f:
- f.write(self.settings["EPREFIX"] + "\n")
-
- # Move the files to the correct location for merge.
- image_tmp_dir = os.path.join(
- self.settings["PORTAGE_BUILDDIR"], "image_tmp")
- build_d = os.path.join(self.settings["D"],
- self._build_prefix.lstrip(os.sep))
- if not os.path.isdir(build_d):
- # Assume this is a virtual package or something.
- shutil.rmtree(self._image_dir)
- ensure_dirs(self.settings["ED"])
- else:
- os.rename(build_d, image_tmp_dir)
- shutil.rmtree(self._image_dir)
- ensure_dirs(os.path.dirname(self.settings["ED"].rstrip(os.sep)))
- os.rename(image_tmp_dir, self.settings["ED"])
-
self.wait()
def _unlock_builddir(self):
diff --cc pym/portage/__init__.py
index c5b7f76,1df9566..21ca69e
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@@ -505,11 -505,9 +506,8 @@@ def create_trees(config_root=None, targ
if env is None:
env = os.environ
- eprefix = env.get("__PORTAGE_TEST_EPREFIX")
- if not eprefix:
- eprefix = EPREFIX
-
settings = config(config_root=config_root, target_root=target_root,
- env=env, _eprefix=eprefix)
+ env=env, eprefix=eprefix)
settings.lock()
trees._target_eroot = settings['EROOT']
diff --cc pym/portage/const.py
index 83d6696,a32933c..2223b4c
--- a/pym/portage/const.py
+++ b/pym/portage/const.py
@@@ -191,13 -146,11 +191,13 @@@ MANIFEST2_IDENTIFIERS = ("AUX", "MIS
# a config instance (since it's possible to contruct a config instance with
# a different EPREFIX). Therefore, the EPREFIX constant should *NOT* be used
# in the definition of any other contstants within this file.
-EPREFIX=""
+# PREFIX LOCAL: rely on EPREFIX from autotools
+#EPREFIX=""
+# END PREFIX LOCAL
# pick up EPREFIX from the environment if set
- if "__PORTAGE_TEST_EPREFIX" in os.environ:
- EPREFIX = os.environ["__PORTAGE_TEST_EPREFIX"]
+ if "PORTAGE_OVERRIDE_EPREFIX" in os.environ:
+ EPREFIX = os.environ["PORTAGE_OVERRIDE_EPREFIX"]
if EPREFIX:
EPREFIX = os.path.normpath(EPREFIX)
diff --cc pym/portage/data.py
index e8a0a3a,53af6b9..196e5dc
--- a/pym/portage/data.py
+++ b/pym/portage/data.py
@@@ -95,15 -86,8 +90,16 @@@ def _get_global(k)
secpass = 2
#Discover the uid and gid of the portage user/group
try:
- portage_gid = grp.getgrnam(_get_global('_portage_grpname'))[2]
- portage_uid = pwd.getpwnam(_get_global('_portage_uname')).pw_uid
+ portage_gid = grp.getgrnam(_get_global('_portage_grpname')).gr_gid
+ except KeyError:
- # some sysadmins are insane, bug #344307
++ # PREFIX LOCAL: some sysadmins are insane, bug #344307
+ if _get_global('_portage_grpname').isdigit():
+ portage_gid = int(_get_global('_portage_grpname'))
+ else:
+ portage_gid = None
++ # END PREFIX LOCAL
+ try:
- portage_uid = pwd.getpwnam(_get_global('_portage_uname'))[2]
++ portage_uid = pwd.getpwnam(_get_global('_portage_uname')).pw_uid
if secpass < 1 and portage_gid in os.getgroups():
secpass = 1
except KeyError:
diff --cc pym/portage/dispatch_conf.py
index bfd6517,7f407ff..11a6a7d
--- a/pym/portage/dispatch_conf.py
+++ b/pym/portage/dispatch_conf.py
@@@ -40,8 -39,8 +40,9 @@@ def diffstatusoutput_len(cmd)
return (1, 1)
def read_config(mandatory_opts):
- eprefix = os.environ.get("__PORTAGE_TEST_EPREFIX", EPREFIX)
- config_path = os.path.join(eprefix, "etc/dispatch-conf.conf")
- eprefix = portage.const.EPREFIX
++ eprefix = EPREFIX
+ config_path = os.path.join(eprefix or os.sep, "etc/dispatch-conf.conf")
++>>>>>>> overlays-gentoo-org/master
loader = KeyValuePairFileLoader(config_path, None)
opts, errors = loader.load()
if not opts:
diff --cc pym/portage/package/ebuild/_config/special_env_vars.py
index d07f68b,3911e97..a2f6505
--- a/pym/portage/package/ebuild/_config/special_env_vars.py
+++ b/pym/portage/package/ebuild/_config/special_env_vars.py
@@@ -66,9 -66,7 +66,9 @@@ environ_whitelist +=
"REPLACING_VERSIONS", "REPLACED_BY_VERSION",
"ROOT", "ROOTPATH", "T", "TMP", "TMPDIR",
"USE_EXPAND", "USE_ORDER", "WORKDIR",
- "XARGS", "__PORTAGE_TEST_EPREFIX",
+ "XARGS", "PORTAGE_OVERRIDE_EPREFIX",
+ "BPREFIX", "DEFAULT_PATH", "EXTRA_PATH",
+ "PORTAGE_GROUP", "PORTAGE_USER",
]
# user config variables
next reply other threads:[~2011-12-10 11:28 UTC|newest]
Thread overview: 195+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-10 11:28 Fabian Groffen [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-02-25 9:40 [gentoo-commits] proj/portage:prefix commit in: / Fabian Groffen
2024-02-22 7:27 Fabian Groffen
2024-01-18 10:22 Fabian Groffen
2024-01-18 9:36 Fabian Groffen
2023-12-03 10:10 Fabian Groffen
2023-12-03 9:54 Fabian Groffen
2023-12-03 9:54 Fabian Groffen
2023-12-03 9:54 Fabian Groffen
2023-11-24 20:18 Fabian Groffen
2023-11-24 20:06 Fabian Groffen
2023-11-24 20:06 Fabian Groffen
2023-06-22 8:47 Fabian Groffen
2023-06-17 9:04 Fabian Groffen
2023-06-17 8:41 Fabian Groffen
2022-07-28 17:38 Fabian Groffen
2022-07-27 19:20 Fabian Groffen
2022-07-26 19:39 Fabian Groffen
2022-07-25 15:20 Fabian Groffen
2022-07-24 19:27 Fabian Groffen
2022-07-24 14:01 Fabian Groffen
2022-07-24 9:45 Fabian Groffen
2022-01-14 10:40 Fabian Groffen
2022-01-14 10:32 Fabian Groffen
2021-07-06 7:10 Fabian Groffen
2021-04-16 13:37 Fabian Groffen
2021-01-24 9:02 Fabian Groffen
2021-01-04 10:48 Fabian Groffen
2020-12-07 17:28 Fabian Groffen
2020-12-07 16:46 Fabian Groffen
2020-11-23 7:48 Fabian Groffen
2020-11-22 11:15 Fabian Groffen
2020-09-26 11:29 Fabian Groffen
2020-08-02 12:33 Fabian Groffen
2020-06-02 18:55 Fabian Groffen
2020-01-08 19:14 Fabian Groffen
2019-07-01 13:11 Fabian Groffen
2019-05-30 9:20 Fabian Groffen
2019-02-28 12:31 Fabian Groffen
2019-01-11 10:19 Fabian Groffen
2019-01-07 10:22 Fabian Groffen
2018-12-23 11:14 Fabian Groffen
2018-12-12 18:54 Fabian Groffen
2018-08-04 6:56 Fabian Groffen
2018-06-25 8:34 Fabian Groffen
2018-06-17 14:38 Fabian Groffen
2018-06-17 14:38 Fabian Groffen
2018-05-28 15:24 Fabian Groffen
2018-05-25 19:44 Fabian Groffen
2018-05-25 19:44 Fabian Groffen
2018-05-18 19:46 Fabian Groffen
2017-12-12 8:19 Fabian Groffen
2017-10-29 14:51 Fabian Groffen
2017-10-03 7:32 Fabian Groffen
2017-09-22 10:08 Fabian Groffen
2017-08-21 13:27 Fabian Groffen
2017-08-13 7:21 Fabian Groffen
2017-05-23 13:34 Fabian Groffen
2017-03-25 9:12 Fabian Groffen
2017-03-24 19:09 Fabian Groffen
2017-03-24 7:43 Fabian Groffen
2017-03-23 17:46 Fabian Groffen
2017-03-23 17:32 Fabian Groffen
2017-03-23 17:23 Fabian Groffen
2017-03-23 15:38 Fabian Groffen
2017-03-17 8:25 Fabian Groffen
2017-03-02 8:48 Fabian Groffen
2017-03-02 8:18 Fabian Groffen
2017-02-23 14:05 Fabian Groffen
2017-01-27 15:08 Fabian Groffen
2017-01-27 15:08 Fabian Groffen
2016-03-20 19:31 Fabian Groffen
2016-02-21 16:17 Fabian Groffen
2016-02-21 16:17 Fabian Groffen
2016-02-18 19:35 Fabian Groffen
2016-02-18 19:35 Fabian Groffen
2015-06-20 7:12 Fabian Groffen
2015-06-09 18:30 Fabian Groffen
2015-06-09 18:01 Fabian Groffen
2015-06-04 19:47 Fabian Groffen
2015-04-05 9:15 Fabian Groffen
2014-11-12 17:31 Fabian Groffen
2014-10-02 18:48 Fabian Groffen
2014-09-28 17:52 Fabian Groffen
2014-05-06 19:32 Fabian Groffen
2014-05-06 19:18 Fabian Groffen
2014-04-22 19:52 Fabian Groffen
2014-02-06 21:09 Fabian Groffen
2014-01-06 9:47 Fabian Groffen
2013-09-24 17:29 Fabian Groffen
2013-09-20 17:59 Fabian Groffen
2013-09-18 18:34 Fabian Groffen
2013-09-13 18:02 Fabian Groffen
2013-08-10 20:54 Fabian Groffen
2013-07-10 5:31 Fabian Groffen
2013-07-08 19:32 Fabian Groffen
2013-06-29 5:41 Fabian Groffen
2013-06-27 17:20 Fabian Groffen
2013-06-12 9:02 Fabian Groffen
2013-06-09 15:53 Fabian Groffen
2013-05-04 18:55 Fabian Groffen
2013-04-02 16:57 Fabian Groffen
2013-03-31 19:03 Fabian Groffen
2013-03-31 19:00 Fabian Groffen
2013-03-24 8:36 Fabian Groffen
2013-03-23 19:54 Fabian Groffen
2013-02-28 19:29 Fabian Groffen
2013-02-07 20:01 Fabian Groffen
2013-01-27 21:41 Fabian Groffen
2013-01-27 21:41 Fabian Groffen
2013-01-13 10:26 Fabian Groffen
2013-01-10 21:02 Fabian Groffen
2013-01-05 18:14 Fabian Groffen
2012-12-26 14:48 Fabian Groffen
2012-12-02 15:47 Fabian Groffen
2012-12-02 15:36 Fabian Groffen
2012-12-02 15:33 Fabian Groffen
2012-12-02 15:33 Fabian Groffen
2012-12-02 15:33 Fabian Groffen
2012-12-02 13:12 Fabian Groffen
2012-12-02 12:59 Fabian Groffen
2012-11-04 10:48 Fabian Groffen
2012-10-22 17:25 Fabian Groffen
2012-10-02 12:02 Fabian Groffen
2012-09-30 11:22 Fabian Groffen
2012-09-26 18:26 Fabian Groffen
2012-09-12 18:18 Fabian Groffen
2012-09-09 7:40 Fabian Groffen
2012-09-06 18:14 Fabian Groffen
2012-08-27 6:44 Fabian Groffen
2012-08-12 7:50 Fabian Groffen
2012-07-19 16:25 Fabian Groffen
2012-07-06 7:05 Fabian Groffen
2012-04-23 19:23 Fabian Groffen
2012-04-03 18:04 Fabian Groffen
2012-03-31 19:31 Fabian Groffen
2012-03-01 20:32 Fabian Groffen
2012-02-19 9:58 Fabian Groffen
2012-02-09 8:01 Fabian Groffen
2012-01-10 17:45 Fabian Groffen
2011-12-31 16:45 Fabian Groffen
2011-12-26 9:12 Fabian Groffen
2011-12-23 9:51 Fabian Groffen
2011-12-22 9:51 Fabian Groffen
2011-12-19 18:30 Fabian Groffen
2011-12-14 15:25 Fabian Groffen
2011-12-09 20:33 Fabian Groffen
2011-12-02 20:31 Fabian Groffen
2011-12-02 19:20 Fabian Groffen
2011-12-02 19:19 Fabian Groffen
2011-12-02 19:18 Fabian Groffen
2011-12-02 18:03 Fabian Groffen
2011-10-21 17:34 Fabian Groffen
2011-10-21 17:34 Fabian Groffen
2011-10-20 20:28 Fabian Groffen
2011-10-20 17:08 Fabian Groffen
2011-10-20 16:38 Fabian Groffen
2011-10-17 18:36 Fabian Groffen
2011-10-16 13:59 Fabian Groffen
2011-10-15 18:27 Fabian Groffen
2011-10-13 6:52 Fabian Groffen
2011-09-23 18:38 Fabian Groffen
2011-09-23 18:23 Fabian Groffen
2011-09-20 18:25 Fabian Groffen
2011-09-14 18:43 Fabian Groffen
2011-09-14 18:38 Fabian Groffen
2011-09-13 17:41 Fabian Groffen
2011-08-31 18:39 Fabian Groffen
2011-08-30 18:45 Fabian Groffen
2011-08-29 19:03 Fabian Groffen
2011-08-25 20:25 Fabian Groffen
2011-08-20 17:50 Fabian Groffen
2011-07-26 17:35 Fabian Groffen
2011-07-17 9:48 Fabian Groffen
2011-07-17 8:12 Fabian Groffen
2011-07-01 17:44 Fabian Groffen
2011-06-14 15:39 Fabian Groffen
2011-06-06 17:12 Fabian Groffen
2011-05-28 8:29 Fabian Groffen
2011-05-27 17:41 Fabian Groffen
2011-05-14 13:59 Fabian Groffen
2011-05-02 17:41 Fabian Groffen
2011-04-24 12:08 Fabian Groffen
2011-04-15 18:27 Fabian Groffen
2011-04-15 18:27 Fabian Groffen
2011-03-28 16:52 Fabian Groffen
2011-03-23 19:26 Fabian Groffen
2011-03-17 19:08 Fabian Groffen
2011-03-13 14:45 Fabian Groffen
2011-03-09 19:44 Fabian Groffen
2011-02-26 21:15 Fabian Groffen
2011-02-10 18:46 Fabian Groffen
2011-02-10 18:44 Fabian Groffen
2011-02-10 18:20 Fabian Groffen
2011-02-05 12:25 Fabian Groffen
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=28b58821c000fc413312cb44c85f6697a555625c.grobian@gentoo \
--to=grobian@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