doc/examples: fix build on FreeBSD
Checks
Commit Message
On FreeBSD, "find" does not support the "printf" flag, so we need to
use "gfind" from the "findutils" package.
Fixes: 8260f4f98cfe ("mk: use script to generate examples.dox")
Cc: bluca@debian.org
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
doc/api/generate_examples.sh | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
Comments
15/09/2021 19:36, Bruce Richardson:
> On FreeBSD, "find" does not support the "printf" flag, so we need to
> use "gfind" from the "findutils" package.
It is one more dependency.
Shouldn't we avoid it by rewritting the shell commands with loops?
On Fri, Oct 01, 2021 at 05:03:11PM +0200, Thomas Monjalon wrote:
> 15/09/2021 19:36, Bruce Richardson:
> > On FreeBSD, "find" does not support the "printf" flag, so we need to
> > use "gfind" from the "findutils" package.
>
> It is one more dependency.
> Shouldn't we avoid it by rewritting the shell commands with loops?
>
Probably in the longer term, yes. If I get the chance, I'll try and rewrite
this script, but let's keep this patch in the queue in case I don't get to
in the 21.11 timeframe.
/Bruce
01/10/2021 17:15, Bruce Richardson:
> On Fri, Oct 01, 2021 at 05:03:11PM +0200, Thomas Monjalon wrote:
> > 15/09/2021 19:36, Bruce Richardson:
> > > On FreeBSD, "find" does not support the "printf" flag, so we need to
> > > use "gfind" from the "findutils" package.
> >
> > It is one more dependency.
> > Shouldn't we avoid it by rewritting the shell commands with loops?
> >
> Probably in the longer term, yes. If I get the chance, I'll try and rewrite
> this script, but let's keep this patch in the queue in case I don't get to
> in the 21.11 timeframe.
OK
I can help with the shell tricks if needed.
On Fri, Oct 01, 2021 at 05:36:51PM +0200, Thomas Monjalon wrote:
> 01/10/2021 17:15, Bruce Richardson:
> > On Fri, Oct 01, 2021 at 05:03:11PM +0200, Thomas Monjalon wrote:
> > > 15/09/2021 19:36, Bruce Richardson:
> > > > On FreeBSD, "find" does not support the "printf" flag, so we need to
> > > > use "gfind" from the "findutils" package.
> > >
> > > It is one more dependency.
> > > Shouldn't we avoid it by rewritting the shell commands with loops?
> > >
> > Probably in the longer term, yes. If I get the chance, I'll try and rewrite
> > this script, but let's keep this patch in the queue in case I don't get to
> > in the 21.11 timeframe.
>
> OK
> I can help with the shell tricks if needed.
>
Well, I was actually considering a rewrite in python for two reasons:
* easy FS scans using the "walk()" function
* portability across OS's [which is the main reason for the work after all]
/Bruce
01/10/2021 17:41, Bruce Richardson:
> On Fri, Oct 01, 2021 at 05:36:51PM +0200, Thomas Monjalon wrote:
> > 01/10/2021 17:15, Bruce Richardson:
> > > On Fri, Oct 01, 2021 at 05:03:11PM +0200, Thomas Monjalon wrote:
> > > > 15/09/2021 19:36, Bruce Richardson:
> > > > > On FreeBSD, "find" does not support the "printf" flag, so we need to
> > > > > use "gfind" from the "findutils" package.
> > > >
> > > > It is one more dependency.
> > > > Shouldn't we avoid it by rewritting the shell commands with loops?
> > > >
> > > Probably in the longer term, yes. If I get the chance, I'll try and rewrite
> > > this script, but let's keep this patch in the queue in case I don't get to
> > > in the 21.11 timeframe.
> >
> > OK
> > I can help with the shell tricks if needed.
> >
> Well, I was actually considering a rewrite in python for two reasons:
> * easy FS scans using the "walk()" function
> * portability across OS's [which is the main reason for the work after all]
Applied this patch for 21.11.
On Wed, Nov 17, 2021 at 11:20:17AM +0100, Thomas Monjalon wrote:
> 01/10/2021 17:41, Bruce Richardson:
> > On Fri, Oct 01, 2021 at 05:36:51PM +0200, Thomas Monjalon wrote:
> > > 01/10/2021 17:15, Bruce Richardson:
> > > > On Fri, Oct 01, 2021 at 05:03:11PM +0200, Thomas Monjalon wrote:
> > > > > 15/09/2021 19:36, Bruce Richardson:
> > > > > > On FreeBSD, "find" does not support the "printf" flag, so we
> > > > > > need to use "gfind" from the "findutils" package.
> > > > >
> > > > > It is one more dependency. Shouldn't we avoid it by rewritting
> > > > > the shell commands with loops?
> > > > >
> > > > Probably in the longer term, yes. If I get the chance, I'll try and
> > > > rewrite this script, but let's keep this patch in the queue in case
> > > > I don't get to in the 21.11 timeframe.
> > >
> > > OK I can help with the shell tricks if needed.
> > >
> > Well, I was actually considering a rewrite in python for two reasons: *
> > easy FS scans using the "walk()" function * portability across OS's
> > [which is the main reason for the work after all]
>
> Applied this patch for 21.11.
>
Following up on this thread, implemented an alternative fix for this issue
which does not use the extra findutils dependency[1]. I didn't rewrite the
script in python as was my original intent, but used basic shell commands
to work around the lack of printf support in find, leading to a simpler
fix.
/Bruce
[1] http://patches.dpdk.org/project/dpdk/patch/20211222151855.803916-1-bruce.richardson@intel.com/
@@ -5,12 +5,22 @@
EXAMPLES_DIR=$1
API_EXAMPLES=$2
+FIND=find
+if [ "$(uname)" = "FreeBSD" ] ; then
+# on FreeBSD, we need GNU find for "-printf" flag
+ FIND=gfind
+ if ! which -s $FIND ; then
+ echo "Error: need '$FIND' on FreeBSD. Install 'findutils' pkg"
+ exit 1
+ fi
+fi
+
# generate a .d file including both C files and also build files, so we can
# detect both file changes and file additions/deletions
-echo "$API_EXAMPLES: $(find ${EXAMPLES_DIR} -type f \( -name '*.c' -o -name 'meson.build' \) -printf '%p ' )" > ${API_EXAMPLES}.d
+echo "$API_EXAMPLES: $($FIND ${EXAMPLES_DIR} -type f \( -name '*.c' -o -name 'meson.build' \) -printf '%p ' )" > ${API_EXAMPLES}.d
exec > "${API_EXAMPLES}"
printf '/**\n'
printf '@page examples DPDK Example Programs\n\n'
-find "${EXAMPLES_DIR}" -type f -name '*.c' -printf '@example examples/%P\n' | LC_ALL=C sort
+$FIND "${EXAMPLES_DIR}" -type f -name '*.c' -printf '@example examples/%P\n' | LC_ALL=C sort
printf '*/\n'