git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
From: Dan Jacques <dnj@google.com>
To: git@vger.kernel.org
Cc: Johannes.Schindelin@gmx.de, avarab@gmail.com, dnj@google.com,
	gitster@pobox.com
Subject: [PATCH v3 0/4] RUNTIME_PREFIX relocatable Git
Date: Mon, 27 Nov 2017 11:40:51 -0500	[thread overview]
Message-ID: <20171127164055.93283-1-dnj@google.com> (raw)

Previous threads:
v1: https://public-inbox.org/git/20171116170523.28696-1-dnj@google.com/
v2: https://public-inbox.org/git/20171119173141.4896-1-dnj@google.com/

After working with avarab@, I isolated the Perl changes into a separate
set of patches and adapted the code to be more correct and readable. I
opted to prescribe a relative Perl library path instead of letting
MakeMaker or the Config module choose one, since the latter both
incorporate build system parameters and a major purpose of this is to be
portable between ABI-compatible systems.

I've tested this via Travis and run full test suite with and without
RUNTIME_PREFIX/RUNTIME_PREFIX_PERL, and tested locally on Mac, Linux,
and FreeBSD systems. Please take a look!

Built using this "config.mak":

=== BEGIN config.mak ===

RUNTIME_PREFIX = YesPlease
RUNTIME_PREFIX_PERL = YesPlease
gitexecdir = libexec/git-core
template_dir = share/git-core/templates
sysconfdir = etc

=== END config.mak ===

Changes in v3 from v2:

- Broken into multiple patches now that Perl is isolated in its own
  RUNTIME_PREFIX_PERL flag.

- Working with avarab@, several changes to Perl script runtime prefix
  support:

  - Moved Perl header body content from Makefile into external template
    file(s).

  - Added generic "perllibdir" variable to override Perl installation
    path.

  - RUNTIME_PREFIX_PERL generated script header is more descriptive and
    consistent with how the C version operates.

  - Fixed Generated Perl header Makefile dependency, should rebuild
    when dependent files and flags change.

- Changed some of the new RUNTIME_PREFIX trace strings to use consistent
  formatting and terminology.

Changes in v2 from v1:

- Added comments and formatting to improve readability of
  platform-sepecific executable path resolution sleds in
  `git_get_exec_path`.

- Consolidated "cached_exec_path" and "argv_exec_path" globals
  into "exec_path_value".

- Use `strbuf_realpath` instead of `realpath` for procfs resolution.

- Removed new environment variable exports. Git with RUNTIME_PREFIX no
  longer exports or consumes any additional environment information.

- Updated Perl script resolution strategy: rather than having Git export
  the relative executable path to the Perl scripts, they now resolve
  it independently when RUNTIME_PREFIX_PERL is enabled.

- Updated resolution strategy for "gettext()": use system_path() instead
  of special environment variable.

- Added `sysctl` executable resolution support for BSDs that don't
  mount "procfs" by default (most of them).

Dan Jacques (4):
  Makefile: generate Perl header from template file
  Makefile: add support for "perllibdir"
  Makefile: add Perl runtime prefix support
  exec_cmd: RUNTIME_PREFIX on some POSIX systems

 .gitignore                             |   1 +
 Makefile                               | 110 +++++++++++++--
 cache.h                                |   1 +
 common-main.c                          |   4 +-
 config.mak.uname                       |   7 +
 exec_cmd.c                             | 239 ++++++++++++++++++++++++++++-----
 exec_cmd.h                             |   4 +-
 gettext.c                              |   8 +-
 git.c                                  |   2 +-
 perl/Makefile                          |  52 ++++++-
 perl/header_fixed_prefix.pl.template   |   1 +
 perl/header_runtime_prefix.pl.template |  24 ++++
 12 files changed, 395 insertions(+), 58 deletions(-)
 create mode 100644 perl/header_fixed_prefix.pl.template
 create mode 100644 perl/header_runtime_prefix.pl.template

-- 
2.15.0.chromium12


             reply	other threads:[~2017-11-27 16:41 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-27 16:40 Dan Jacques [this message]
2017-11-27 16:40 ` [PATCH v3 1/4] Makefile: generate Perl header from template file Dan Jacques
2017-11-27 16:40 ` [PATCH v3 2/4] Makefile: add support for "perllibdir" Dan Jacques
2017-11-27 16:40 ` [PATCH v3 3/4] Makefile: add Perl runtime prefix support Dan Jacques
2017-11-27 16:40 ` [PATCH v3 4/4] exec_cmd: RUNTIME_PREFIX on some POSIX systems Dan Jacques
2017-11-27 23:42   ` Johannes Schindelin
2017-11-28  3:25     ` Dan Jacques
2017-11-28  3:47       ` Junio C Hamano
2017-11-28 11:36         ` Johannes Schindelin
2017-11-29  1:38         ` Question regarding "next" merge Dan Jacques
2017-11-29  2:18           ` Junio C Hamano
2017-11-28 14:08       ` [PATCH v3 4/4] exec_cmd: RUNTIME_PREFIX on some POSIX systems Johannes Schindelin

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=20171127164055.93283-1-dnj@google.com \
    --to=dnj@google.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=avarab@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --subject='Re: [PATCH v3 0/4] RUNTIME_PREFIX relocatable Git' \
    /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

git@vger.kernel.org list mirror (unofficial, one of many)

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 git git/ https://public-inbox.org/git \
		git@vger.kernel.org
	public-inbox-index git

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.version-control.git
	nntp://ie5yzdi7fg72h7s4sdcztq5evakq23rdt33mfyfcddc5u3ndnw24ogqd.onion/inbox.comp.version-control.git
	nntp://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/inbox.comp.version-control.git
	nntp://news.gmane.io/gmane.comp.version-control.git
 note: .onion URLs require Tor: https://www.torproject.org/

code repositories for project(s) associated with this inbox:

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

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git