doc/examples: fix build on FreeBSD

Message ID 20210915173633.59057-1-bruce.richardson@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series doc/examples: fix build on FreeBSD |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/iol-spell-check-testing warning Testing issues
ci/github-robot: build success github build: passed
ci/Intel-compilation success Compilation OK
ci/intel-Testing fail Testing issues
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-x86_64-unit-testing fail Testing issues
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS

Commit Message

Bruce Richardson Sept. 15, 2021, 5:36 p.m. UTC
  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

Thomas Monjalon Oct. 1, 2021, 3:03 p.m. UTC | #1
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?
  
Bruce Richardson Oct. 1, 2021, 3:15 p.m. UTC | #2
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
  
Thomas Monjalon Oct. 1, 2021, 3:36 p.m. UTC | #3
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.
  
Bruce Richardson Oct. 1, 2021, 3:41 p.m. UTC | #4
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
  
Thomas Monjalon Nov. 17, 2021, 10:20 a.m. UTC | #5
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.
  
Bruce Richardson Dec. 22, 2021, 3:23 p.m. UTC | #6
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/
  

Patch

diff --git a/doc/api/generate_examples.sh b/doc/api/generate_examples.sh
index dae7ee0be0..3e08236596 100755
--- a/doc/api/generate_examples.sh
+++ b/doc/api/generate_examples.sh
@@ -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'