From: Eric Wong <e@80x24.org>
To: Jeff King <peff@peff.net>
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Kyle J. McKay" <mackyle@gmail.com>,
git@vger.kernel.org,
"brian m. carlson" <sandals@crustytoothpaste.net>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
"Jakub Narębski" <jnareb@gmail.com>
Subject: Re: [PATCH v3] pager: move pager-specific setup into the build
Date: Thu, 4 Aug 2016 11:34:10 +0000 [thread overview]
Message-ID: <20160804113410.GA13908@starla> (raw)
In-Reply-To: <20160804053405.ifjjryejgbwkkatt@sigill.intra.peff.net>
Jeff King <peff@peff.net> wrote:
> On Thu, Aug 04, 2016 at 03:43:01AM +0000, Eric Wong wrote:
>
> > +PAGER_ENV_CQ = "$(subst ",\",$(subst \,\\,$(PAGER_ENV)))"
> > +PAGER_ENV_CQ_SQ = $(subst ','\'',$(PAGER_ENV_CQ))
> > +BASIC_CFLAGS += -DPAGER_ENV='$(PAGER_ENV_CQ_SQ)'
>
> Here we set up CQ_SQ, but there is no PAGER_ENV_SQ.
>
> And then...
> > @@ -1766,6 +1782,7 @@ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
> > -e 's|@@GITWEBDIR@@|$(gitwebdir_SQ)|g' \
> > -e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \
> > -e 's|@@SANE_TEXT_GREP@@|$(SANE_TEXT_GREP)|g' \
> > + -e 's|@@PAGER_ENV@@|$(PAGER_ENV_SQ)|g' \
> > $@.sh >$@+
> > endef
>
> Here we depend on writing PAGER_ENV_SQ, which will be blank (and
> git-sh-setup is broken as a result).
Good catch! And the reason we didn't notice git-sh-setup is
broken is nobody uses git_pager in-tree from that, anymore.
However, I suspect we'll have to support it indefinitely due to
custom scripts and contrib/examples.
Made the following change for v4:
diff --git a/Makefile b/Makefile
index 0b36b5e..fc9b017 100644
--- a/Makefile
+++ b/Makefile
@@ -1641,6 +1641,7 @@ ifdef DEFAULT_HELP_FORMAT
BASIC_CFLAGS += -DDEFAULT_HELP_FORMAT='"$(DEFAULT_HELP_FORMAT)"'
endif
+PAGER_ENV_SQ = $(subst ','\'',$(PAGER_ENV))
PAGER_ENV_CQ = "$(subst ",\",$(subst \,\\,$(PAGER_ENV)))"
PAGER_ENV_CQ_SQ = $(subst ','\'',$(PAGER_ENV_CQ))
BASIC_CFLAGS += -DPAGER_ENV='$(PAGER_ENV_CQ_SQ)'
diff --git a/t/t7006-pager.sh b/t/t7006-pager.sh
index e4fc5c8..c8dc665 100755
--- a/t/t7006-pager.sh
+++ b/t/t7006-pager.sh
@@ -49,6 +49,19 @@ test_expect_success TTY 'LESS and LV envvars are set for pagination' '
grep ^LV= pager-env.out
'
+test_expect_success !MINGW,TTY 'LESS and LV envvars set by git-sh-setup' '
+ (
+ sane_unset LESS LV &&
+ PAGER="env >pager-env.out; wc" &&
+ export PAGER &&
+ PATH="$(git --exec-path):$PATH" &&
+ export PATH &&
+ test_terminal sh -c ". git-sh-setup && git_pager"
+ ) &&
+ grep ^LESS= pager-env.out &&
+ grep ^LV= pager-env.out
+'
+
test_expect_success TTY 'some commands do not use a pager' '
rm -f paginated.out &&
test_terminal git rev-list HEAD &&
> > --- a/config.mak.uname
> > +++ b/config.mak.uname
> > @@ -209,6 +209,7 @@ ifeq ($(uname_S),FreeBSD)
> > HAVE_PATHS_H = YesPlease
> > GMTIME_UNRELIABLE_ERRORS = UnfortunatelyYes
> > HAVE_BSD_SYSCTL = YesPlease
> > + PAGER_ENV = LESS=FRX LV=-c MORE=FRX
> > endif
>
> Is it worth setting up PAGER_ENV's default values before including
> config.mak.*, and then using "+=" here? That avoids this line getting
> out of sync with the usual defaults.
Good point, but it makes ordering problematic for folks
who want to override it config.mak or command-line.
We may have to do something like we do for BASIC_CFLAGS and
such, but I'm not sure it's worth the effort when somebody
doesn't wants a different value for one of the flags.
> > +static void setup_pager_env(struct argv_array *env)
> > +{
>
> I know you said you don't like string parsing in C. Here is a patch (on
> top of yours) that converts the parsing to shell, and generates a
> pre-built array-of-struct (this is similar to the big series I posted
> long ago, but just touching this one spot, not invading the whole
> Makefile). Feel free to ignore it as over-engineered, but I thought I'd
> throw it out there in case it appeals.
Yeah, but I'd rather not introduce more complexity into the
build process, either (unless it's a performance-sensitive part,
which this is not). Also, while my original 2/2 to make it
configurable at runtime was discarded, I wouldn't rule out
somebody making a compelling case for it and it would be
an easier change from the parse-at-runtime code.
next prev parent reply other threads:[~2016-08-04 11:36 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-01 1:05 [PATCH 0/2] add PAGER_ENV to build and core.pagerEnv to config Eric Wong
2016-08-01 1:05 ` [PATCH 1/2] pager: move pager-specific setup into the build Eric Wong
2016-08-01 1:43 ` brian m. carlson
2016-08-01 7:00 ` Eric Wong
2016-08-01 8:57 ` Jakub Narębski
2016-08-01 10:40 ` brian m. carlson
2016-08-01 17:24 ` Jeff King
2016-08-01 18:07 ` Junio C Hamano
2016-08-01 17:46 ` Duy Nguyen
2016-08-01 17:52 ` Jeff King
2016-08-01 18:01 ` Duy Nguyen
2016-08-01 18:07 ` Jeff King
2016-08-01 1:05 ` [PATCH 2/2] pager: implement core.pagerEnv in config Eric Wong
2016-08-01 17:28 ` Jeff King
2016-08-01 21:49 ` [PATCH 0/1 v2] add PAGER_ENV to build Eric Wong
2016-08-01 21:49 ` [PATCH 1/1 v2] pager: move pager-specific setup into the build Eric Wong
2016-08-01 23:03 ` Junio C Hamano
2016-08-01 23:46 ` Jeff King
2016-08-02 21:14 ` Junio C Hamano
2016-08-01 23:56 ` Eric Wong
2016-08-02 21:15 ` Junio C Hamano
2016-08-03 16:19 ` Jeff King
2016-08-03 20:57 ` Junio C Hamano
2016-08-03 21:08 ` Eric Wong
2016-08-03 21:15 ` Junio C Hamano
2016-08-04 3:43 ` [PATCH v3] " Eric Wong
2016-08-04 5:34 ` Jeff King
2016-08-04 11:34 ` Eric Wong [this message]
2016-08-04 17:53 ` Jeff King
2016-08-04 11:40 ` [PATCH v4] " Eric Wong
2016-08-03 21:09 ` [PATCH 1/1 v2] " Jeff King
2016-08-01 21:59 ` [PATCH 0/1 v2] add PAGER_ENV to build Jeff King
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=20160804113410.GA13908@starla \
--to=e@80x24.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jnareb@gmail.com \
--cc=mackyle@gmail.com \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=sandals@crustytoothpaste.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).