[PATCH 3/4] * config.sub: Properly recognise configs with 4 components

2018-05-01 Thread John Ericson
---
 ChangeLog  | 27 +++
 config.sub | 46 +++---
 2 files changed, 58 insertions(+), 15 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 0655aad..7e675c9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,30 @@
+2018-04-24  John Ericson  
+
+   * config.sub: Properly recognise configs with 4 components.
+
+   The old logic was a bit hard to follow due to lots of sed and
+   unintuitive collapsing of cases. The code now works like this
+
+   * 4 components is always parsed as
+ CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+
+   * 2 components is always parsed as
+ CPU_TYPE-OPERATING_SYSTEM
+
+   * 1 component is always parsed as
+ CPU_TYPE
+
+   * 3 components is ambiguous and parsed as either
+ CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+ CPU_TYPE-KERNEL-OPERATING_SYSTEM
+
+   The old code differed semantically in that
+
+   * The 4-case was awkwardly folded into the 3-case disambiguation
+
+   * The "android-linux" ad-hoc fixdup did something different in
+ the non-3 cases, but isn't intended to apply in those cases.
+
 2018-05-01  John Ericson  
 
* config.sub (os, maybe_os): Normalize indentation to match rest of
diff --git a/config.sub b/config.sub
index 5e5eac2..06c755b 100755
--- a/config.sub
+++ b/config.sub
@@ -110,33 +110,49 @@ case $# in
 exit 1;;
 esac
 
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
+# Physical components of config
+comp1=`echo "$1" | sed 's/^\([^-]*\).*$/\1/'`
+comp2=`echo "$1" | sed 's/^[^-]*-\([^-]*\).*$/\1/'`
+comp3=`echo "$1" | sed 's/^[^-]*-[^-]*-\([^-]*\).*$/\1/'`
+comp4=`echo "$1" | sed 's/^[^-]*-[^-]*-[^-]*-\([^-]*\).*$/\1/'`
+
+# Separate into logical components for further validation
+case $1 in
+   *-*-*-*)
+   basic_machine=$comp1-$comp2
+   os=-$comp3-$comp4
+   ;;
+   *-*-*)
+   # Ambiguous whether COMPANY is present, or skipped and 
KERNEL-OS is two
+   # parts
+   maybe_os=$comp2-$comp3
+   case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc 
\
| linux-newlib* | linux-musl* | linux-uclibc* | 
uclinux-uclibc* \
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | 
netbsd*-gnu* \
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
| storm-chaos* | os2-emx* | rtmk-nova*)
+   basic_machine=$comp1
os=-$maybe_os
-   basic_machine=`echo "$1" | sed 
's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
android-linux)
+   basic_machine=$comp1-unknown
os=-linux-android
-   basic_machine=`echo "$1" | sed 
's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;;
*)
-   basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
-   case $1 in
-   *-*)
-   os=`echo "$1" | sed 's/.*-/-/'`
-   ;;
-   *)
-   os=
-   ;;
-   esac
+   basic_machine=$comp1-$comp2
+   os=-$comp3
;;
+   esac
+   ;;
+   *-*)
+   basic_machine=$comp1
+   os=-$comp2
+   ;;
+   *)
+   basic_machine=$1
+   os=
+   ;;
 esac
 
 ### Let's recognize common machines as not being operating systems so
-- 
2.16.3


___
config-patches mailing list
config-patches@gnu.org
https://lists.gnu.org/mailman/listinfo/config-patches


Re: [PATCH 2/4] Indent maybe_os stuff ahead of refactor

2018-05-01 Thread John Ericson
Sure, but I'm a bit confused on what you intended. There's a mix of tabs 
and spaces which leads me to think you are using 4 space indent with a 
tab for every 8 spaces? But the rest of the file looks like it is using 
a tab per indent level (such that the spaces/tab doesn't matter), where 
4 spaces/tab is intended so the indent visually matches what you did.


Also, I meant to _over_ indent so the next patch would be less noisy. 
Sorry my commit message was very confusing as to that intention.


Not knowing what you want, I'll do 4 patches:

1. Make all indent exclusively tab-based like the majority of the file,
   and with `| ` leading successive lines of big, multi-line case patterns.
2. Add more tabs to _properly_ :) over-indent this time preparation of (3)
3. My 4 component patch from before
4. My `arm*-*-none-eabi` patch from before

I'll fix the commit messages to match the `* config.sub ...` style too.

Let me know if you want anything additional/different.

Cheers,

John

On 05/01/18 01:46, Ben Elliston wrote:

This change is fine in principle, but I didn't agree with your
indenting rules. ;-) Please re-do your patch #3 using current master.

Cheers, Ben



___
config-patches mailing list
config-patches@gnu.org
https://lists.gnu.org/mailman/listinfo/config-patches