# [PATCH 1/4] engine.pl: Fix a recent breakage of the buildsystem generator

5 messages from 2010-01-20 to 2010-01-22. Participants: Ramsay Jones, Pete Harlan, Sebastian Schuberth.
Thread: https://gitlist.dev/t/22314

## Ramsay Jones, 2010-01-20 19:23

Subject: [PATCH 1/4] engine.pl: Fix a recent breakage of the buildsystem generator
Message-ID: <4B575838.2010504@ramsay1.demon.co.uk>
URL: https://gitlist.dev/e/4B575838.2010504%40ramsay1.demon.co.uk

```

Commit ade2ca0c (Do not try to remove directories when removing
old links, 27-10-2009) added an expression to a 'test' using an
'-o' or connective. This resulted in the buildsystem generator
mistaking the conditional 'rm' for a linker command. In order
to fix the breakage, we filter the out the conditional 'rm'
commands before attempting to identify other commands.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
---
 contrib/buildsystems/engine.pl |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/contrib/buildsystems/engine.pl b/contrib/buildsystems/engine.pl
index d506717..245af73 100644
--- a/contrib/buildsystems/engine.pl
+++ b/contrib/buildsystems/engine.pl
@@ -135,6 +135,11 @@ sub parseMakeOutput
             }
         } while($ate_next);
 
+        if ($text =~ /^test / && $text =~ /|| rm -f /) {
+            # commands removing executables, if they exist
+            next;
+        }
+
         if($text =~ / -c /) {
             # compilation
             handleCompileLine($text, $line);
-- 
1.6.6

```

## Pete Harlan, 2010-01-20 20:57

Subject: Re: [PATCH 1/4] engine.pl: Fix a recent breakage of the buildsystem generator
Message-ID: <4B576E38.5080604@pcharlan.com>
URL: https://gitlist.dev/e/4B576E38.5080604%40pcharlan.com
In-Reply-To: <4B575838.2010504@ramsay1.demon.co.uk>

```
On 01/20/2010 11:23 AM, Ramsay Jones wrote:
> diff --git a/contrib/buildsystems/engine.pl b/contrib/buildsystems/engine.pl
> index d506717..245af73 100644
> --- a/contrib/buildsystems/engine.pl
> +++ b/contrib/buildsystems/engine.pl
> @@ -135,6 +135,11 @@ sub parseMakeOutput
>              }
>          } while($ate_next);
>  
> +        if ($text =~ /^test / && $text =~ /|| rm -f /) {

That test on the right needs to escape its pipes or it will always match.

--Pete

> +            # commands removing executables, if they exist
> +            next;
> +        }
> +
>          if($text =~ / -c /) {
>              # compilation
>              handleCompileLine($text, $line);

```

## Sebastian Schuberth, 2010-01-20 22:54

Subject: Re: [PATCH 1/4] engine.pl: Fix a recent breakage of the buildsystem generator
Message-ID: <4B5789AD.2080807@gmail.com>
URL: https://gitlist.dev/e/4B5789AD.2080807%40gmail.com
In-Reply-To: <4B575838.2010504@ramsay1.demon.co.uk>

```
On 20.01.2010 20:23, Ramsay Jones wrote:

 > '-o' or connective. This resulted in the buildsystem generator
 > mistaking the conditional 'rm' for a linker command. In order

Thanks for spotting the cause of this! Some comments:

1. How about deleting lines 183-185 in same run? That commented out 
code, too, is missing the escapes for the pipes that Pete mentioned anyway.

-#        } elsif ($text =~ /^test / && $text =~ /|| rm -f /) {
-#            # commands removing executables, if they exist
-#


2. Couldn't we reduce the test to just

+        if ($text =~ /^test /) {
+            # options to test may be mistaken for linker options
+            next;
+        }
+

3. If the above won't do for some reason, I'd still prefer something like

+        if ($text =~ /^test / && $text =~ / -o /) {
+            # options to test may be mistaken for linker options
+            next;
+        }
+

as it makes more clear what's the problem in such lines.

-- 
Sebastian Schuberth

```

## Ramsay Jones, 2010-01-22 18:58

Subject: Re: [PATCH 1/4] engine.pl: Fix a recent breakage of the buildsystem generator
Message-ID: <4B59F549.8070308@ramsay1.demon.co.uk>
URL: https://gitlist.dev/e/4B59F549.8070308%40ramsay1.demon.co.uk
In-Reply-To: <4B576E38.5080604@pcharlan.com>

```
Pete Harlan wrote:
> On 01/20/2010 11:23 AM, Ramsay Jones wrote:
>> diff --git a/contrib/buildsystems/engine.pl b/contrib/buildsystems/engine.pl
>> index d506717..245af73 100644
>> --- a/contrib/buildsystems/engine.pl
>> +++ b/contrib/buildsystems/engine.pl
>> @@ -135,6 +135,11 @@ sub parseMakeOutput
>>              }
>>          } while($ate_next);
>>  
>> +        if ($text =~ /^test / && $text =~ /|| rm -f /) {
> 
> That test on the right needs to escape its pipes or it will always match.

Heh, well spotted!
As you may have already noticed, I copy/pasted the code from the comment
further down in this function, but didn't take enough care in doing so...
Oops! ;-)

The obvious solution, also suggested later by Sebastion, is to simply
remove the second regex from the test since it does not alter the
outcome (and still fixes the problem)...

ATB,
Ramsay Jones

```

## Ramsay Jones, 2010-01-22 19:40

Subject: Re: [PATCH 1/4] engine.pl: Fix a recent breakage of the buildsystem generator
Message-ID: <4B59FF3A.5080502@ramsay1.demon.co.uk>
URL: https://gitlist.dev/e/4B59FF3A.5080502%40ramsay1.demon.co.uk
In-Reply-To: <4B5789AD.2080807@gmail.com>

```
Sebastian Schuberth wrote:
> On 20.01.2010 20:23, Ramsay Jones wrote:
> 
>  > '-o' or connective. This resulted in the buildsystem generator
>  > mistaking the conditional 'rm' for a linker command. In order
> 
> Thanks for spotting the cause of this! Some comments:
> 
> 1. How about deleting lines 183-185 in same run? That commented out 
> code, too, is missing the escapes for the pipes that Pete mentioned anyway.
> 
> -#        } elsif ($text =~ /^test / && $text =~ /|| rm -f /) {
> -#            # commands removing executables, if they exist
> -#

OK, will do.

> 
> 2. Couldn't we reduce the test to just
> 
> +        if ($text =~ /^test /) {
> +            # options to test may be mistaken for linker options
> +            next;
> +        }
> +

Yes, good idea.  I will send a new version of the patch soon.

Thanks!

ATB,
Ramsay Jones

```
