On 3/22/21 7:08 PM, Mark Michelson wrote:
> On 3/22/21 2:02 PM, Mark Michelson wrote:
>> Lately, `make check` runs have been failing. When "--with-ovs-source"
>> is not specified at configure time, the configure script automatically
>> sets the location to "$srcdir/ovs". This location is passed along the
>> chain and eventually added to AUTOTEST_PATH when running the tests.
>>
>> $srcdir is a relative path name, which is fine when building the code.
>> This falls apart, though, when tests are run. Tests are not run from
>> the build directory, but instead from the tests/ directory. Therefore,
>> the relative path to ovs/ is different. This causes most tests to fail
>> since files are not in the expected location.
>>
>> The fix is to set OVSDIR to an absolute path instead. Autoconf documents
>> an $abs_srcdir variable, but this is not set until after configure
>> checks are run. It is meant to be used by Makefiles. Therefore, we use
>> the trick of cd-ing to the directory and calling pwd to expand it to the
>> absolute path.
>>
>> Signed-off-by: Mark Michelson <[email protected]>
> 
> I didn't mention this above, but there is also an $ac_abs_confdir
> variable that expands to the absolute path of the configure script. I
> tested and this works as well, but general advice online is not to use
> this. It's a variable internal to autoconf, it's not documented, and it
> has the potential to be removed without notice in some future autoconf
> version.
> 
>> ---
>>   acinclude.m4 | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/acinclude.m4 b/acinclude.m4
>> index 3f8db03cf..2c607ea8e 100644
>> --- a/acinclude.m4
>> +++ b/acinclude.m4
>> @@ -381,7 +381,7 @@ AC_DEFUN([OVN_CHECK_OVS], [
>>         AC_ERROR([$OVSDIR is not an OVS source directory])
>>       fi
>>     else
>> -    OVSDIR=$srcdir/ovs
>> +    OVSDIR=$(cd $srcdir/ovs; pwd)
>>     fi
>>       AC_MSG_RESULT([$OVSDIR])
>>

Hi Mark,

This works fine and also fixes running system tests when using the OVS
submodule.

However, maybe it makes sense set $with_ovs_source to `pwd`/ovs if
$with_ovs_source is empty.  Afterwards, unconditionally, set OVSDIR,
turn it into an absolute path and check that it's actually an OVS source
directory.

What do you think?

Thanks,
Dumitru

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to