git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Daniel Jacques <dnj@google.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Jeff King <peff@peff.net>, Paul Smith <paul@mad-scientist.net>,
	git@vger.kernel.org
Subject: Re: Git 2.18: RUNTIME_PREFIX... is it working?
Date: Tue, 10 Jul 2018 10:03:00 -0400	[thread overview]
Message-ID: <CAD1RUU8pT-3GKN4qRjysi+re+AKF4eB+VEDr+GzMW_4=E4uftQ@mail.gmail.com> (raw)
In-Reply-To: <nycvar.QRO.7.76.6.1807101339370.75@tvgsbejvaqbjf.bet>

Perry Hutchison wrote:

> If we need /proc, wouldn't we _already_ be unhappy inside a chroot
> that didn't mount /proc, even _with_ fallback to static paths?
> Last I knew, the whole point of chroots/containers/jails/etc. was to
> prevent access, from a process running inside the container, to any
> part of the FS that's outside of the container.

Yep. The code also allows for use of "argv[0]", but that has its own set of
problems. These were previously covered in the discussions leading up to
the patch landing, but to summarize, "argv[0]" can be completely manipulated
by the calling process, whimsically or in response to constraints such as
links, and is wholly unreliable for self-location.

Other kernels have their own behaviors with respect to path self-location,
and none seem to be straightforward. This link seems to have a good
rundown of the details and differences:

https://stackoverflow.com/questions/1023306/finding-current-executables-path-without-proc-self-exe

All things considered, I think executable path self-location is markedly more
fragile than using static paths, both with increased dependencies and added
inconsistent behavior and limitations, and should not be the default
on any platform.

Both Johannes' original RUNTIME_PREFIX implementation for Windows and the
Linux/etc. expansions that I did were written to serve constrained special case
deployments. In that capacity, they can be really useful, as the fragility is
managed by their respective environments.

My particular use case served the purpose of building Git once and deploying
it via archive on other systems. This capability requires the additional work of
building portable versions of Git's dependencies and their associated
resources, and statically linking everything together.

This is a lot more portability than the conventional user requires, and also
necessitates a significantly more complex build process. However, making Git
itself portable via RUNTIME_PREFIX without similar work on its dependencies
limits the usefulness of that portability, since it's still bound to
the system's
libraries and their resources.

Cheers,
-Dan

  reply	other threads:[~2018-07-10 14:03 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-04  5:12 Git 2.18: RUNTIME_PREFIX... is it working? Paul Smith
2018-07-04 11:22 ` Johannes Schindelin
2018-07-05 15:36   ` Paul Smith
2018-07-06  9:00     ` Johannes Schindelin
2018-07-06 13:18       ` Daniel Jacques
2018-07-08 18:52         ` Paul Smith
2018-07-08 21:52           ` Johannes Schindelin
2018-07-09 19:58             ` Jeff King
2018-07-09 20:26               ` Johannes Schindelin
2018-07-10  2:21                 ` Jeff King
2018-07-10 11:40                   ` Johannes Schindelin
2018-07-10 14:03                     ` Daniel Jacques [this message]
2018-07-10 16:09                       ` Junio C Hamano
2018-07-09 21:05               ` Junio C Hamano
2018-07-10  3:56               ` Jeff King
2018-07-10  7:13                 ` Perry Hutchison
2018-07-10 14:03                   ` Jeff King
2018-07-10 22:20                     ` Jonathan Nieder
2018-07-10 22:21                       ` Jonathan Nieder
2018-07-17  9:45                       ` Johannes Schindelin
2018-07-14 20:51                     ` brian m. carlson
2018-07-18 12:18                       ` Johannes Schindelin
2018-07-19 22:26                         ` brian m. carlson
2018-07-20 14:29                           ` Jeff Hostetler

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to='CAD1RUU8pT-3GKN4qRjysi+re+AKF4eB+VEDr+GzMW_4=E4uftQ@mail.gmail.com' \
    --to=dnj@google.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=paul@mad-scientist.net \
    --cc=peff@peff.net \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).