[v3] doc: prefer installing using meson rather than ninja

Message ID 20230609145107.144593-1-bruce.richardson@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series [v3] doc: prefer installing using meson rather than ninja |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/github-robot: build success github build: passed
ci/intel-Functional success Functional PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-aarch-unit-testing success Testing PASS
ci/iol-unit-testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/intel-Testing success Testing PASS

Commit Message

Bruce Richardson June 9, 2023, 2:51 p.m. UTC
  After doing a build, to install DPDK system-wide our documentation
recommended using the "ninja install" command. However, for anyone
building as a non-root user and only installing as root, the "meson
install" command is a better alternative, as it provides for
automatically dropping or elevating privileges as necessary in more
recent meson releases [1].

[1] https://mesonbuild.com/Installing.html#installing-as-the-superuser

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>

---
V3:
* correct order of arguments to meson in CI scripts. The "-C" option
  must follow the meson "install" command. [This is consistent with
  other uses e.g. meson compile -C ..., meson test -C ...]

V2:
* Fix one missed reference to "ninja install" in Linux GSG
* Changed CI scripts to use "meson install" to ensure step is properly
  tested.
---
 .ci/linux-build.sh                           | 4 ++--
 doc/guides/contributing/coding_style.rst     | 2 +-
 doc/guides/cryptodevs/uadk.rst               | 2 +-
 doc/guides/freebsd_gsg/build_dpdk.rst        | 2 +-
 doc/guides/freebsd_gsg/build_sample_apps.rst | 2 +-
 doc/guides/linux_gsg/build_dpdk.rst          | 4 ++--
 doc/guides/prog_guide/build-sdk-meson.rst    | 4 ++--
 7 files changed, 10 insertions(+), 10 deletions(-)
  

Comments

Thomas Monjalon June 22, 2023, 6:35 p.m. UTC | #1
09/06/2023 16:51, Bruce Richardson:
> After doing a build, to install DPDK system-wide our documentation
> recommended using the "ninja install" command. However, for anyone
> building as a non-root user and only installing as root, the "meson
> install" command is a better alternative, as it provides for
> automatically dropping or elevating privileges as necessary in more
> recent meson releases [1].
> 
> [1] https://mesonbuild.com/Installing.html#installing-as-the-superuser
> 
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> 
> ---
> V3:
> * correct order of arguments to meson in CI scripts. The "-C" option
>   must follow the meson "install" command. [This is consistent with
>   other uses e.g. meson compile -C ..., meson test -C ...]
> 
> V2:
> * Fix one missed reference to "ninja install" in Linux GSG
> * Changed CI scripts to use "meson install" to ensure step is properly
>   tested.
> ---
>  .ci/linux-build.sh                           | 4 ++--
>  doc/guides/contributing/coding_style.rst     | 2 +-
>  doc/guides/cryptodevs/uadk.rst               | 2 +-
>  doc/guides/freebsd_gsg/build_dpdk.rst        | 2 +-
>  doc/guides/freebsd_gsg/build_sample_apps.rst | 2 +-
>  doc/guides/linux_gsg/build_dpdk.rst          | 4 ++--
>  doc/guides/prog_guide/build-sdk-meson.rst    | 4 ++--
>  7 files changed, 10 insertions(+), 10 deletions(-)

I see other occurences which could be replaced:

.ci/linux-build.sh:    [ -d install ] || DESTDIR=$(pwd)/install ninja -C build install
devtools/test-meson-builds.sh:  echo "DESTDIR=$2 $ninja_cmd -C $1 install" >&$verbose
devtools/test-meson-builds.sh:  DESTDIR=$2 $ninja_cmd -C $1 install >&$veryverbose
doc/guides/nics/mlx4.rst:    ninja install
doc/guides/platform/mlx5.rst:    ninja install
  
Bruce Richardson June 23, 2023, 7:54 a.m. UTC | #2
On Thu, Jun 22, 2023 at 08:35:17PM +0200, Thomas Monjalon wrote:
> 09/06/2023 16:51, Bruce Richardson:
> > After doing a build, to install DPDK system-wide our documentation
> > recommended using the "ninja install" command. However, for anyone
> > building as a non-root user and only installing as root, the "meson
> > install" command is a better alternative, as it provides for
> > automatically dropping or elevating privileges as necessary in more
> > recent meson releases [1].
> > 
> > [1] https://mesonbuild.com/Installing.html#installing-as-the-superuser
> > 
> > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> > 
> > ---
> > V3:
> > * correct order of arguments to meson in CI scripts. The "-C" option
> >   must follow the meson "install" command. [This is consistent with
> >   other uses e.g. meson compile -C ..., meson test -C ...]
> > 
> > V2:
> > * Fix one missed reference to "ninja install" in Linux GSG
> > * Changed CI scripts to use "meson install" to ensure step is properly
> >   tested.
> > ---
> >  .ci/linux-build.sh                           | 4 ++--
> >  doc/guides/contributing/coding_style.rst     | 2 +-
> >  doc/guides/cryptodevs/uadk.rst               | 2 +-
> >  doc/guides/freebsd_gsg/build_dpdk.rst        | 2 +-
> >  doc/guides/freebsd_gsg/build_sample_apps.rst | 2 +-
> >  doc/guides/linux_gsg/build_dpdk.rst          | 4 ++--
> >  doc/guides/prog_guide/build-sdk-meson.rst    | 4 ++--
> >  7 files changed, 10 insertions(+), 10 deletions(-)
> 
> I see other occurences which could be replaced:
> 
> .ci/linux-build.sh:    [ -d install ] || DESTDIR=$(pwd)/install ninja -C build install

Yes, this could be replaced, I somehow missed it.

> devtools/test-meson-builds.sh:  echo "DESTDIR=$2 $ninja_cmd -C $1 install" >&$verbose
> devtools/test-meson-builds.sh:  DESTDIR=$2 $ninja_cmd -C $1 install >&$veryverbose

While these could be replaced, the use of ninja is not a problem here, as
the whole script runs with user permissions. I'll consider replacing them
in a new version, though.

> doc/guides/nics/mlx4.rst:    ninja install
> doc/guides/platform/mlx5.rst:    ninja install

I looked at these before when doing the patch. They need to stay as they
are. They are part of instructions for installing the mlx driver
dependencies, which use cmake, not meson.

/Bruce
  

Patch

diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index 9631e342b5..76d3e776af 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -150,14 +150,14 @@  if [ "$ABI_CHECKS" = "true" ]; then
         git clone --single-branch -b "$REF_GIT_TAG" $REF_GIT_REPO $refsrcdir
         meson setup $OPTS -Dexamples= $refsrcdir $refsrcdir/build
         ninja -C $refsrcdir/build
-        DESTDIR=$(pwd)/reference ninja -C $refsrcdir/build install
+        DESTDIR=$(pwd)/reference meson install -C $refsrcdir/build
         find reference/usr/local -name '*.a' -delete
         rm -rf reference/usr/local/bin
         rm -rf reference/usr/local/share
         echo $REF_GIT_TAG > reference/VERSION
     fi
 
-    DESTDIR=$(pwd)/install ninja -C build install
+    DESTDIR=$(pwd)/install meson install -C build
     devtools/check-abi.sh reference install ${ABI_CHECKS_WARN_ONLY:-}
 fi
 
diff --git a/doc/guides/contributing/coding_style.rst b/doc/guides/contributing/coding_style.rst
index 89db6260cf..00d6270624 100644
--- a/doc/guides/contributing/coding_style.rst
+++ b/doc/guides/contributing/coding_style.rst
@@ -956,7 +956,7 @@  ext_deps
 headers
 	**Default Value = []**.
 	Used to return the list of header files for the library that should be
-	installed to $PREFIX/include when ``ninja install`` is run. As with
+	installed to $PREFIX/include when ``meson install`` is run. As with
 	source files, these should be specified using the meson ``files()``
 	function.
 	When ``check_includes`` build option is set to ``true``, each header file
diff --git a/doc/guides/cryptodevs/uadk.rst b/doc/guides/cryptodevs/uadk.rst
index 9af6b88a5a..136ab4be6a 100644
--- a/doc/guides/cryptodevs/uadk.rst
+++ b/doc/guides/cryptodevs/uadk.rst
@@ -90,7 +90,7 @@  Test steps
       meson setup build (--reconfigure)
       cd build
       ninja
-      sudo ninja install
+      sudo meson install
 
 #. Prepare hugepages for DPDK (see also :doc:`../tools/hugepages`)
 
diff --git a/doc/guides/freebsd_gsg/build_dpdk.rst b/doc/guides/freebsd_gsg/build_dpdk.rst
index 514d18c870..86e8e5a805 100644
--- a/doc/guides/freebsd_gsg/build_dpdk.rst
+++ b/doc/guides/freebsd_gsg/build_dpdk.rst
@@ -47,7 +47,7 @@  The final, install, step generally needs to be run as root::
   meson setup build
   cd build
   ninja
-  ninja install
+  meson install
 
 This will install the DPDK libraries and drivers to `/usr/local/lib` with a
 pkg-config file `libdpdk.pc` installed to `/usr/local/lib/pkgconfig`. The
diff --git a/doc/guides/freebsd_gsg/build_sample_apps.rst b/doc/guides/freebsd_gsg/build_sample_apps.rst
index c87e982759..b1ab7545b1 100644
--- a/doc/guides/freebsd_gsg/build_sample_apps.rst
+++ b/doc/guides/freebsd_gsg/build_sample_apps.rst
@@ -22,7 +22,7 @@  the system when DPDK is installed, and so can be built using GNU make.
    on the FreeBSD system.
 
 The following shows how to compile the helloworld example app, following
-the installation of DPDK using `ninja install` as described previously::
+the installation of DPDK using `meson install` as described previously::
 
         $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
 
diff --git a/doc/guides/linux_gsg/build_dpdk.rst b/doc/guides/linux_gsg/build_dpdk.rst
index bbd2efc9d8..9c0dd9daf6 100644
--- a/doc/guides/linux_gsg/build_dpdk.rst
+++ b/doc/guides/linux_gsg/build_dpdk.rst
@@ -68,11 +68,11 @@  Once configured, to build and then install DPDK system-wide use:
 
         cd build
         ninja
-        ninja install
+        meson install
         ldconfig
 
 The last two commands above generally need to be run as root,
-with the `ninja install` step copying the built objects to their final system-wide locations,
+with the `meson install` step copying the built objects to their final system-wide locations,
 and the last step causing the dynamic loader `ld.so` to update its cache to take account of the new objects.
 
 .. note::
diff --git a/doc/guides/prog_guide/build-sdk-meson.rst b/doc/guides/prog_guide/build-sdk-meson.rst
index 5deabbe54c..93aa1f80e3 100644
--- a/doc/guides/prog_guide/build-sdk-meson.rst
+++ b/doc/guides/prog_guide/build-sdk-meson.rst
@@ -12,7 +12,7 @@  following set of commands::
 	meson setup build
 	cd build
 	ninja
-	ninja install
+	meson install
 
 This will compile DPDK in the ``build`` subdirectory, and then install the
 resulting libraries, drivers and header files onto the system - generally
@@ -165,7 +165,7 @@  printing each command on a new line as it runs.
 Installing the Compiled Files
 ------------------------------
 
-Use ``ninja install`` to install the required DPDK files onto the system.
+Use ``meson install`` to install the required DPDK files onto the system.
 The install prefix defaults to ``/usr/local`` but can be used as with other
 options above. The environment variable ``DESTDIR`` can be used to adjust
 the root directory for the install, for example when packaging.