From: Jeffrey Walton <noloader@gmail.com>
To: Eric Sunshine <sunshine@sunshineco.com>
Cc: "Git List" <git@vger.kernel.org>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: Re: Solaris and sed: Too many commands, last: s/\n//
Date: Mon, 11 Mar 2019 21:55:23 -0400 [thread overview]
Message-ID: <CAH8yC8=PKro1_WW=wJQoVHC88cziJPfgkHh6jNKOUxeFn3KVsQ@mail.gmail.com> (raw)
In-Reply-To: <CAH8yC8kHhhWA+ONv17LdLpvy6ubH3CTvJ6=ehP5MQLi_=n1=bQ@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1782 bytes --]
On Mon, Mar 11, 2019 at 9:07 PM Jeffrey Walton <noloader@gmail.com> wrote:
>
> On Mon, Mar 11, 2019 at 6:28 PM Eric Sunshine <sunshine@sunshineco.com> wrote:
> >
> > On Mon, Mar 11, 2019 at 05:43:55PM -0400, Jeffrey Walton wrote:
> > > On Mon, Mar 11, 2019 at 5:15 PM Eric Sunshine <sunshine@sunshineco.com> wrote:
> > > > On Mon, Mar 11, 2019 at 4:32 PM Jeffrey Walton <noloader@gmail.com> wrote:
> > > > > I enabled self tests for Solaris. Solaris has some anemic utilities so
> > > > > I put /usr/gnu/bin first on-path.
> > > >
> > > > The first question is if you are really running GNU 'sed'? My guess is
> > > > "no, it's still picking up Solaris's 'sed'".
> > >
> > > I believe so. After modifying PATH, command -v returns:
> > >
> > > Solaris tools:
> > > sed: /usr/gnu/bin/sed
> > > awk: /usr/gnu/bin/awk
> > > grep: /usr/gnu/bin/grep
> > >
> > > (This was added to my scripts to confirm).
> > ...
> >
> > > Maybe Git would benefit from SED, AWK and GREP variables like PERL.
> >
> > Very possibly.
>
> Another potential workaround is to use Perl. Perl is already a
> prerequisite, it get passed to the test gear through PERL_PATH, and it
> avoids Solaris' anemic tools.
>
> Sadly my Perl sucks. You would be disappointed if I tried to whip up a patch.
Oh man, you're using GNU make. I thought Git was using that anemic
Posix Make. See attached.
I think Solaris provides an older gawk. Is this an easier problem:
awk: chainlint.sed:88: :squash
awk: chainlint.sed:88: ^ syntax error
awk: chainlint.sed:91: s/\\\n//
awk: chainlint.sed:91: ^ backslash not last character on line
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
Jeff
[-- Attachment #2: git2.patch --]
[-- Type: application/octet-stream, Size: 2346 bytes --]
--- t/Makefile
+++ t/Makefile
@@ -11,11 +11,25 @@
TEST_SHELL_PATH ?= $(SHELL_PATH)
PERL_PATH ?= /usr/bin/perl
TAR ?= $(TAR)
+AWK ?= $(AWK)
+SED ?= $(SED)
+GREP ?= $(GREP)
RM ?= rm -f
PROVE ?= prove
DEFAULT_TEST_TARGET ?= test
TEST_LINT ?= test-lint
+# Fix Solaris tools. GNU tools at /usr/gnu/bin. Posix tools /usr/xpg4/bin.
+ifneq ($(wildcard /usr/gnu/bin/grep),)
+ GREP := /usr/gnu/bin/grep
+endif
+ifneq ($(wildcard /usr/gnu/bin/sed),)
+ SED := /usr/gnu/bin/sed
+endif
+ifneq ($(wildcard /usr/gnu/bin/awk),)
+ SED := /usr/gnu/bin/awk
+endif
+
ifdef TEST_OUTPUT_DIRECTORY
TEST_RESULTS_DIRECTORY = $(TEST_OUTPUT_DIRECTORY)/test-results
CHAINLINTTMP = $(TEST_OUTPUT_DIRECTORY)/chainlinttmp
@@ -35,7 +49,7 @@
TGITWEB = $(sort $(wildcard t95[0-9][0-9]-*.sh))
THELPERS = $(sort $(filter-out $(T),$(wildcard *.sh)))
CHAINLINTTESTS = $(sort $(patsubst chainlint/%.test,%,$(wildcard chainlint/*.test)))
-CHAINLINT = sed -f chainlint.sed
+CHAINLINT = $(SED) -f chainlint.sed
all: $(DEFAULT_TEST_TARGET)
@@ -44,8 +58,8 @@
failed:
@failed=$$(cd '$(TEST_RESULTS_DIRECTORY_SQ)' && \
- grep -l '^failed [1-9]' *.counts | \
- sed -n 's/\.counts$$/.sh/p') && \
+ $(GREP) -l '^failed [1-9]' *.counts | \
+ $(SED) -n 's/\.counts$$/.sh/p') && \
test -z "$$failed" || $(MAKE) $$failed
prove: pre-clean check-chainlint $(TEST_LINT)
@@ -73,7 +87,7 @@
err=0 && \
for i in $(CHAINLINTTESTS); do \
$(CHAINLINT) <chainlint/$$i.test | \
- sed -e '/^# LINT: /d' >'$(CHAINLINTTMP_SQ)'/$$i.actual && \
+ $(SED) -e '/^# LINT: /d' >'$(CHAINLINTTMP_SQ)'/$$i.actual && \
diff -u chainlint/$$i.expect '$(CHAINLINTTMP_SQ)'/$$i.actual || err=1; \
done && exit $$err
@@ -81,7 +95,7 @@
test-lint-filenames
test-lint-duplicates:
- @dups=`echo $(T) | tr ' ' '\n' | sed 's/-.*//' | sort | uniq -d` && \
+ @dups=`echo $(T) | tr ' ' '\n' | $(SED) 's/-.*//' | sort | uniq -d` && \
test -z "$$dups" || { \
echo >&2 "duplicate test numbers:" $$dups; exit 1; }
@@ -97,7 +111,7 @@
@# We do *not* pass a glob to ls-files but use grep instead, to catch
@# non-ASCII characters (which are quoted within double-quotes)
@bad="$$(git -c core.quotepath=true ls-files 2>/dev/null | \
- grep '["*:<>?\\|]')"; \
+ $(GREP) '["*:<>?\\|]')"; \
test -z "$$bad" || { \
echo >&2 "non-portable file name(s): $$bad"; exit 1; }
next prev parent reply other threads:[~2019-03-12 1:55 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-11 20:31 Solaris and sed: Too many commands, last: s/\n// Jeffrey Walton
2019-03-11 21:15 ` Eric Sunshine
2019-03-11 21:43 ` Jeffrey Walton
2019-03-11 22:28 ` Eric Sunshine
2019-03-12 1:07 ` Jeffrey Walton
2019-03-12 1:55 ` Jeffrey Walton [this message]
2019-03-12 2:11 ` Jeffrey Walton
2019-03-12 2:19 ` Jeffrey Walton
2019-03-12 2:45 ` Eric Sunshine
2019-03-12 3:57 ` Jeffrey Walton
2019-03-11 23:52 ` Jeffrey Walton
2019-03-12 0:18 ` Jeffrey Walton
2019-03-12 9:08 ` Ævar Arnfjörð Bjarmason
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='CAH8yC8=PKro1_WW=wJQoVHC88cziJPfgkHh6jNKOUxeFn3KVsQ@mail.gmail.com' \
--to=noloader@gmail.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=sunshine@sunshineco.com \
/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).