threads / patch / 50148

v5, 4 partsHPE NonStop Port Commits

Subject: [Patch v5 0/4] HPE NonStop Port Commits

## tl;dr

11 messages between Jan 3, 2019 and Jan 3, 2019. Diffs are folded; open one to read it.

replies: 10people: 4as markdown or json

randall.s.becker@rogers.com· Jan 3, 2019, 21:03 UTC · lore
From: "Randall S. Becker" <randall.becker@nexbridge.ca>

This set of patches is a distilled version of the minimal set of changes to git that will allow it to run as client and server on HPE NonStop NSE and NSX systems. NSR systems are no longer under support so references to them have been removed. Each patch in this set is independent but required for correctness.

Randall S. Becker (4):
  transport-helper: use xread instead of read
  config.mak.uname: support for modern HPE NonStop config.
  git-compat-util.h: add FLOSS headers for HPE NonStop
  compat/regex/regcomp.c: define intptr_t and uintptr_t on NonStop
 compat/regex/regcomp.c |  8 ++++++++
 config.mak.uname       | 29 +++++++++++++++++++++++------
 git-compat-util.h      | 11 +++++++++++
 transport-helper.c     |  5 ++---
 4 files changed, 44 insertions(+), 9 deletions(-)
-- 
2.12.3
randall.s.becker@rogers.com· Jan 3, 2019, 21:03 UTC · re: randall.s.becker@rogers.com · lore

[Patch v5 1/4] transport-helper: use xread instead of read

From: "Randall S. Becker" <randall.becker@nexbridge.ca>

This fix was needed on HPE NonStop NSE and NSX where SSIZE_MAX is less than BUFFERSIZE resulting in EINVAL. The call to read in transport-helper.c was the only place outside of wrapper.c where it is used instead of xread.

Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
---
 transport-helper.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
Show changes to transport-helper.c +2 −3
diff --git a/transport-helper.c b/transport-helper.c
index bf225c698..5afead9f8 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -1225,9 +1225,8 @@ static int udt_do_read(struct unidirectional_transfer *t)
 		return 0;	/* No space for more. */
 
 	transfer_debug("%s is readable", t->src_name);
-	bytes = read(t->src, t->buf + t->bufuse, BUFFERSIZE - t->bufuse);
-	if (bytes < 0 && errno != EWOULDBLOCK && errno != EAGAIN &&
-		errno != EINTR) {
+	bytes = xread(t->src, t->buf + t->bufuse, BUFFERSIZE - t->bufuse);
+	if (bytes < 0 && errno != EINTR) {
 		error_errno(_("read(%s) failed"), t->src_name);
 		return -1;
 	} else if (bytes == 0) {
-- 
2.12.3
randall.s.becker@rogers.com· Jan 3, 2019, 21:03 UTC · re: randall.s.becker@rogers.com · lore

[Patch v5 2/4] config.mak.uname: support for modern HPE NonStop config.

From: "Randall S. Becker" <randall.becker@nexbridge.ca>

A number of configuration options are not automatically detected by configure mechanisms, including the location of Perl and Python.

There was a problem at a specific set of operating system versions that caused getopt to have compile errors. Account for this by providing emulation defines for those versions.

Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
---
 config.mak.uname | 29 +++++++++++++++++++++++------
 1 file changed, 23 insertions(+), 6 deletions(-)
Show changes to config.mak.uname +23 −6
diff --git a/config.mak.uname b/config.mak.uname
index 3ee7da0e2..686156d53 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -441,26 +441,43 @@ ifeq ($(uname_S),NONSTOP_KERNEL)
 	# INLINE='' would just replace one set of warnings with another and
 	# still not compile in c89 mode, due to non-const array initializations.
 	CC = cc -c99
+	# Build down-rev compatible objects that don't use our new getopt_long.
+	ifeq ($(uname_R).$(uname_V),J06.21)
+		CC += -WRVU=J06.20
+	endif
+	ifeq ($(uname_R).$(uname_V),L17.02)
+		CC += -WRVU=L16.05
+	endif
 	# Disable all optimization, seems to result in bad code, with -O or -O2
 	# or even -O1 (default), /usr/local/libexec/git-core/git-pack-objects
 	# abends on "git push". Needs more investigation.
-	CFLAGS = -g -O0
+	CFLAGS = -g -O0 -Winline
 	# We'd want it to be here.
 	prefix = /usr/local
-	# Our's are in ${prefix}/bin (perl might also be in /usr/bin/perl).
-	PERL_PATH = ${prefix}/bin/perl
-	PYTHON_PATH = ${prefix}/bin/python
-
+	# perl and python must be in /usr/bin on NonStop - supplied by HPE
+	# with operating system in that managed directory.
+	PERL_PATH = /usr/bin/perl
+	PYTHON_PATH = /usr/bin/python
+	# The current /usr/coreutils/rm at lowest support level does not work
+	# with the git test structure. Long paths as in
+	# 'trash directory...' cause rm to terminate prematurely without fully
+	# removing the directory at OS releases J06.21 and L17.02.
+	# Default to the older rm until those two releases are deprecated.
+	RM = /bin/rm -f
 	# As detected by './configure'.
 	# Missdetected, hence commented out, see below.
 	#NO_CURL = YesPlease
 	# Added manually, see above.
+	NEEDS_SSL_WITH_CURL = YesPlease
+	NEEDS_CRYPTO_WITH_SSL = YesPlease
+	HAVE_DEV_TTY = YesPlease
 	HAVE_LIBCHARSET_H = YesPlease
 	HAVE_STRINGS_H = YesPlease
 	NEEDS_LIBICONV = YesPlease
 	NEEDS_LIBINTL_BEFORE_LIBICONV = YesPlease
 	NO_SYS_SELECT_H = UnfortunatelyYes
 	NO_D_TYPE_IN_DIRENT = YesPlease
+	NO_GETTEXT = YesPlease
 	NO_HSTRERROR = YesPlease
 	NO_STRCASESTR = YesPlease
 	NO_MEMMEM = YesPlease
@@ -470,7 +487,7 @@ ifeq ($(uname_S),NONSTOP_KERNEL)
 	NO_MKDTEMP = YesPlease
 	# Currently libiconv-1.9.1.
 	OLD_ICONV = UnfortunatelyYes
-	NO_REGEX = YesPlease
+	NO_REGEX=NeedsStartEnd
 	NO_PTHREADS = UnfortunatelyYes
 
 	# Not detected (nor checked for) by './configure'.
-- 
2.12.3
Eric Sunshine· Jan 3, 2019, 21:38 UTC · re: randall.s.becker@rogers.com · lore

Re: [Patch v5 2/4] config.mak.uname: support for modern HPE NonStop config.

On Thu, Jan 3, 2019 at 4:04 PM <randall.s.becker@rogers.com> wrote:
Show 16 quoted lines
> A number of configuration options are not automatically detected by
> configure mechanisms, including the location of Perl and Python.
>
> There was a problem at a specific set of operating system versions
> that caused getopt to have compile errors. Account for this by
> providing emulation defines for those versions.
>
> Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
> ---
> diff --git a/config.mak.uname b/config.mak.uname
> @@ -470,7 +487,7 @@ ifeq ($(uname_S),NONSTOP_KERNEL)
>         NO_MKDTEMP = YesPlease
>         OLD_ICONV = UnfortunatelyYes
> -       NO_REGEX = YesPlease
> +       NO_REGEX=NeedsStartEnd
>         NO_PTHREADS = UnfortunatelyYes

Style nit (probably not worth a re-roll): you lost the whitespace surrounding '='

Randall S. Becker· Jan 3, 2019, 22:04 UTC · re: Eric Sunshine · lore

RE: [Patch v5 2/4] config.mak.uname: support for modern HPE NonStop config.

On January 3, 2019 16:38, Eric Sunshine wrote:
Show 21 quoted lines
> On Thu, Jan 3, 2019 at 4:04 PM <randall.s.becker@rogers.com> wrote:
> > A number of configuration options are not automatically detected by
> > configure mechanisms, including the location of Perl and Python.
> >
> > There was a problem at a specific set of operating system versions
> > that caused getopt to have compile errors. Account for this by
> > providing emulation defines for those versions.
> >
> > Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
> > ---
> > diff --git a/config.mak.uname b/config.mak.uname @@ -470,7 +487,7
> @@
> > ifeq ($(uname_S),NONSTOP_KERNEL)
> >         NO_MKDTEMP = YesPlease
> >         OLD_ICONV = UnfortunatelyYes
> > -       NO_REGEX = YesPlease
> > +       NO_REGEX=NeedsStartEnd
> >         NO_PTHREADS = UnfortunatelyYes
> 
> Style nit (probably not worth a re-roll): you lost the whitespace surrounding
> '='
I can fix this one in the next round of changes, or after this gets in, if that works, or signoff on this being fixed in place.
Junio C Hamano· Jan 3, 2019, 22:09 UTC · re: Randall S. Becker · lore

Re: [Patch v5 2/4] config.mak.uname: support for modern HPE NonStop config.

"Randall S. Becker" <rsbecker@nexbridge.com> writes:
Show 24 quoted lines
> On January 3, 2019 16:38, Eric Sunshine wrote:
>> On Thu, Jan 3, 2019 at 4:04 PM <randall.s.becker@rogers.com> wrote:
>> > A number of configuration options are not automatically detected by
>> > configure mechanisms, including the location of Perl and Python.
>> >
>> > There was a problem at a specific set of operating system versions
>> > that caused getopt to have compile errors. Account for this by
>> > providing emulation defines for those versions.
>> >
>> > Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
>> > ---
>> > diff --git a/config.mak.uname b/config.mak.uname @@ -470,7 +487,7
>> @@
>> > ifeq ($(uname_S),NONSTOP_KERNEL)
>> >         NO_MKDTEMP = YesPlease
>> >         OLD_ICONV = UnfortunatelyYes
>> > -       NO_REGEX = YesPlease
>> > +       NO_REGEX=NeedsStartEnd
>> >         NO_PTHREADS = UnfortunatelyYes
>> 
>> Style nit (probably not worth a re-roll): you lost the whitespace surrounding
>> '='
>
> I can fix this one in the next round of changes, or after this gets in, if that works, or signoff on this being fixed in place.

I've already tweaked this while queuing. i.e. no need to resend only to fix this one.

Thanks, both.
randall.s.becker@rogers.com· Jan 3, 2019, 21:03 UTC · re: randall.s.becker@rogers.com · lore

[Patch v5 3/4] git-compat-util.h: add FLOSS headers for HPE NonStop

From: "Randall S. Becker" <randall.becker@nexbridge.ca>

The HPE NonStop (a.k.a. __TANDEM) platform cannot build git without using the FLOSS package supplied by HPE. The convenient location for including the relevant headers is in this file.

The NSIG define is also not defined on __TANDEM, so we define it here as 100 if it is not defined only for __TANDEM builds.

Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
---
 git-compat-util.h | 11 +++++++++++
 1 file changed, 11 insertions(+)
Show changes to git-compat-util.h +11 −0
diff --git a/git-compat-util.h b/git-compat-util.h
index 09b0102ca..3da6f0673 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -397,6 +397,17 @@ static inline char *git_find_last_dir_sep(const char *path)
 #define query_user_email() NULL
 #endif
 
+#ifdef __TANDEM
+#include <floss.h(floss_execl,floss_execlp,floss_execv,floss_execvp)>
+#include <floss.h(floss_getpwuid)>
+#ifndef NSIG
+/* NonStop NSE and NSX do not provide NSIG. SIGGUARDIAN(99) is the highest
+   known, by detective work using kill -l as a list is all signals
+   instead of signal.h where it should be. */
+# define NSIG 100
+#endif
+#endif
+
 #if defined(__HP_cc) && (__HP_cc >= 61000)
 #define NORETURN __attribute__((noreturn))
 #define NORETURN_PTR
-- 
2.12.3
Eric Sunshine· Jan 3, 2019, 21:41 UTC · re: randall.s.becker@rogers.com · lore

Re: [Patch v5 3/4] git-compat-util.h: add FLOSS headers for HPE NonStop

On Thu, Jan 3, 2019 at 4:04 PM <randall.s.becker@rogers.com> wrote:
Show 18 quoted lines
> The HPE NonStop (a.k.a. __TANDEM) platform cannot build git without
> using the FLOSS package supplied by HPE. The convenient location
> for including the relevant headers is in this file.
>
> The NSIG define is also not defined on __TANDEM, so we define it
> here as 100 if it is not defined only for __TANDEM builds.
>
> Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
> ---
> diff --git a/git-compat-util.h b/git-compat-util.h
> @@ -397,6 +397,17 @@ static inline char *git_find_last_dir_sep(const char *path)
> +#ifdef __TANDEM
> +#include <floss.h(floss_execl,floss_execlp,floss_execv,floss_execvp)>
> +#include <floss.h(floss_getpwuid)>
> +#ifndef NSIG
> +/* NonStop NSE and NSX do not provide NSIG. SIGGUARDIAN(99) is the highest
> +   known, by detective work using kill -l as a list is all signals
> +   instead of signal.h where it should be. */

Style nit: With two minor exceptions, all other multi-line comments in this file are formatted as:

/*
 * Multi-line
 * comment.
 */
Randall S. Becker· Jan 3, 2019, 22:06 UTC · re: Eric Sunshine · lore

RE: [Patch v5 3/4] git-compat-util.h: add FLOSS headers for HPE NonStop

On January 3, 2019 16:41, Eric Sunshine wrote:
Show 28 quoted lines
> On Thu, Jan 3, 2019 at 4:04 PM <randall.s.becker@rogers.com> wrote:
> > The HPE NonStop (a.k.a. __TANDEM) platform cannot build git without
> > using the FLOSS package supplied by HPE. The convenient location for
> > including the relevant headers is in this file.
> >
> > The NSIG define is also not defined on __TANDEM, so we define it here
> > as 100 if it is not defined only for __TANDEM builds.
> >
> > Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
> > ---
> > diff --git a/git-compat-util.h b/git-compat-util.h @@ -397,6 +397,17
> > @@ static inline char *git_find_last_dir_sep(const char *path)
> > +#ifdef __TANDEM
> > +#include <floss.h(floss_execl,floss_execlp,floss_execv,floss_execvp)>
> > +#include <floss.h(floss_getpwuid)>
> > +#ifndef NSIG
> > +/* NonStop NSE and NSX do not provide NSIG. SIGGUARDIAN(99) is the
> highest
> > +   known, by detective work using kill -l as a list is all signals
> > +   instead of signal.h where it should be. */
> 
> Style nit: With two minor exceptions, all other multi-line comments in this file
> are formatted as:
> 
> /*
>  * Multi-line
>  * comment.
>  */
Doh! I just missed that one. I'll fix this on the next round, if that's ok.
Junio C Hamano· Jan 3, 2019, 22:09 UTC · re: Randall S. Becker · lore

Re: [Patch v5 3/4] git-compat-util.h: add FLOSS headers for HPE NonStop

"Randall S. Becker" <rsbecker@nexbridge.com> writes:
Show 31 quoted lines
> On January 3, 2019 16:41, Eric Sunshine wrote:
>> On Thu, Jan 3, 2019 at 4:04 PM <randall.s.becker@rogers.com> wrote:
>> > The HPE NonStop (a.k.a. __TANDEM) platform cannot build git without
>> > using the FLOSS package supplied by HPE. The convenient location for
>> > including the relevant headers is in this file.
>> >
>> > The NSIG define is also not defined on __TANDEM, so we define it here
>> > as 100 if it is not defined only for __TANDEM builds.
>> >
>> > Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
>> > ---
>> > diff --git a/git-compat-util.h b/git-compat-util.h @@ -397,6 +397,17
>> > @@ static inline char *git_find_last_dir_sep(const char *path)
>> > +#ifdef __TANDEM
>> > +#include <floss.h(floss_execl,floss_execlp,floss_execv,floss_execvp)>
>> > +#include <floss.h(floss_getpwuid)>
>> > +#ifndef NSIG
>> > +/* NonStop NSE and NSX do not provide NSIG. SIGGUARDIAN(99) is the
>> highest
>> > +   known, by detective work using kill -l as a list is all signals
>> > +   instead of signal.h where it should be. */
>> 
>> Style nit: With two minor exceptions, all other multi-line comments in this file
>> are formatted as:
>> 
>> /*
>>  * Multi-line
>>  * comment.
>>  */
>
> Doh! I just missed that one. I'll fix this on the next round, if that's ok.

Again, I've queued with a tweak already, i.e. no need to reroll only to fix this one.

Thanks, both.
randall.s.becker@rogers.com· Jan 3, 2019, 21:03 UTC · re: randall.s.becker@rogers.com · lore

[Patch v5 4/4] compat/regex/regcomp.c: define intptr_t and uintptr_t on NonStop

From: "Randall S. Becker" <randall.becker@nexbridge.ca>

The system definition header files on HPE NonStop do not define intptr_t and uintptr_t as do other platforms. These typedefs are added specifically wrapped in a __TANDEM ifdef.

Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
---
 compat/regex/regcomp.c | 8 ++++++++
 1 file changed, 8 insertions(+)
Show changes to compat/regex/regcomp.c +8 −0
diff --git a/compat/regex/regcomp.c b/compat/regex/regcomp.c
index 51cd60baa..c0d838834 100644
--- a/compat/regex/regcomp.c
+++ b/compat/regex/regcomp.c
@@ -17,6 +17,14 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#if defined __TANDEM
+ /* This is currently duplicated from git-compat-utils.h */
+# ifdef NO_INTPTR_T
+ typedef long intptr_t;
+ typedef unsigned long uintptr_t;
+# endif
+#endif
+
 static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern,
 					  size_t length, reg_syntax_t syntax);
 static void re_compile_fastmap_iter (regex_t *bufp,
-- 
2.12.3

← back to recent threads