buildtools: fix build for some mktemp
Checks
Commit Message
build error:
== Build drivers/net/tap
mktemp: cannot create temp file /tmp/dpdk.auto-config-h.sh.XXX.c:
Invalid argument
.../buildtools/auto-config-h.sh: line 86: : No such file or directory
.../drivers/net/tap/Makefile:55: recipe for target
'tap_autoconf.h.new' failed
Above error observed on Wind River Linux 8.0
`mktemp` command in that system has a restrictions to have X in
the template at the end and at least six of them.
Switched back to static assignment for `temp` in buildtools,
but kept `dpdk.` prefix to preserve the common prefix intention.
Fixes: ff37ca5d3773 ("devtools: use a common prefix for temporary files")
Reported-by: Shuai Zhu <shuaix.zhu@intel.com>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
buildtools/auto-config-h.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
26/10/2018 20:42, Ferruh Yigit:
> build error:
> == Build drivers/net/tap
> mktemp: cannot create temp file /tmp/dpdk.auto-config-h.sh.XXX.c:
> Invalid argument
> .../buildtools/auto-config-h.sh: line 86: : No such file or directory
> .../drivers/net/tap/Makefile:55: recipe for target
> 'tap_autoconf.h.new' failed
>
> Above error observed on Wind River Linux 8.0
>
> `mktemp` command in that system has a restrictions to have X in
> the template at the end and at least six of them.
So let's comply with this requirement.
> Switched back to static assignment for `temp` in buildtools,
> but kept `dpdk.` prefix to preserve the common prefix intention.
It is a regression.
mktemp allows to choose the temporary directory thanks to TMPDIR
environment variable.
On 10/26/2018 6:59 PM, Thomas Monjalon wrote:
> 26/10/2018 20:42, Ferruh Yigit:
>> build error:
>> == Build drivers/net/tap
>> mktemp: cannot create temp file /tmp/dpdk.auto-config-h.sh.XXX.c:
>> Invalid argument
>> .../buildtools/auto-config-h.sh: line 86: : No such file or directory
>> .../drivers/net/tap/Makefile:55: recipe for target
>> 'tap_autoconf.h.new' failed
>>
>> Above error observed on Wind River Linux 8.0
>>
>> `mktemp` command in that system has a restrictions to have X in
>> the template at the end and at least six of them.
>
> So let's comply with this requirement.
We can't directly, because that temp file needs to be a .c file.
What can be done is create a temp file via mktemp and append .c later:
_temp=$(mktemp -t dpdk.${0##*/}.XXXXXX)
temp=${_temp}.c
Do we need this?
>
>> Switched back to static assignment for `temp` in buildtools,
>> but kept `dpdk.` prefix to preserve the common prefix intention.
>
> It is a regression.
> mktemp allows to choose the temporary directory thanks to TMPDIR
> environment variable.
>
>
>
26/10/2018 20:31, Ferruh Yigit:
> On 10/26/2018 6:59 PM, Thomas Monjalon wrote:
> > 26/10/2018 20:42, Ferruh Yigit:
> >> build error:
> >> == Build drivers/net/tap
> >> mktemp: cannot create temp file /tmp/dpdk.auto-config-h.sh.XXX.c:
> >> Invalid argument
> >> .../buildtools/auto-config-h.sh: line 86: : No such file or directory
> >> .../drivers/net/tap/Makefile:55: recipe for target
> >> 'tap_autoconf.h.new' failed
> >>
> >> Above error observed on Wind River Linux 8.0
> >>
> >> `mktemp` command in that system has a restrictions to have X in
> >> the template at the end and at least six of them.
> >
> > So let's comply with this requirement.
>
> We can't directly, because that temp file needs to be a .c file.
The .c extension is mandatory?
> What can be done is create a temp file via mktemp and append .c later:
> _temp=$(mktemp -t dpdk.${0##*/}.XXXXXX)
> temp=${_temp}.c
>
> Do we need this?
Yes I think it's better.
> >> Switched back to static assignment for `temp` in buildtools,
> >> but kept `dpdk.` prefix to preserve the common prefix intention.
> >
> > It is a regression.
> > mktemp allows to choose the temporary directory thanks to TMPDIR
> > environment variable.
On 10/26/2018 8:59 PM, Thomas Monjalon wrote:
> 26/10/2018 20:31, Ferruh Yigit:
>> On 10/26/2018 6:59 PM, Thomas Monjalon wrote:
>>> 26/10/2018 20:42, Ferruh Yigit:
>>>> build error:
>>>> == Build drivers/net/tap
>>>> mktemp: cannot create temp file /tmp/dpdk.auto-config-h.sh.XXX.c:
>>>> Invalid argument
>>>> .../buildtools/auto-config-h.sh: line 86: : No such file or directory
>>>> .../drivers/net/tap/Makefile:55: recipe for target
>>>> 'tap_autoconf.h.new' failed
>>>>
>>>> Above error observed on Wind River Linux 8.0
>>>>
>>>> `mktemp` command in that system has a restrictions to have X in
>>>> the template at the end and at least six of them.
>>>
>>> So let's comply with this requirement.
>>
>> We can't directly, because that temp file needs to be a .c file.
>
> The .c extension is mandatory?
This file is compiled, it is doesn't need to have .c with proper compiler flag.
>
>> What can be done is create a temp file via mktemp and append .c later:
>> _temp=$(mktemp -t dpdk.${0##*/}.XXXXXX)
>> temp=${_temp}.c
>>
>> Do we need this?
>
> Yes I think it's better.
This will create two temp files, one is empty, I will try above option.
>
>>>> Switched back to static assignment for `temp` in buildtools,
>>>> but kept `dpdk.` prefix to preserve the common prefix intention.
>>>
>>> It is a regression.
>>> mktemp allows to choose the temporary directory thanks to TMPDIR
>>> environment variable.
>
>
>
@@ -23,7 +23,7 @@ name=${5:?define/type/function name required}
: ${CC:=cc}
-temp=$(mktemp -t dpdk.${0##*/}.XXX.c)
+temp=/tmp/dpdk.${0##*/}.$$.c
case $type in
define)