diff mbox series

[v1,2/4] config.mak.uname: support for modern HPE NonStop config.

Message ID 20181226230523.16572-3-randall.s.becker@rogers.com (mailing list archive)
State New, archived
Headers show
Series HPE NonStop Port Commits | expand

Commit Message

Randall S. Becker Dec. 26, 2018, 11:05 p.m. UTC
From: "Randall S. Becker" <rsbecker@nexbridge.com>

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. Accounted for this by
providing emulation defines for those versions.

Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
---
 config.mak.uname | 34 +++++++++++++++++++++++++++++-----
 1 file changed, 29 insertions(+), 5 deletions(-)

Comments

Eric Sunshine Dec. 27, 2018, 5:02 p.m. UTC | #1
On Wed, Dec 26, 2018 at 6:05 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.
> [...]
> Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
> ---
> diff --git a/config.mak.uname b/config.mak.uname
> @@ -441,26 +441,45 @@ ifeq ($(uname_S),NONSTOP_KERNEL)
>         # 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_PATH = /usr/bin/perl
> +       PYTHON_PATH = /usr/bin/python

Is the in-code comment about ${prefix} still applicable after this change?

> +       # The current /usr/coreutils/rm at lowest support level does not work
> +       # with the git test structure. Default to the older rm.
> +       RM = /bin/rm -f

This comment would be far more helpful if it explained in what way
'rm' actually fails with the test suite. Without that information, the
comment is effectively useless.

>         # As detected by './configure'.
>         # Missdetected, hence commented out, see below.
>         #NO_CURL = YesPlease
>         # Added manually, see above.
> +       # Missdetected, hence commented out, see below.
> +       #NO_CURL = YesPlease
> +       # Added manually, see above.

These added lines are just duplicating the existing line immediately above.

> +       # Not detected by ./configure. Add manually.
> +       NEEDS_SSL_WITH_CURL = YesPlease
> +       NEEDS_CRYPTO_WITH_SSL = YesPlease
> +       HAVE_DEV_TTY = YesPlease

I find these comments about 'configure' "misdetecting" or "not
detecting" features confusing. The point of config.mak.uname is to
provide sane defaults for people building without using the
'configure' script, so it feels weird to be talking about 'configure'
here. Also, what does it mean to say that 'configure' "misdetects"?
Does that mean that it fails to write assignments such as "NO_CURL =
YesPlease" to config.autogen or does it mean that it writes incorrect
assignments to that file?

> @@ -470,8 +489,13 @@ ifeq ($(uname_S),NONSTOP_KERNEL)
> +       ifdef NO_PTHREADS
> +       else # WIP, use of Posix User Threads is planned but not working yet
> +               PTHREAD_CFLAGS = -D_PUT_MODEL_ -I/usr/include
> +               PTHREAD_LIBS = -lput
> +       endif

Why not a simpler 'ifndef'?
Randall S. Becker Dec. 27, 2018, 5:44 p.m. UTC | #2
On December 27, 2018 12:03, Eric Sunshine wrote:
> On Wed, Dec 26, 2018 at 6:05 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.
> > [...]
> > Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
> > ---
> > diff --git a/config.mak.uname b/config.mak.uname @@ -441,26 +441,45
> @@
> > ifeq ($(uname_S),NONSTOP_KERNEL)
> >         # 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_PATH = /usr/bin/perl
> > +       PYTHON_PATH = /usr/bin/python
> 
> Is the in-code comment about ${prefix} still applicable after this change?

The ${prefix} is not applicable on this platform for perl and python. Those locations must be in /usr/bin and are managed by the Operating System vendor not by customers. The change is wrapped in an IF so is only applicable to NonStop.
> 
> > +       # The current /usr/coreutils/rm at lowest support level does not work
> > +       # with the git test structure. Default to the older rm.
> > +       RM = /bin/rm -f
> 
> This comment would be far more helpful if it explained in what way 'rm'
> actually fails with the test suite. Without that information, the comment is
> effectively useless.

There is a temporary failure in the vendor supplied rm. The cause we never disclosed to my team. Honestly, it created a large amount of angst that should be gone but there are still old OS versions that have this issue. This is as much as we know.

> 
> >         # As detected by './configure'.
> >         # Missdetected, hence commented out, see below.
> >         #NO_CURL = YesPlease
> >         # Added manually, see above.
> > +       # Missdetected, hence commented out, see below.
> > +       #NO_CURL = YesPlease
> > +       # Added manually, see above.
> 
> These added lines are just duplicating the existing line immediately above. That's weird. I'll fix it. Thanks for the catch.
> 
> > +       # Not detected by ./configure. Add manually.
> > +       NEEDS_SSL_WITH_CURL = YesPlease
> > +       NEEDS_CRYPTO_WITH_SSL = YesPlease
> > +       HAVE_DEV_TTY = YesPlease
> 
> I find these comments about 'configure' "misdetecting" or "not detecting"
> features confusing. The point of config.mak.uname is to provide sane
> defaults for people building without using the 'configure' script, so it feels
> weird to be talking about 'configure'
> here. Also, what does it mean to say that 'configure' "misdetects"?
> Does that mean that it fails to write assignments such as "NO_CURL =
> YesPlease" to config.autogen or does it mean that it writes incorrect
> assignments to that file?

This came from another team. We can't currently use config.autogen anyway on the platform - this came from the prior attempt at porting. By misdetect I mean just that, however. We do not get good values.
> 
> > @@ -470,8 +489,13 @@ ifeq ($(uname_S),NONSTOP_KERNEL)
> > +       ifdef NO_PTHREADS
> > +       else # WIP, use of Posix User Threads is planned but not working yet
> > +               PTHREAD_CFLAGS = -D_PUT_MODEL_ -I/usr/include
> > +               PTHREAD_LIBS = -lput
> > +       endif
> 
> Why not a simpler 'ifndef'?

Another team is current working on the PTHREAD implementation and wanted this. I think what happened was that we have non-pthread requirements under development. I can remove this.
Junio C Hamano Dec. 28, 2018, 8:07 p.m. UTC | #3
"Randall S. Becker" <randall.s.becker@rogers.com> writes:

> On December 27, 2018 12:03, Eric Sunshine wrote:
>> On Wed, Dec 26, 2018 at 6:05 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.
>> > [...]
>> > Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
>> > ---
>> > diff --git a/config.mak.uname b/config.mak.uname @@ -441,26 +441,45
>> @@
>> > ifeq ($(uname_S),NONSTOP_KERNEL)
>> >         # 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_PATH = /usr/bin/perl
>> > +       PYTHON_PATH = /usr/bin/python
>> 
>> Is the in-code comment about ${prefix} still applicable after this change?
>
> The ${prefix} is not applicable on this platform for perl and
> python. Those locations must be in /usr/bin and are managed by the
> Operating System vendor not by customers. The change is wrapped in
> an IF so is only applicable to NonStop.

So the answer is "Our's are in ${prefix}/bin..." is no longer
correct?  If so, this patch must remove that stale comment at the
same time, no?
Randall S. Becker Dec. 28, 2018, 8:33 p.m. UTC | #4
On December 28, 2018 15:07, Junio C Hamano
> "Randall S. Becker" <randall.s.becker@rogers.com> writes:
> 
> > On December 27, 2018 12:03, Eric Sunshine wrote:
> >> On Wed, Dec 26, 2018 at 6:05 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.
> >> > [...]
> >> > Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
> >> > ---
> >> > diff --git a/config.mak.uname b/config.mak.uname @@ -441,26
> +441,45
> >> @@
> >> > ifeq ($(uname_S),NONSTOP_KERNEL)
> >> >         # 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_PATH = /usr/bin/perl
> >> > +       PYTHON_PATH = /usr/bin/python
> >>
> >> Is the in-code comment about ${prefix} still applicable after this
change?
> >
> > The ${prefix} is not applicable on this platform for perl and python.
> > Those locations must be in /usr/bin and are managed by the Operating
> > System vendor not by customers. The change is wrapped in an IF so is
> > only applicable to NonStop.
> 
> So the answer is "Our's are in ${prefix}/bin..." is no longer correct?  If
so, this
> patch must remove that stale comment at the same time, no?

Yessir. Fixed at v3 (now at v4).
diff mbox series

Patch

diff --git a/config.mak.uname b/config.mak.uname
index 3ee7da0e23..aa4432ac2f 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -441,26 +441,45 @@  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_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. Default to the older rm.
+	RM = /bin/rm -f
 	# As detected by './configure'.
 	# Missdetected, hence commented out, see below.
 	#NO_CURL = YesPlease
 	# Added manually, see above.
+	# Missdetected, hence commented out, see below.
+	#NO_CURL = YesPlease
+	# Added manually, see above.
+	# Not detected by ./configure. Add manually.
+	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,8 +489,13 @@  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
+	ifdef NO_PTHREADS
+	else # WIP, use of Posix User Threads is planned but not working yet
+		PTHREAD_CFLAGS = -D_PUT_MODEL_ -I/usr/include
+		PTHREAD_LIBS = -lput
+	endif

 	# Not detected (nor checked for) by './configure'.
 	# We don't have SA_RESTART on NonStop, unfortunalety.