[ovs-dev] [PATCH ovn] configure: Save OVSDIR as an absolute path.
Mark Michelson
mmichels at redhat.com
Mon Apr 5 14:13:02 UTC 2021
On 4/2/21 5:44 AM, Dumitru Ceara wrote:
> 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 <mmichels at redhat.com>
>>
>> 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?
That process sounds good. The only change I will make is to use
$srcdir/ovs instead of `pwd`/ovs. People that build in a separate
directory from the source will have issues if we use `pwd`.
See
https://github.com/ovn-org/ovn/commit/3442eb5e7ce344bc9ca2a05d2eba371308f45d14
>
> Thanks,
> Dumitru
>
More information about the dev
mailing list